C++ 为什么隐式转换为std::string不能与调用的运算符
首先,我使用一个用户定义的convert函数隐式地将一个对象转换为int,然后将其插入cout 为什么隐式转换不会发生在第二种情况下 因为是一个模板函数 这意味着给定T a;库特 为什么隐式转换不会发生在第二种情况下 因为是一个模板函数C++ 为什么隐式转换为std::string不能与调用的运算符,c++,type-conversion,implicit-conversion,C++,Type Conversion,Implicit Conversion,首先,我使用一个用户定义的convert函数隐式地将一个对象转换为int,然后将其插入cout 为什么隐式转换不会发生在第二种情况下 因为是一个模板函数 这意味着给定T a;库特 为什么隐式转换不会发生在第二种情况下 因为是一个模板函数 这意味着给定T a;若要在第一种情况下获得编译器错误,请使用显式运算符int{return 0;}。我投票重新打开该问题,因为已经提供了MCVE,现在问题已经很清楚了。若要在第一种情况下获得编译器错误,请使用显式运算符int{return 0;}.我投票重新开始
这意味着给定T a;若要在第一种情况下获得编译器错误,请使用显式运算符int{return 0;}。我投票重新打开该问题,因为已经提供了MCVE,现在问题已经很清楚了。若要在第一种情况下获得编译器错误,请使用显式运算符int{return 0;}.我投票重新开始这个问题,因为已经提供了MCVE,现在问题已经很清楚了。
#include <iostream>
using namespace std;
class T {
public:
operator int () {
return 0;
}
};
int main()
{
T a;
cout << a << endl;
return 0;
}
#include <iostream>
#include <string>
using namespace std;
class T {
public:
operator string () {
return "";
}
};
int main()
{
T a;
cout << a << endl;
return 0;
}
template <class CharT, class Traits, class Allocator>
std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os,
const std::basic_string<CharT, Traits, Allocator>& str);