При взгляде на некоторый код С++ 03 я нашел экземпляр наиболее неприятного разбора, который смутил меня:
#include <sstream>
#include <string>
int main(int, char** argv)
{
std::stringstream ss(std::string(argv[0]));
}
В приведенном выше фрагменте ss является объявлением функции, которая принимает std::string* и возвращает std::stringstream.
Как std::string(argv[0]) анализируется как std::string*?
Интуитивно я думал, что argv[0] был однозначно доступ к argv.