以下は、代入演算子をオーバーロードするテンプレートクラスの例です。このクラスを考えると:
template<class Type>
class Attribute
{
public:
Type operator=( const Type rhs )
{
mData = rhs;
return mData;
}
private:
Type mData;
};
以下のこのコードがエラーなしでコンパイルされるのはなぜですか?
Attribute<std::string> str;
str = 0;
一見矛盾しているように見えますが、このコードは次のとおりです。
std::string test;
test = 0;
次のエラーが発生しますか?
error C2593: 'operator =' is ambiguous