私は、一般的な構造体/クラスがある場合:組み込み型のようなアルティスティック操作の2つのテンプレート型を宣伝するにはどうすればよいですか?
template<typename T>
struct Container
{
T value;
Container(const Value& value) : value(value) { }
};
をそして私はそれらの2の操作を実行したい:
template<typename T, typename U>
Container<T> operator+(const Container<T>& lhs, const Container<U>& rhs)
{
return Container<T>(lhs.value + rhs.value);
}
問題があることlhs
は型である場合Container<int>
とrhs
タイプがContainer<float>
の場合、Container<int>
が返されます。しかし、私がauto result = 2 + 2.0f
をやるならば、result
はfloat
となるでしょう。そのため、ビヘイビア型とカスタム型の間で動作が矛盾します。
したがって、operator+
のオーバーロードを受け取り、Container<float>
を返すようにしてください。C++が組み込み型で算術昇格を処理する方法とよく似ていますか?
あなたはC++ 11を使用することはできますか? –
@PiotrSkotnickiはい。 – Therhang