問題タブ [variable-templates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
120 参照

c++ - 変数テンプレートの特殊化に格納された Spirit-X3 パーサーが Clang で機能しない

ドラフトとチェッカーの位置を設定するために、密接に関連する2つの文法を解析できる、動作中のSpirit-X3パーサーがあります。文法の 2 つの方言のパーサーとして、2つの変数テンプレートの特殊化を定義します。

このコードは、 Clangg++の両方で、テスト入力をコンパイルして正しく解析し ます。

2 つの変数テンプレートの特殊化はまったく同じ形式でテンプレート パラメーターに依存するため、それらを一般的な変数テンプレートに統合したいと考えています。

これは、 g++に対しても正しくコンパイルおよび解析します。Clang 用にもコンパイルされますが、Coliruではなく、Wandboxでの入力のみを正しく解析します。apt.llvm.orgの clang-3.8.0 を使用した私自身の開発ボックスでは、 Coliruと同じ誤った動作が発生します。

質問: 変数テンプレートの特殊化に関する Clang のバグはありますか? そのバグを回避するために、Wandbox と同じ方法で Clang を構成するにはどうすればよいですか? それともSpirit-X3関連のバグですか?

0 投票する
2 に答える
306 参照

c++ - ラムダを介して関数に変数テンプレートを渡すことは可能ですか?

テンプレート関数をテンプレート引数として渡す方法を知っているので、同様の方法で変数テンプレートを渡すのに苦労しています。

ここに私が試したものの最小限の例があります:

デモ

コンパイルされた場合、出力が間違っているのはなぜですか?

0 投票する
2 に答える
527 参照

c++ - 可変テンプレート テンプレート?

タプル型があり、別のテンプレートをインスタンス化するためにそのテンプレート パラメーター パックを抽出したいとします。それがタイプ テンプレートの場合、次のようなユーティリティを使用できます。

しかし、目的のテンプレートが可変テンプレートの場合はどうなるでしょうか? はtemplate <typename...> typename What型テンプレートの「プレースホルダー」ですが、変数テンプレートの「プレースホルダー」とは何ですか?

私は clang-4.0.0 (auto 型の非型テンプレート パラメーターをサポートする唯一のコンパイラ) に対して次のことを試しましたが、失敗しました。実際、これが C++17 の正しい構文かどうかはわかりません。

0 投票する
0 に答える
89 参照

c++ - 静的メンバー変数テンプレートを取得するための複数定義リンカー エラー

次のようなものに要約できるクラスがある場合:

valueこのクラスは、1 つの .cpp ファイルでインスタンス化されたものだけを検索するときに使用できます。しかし、これを複数の .cpp ファイルで使用しようとすると、既に定義されているリンカー エラーが発生します。

template<typename T> Test::value = {}独自の .cpp ファイルに配置すると、すべての使用で未解決の外部エラーが発生します。どうしたの?

0 投票する
0 に答える
89 参照

openmp - OpenMP threadprivate 変数テンプレート

threadprivate可変テンプレートも同様にしたい。これはできますか?次のようなもの:

0 投票する
1 に答える
65 参照

c++ - 変数テンプレートを変更できますか?

今日、誰かが次の形式のコードを提示してくれました。

ここで実行されていることがわかります: http://coliru.stacked-crooked.com/a/3a786c42b5204b0a

10 はテンポラリに割り当てられているように見えるため、このコードは 42 を出力すると予想していました。名前空間内では、テンプレートは (インスタンス化ではなく) 宣言のみであるため、名前空間内で変更するデータはありません。それにもかかわらず、それは私を驚かせ、代わりに 10 を出力しました。

一時的な割り当てに関する警告も期待していましたが、それも起こりませんでした。

これは未定義の動作ですか、テンプレートの理解に欠陥がありますか、それとも何か他のことが起こっていますか?