Информация об изменениях

Сообщение Re[5]: Шаблонная функция член класса от 05.09.2015 19:59

Изменено 05.09.2015 20:13 wander

Здравствуйте, _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>Спасибо за еще один ресурс онлайн компилятора.

Здравствуйте, _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