2015-07-02 6 views

Antwort

23

a ist kein Typ, daher können Sie :: nicht darauf anwenden. Sie können decltype verwenden a ‚s Art abzurufen:

std::array<int, 1> a; 
std::array<decltype(a)::value_type, 1> a2; 
+0

Guter Fang, '+ 1' von mir. – sbi

1

Quentin hat Ihnen eine Möglichkeit, dies zu umgehen. Hier sind zwei mehr.

Die offensichtliche Lösung, natürlich, ist der Name des Objekts a mit dem Namen seiner Art zu ersetzen:

std::array<typename std::array<int, 1>::value_type, 1> a2; 

jedoch in Ihrem Code suchen, fragte ich mich, ob das, was Sie wollten zu definieren, Typen, anstatt Objekte. Ich denke, a und a2 machen außergewöhnlich schlechten Typnamen (so mein Verdacht wahrscheinlich falsch war), aber hier geht:

typedef std::array<int, 1> a; 
typedef std::array<typename a::value_type, 1> a2; 

Sie jetzt Instanzen dieser Typen erstellen können.

Verwandte Themen