2013-08-17 13 views

Odpowiedz

18

Nie ma absolutnie żadnej różnicy między oboma.

Jeśli spojrzeć na normy:

7.1.3 [dcl.typedef]

typedef-name może być również wprowadzony przez typedef specy fi er alias-deklaracja. Identyfikator po słowie kluczowym using staje się typedef-name. Ma taką samą semantykę, jak gdyby została wprowadzona przez specyfikator typedef. W szczególności nie definiuje nowego typu i nie może się pojawić w identyfikatorze typu .

7.3.3 Zgłoszenie pomocą [namespace.udecl]

Jeżeli pomocą deklaracja używa słowa kluczowego typeName i określa nazwę zależną (14.6.2), nazwy wprowadzonej przez Użycie deklaracji jest traktowane jako typedef-name.


Jednak od tej strony: http://en.cppreference.com/w/cpp/language/type_alias

Mówi się:

Rodzaj pseudonimy są podobne do typedefs, mają jednak tę zaletę pracy z szablonami.

To wydaje się, że w ten sposób:

// template type alias 
template<class T> using ptr = T*; 
// the name 'ptr<T>' is now an alias for pointer to T 
ptr<int> x; 

jest możliwe tylko z dyrektywą using.


I nie zapominaj, że jest to funkcja C++ 11. Niektóre kompilatory jeszcze tego nie obsługują.

2

Nie ma różnicy.

typedef podaje nazwę aliasu dla typu.

Powiązane problemy