回答編集履歴
5
fix
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`static const int N = 42;`のような定数定義がサポートされない古臭いコンパイラ向けのハックの一種でした。
|
9
9
|
|
10
|
-
enumハックの記述自体は今でも有効ですが
|
10
|
+
enumハックの記述自体は今でも有効ですが、定数式が必要であれば`constexpr`を用いるべきでしょう。
|
11
11
|
|
12
12
|
---
|
13
13
|
> enumの使うべき場面、constexprの使うべき場面など
|
4
update
answer
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
- [A] enum列挙子の定義では、定数式の値が要求される。
|
6
6
|
- [B] enum列挙子の利用時に、定数式として扱われる。
|
7
7
|
|
8
|
-
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`const
|
8
|
+
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`static const int N = 42;`のような定数定義がサポートされない古臭いコンパイラ向けのハックの一種でした。
|
9
9
|
|
10
|
-
enumハックの記述自体は今でも有効ですが、定数式が必要であれば`constexpr`を用いるべきでしょう。
|
10
|
+
enumハックの記述自体は今でも有効ですが(ただしunscoped enumのみ)、定数式が必要であれば`constexpr`を用いるべきでしょう。
|
11
11
|
|
12
12
|
---
|
13
13
|
> enumの使うべき場面、constexprの使うべき場面など
|
3
update
answer
CHANGED
@@ -12,4 +12,6 @@
|
|
12
12
|
---
|
13
13
|
> enumの使うべき場面、constexprの使うべき場面など
|
14
14
|
|
15
|
-
本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理
|
15
|
+
本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理のサポートが必要なら`constexpr`を使えばよいと思います。
|
16
|
+
|
17
|
+
FYI: `constexpr`は「コンパイル時/実行時処理の両方」をサポートしますが、C++20では`consteval`という「コンパイル時処理に限定」という機能も追加予定です。
|
2
update
answer
CHANGED
@@ -5,6 +5,11 @@
|
|
5
5
|
- [A] enum列挙子の定義では、定数式の値が要求される。
|
6
6
|
- [B] enum列挙子の利用時に、定数式として扱われる。
|
7
7
|
|
8
|
-
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`const static N = 42;`の
|
8
|
+
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`const static N = 42;`のような定数定義がサポートされない古臭いコンパイラ向けのハックの一種でした。
|
9
9
|
|
10
|
-
|
10
|
+
enumハックの記述自体は今でも有効ですが、定数式が必要であれば`constexpr`を用いるべきでしょう。
|
11
|
+
|
12
|
+
---
|
13
|
+
> enumの使うべき場面、constexprの使うべき場面など
|
14
|
+
|
15
|
+
本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理をサポートする`constexpr`を使えばよいと思います。
|
1
update
answer
CHANGED
@@ -5,4 +5,6 @@
|
|
5
5
|
- [A] enum列挙子の定義では、定数式の値が要求される。
|
6
6
|
- [B] enum列挙子の利用時に、定数式として扱われる。
|
7
7
|
|
8
|
-
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する
|
8
|
+
[B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述する古のテクニックです。`const static N = 42;`のとうな定数定義がサポートされない古臭いコンパイラ向けのハックの一種でした。
|
9
|
+
|
10
|
+
2019年現在、enumハック自体は有効ですが(ただしunscoped enum限定)、定数式が必要であれば`constexpr`を用いるべきでしょう。
|