2015-04-23 19 views
5

Widziałem wykorzystanie takich jak:Deklarowanie niekompletny parametr typu szablonu w miejscu-listy argumentów

boost::error_info<struct tag_name, std::string> name_info; 

Tutaj tag_name nazwy niekompletny rodzaj i struct słów kluczowych poprzedzający wydaje się deklarować go w miejscu, zamiast z nieco bardziej gadatliwy:

struct tag_name; 
boost::error_info<tag_name, std::string> name_info; 

Jaka jest odpowiednia część standardu, który pozwala to?

Odpowiedz

6

§3.4.4/2 określa sposób opracowane TYPU Specyfikatory, w każdej sytuacji, są wzrok i jaki wpływ mogą mieć:

Jeśli opracowanych-type-specifier jest wprowadzany przez klasa klucz i tego odnośnika nie znajdzie wcześniej zadeklarowane typu nazwa [..] opracowana-type-specifier jest deklaracja, że ​​wprowadza nazwa-klasy zgodnie z opisem w punkcie 3.3.2,.

Następnie §3.3.2/7 (0,2) ma

Punktem zgłoszenia klasy ogłoszonych w opracowano typ-specyfikator jest następujący: [..] na opracowano tYPU specyfikator formy

                  klasa klucz identyfikator

jeśli opracowana-type-specifier jest stosowany w decl-specifier-nast lub parametr deklaracja-klauzuli z funkcji określonej w zakresie przestrzeni nazw, identyfikator jest zadeklarowany jako nazwa klasy w przestrzeni nazw, która zawiera deklarację; w przeciwnym razie, z wyjątkiem deklaracji friend, , identyfikator jest zadeklarowany w najmniejszej przestrzeni nazw lub zakresie bloków , który zawiera deklarację.

Powiązane problemy