如何检查函数结果即使参数不是constexpr? ConconStexPR函数即使未使用,即使其参数不是ConstexPR,也可以产生ConstexPR结果。例如,STD :: Integral_Constant ::操作员t: #include

问题描述 投票:0回答:1
constexpr

std::integral_constant::operator T
我如何制作一个函数来测试函数的属性?
,例如,我希望以下工作:

run在gcc.godbolt.org

#include <utility> std::integral_constant<int, 42> a; constexpr int b = a; // Compiles!

但这给了我: concept

经过一些实验,我最终得到了:

#include <utility> struct A {explicit constexpr operator bool() const {return true;}}; struct B {int x = 1; explicit constexpr operator bool() const {return x;}}; template <typename T> concept C = requires(T t){std::bool_constant<t>{};}; static_assert(C<A>); static_assert(!C<B>);

这必须是非参考。如果非constexpr参数是参考(至少在编写时),则函数调用结果不能为constexpr。
在我的情况下,完整的代码是:
c++ constexpr c++-concepts
1个回答
0
投票
<source>:7:46: error: constraint variable 't' cannot be used in an evaluated context 7 | concept C = requires(T t){std::bool_constant<t>}; | ^


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.