我正在尝试编译:
template <class T, class U = myDefaultUClass<T> >
class myClass{
...
};
虽然对我来说这似乎很直观但不适合我的编译器,有谁知道怎么做?
编辑:好的,问题实际上并非来自此问题,而是来自剩下的尝试...对此感到抱歉,无论如何,谢谢您的回答。
答案 0 :(得分:6)
以下适用于我使用g ++。请发布更多代码,您收到的错误消息和编译器版本。
class A {};
template <class T> class T1 {};
template <class T, class U = T1<T> > class T2 {
};
T2 <A> t2;
答案 1 :(得分:3)
使用Comeau编译正确...
答案 2 :(得分:0)
这适用于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;
}
答案 3 :(得分:0)
要么您的编译器不是标准投诉,要么是您犯了其中一个错误:
因为以下在G ++中工作正常:
class myDefaultUClass{};
template <class T, class U = myDefaultUClass >
class myClass{
//...
};