Definicja szablonowej metody niezgodna z deklaracją
Ostatnio zmodyfikowano 2014-06-26 12:53
b00rt00s Temat założony przez niniejszego użytkownika |
Definicja szablonowej metody niezgodna z deklaracją » 2014-06-26 12:37:25 Próbuję napisać klasę szablonową, za szablonową metodą. Definicja metody musi być poza definicją klasy i tu jest problem, ponieważ dostaję błąd kompilacji. Uprościłem kod, aby zostawić tylko to co istotne: template < class T > class AAA { template < class V > struct check_s { static_assert( std::is_base_of < T, V >::value, "tresc" ); typedef void type; }; template < class V > using check = typename check_s < V >::type; public: template < typename V, check < V >* = nullptr > void test( V * ); };
template < class T > template < class V, typename AAA < T >::template check < V >*> void AAA < T >::test( V * ) { }
A to jest błąd: prototype for 'void AAA<T>::test(V*)' does not match any in class 'AAA<T>' void AAA<T>::test(V*) ^
candidate is: template<class T> template<class V, AAA<T>::check<V>* <anonymous> > void AAA<T>::test(V*) void test(V*); ^
Doskonale wiem co to za błąd, ale nijak nie wiem co jest nie w porządku z definicją tej metody. Bardzo proszę o pomoc. |
|
pekfos |
» 2014-06-26 12:41:49 Spróbuj tak template < class T > template < class V, AAA < T >::check < V >*> void AAA < T >::test() |
|
b00rt00s Temat założony przez niniejszego użytkownika |
» 2014-06-26 12:53:10 Działa. Dziękuję bardzo. |
|
« 1 » |