#include <string> struct C { template <class T> operator T() { return T{}; } }; int main() { std::string x; x = C{}; }
Standard input is empty
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.
Standard output is empty