どの type_traits またはメソッドでも、パラメーターが constexpr であるかどうかを確認できますか?
例
size_t fibo_runtime(size_t num)
{
//implementation
}
constexpr size_t fibo(size_t num)
{
return is_constexpr<size_t>::value ? //this type traits looks weird and unreasonable
(num > 1 ? fibo(num - 1) * num : 1) :
fibo_runtime(num);
}
constexpr は constexpr パラメータに適用でき、パラメータは実行時に決定されます。ただし、再帰は実行時に十分に効率的でない場合があります。
constexpr 関数の実行時とコンパイル時の実装を分離する必要がありますか? それができない場合、ユーザーが constexpr 関数を使用してランタイム評価を実行できないようにすることはできますか?