回答編集履歴

5

fix

2019/09/26 04:20

投稿

yohhoy
yohhoy

スコア6191

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ハックの記述自体は今でも有効ですが(ただしunscoped enumのみ)、定数式が必要であれば`constexpr`を用いるべきでしょう。
10
+ enumハックの記述自体は今でも有効ですが、定数式が必要であれば`constexpr`を用いるべきでしょう。
11
11
 
12
12
  ---
13
13
  > enumの使うべき場面、constexprの使うべき場面など

4

update

2019/09/26 04:20

投稿

yohhoy
yohhoy

スコア6191

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 static N = 42;`のような定数定義がサポートされない古臭いコンパイラ向けのハックの一種でした。
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

2019/09/26 03:58

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -12,4 +12,6 @@
12
12
  ---
13
13
  > enumの使うべき場面、constexprの使うべき場面など
14
14
 
15
- 本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理サポートする`constexpr`を使えばよいと思います。
15
+ 本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理サポートが必要なら`constexpr`を使えばよいと思います。
16
+
17
+ FYI: `constexpr`は「コンパイル時/実行時処理の両方」をサポートしますが、C++20では`consteval`という「コンパイル時処理に限定」という機能も追加予定です。

2

update

2019/09/26 03:41

投稿

yohhoy
yohhoy

スコア6191

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
- 2019年現在、enumハック自体は有効ですが(ただしunscoped enum限定)、定数式が必要であれば`constexpr`を用いるべきでしょう。
10
+ enumハックの記述自体は今でも有効ですが、定数式が必要であれば`constexpr`を用いるべきでしょう。
11
+
12
+ ---
13
+ > enumの使うべき場面、constexprの使うべき場面など
14
+
15
+ 本来、両者は直交した機能です。プログラムの意味論上、物事の列挙(enumeration)には`enum`をつかい、コンパイル時処理をサポートする`constexpr`を使えばよいと思います。

1

update

2019/09/26 03:40

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -5,4 +5,6 @@
5
5
  - [A] enum列挙子の定義では、定数式の値が要求される。
6
6
  - [B] enum列挙子の利用時に、定数式として扱われる。
7
7
 
8
- [B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述するためのテクニックです。2019年現在、定数必要であば`constexpr`を用るべきでしょう
8
+ [B]はかつて「enumハック(enum hack)」とよばれた技法であり、C++11 `constexpr`登場以前からあるコンパイル時定数を記述するのテクニックです。`const static N = 42;`のとうな定数定義サポートさ古臭いコンパイラ向けのハックの一種でし
9
+
10
+ 2019年現在、enumハック自体は有効ですが(ただしunscoped enum限定)、定数式が必要であれば`constexpr`を用いるべきでしょう。