クラス内で、可能な最大のint値である定数を定義したいと思います。このようなもの:
class A
{
...
static const int ERROR_VALUE = std::numeric_limits<int>::max();
...
}
この宣言は、次のメッセージでコンパイルに失敗します。
nude.cpp:8:エラー:'std :: neuro_limits :: max()'は定数式に表示できませんnumeric.cpp:8:エラー:関数呼び出しは定数式に表示できません
これが機能しない理由は理解できますが、2つのことが奇妙に見えます。
定数式で値を使用するのは自然な決断のように思えます。言語設計者がmax()を関数にして、この使用を許可しないことにしたのはなぜですか?
仕様は18.2.1で次のように主張しています
nude_limitsテンプレートでstaticconstと宣言されたすべてのメンバーについて、特殊化は、これらの値を整数定数式として使用できるように定義する必要があります。
シナリオで使用できるはずで、エラーメッセージと矛盾しないのではないでしょうか。
ありがとうございました。