有没有办法在编译时打印 aconstexpr
或d 值的值?#define
我想要相当于std::cout <<
, 或某种方式来做类似的事情
constexpr int PI_INT = 4;
static_assert(PI_INT == 3,
const_str_join("PI_INT must be 3, not ", const_int_to_str(PI_INT)));
编辑:我可以用 s 做一些基本的编译时打印constexpr
,至少在 gcc 上做一些类似的事情
template <int v>
struct display_non_zero_int_value;
template <>
struct display_non_zero_int_value<0> { static constexpr bool foo = true; };
static constexpr int v = 1;
static_assert(v == 0 && display_non_zero_int_value<v>::foo, "v == 0");
这给了我error: incomplete type ‘display_non_zero_int_value<1>’ used in nested name specifier static_assert(v == 0 && display_non_zero_int_value<v>::foo, "v == 0");
。(另一方面,icpc 不太有用,只是说error: incomplete type is not allowed
)有没有办法编写一个可以概括这一点的宏,以便我可以做类似的事情
constexpr int PI_INT = 4;
PRINT_VALUE(PI_INT)
并以某种方式收到涉及 4 的错误消息?