От: | Libra | ||
Дата: | 21.04.03 09:25 | ||
Оценка: |
template<class _Ty> class B
{
private :
_Ty res;
public :
B() : res() {}
B(const _Ty &_v) : res(_v) {}
operator _Ty() const { return _Ty(res); }
};
void foo(const B<long> &_val)
{
long tst = _val;
if(_val == 100)
{
int zzz = 0;
}
}
int main(void)
{
B<long> test0;
if(test0 == 0)
{
int zzz = 0;
}
foo(test0);
return 0;
}
template<class _Ty> class B
{
private :
_Ty res;
public :
B() : res() {}
B(const _Ty &_v) : res(_v) {}
operator _Ty() { return _Ty(res); }
operator _Ty() const { return _Ty(res); }
};
в момент сравнения в функции foo() и в функции main()[C++ Error] Unit1.cpp(15): E2015 Ambiguity between 'B<long>::operator long()' and 'B<long>::operator long() const'
[C++ Error] Unit1.cpp(24): E2015 Ambiguity between 'B<long>::operator long()' and 'B<long>::operator long() const'
template<class _Ty>
class B
{
//.....
operator _Ty() const { return _Ty(res); }
operator const _Ty() const { return _Ty(res); }
//.....
};