這個類:如果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