Ich versuche, die enable_if
Implementierung zu verstehen, die ein Paar Vorlagenklassen ist. was ich nicht verstehe, warum enable_if<true, int>
nicht mit dem ersten übereinstimmt? Wie ist das entschieden?Wie ist die Vorlagenklasse angepasst
#include <iostream>
template <bool, class T = void>
struct enable_if
{
enable_if() { std::cout << "invalid type";}
};
template <class T>
struct enable_if<true, T>
{
typedef T type;
enable_if() { std::cout <<"valid type";}
};
int main(){
enable_if<0==0, int> example; // print "valid type"
return 0;
}
Beste Passform und andere Sachen. Wenn die explizite Spezialisierung gewählt werden kann, wird dies der Fall sein, ansonsten Standardvorlage. – DeiDei
Es heißt [partielle Sortierung] (http://en.cppreference.com/w/cpp/language/partial_specialization#Partial_ordering) – Praetorian