I learned that in C++,
typedef foo* mytype;
(mytype) a // C-style cast
and
mytype(a) // function-style cast
do the same thing.
But I notice the function-style cast share the same syntax as a constructor. Aren't there ambiguous cases, where we don't know if it is a cast or a constructor?
char s [] = "Hello";
std::string s2 = std::string(s); // here it's a constructor but why wouldn't it be ...
std::string s3 = (std::string) s; // ... interpreted as a function-style cast?
See Question&Answers more detail:os