可以定义Traits类来检查C++类是否具有成员变量,函数或类型(请参阅此处).
奇怪的是,ConceptTraits不包含检查C++类是否定义默认构造函数或给定构造函数的特征?
可以使用特征来检查构造函数的存在吗?如果有,怎么样?如果没有,为什么不可能呢?
我需要检查一个类C是否有一个默认的构造函数,无论是隐式的还是自定义的,或者是public,protected或者private.
我尝试使用std::is_default_constructible<C>::value,如果返回真C有一个public默认的构造函数(隐式或自定义),但false如果C有一个protected或private默认的构造函数(接缝是标准的行为虽然).
有没有办法检查一个类是否有一个protected或private默认的构造函数?
注意(如果这可能有帮助):检查是从要检查friend的类的函数执行的C.
我需要执行此检查,以便默认构造对应于元组nullptr指针的对象,对象的m_objs成员Foo(下面的部分Foo定义):
template<class... Objects>
class Foo
{
public:
Foo(Objects*... objects)
: m_objs(objects...)
{
// User construct a Foo objects passing a pack of pointers
// some of them are nullptr, some are not.
// The following call should default-construct objects corresponding …Run Code Online (Sandbox Code Playgroud)