#include <string>
struct C
{
template <class T> operator T() { return T{}; }
};
int main() {
std::string x;
x = C{};
}
I2luY2x1ZGUgPHN0cmluZz4KCnN0cnVjdCBDCnsKICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gb3BlcmF0b3IgVCgpIHsgcmV0dXJuIFR7fTsgfQp9OwoKaW50IG1haW4oKSB7CiAgc3RkOjpzdHJpbmcgeDsKICB4ID0gQ3t9Owp9
prog.cpp:10:5: error: use of overloaded operator '=' is ambiguous (with operand types 'std::string' (aka 'basic_string<char>') and 'C')
x = C{};
~ ^ ~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h:633:7: note: candidate function
operator=(basic_string&& __str)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h:565:7: note: candidate function
operator=(const basic_string& __str)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h:604:7: note: candidate function
operator=(const _CharT* __s)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h:615:7: note: candidate function
operator=(_CharT __c)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/basic_string.h:687:7: note: candidate function
operator=(initializer_list<_CharT> __l)
^
1 error generated.