在C ++ 17中模拟虚构constexpr_assert的最佳方法是什么?

时间:2018-11-04 18:58:44

标签: c++ c++17 assert constexpr static-assert

我刚刚看过cppcon talk,其中冻结库的作者解释了他如何在constexpr函数中使用assert并起作用(因为在运行时它应按预期工作,而在编译时会触发非constexpr执行函数,因此会发生编译器错误)。

问题是您不能像static_assert那样向用户提供有意义的文本错误,并且在实现assert宏时编译失败。

此外,您不能在函数参数上使用static_assert,因为它们不是constexpr,并且我不想在<>内部移动函数参数以使其成为constexpr。这是我要避免的转换示例:

RestHighLevelClient

在C ++ 17中是否有更好的方法来执行假设的constexpr_assert会做什么?

我将constexpr_assert定义为仅在constexpr评估(即编译时)期间检查值的断言。

P.S。 错误:

  

注意:非constexpr函数'__assert_fail'不能在常量表达式中使用

full code

0 个答案:

没有答案