問題タブ [template-argument-deduction]

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 に答える
164 参照

c++ - g ++:一時オブジェクトの場合、コンパイルで参照配列を推測できませんでした

次のコードでコンパイルエラーが発生しています。一時オブジェクトでもconst参照にバインドできると期待しています。だから私はそれが有効なコードであるべきだと思っています。ただし、g ++ではこのエラーが発生しますが、clangではこのようなエラーは発生しません。誰かが私にこれが起こる正確な理由を教えてくれますか?

0 投票する
4 に答える
99 参照

c++ - make_tuple のように型推論を使用するものを記述できますか?

私は書くmake_tuple<int,bool>(1,true)か書くことができmake_tuple(1,true)、コンパイラはその型を推測します。この機能は、私が書いたコードで利用できますか、それともアクセスできないコンパイラに組み込まれていますか?

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

c++ - C++テンプレートパラメータの控除が機能していません

との間の接続をオーバーライドする必要がありboost::signals2::signalますboost::function。この目的のために、次のテンプレート関数を作成しました。

bindこれをできるだけシンプルに活用したいと思います。同様の問題に関する投稿で読んだことから、テンプレートパラメータは関数の引数から推測する必要があります。しかし、私の場合、明示的なパラメーターがない場合、それは機能していません。

私は何かが足りないのですか?
明示的なテンプレートパラメータを回避するための回避策はありますか?

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

c++ - テンプレートの引数推定では、sqrtはどのように機能しますか(繁雑) マッチ平方() 関数呼び出し?

このコードでは、どのようにしsqrt<double>(complex<double>)てテンプレート引数推定の候補になるのでしょうか? そして著者は、一致する呼び出しはすべて にsqrt<T>(complex<T>)も一致すると述べていますsqrt<T>(<T>)。どのように?

コードはBjarne Stroustrup によるThe C++ Programming Languageからのものです。セクション13.3.2

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

c++ - C++ での部分的なテンプレート関数の指定は機能しますが、なぜですか?

テンプレート化された関数の部分的な仕様が C++ 標準の一部であるかどうか、またはこれがコンパイラ固有のものであるかどうかを調べようとしています。

部分的な指定とは、コンパイラが推測できない型のみを指定することを意味します。したがって、3 つの型を取るテンプレート関数 'f' があり、そのうちの 1 つがパラメーターで使用され、推定できる場合、次の形式で 'f' を呼び出すことができます。f<type, type>(parameter)

次に例を示します。

これを g++ 4.5.3、g++ 4.6.3、VS2010、および VS2012 でテストしました。コンパイラによって広くサポートされているように見えるので、標準の一部であると確信していますが、誰でもそれを確認できますか? これが機能する理由を説明するリソースへのリンクまたはポインタを誰かが持っていますか?

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

c++ - デフォルトと推定テンプレートパラメータ?

以下では :


関数test内で何が行われるか:

ケース 1 :デフォルトのパラメーターは priority です: 変換コンストラクターMyClass<Type>(const MyClass<OtherType>& x)が暗黙的に呼び出され、MyClass<Type>::test<Type>(const MyClass<Type>& x)呼び出されます。

ケース 2 :推定されたパラメーターが優先度の場合:MyClass<Type>::test<Type>(const MyClass<OtherType>& x)が呼び出されます。


良い答えは2番目だと思いますが、よくわかりません。(そして、この状況は標準によって明確に定義されていることを)確認できますか?


編集: テスト関数は次のように呼び出されます:

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

c++ - ネストされたテンプレートの可変長非型リストの型の推定

次のクラスを検討してください。

これらのクラスを変更することはできません。

可変長リストの型を返すヘルパークラスや関数などを書くことは可能ですか?

size_t可変長リストが空の場合は?

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

c++ - テンプレートを使用した選択ソート関数の一致する関数呼び出しがありません(C++)

テンプレートをいじっていますが、テンプレートを使用すると一致しない関数エラーが発生するのはなぜだろうと思っていました。

0 投票する
3 に答える
2756 参照

c++ - C++の範囲ベースのforループ

C ++ 11で使用可能な「foreach」スタイルの構文では、配列の実際のサイズ(要素の数)を知らなくても配列の反復が可能であるように思われます。これは新しい標準の一部であるため、Cアレイの場合でも完全に安全であると思います。通常、C配列を操作する前に、C配列のサイズも個別に知っておく必要がありますが、この新しいC ++手法の経験者から、期待どおりに機能することを確認してください。

このテクニックの明らかでない副作用や不利な点について知っておくべきことはありますか?私が見るコードではあまり表示されません。おそらく、これが標準になる前にほとんどのコードが作成されたためです。よく知られていない他の理由が原因で、そのまれな使用法がないことを確認したい。

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

c++ - テンプレート関数の型推論と演算子<<

次のコードをMSVC++でコンパイルすると、エラーが発生します。

g++clangは両方とも、このコードを正常にコンパイルします。AFAIK、「ok」および「error」行はまったく同じことを行い、型Tはvoid(&)()に推定されます。それともvoid()であり、関数への右辺値参照は許可されていますか? もしそうなら、それらの意味は何ですか?そのように関数を参照渡ししても問題ありませんか? 「 error」行でコンパイルに失敗するのはMSVC++のバグですか?ところで、エラー出力: