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