选择类构造函数
Select class constructor
我想让类模板构造器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() {};
}
当然,这段代码不起作用(如果条件不满足则为空参数)。怎么做呢?
您可以提供单独的专门化,当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++ 带有默认参数的结构,可选择在构造函数中更改
- C++:使用委托构造函数时选择"const char *"与"std::string&qu
- 为什么Visual Studio无法在模板类中选择正确的构造函数
- 如何根据 C++ 中的 cv 限定符选择构造函数
- 编译如何选择要拨打的构造函数
- 编译时构造函数选择
- Clang 和 GCC 在使用大括号表示法和initializer_list时在构造函数选择上存在分歧
- 未选择引用到数组的构造函数进行列表初始化
- 使用 std::function 时选择自动返回类型而不是构造函数的调用运算符
- 我是否应该使用功能指针在构造函数中选择实现
- 无法选择模板构造函数
- C++:如何根据条件选择构造函数
- 为什么选择复制构造函数而不是移动构造函数
- 编译器在移动和复制构造函数之间的选择
- RAII 在两个构造函数之间进行选择的方式
- 如何选择构造函数模板
- 当参数是引用时,可变模板构造函数选择失败
- 如何消除构造函数选择的强制转换
- 是否有可能编写一个抽象类,其中构造函数选择适当的子类在c++中实例化