У меня есть:
int foo(int x) { return x+1; }
struct Bar {
decltype(foo) operator();
};
int main() {
Bar bar;
printf("%d\n",bar(6));
}
что приводит к слегка пугающему сообщению об ошибке компилятора (g ++ 4.6.1):
error: declaration of 'operator()' as non-function
При изменении имени члена на
decltype(foo) blubb;
и его использование приводит к ошибке компоновщика:
undefined reference to `Bar::blubb(int)'
Это ожидаемое поведение?