The difference between hello(6) and hello(i) is that the 6 in hello(6) is a constexpr function parameter, while the i in the hello(i) is a regular int parameter. If you declare i to be constexpr int i = 6;, then hello(i) will compile and execute. In hello(int(6)), you'r...
In one of the constexpr functions, if a parameter is used directly then there is no problem with this parameter being used in a compile-time computation. (example lines 2) When the same parameter is used as an argument to another constexpr-function, then the compiler co...
constexpr int f5(int x) { // Error, function body contains more than if (x<0) // return statement. x = -x; return x; } When a function template is declared as aconstexprfunction, if the instantiation results in a function that does not satisfy the requirements of aconstexprfunction...
if (is_this_parameter (x)) { if (DECL_CONSTRUCTOR_P (DECL_CONTEXT (x))) { if (flags & tf_error) sorry ("calling a member function of the " "object being constructed in a constant " "expression"); return false; } /* Otherwise OK. */; } else if (!potential_constant_expression...
A constexpr function parameter would imply the function could only be called with a constexpr argument. But this is not the case -- constexpr functions can be called with non-constexpr arguments when the function is evaluated at runtime. Because such parameters are not constexpr, they cannot...
function<j>(/*some data declared outside the loop*/); } 其中__MYCONST__在编译时是已知的(constexpr-global)。我知道这是真的,因为我已经成功地将__MYCONST__作为模板参数传递到代码的其他地方。我现在想写 constexpr int j = List[i];
For a function, variable, constructor or static data member to be defined asconstexpr, it must meet certain requirements: Aconstexprfunction can be recursive. It cannot bevirtual, and its return type and parameter types must all be literal types. The body can be defined as= defaultor= delet...
// wrapper function wrapper(a, b); } 引弧螺栓 如果我直接用对象调用计算函数,效果会很好。但是如果我使用包装器函数并传递参数包,那么突然之间,参数似乎不再是常量。有人知道我如何解决这个问题吗? constexprconstexprconsteval函数的一部分。 如果您愿意使Test::size成为静态的,与对象无关:...
(A function body that is=default;or=delete;contains none of the above.) (since C++14) (until C++23) constexprconstructor Aconstexprconstructorwhose function body is not=delete;must satisfy the following additional requirements: for the constructor of aclass or struct, every base class sub-objec...
exp2(x * x, n / 2) : exp2(x * x, (n - 1) / 2) * x; } // Compile-time computation of array length template<typename T, int N> constexpr int length(const T(&)[N]) { return N; } // Recursive constexpr function constexpr int fac(int n) { return n == 1 ? 1 :...