我想让类模板构造函数默认
如果它是微不足道的并且是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() {};
}
当然,此代码不起作用(如果条件不满足,则为空参数)。怎么做?
最佳答案
您可以为 T
何时是和不是普通的默认构造提供单独的特化:
template <typename T, bool = std::is_trivially_default_constructible<T>::value>
class my_class {
public:
constexpr my_class() = default;
};
template <typename T>
class my_class<T, false> {
public:
constexpr my_class() {};
};
关于c++ - 选择类构造器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39827411/