問題タブ [explicit-specialization]
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.
c++ - 削除されたプライマリ テンプレートの明示的な特殊化
GCC はこれを受け入れますが、Clang は再定義として拒否します。
誰が正しいですか?
c++ - MSVC でのテンプレートの静的定義と明示的な特殊化のインスタンス化エラー
次のコードが gcc で問題なく動作する理由が気になります
MSVC 2012ではコンパイルできません:
n3242 §14.7 5 で読んだことから
明示的なインスタンス化と明示的な特殊化の宣言の両方が、明示的なインスタンス化が明示的な特殊化の宣言に続く場合を除き、プログラムに現れてはなりません。
そして私はこれが事実だと信じています。何か不足していますか?
c++ - C++ の明示的な戻り値の型テンプレートの特殊化
これは、この (より一般的な) 質問:前の質問のフォローアップです。現在の質問に対する部分的な回答がここに示されています: 現在の質問に対する部分的な回答.
テンプレート引数に基づく戻り値の型の明示的な特殊化に興味があります。上記の回答は問題の解決策を提供しますが、C++11/14 手法を使用して問題を解決するより洗練された方法があると思います。
上記のコードは、gcc 4.8.3 (-std=c++0x フラグ付き) を使用してコンパイルし、期待どおりに動作します。ただし、次の警告が発行されます。
getOutputPort2
関数はauto
、末尾の戻り値の型なしで型指定子を使用します。
私の理解では、これは C++14 標準の一部になります。しかし、上記の機能を C++11 で実装する方法はありますか? decltype
ここで使える?
編集。以下のコメントに続いて、追加の質問もしたいと思います。上記のコードは、C++14 標準の観点から有効ですか? そうでない場合、なぜですか?
c++ - C++14で自動戻り値「型」を使用して明示的なテンプレートの特殊化を行うことは有効ですか?
前の質問。
この質問を自己完結型にするために、前の質問のコードを繰り返します。以下のコードは、gcc 4.8.3 を使用してコンパイルされた場合、コンパイルされ、警告を発行しません。と-std=c++1y
。ただし、-std=c++0x
フラグを指定してコンパイルすると、警告が発行されます。前の質問の文脈では、コードは gcc 4.9.0 を使用してコンパイルされないことが述べられていました。残念ながら、現時点では がどのようauto
に実装されているか完全には理解できていません。したがって、誰かが次の質問に答えてくれれば幸いです。
1)。以下のコードは、C++14 標準に関して有効な C++ ですか?
2)。はいの場合、このコードは良いスタイルと見なされますか? そうでない場合、なぜですか?
3)。C++11 コンパイラを使用しているときに、以下のコードがコンパイルされて (時々) 動作するのはなぜですか? または、なぜそれが常に機能するとは限らないのですか? 動作を妨げる特定のフラグ/オプション/設定はありますか?
c++ - 明示的に特殊化されたメンバーは、含まれているクラス テンプレートも明示的に特殊化する必要があります。
私は多くの記事を読んで、メンバーテンプレートを特殊化するときにクラステンプレートの場合、特殊化されたメンバーテンプレートを含むクラスも明示的に特殊化する必要があることを読みました。標準でそれについてのポイントはありますか?また、そのような制限を設ける理由はありますか? つまり、ボンネットの下です。
これが許可されない理由。