具有编译时间验证的ConstexPR构造函数
constexpr constructor with compile time validation
我想建立一个具有constexpr-ness选项的类。而且,当然,我想利用编译时间错误检查。
当给定参数不是恒定表达式时,每个constexpr
函数(包括构造函数)也必须在运行时工作。这就是为什么每次您在 constexpr
函数中使用 static_assert
在函数参数上无法编译的原因。
说,我读过,我可以使用抛出机制的异常,因为当函数被调用恒定表达式时,可以在编译时评估这些例外。如果有效,则解决问题。
但是,问题仍然无法解决构造函数,因为constexpr
构造函数似乎一定没有身体...所以看起来我不能使用外来扔掉!
有什么想法?
以下可能会有所帮助:
class A
{
public:
constexpr A(int i) : i(i != 42 ? throw 42 : i) {}
private:
int i;
};
int main(int argc, char *argv[])
{
constexpr A a1(42);
//constexpr A a2(41); // Compile error as expected.
return 0;
}
相关文章:
- constexpr构造函数需要常量成员函数时出现问题
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- C++:初始化 constexpr 构造函数中的成员数组
- 在 constexpr 构造函数中初始化数组是否合法?
- 具有位域的结构的 Constexpr 构造函数
- 类、constexpr 构造函数和 std::string
- 如何在 constexpr 构造函数中初始化矩阵一次?
- 文件中定义的 Constexpr 构造函数.cpp会导致链接错误
- 对外部模板 constexpr 构造函数的未定义引用
- 是否存在与 Eigen::Matrix<>constexpr 构造函数相关的信息?
- 简化冗余std :: array初始化,当时没有constexpr构造函数
- 使用 constexpr 构造函数对结构进行前向声明
- 静态变量的 Constexpr 构造函数会导致动态初始化
- 引用基类的 constexpr 构造函数因编译器而异
- 通过在 constexpr 构造函数中传递 N,在编译时创建一个大小为 N 的数组
- 当编译时参数未知时,不调用"constexpr"构造函数
- GCC 和 Clang 在 constexpr 构造函数上的不同行为
- 具有编译时间验证的ConstexPR构造函数
- std::experimental::可选<T>实现:Constexpr 构造函数混淆
- C++VS2015 constexpr编译错误,constexpr构造函数调用constexpr成员函数