Étant donné cet exemple, qui comprend quelques surcharges :
#include
class T
{
public:
operator const wchar_t *(void) const
{
std::cout << "Conversion" << std::endl;
return L"Testing";
}
};
template
class A
{
};
template
void operator <<(A &, const T *)
{
std::cout << "1" << std::endl;
}
template
void operator <<(A &, const void *)
{
std::cout << "2" << std::endl;
}
int main(void)
{
A test;
T source;
test << L"1";
test << static_cast(source);
test << source;
}
Et sa sortie :
1
Conversion
1
Conversion
2
Ma question est - pourquoi void operator <<(A &, const void *)
est-il appelé pour l'instruction test << source;
? Quelqu'un peut-il citer une partie spécifique de la norme qui couvre ce cas ?