問題タブ [template-aliases]
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++ - テンプレート エイリアスをテンプレート テンプレート パラメータとして使用できますか?
テンプレート エイリアスをテンプレート テンプレート パラメータとして使用できますか?
c++ - テンプレート エイリアスが機能しない
テンプレート エイリアスを clang で動作させようとしていますが、リファレンス シートには動作すると書かれていますが、動作しません。
私はそれを間違っていますか?
c++ - Can I specialize a class template with an alias template?
Here's a simple example:
Is this allowed?
c++ - テンプレート エイリアスはテンプレート パラメーター推定にどのように影響しますか?
C++03 では、一部のコンテキストでテンプレート パラメーターの推定が行われません。例えば:
ここでは、 のような入れ子になった型は推定されないコンテキストであるため、int
は推定されません。T
A<T>::type
私はこのように関数を書いていました:
推論されたコンテキストであるB<T>
ため、すべて問題ありません。
ただし、C++11 では、テンプレート エイリアスを使用して、2 番目の例のような構文でネストされた型を偽装できます。例えば:
この場合、テンプレート引数の推論は機能しますか? 言い換えれば、テンプレートエイリアスは推定されたコンテキストですか、それとも推定されていないコンテキストですか? それとも、エイリアスの推定/非推定ステータスを継承しますか?
c++ - 置換の失敗は、依存する非型テンプレートパラメーターのエラーですか?
これらのテンプレートエイリアスがあるとしましょう。
GCCで次のことができます。
それは印刷します:
多形である多形
ではない
これは私の期待に一致します。
clangを使用すると、そのコードはコンパイルされません。次のエラーメッセージが表示されます。
コンパイルする必要がありますか?2つのコンパイラのどちらに障害がありますか?
c++ - テンプレートエイリアスを使用し、テンプレートを継承し、「テンプレートの親」タイプを使用する場合のコンパイルエラー
次の要件を持つデータコンテナがあります。
- 高速にする:したがって、通常の継承ではなくテンプレート
- さまざまな実装を使用する
- より多くのメソッドでこれらの実装を拡張できる
- データはテンプレート引数を介して指定され、データコンテナアイテムへのポインタを保存できる必要があります
私が思いついた解決策は次のとおりです。
次のエラーが発生します(gcc 4.7):
T *data
の代わりに使用する場合T data
(ただし、その間接参照は必要ありません)、またはを使用せずに直接storage_container_impl
持っている場合に機能します。ミックスインスタイルを使用しても問題は解決しません。ポインタと同様に、テンプレート宣言にループがあるなどの理由で、それが機能しない理由もありません。これは、問題の最小化されたバージョンです。どんな助けでもいただければ幸いです!T data
storage_container
storage_container_impl
container_ref
c++ - テンプレートエイリアスとsfinae
テンプレートエイリアス(たとえば、以下のコードスニペットのように、欠落しているメンバータイプ名のテンプレートエイリアス)に関連する置換が失敗した場合、エラーをトリガーする必要がありますか?
Clangとgccはこれについて意見が一致していないようです:
したがって、問題は、誰が正しいのか、そしてその理由は何かということです。
ありがとう :-)
c++ - 空白が重要な別のケース(多分?)
これは、C ++で空白が重要な別のケースですか、それともコンパイラのバグですか?次のコードは構文的に正しいですか?
Intel C ++ Composerは、「型指定子の無効な組み合わせ」と言ってコンパイルに失敗します。ただし、署名に単一の空白を追加すると、正常にコンパイルされます。
c++ - テンプレート クラスのテンプレート メソッドの引数でテンプレート エイリアスが機能しない
テンプレート エイリアスで引数の型を指定したテンプレート クラスのテンプレート メソッドを宣言すると、コンパイル エラーが発生します。テンプレート クラスをクラスに変更すると、コンパイルされます。テンプレート エイリアスを実際の型 (ここではTempl<bool>
) に置き換えると、それもコンパイルされます。テンプレート クラスで、引数の型がテンプレート エイリアスの場合、なぜ機能しないのですか?
コンパイラは gcc バージョン 4.8.0 (Ubuntu/Linaro 4.8.0-2ubuntu2~12.04) です。