аргумент шаблона по умолчанию в шаблоне - PullRequest
0 голосов
/ 09 марта 2009

Я пытаюсь скомпилировать это:

template <class T, class U = myDefaultUClass<T> >
class myClass{
 ...
};

Хотя мне это кажется довольно интуитивным, это не для моего компилятора, кто-нибудь знает, как это сделать?

edit: Хорошо, проблема была не в этом, а в остаточной попытке ... Извините, спасибо за ваши ответы в любом случае.

Ответы [ 4 ]

6 голосов
/ 09 марта 2009

Следующее работает для меня, используя g ++. Пожалуйста, оставьте больше кода, сообщений об ошибках, которые вы получаете, и версию компилятора.

class A {};

template <class T> class T1 {};

template <class T, class U = T1<T> > class T2 {
};

T2 <A> t2;
3 голосов
/ 09 марта 2009

Прекрасно компилируется с Comeau ...

0 голосов
/ 09 марта 2009

Либо ваш компилятор не является стандартной жалобой, либо вы допустили одну из следующих ошибок:

  1. myDefaultUClass не является шаблоном
  2. myDefaultUClass не определен

потому что в G ++ хорошо работает следующее:

class myDefaultUClass{};

template <class T, class U = myDefaultUClass >
class myClass{
 //...
};
0 голосов
/ 09 марта 2009

Это работает на MSVC 9.0:

template < class T >
class UClass
{
private:
    T m_data;
};

template < class T, class U = UClass< T > >
class MyClass 
{
public:
    const U& data() const { return m_data; }
private:

    U m_data;
};


int main()
{
    MyClass< int > test;

    const UClass<int>& u = test.data();

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...