Chociaż patrząc na niektóre kodu C++ 03, znalazłem wystąpienie najbardziej irytującej parse że mylić mnie:Najbardziej dokuczliwy parse z dostępem do tablicy
#include <sstream>
#include <string>
int main(int, char** argv)
{
std::stringstream ss(std::string(argv[0]));
}
we fragmencie powyżej , ss
jest deklaracją funkcji, która pobiera std::string*
i zwraca std::stringstream
.
W jaki sposób std::string(argv[0])
jest analizowany jako std::string*
?
Intuicyjnie pomyślałem, że argv[0]
był jednoznacznie dostęp do argv
.
To nie dla mnie kompilacji z Visual Studio 2015, ponieważ 'argv [0]' jest najwyraźniej 0 rozmiarów tablica typu 'argv'. Mogę uzyskać taki sam wynik jak ty, jeśli użyję 'argv [1]'. Interesujące pytanie. –
Myślę, że jest to odpowiednik 'std :: stringstream ss (std :: string argv []);' który sam jest równoważny 'std :: stringstream ss (std :: string * argv);'. –
Myślę, że była ta jedna wskazówka, jeśli wygląda na to, że jest to jedna. tak jak @ FrançoisAndrieux napisał twoją instancję z std :: string nie jest instancją, ale deklaracją dla tablicy std: stringów – ExOfDe