有没有一种方法可以constexpr检查一个类是否有任何可访问的构造函数
Is there a way to constexpr check if a class has any accessible constructor at all?
有std::is_constructible
及其变体(用于复制、移动和默认构造函数(。
然而,有没有一种方法可以进行constexpr检查,检查对象是否可以被构造?
有没有一种方法可以进行constexpr检查,检查对象是否可以构造?
您可以编写一个constexpr
函数,然后添加不同的检查(is_default_constructible
等(,如下所示:
class C
{
public:
C() = default;
};
class C2
{
public:
C2() {}
private:
C2(const C2&){}
};
template<typename T>
constexpr bool checkAccessibleCtor()
{
//write checks here according to your need
return std::is_default_constructible<T>::value &&
std::is_copy_constructible<T>::value &&
std::is_move_constructible<T>::value;
}
int main()
{
std::cout << checkAccessibleCtor<C>()<<std::endl; //print 1
std::cout << checkAccessibleCtor<C2>()<<std::endl; //prints 0
}
相关文章:
- 如何获取类型是否真正可移动可构造
- 在C++中获取命名空间名称的任何可移植技巧
- Djinni 记录是否包含可选的接口字段
- C++模板的对象代码是否在可执行文件和动态库中重复?
- 如何从 pjsip 发送电子邮件.是否有任何可用于发送电子邮件的默认方法
- C 功能接受给定模板签名的任何可呼叫
- 如何使用 boost::filesystem 检查路径是否是可创建的文件
- 如果包含的类型是可简单复制的类型,则 std::Optional 是否为可平凡复制的类型
- 具有已删除的复制构造函数的类是否具有可复制性
- 为什么使用两个sizeofs可以检查一个类是否默认可构造,而使用一个却不行
- 是否有可用于OpenAL的Qt包装器
- std::函数,返回任何可求和类型
- 是否存在可用于保存任何枚举值的整型?
- 如何从任何可调用的函数中获得有意义的函数签名
- 在c++ 11中,是否有一种方法可以在调用以任何可调用对象(包括绑定方法)作为参数的函数时不需要模板参数
- 如何将任何可迭代类型作为函数参数传递
- 程序状态的任何变化是否构成可观察的行为?
- C++系统头是否有任何可保证的依赖性
- 是否有一种统一的方法来存储和传递任何可调用的对象
- 我是否应该声明任何可以为const的方法为const方法?