decltype (function) как член класса

У меня есть:

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)'

Это ожидаемое поведение?

6
задан iammilind 17 February 2012 в 10:43
поделиться