假设我们有一个模板类,我们希望用于实例化这个模板类的类型有默认的构造函数,我们可以使用 static_assert
实现
下面有一个非常简单的例子
#include <iostream>
template <typename T>
class C
{
static_assert(std::is_default_constructible_v<T>, "Class C need default constructible element");
};
class Test
{
Test() = delete;
};
int main()
{
C<Test> c;
}
我们有一个模板类C
, 我们在main
函数中使用Test
类去实例化这个模板,但是仔细看,我们让Test
类的构造函数=delete
,也就是说Test类
是没有默认的构造函数的,我们编译这个代码,就会报类似于
error C2338: static_assert failed: 'Class C need default constructible element'