1 // PR c++/28385 2 // instantiating op() with void()() was making the compiler think that 'fcn' 3 // was const, so it could eliminate the call. 4 5 // { dg-do run } 6 7 extern "C" void abort (void); 8 9 int barcnt = 0; 10 11 class Foo { 12 public: 13 template<typename T> operator()14 void operator()(const T& fcn) { 15 fcn(); 16 } 17 }; 18 bar()19void bar() { 20 barcnt++; 21 } 22 main()23int main() { 24 Foo myFoo; 25 myFoo(bar); 26 myFoo(&bar); 27 if (barcnt != 2) 28 abort (); 29 return 0; 30 } 31