Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Definicja szablonowej metody niezgodna z deklaracją

Ostatnio zmodyfikowano 2014-06-26 12:53
Autor Wiadomość
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:



C/C++
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.
P-112778
pekfos
» 2014-06-26 12:41:49
Spróbuj tak
C/C++
template < class T >
template < class V, AAA < T >::check < V >*>
void AAA < T >::test()
P-112780
b00rt00s
Temat założony przez niniejszego użytkownika
» 2014-06-26 12:53:10
Działa. Dziękuję bardzo.
P-112782
« 1 »
  Strona 1 z 1