string s = "abc";
The above statement will first invoke string ( const char * s ) constructor, then invoke copy constructor according to What are the differences in string initialization in C++? .
Here is the question: how C++ know it should invoke string ( const char * s ) to convert literal string "abc" to a temporary string object?
Note: copy constructor won't be invoked in copy initialization.
std::string(and any non-explicit conversion functions of the source type, if it's a class type).