Heim >Backend-Entwicklung >C++ >Ist eine Klasse eine Template-Spezialisierung in C?
Ist eine Klasse eine Vorlagenspezialisierung?
In C kann es nützlich sein, festzustellen, ob ein bestimmter Typ eine Spezialisierung eines bestimmten Typs ist Klassenvorlage. Betrachten Sie beispielsweise den folgenden Code:
template<class t> struct A {}; template<class comparet> void compare() { // is this A? cout , CompareT >::value ???? }</class></class>
Wie können wir anhand des obigen Codes überprüfen, ob CompareT ein A ist? für einen Typ *?
Lösung:
Mit der Vorlagenmetafunktion is_specialization können Sie überprüfen, ob ein Typ eine Spezialisierung einer Klassenvorlage ist. Hier ist ein Beispiel:
template<class t template> class Template> struct is_specialization : std::false_type {}; template<template> class Template, class... Args> struct is_specialization<template>, Template> : std::true_type {}; static_assert(is_specialization<:vector>, std::vector>{}, ""); static_assert(!is_specialization<:vector>, std::list>{}, "");</:vector></:vector></template></template></class>
Im obigen Beispiel benötigt is_specialization zwei Argumente: T und Template. Wenn T eine Spezialisierung von Template ist, is_specialization
Das obige ist der detaillierte Inhalt vonIst eine Klasse eine Template-Spezialisierung in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!