我正在尝试检查模板参数是否存在默认构造函数。我想做这样的事情:
template <typename A>
class Blah
{
Blah() { A* = new A(); }
}
但是我想在编译时通过SFINAE或其他技巧检测该构造函数是否存在,如果static_assert
不存在,则提出我自己的 a 。
当我的类(例如std::vector
)没有“默认构造函数”但具有默认参数的构造函数时,就会出现问题。
所以使用std::has_trivial_default_constructor
不会返回true。虽然我可以使用new vector<T>()
.