这个类:如果T没有默认的构造函数我怎样才能有可选的默认构造函数?
template <class T>
struct A {
A() : t(T()) {
}
A(const T& t_) : t(t_) {
}
T t;
};
将无法编译。 这一个:
template <class T>
struct A {
A(const T& t_) : t(t_) {
}
T t;
};
不会有哪怕T有默认的构造函数默认构造函数。我想要两个 - 如果没有T()我不想要A()。
我知道必须使用SFINAE。 Boost.traits和Boost.enable_if可以提供帮助,但我无法实现它。有人可以举个例子来说明这个简单的例子吗?
你要A()来对T称,如果T没有默认构造函数是什么? – Mark 2009-10-29 23:42:00
如果没有T(),我完全不需要A()。 – 2009-10-29 23:43:24
我可能会误解,但是您确定第一个失败*,如果您不尝试使用缺省构造函数*的T的默认版本? GCC和Comeau都很好。你如何实例化课堂? – UncleBens 2009-10-29 23:44:45