C++11 is_same type trait für Templates

Lesezeit: 1 Minute

Kann man diesen Typ überprüfen? T ist ein std::array beliebiger Art und Größe?

Ich kann zum Beispiel nach einem bestimmten Array suchen:

    is_same<T, std::array<int,5>>::value

Aber das würde ich gerne prüfen T ist eine Instanziierung von std::array. So etwas wie unten (was natürlich nicht kompiliert):

    is_same<T, std::array>::value

Gibt es eine Möglichkeit, dies zu erreichen (vielleicht nicht mit is_same)?

  • Sie können ein Generikum schreiben is_same_template und sag is_same_template <T::template array, std::array> . Der Compiler muss jedoch die in c++11 eingefügten Klassennamenregeln unterstützen.

    – Johannes Schaub – litb

    4. Juni 2013 um 20:34 Uhr


Sie müssen Ihre eigenen schreiben, aber es ist einfach:

template<typename>
struct is_std_array : std::false_type {};

template<typename T, std::size_t N>
struct is_std_array<std::array<T,N>> : std::true_type {};

1012830cookie-checkC++11 is_same type trait für Templates

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy