私は解決する方法がわからないという一見単純な質問があります。テンプレートオーバーロード(参照版と非参照版)
は、以下のテンプレート方式の特殊コンテナ(の一種)に何かを追加することができます
template<typename T> void Add(T& var);
を想像してみてください。私は以上の複雑な型をstrings
のように渡すことができます。そのため、Tを参照として渡しています。
これに伴う問題は、私のような他の方法の結果を追加しました。(...)呼び出したい時はいつでもということです:
Add(MethodThatReturnsAnInt());
これは動作しませんし、一時変数を保持するために必要とされていますMethodThatReturnsAnInt()
の結果。
Add
をオーバーロードする方法はありますか?そうすれば、参照渡しと参照渡しのバージョンを持つことができますか?
template<typename T> void Add(T& var);
template<typename T> void Add(T var);
std::enable_if
このような状況で使用することはできますか?
[rvalue references](http://en.cppreference.com/w/cpp/language/reference)についての情報をお読みください。 –
Google _転送参照。あなたの状況と結果の質問は非常に共通していて、言語機能を追加しました。 ;-)これはC++ 11の基本的な機能であり、おそらく十分な時間が既に与えられています。 –
あなたは実際にどのような問題を解決しようとしていますか? 'Add()'は何をするのですか? – Barry