助けてくれてありがとう、私は次の解決策を要約することができました
私が間違っている場合は修正してください
Q. うまくいかない可能性があることを少なくとも 3 つ説明してください
template<typename A, typename B, typename C>
C mymin (const A& a, const B& b)
{
if ( a < b )
return (C) a;
else
return (C) b;
}
私の答えは次のとおりです。
大丈夫かどうか教えてください。
< 演算子が定義されていないため、2 つのオブジェクトを < 演算子で比較することはできません
A と B の型は異なる場合があり、そのために < 演算子は定義されていません
C の型が A または B とは異なる場合、定数として定義されている a または b を変更する型キャストが発生します。
変換コンストラクターが定義されていないため、A または B から C への型キャストは保証されません。
A と B のコピー コンストラクターが定義されていません。したがって、浅くコピーされたものを返すだけです。浅いコピーなので、浅いコピーを変更することができ、一定であるはずの元のコピーも変更することができます。
ありがとう、