クラス内でstatic constexpr
を使用すると、クラス定義外のコードが必要になるため(this questionを参照)、私の定数をenum { my_const = 123; }
で定義することに慣れています。しかし、機能体はどうですか?最近、私はちょうど(でも実際にconst
にそれらを悩まないで)その機能にconstexpr
変数を持つ人々に気付いてきた、と私は私の、私は私の関数内で定数のどちらを好むべきですか:constexpr constまたはenum?
int foo(int x)
{
enum : int { bar = 456 };
return x + bar;
}
で時代遅れだ馬鹿だかどうかを疑問に思いました問題は:constexpr変数ではなく、関数本体内でenumを使用することに利点がありますか?
C++ 1zが出てきて(おそらく今年7月)、主流のコンパイラサポートを受けると、自動的にインラインになるので、クラス内で 'static constexpr'変数を使うことができます。しかし、関数の場合、定数の関数の中に 'enum'を宣言することを意味しますか? –
@DanielH:はい、編集を参照してください。 – einpoklum
関数本体の中には利点がないことはほとんど確信しています(非静的変数はリンケージを必要とせず、静的変数も関数自体のものを共有することができます)。そして、実際にはC++標準では許可されていないと思います(たとえ一部のコンパイラがそれを拡張子として許しているとしても)。特に、コードをコンパイルするためにg ++(バージョン6.3)を手に入れることはできません。私はコメントの代わりに答えを出すことはそれほど確かではありませんが、間違っていると私は驚くでしょう。 –