- C++相談室 part146
883 :デフォルトの名無しさん[sage]:2019/12/14(土) 15:21:14.95 ID:k5kIl1RN - >>877
× 普通に考えて 〇 俺の頭の中で × 妥当な理由はない 〇 妥当な理由は思い当たらない テンプレートなら初期化は不要という主張なら、 constexpr 変数の宣言と定義を分離できないことは納得してるのかな? そうだとして、それをテンプレートの時だけ可能とすることに意義があると思うの? 特別ルールを設ければコンパイラ実装やプログラムの読み取りにコストがかかるから、 明確が意義がなければ特別ルールは無いのが妥当だと思うよ。
|
- C++相談室 part146
891 :デフォルトの名無しさん[sage]:2019/12/14(土) 16:55:24.17 ID:k5kIl1RN - >>886
やっぱり constexpr 変数の宣言と定義を分離して何がしたいのか、 何ができるようになるのか、が見えてこない。ごめんね。 宣言だけ見える constexpr 変数への参照やポインタだけはとれるようになるけど、 それだともう constexpr である必要なくて const 変数でよさそうで、それならふつうに 宣言と定義は分けられるし。 ちなみにテンプレート実体化までテンプレート引数依存箇所の評価はされないから、 宣言と定義を分ける話を「評価を遅らせられる」と言い表しているのも何か間違ってそう。 「記述を遅らせられる」の間違い?
|
- C++相談室 part146
895 :デフォルトの名無しさん[sage]:2019/12/14(土) 17:58:45.99 ID:k5kIl1RN - FYI
>>846 Bug 68012: g++ incorrectly accepts forward declaration of constexpr variable template https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68012 >>848 One definition rule https://timsong-cpp.github.io/cppwp/n4659/basic.def.odr#1 > No translation unit shall contain more than one definition of any variable, function, class type, enumeration type, or template.
|