Сообщение Re[5]: Шаблонная функция член класса от 05.09.2015 19:59
Изменено 05.09.2015 20:13 wander
_NN>Здравствуйте, wander, Вы писали:
W>>Как это на осилил!!?
_NN>Я тестировал на ideone.com: https://ideone.com/i3JFpY
Посмотрел на его ошибки:
Что-то у меня большое подозрение, что он лажает.prog.cpp:25:32: error: 'type' in 'struct return_type<A::X<T> >' does not name a type
typename return_type<A::X<T>>::type A::x()
^
prog.cpp:25:37: error: prototype for 'int A::x()' does not match any in class 'A'
typename return_type<A::X<T>>::type A::x()
^
prog.cpp:21:10: error: candidate is: template<class T> void A::x()
X<T> x;
A::X<T> — это void(), void() — это тип функции. Шаблон return_type выделяет тип void из типа void().
А тут, он получается не смог это сделать. Хотя, если посмотреть какой тип имеет X<T>, то явно показывает, что void(). Непонятно!
_NN>Спасибо за еще один ресурс онлайн компилятора.
_NN>Здравствуйте, wander, Вы писали:
W>>Как это на осилил!!?
_NN>Я тестировал на ideone.com: https://ideone.com/i3JFpY
Посмотрел на его ошибки:
Что-то у меня большое подозрение, что он лажает.prog.cpp:25:32: error: 'type' in 'struct return_type<A::X<T> >' does not name a type
typename return_type<A::X<T>>::type A::x()
^
prog.cpp:25:37: error: prototype for 'int A::x()' does not match any in class 'A'
typename return_type<A::X<T>>::type A::x()
^
prog.cpp:21:10: error: candidate is: template<class T> void A::x()
X<T> x;
A::X<T> — это void(), void() — это тип функции. Шаблон return_type выделяет тип void из типа void().
А тут, он получается не смог это сделать. Хотя, если посмотреть какой тип имеет X<T>, то явно показывает, что void(). Непонятно!
_NN>Спасибо за еще один ресурс онлайн компилятора.
Починил пример, через указатель на функцию:
https://ideone.com/UUKe0L