constexprの機能は、単にreturn文で構成する必要がありますし、すべての引数はコンパイル時に知られている必要があります。constexpr - なぜreturn文ですか?
// constexpr functions use recursion rather than iteration
constexpr int factorial(int n)
{
return n <= 1 ? 1 : (n * factorial(n-1));
}
理由だけではなく、return文?どうしてこれが間違っているの?
// constexpr functions use recursion rather than iteration
constexpr int factorial(int n)
{
int a = 222; //another variable
return n <= 1 ? 1 : (n * factorial(n-1));
}
私はそれがコンパイラ実装のために簡単に保つことができると考えています。 – juanchopanza
スタンダードはそうそう言います。より一般的な関数を許可すると、コンパイラライターの人生はかなり複雑になります(とにかく、C++ 14ではこれらの制限の一部が解消されます)。 –
変数を許可すると、他の多くの(複雑な)制限が追加されることになります。だから彼らは彼らの紹介のためにそれを簡単に保ちました。とにかく(例えば、他のものから 'constexpr'関数を呼び出す) – Dave