Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
In member function ‘boost::tuples::tuple<cvm::basic_scmatrix<double, std::complex>, cvm::basic_cvector<double, std::complex>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> Structure::dispeq(int, double)’:
Ну и когда подойтёт C++0x, с его концептами, автотипами и прочими радостями, буудет вообще класс.template<> foid f( int* )автоматически угадывает аргумент шаблона по аргументу функции. Так как до ее объявления у нас уже была специализация
template<class T> void f(T*);то в соответствии с логикой угадывания ( 15 страниц мелким шрифтм стандарта ^_^ ) компилятор угадал вот так:
template<> foid f< int >( int* ). Во втором слуае во время угадывания получилось
template<> foid f< int* >( int* ). Все честно.
template<> foo( int )или корректно и в правильных терминах не поймет — приходится применять первый вариант. А если будет нужно или человеку самому будет интересно — можно потом расширить имеющиеся знания рассказав что угадывание на самом деле подчиняется сложным правилам. Но это все понятное дело не silver bullet — просто я так привык делать и переучиваться уже поздно :).
Трюки со специализацией шаблонов C++