This snippet ist from the Plumhall 2014 xvs test suite:

  #if CXX03 || CXX11 || CXX14 
  static float (*p1_)(float) = abs; 
  ...
  checkthat(__LINE__, p1_ != 0);
  #endif

(With the testsuite specific macros doing the obvious).  abs() is
declared as:

  int abs(int j)

Am I missing some odd C++ feature or is that part of the test just
plain wrong?  I don't know where to look in the C++ standard; is
this supposed to compile (with or without a warning?) or generate
an error or is it just undefined?

  error: invalid conversion from ‘int (*)(int) throw ()’ to ‘float (*)(float)’ 
[-fpermissive]

(Of course even with -fpermissive this won't work because (at
least on my platform) ints are passed in different registers than
floats.)

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany

Reply via email to