0
我要讓類模板的構造default
,如果它是瑣碎和默認T
,這樣的事情:選擇類的構造函數
template <typename T>
class my_class {
public:
template <typename <std::enable_if<std::is_trivially_default_constructible<T>::value, int>::type = 0>
constexpr my_class() = default;
template <typename <std::enable_if<!std::is_trivially_default_constructible<T>::value, int>::type = 0>
constexpr my_class() {};
}
當然,這個代碼不工作(空參數,如果條件不滿足)。怎麼做?
試想一下,'my_class'是一個非常大的類(100+方法),這樣做我需要複製所有這些都是專業化? – vladon
@ vladon是的,你會的。無論如何你確定你需要這個嗎? 'my_class'中存儲了一個'T'類型的對象嗎?你是否只在'T'是?時才使'my_class'變得可以構造? – TartanLlama
是的,我在'my_class'中存儲'T'類型的對象,並且是的,如果T是簡單的默認可構造的,我想使它變得可以默認構造。 – vladon