を宣言しますそれは合法であるかどうかではなく、g ++はそれに満足していました。私が打ち鳴らすと、このスピンネットをコンパイルしようとしたときただし、++の代わりに、私は次のエラーを得た:はフォワード私は将来を宣言するために、このような<code>constexpr</code>変数テンプレートを試してみましたconstexprの変数テンプレート
error: default initialization of an object of const type 'const std::size_t' (aka 'const unsigned long') constexpr std::size_t iterator_category_value; ^ = 0
エラーが理にかなって、それが本当の問題ではないので、constexpr
を削除すると、それが消えます。しかし、私は今興味があります:標準は変数テンプレートのようなconstexpr
フォワード宣言を許可していますか、それとも違法ですか? g ++とclang ++は意見が違うようで、必要に応じてどこにバグレポートを提出するかを知りたいと思っています。
両方とも、変数テンプレートではない前方宣言されたconstepxr
変数に対して不平を言います。そのため、変数テンプレートのコンテキストは、コンパイラを不一致にするようです。
http://wg21.cmeerw.net/cwg/issue1712のテキストは、それを 'constexpr'としてフォワード宣言することはできませんが、stdがどのようにそれを禁止しているかはわかりません。変数テンプレートは、私の*オブジェクト宣言*のようには見えません。 – dyp
OTOH、[dcl.dcl] p9は非常に一般的で、変数テンプレート(=>変数テンプレートはオブジェクト宣言=> 'constexpr'は初期化が必要です)に適用する必要があります – dyp
@dyp Btw。現在Gitで入手可能な最新のソースをコンパイルしていませんか? – Columbo