Ich habe Funktionen Klassenmitglied wie folgt definiert, eine Spezifikation für eine von ihnen die Bereitstellung und Vermietung der Benutzer für andere ihre eigene Spezifikation liefern: Vorlage partielle Spezialisierung für mehrere Arten zwingende Memberfunktion
template <typename T>
class Foo {
// specialization provided for integral types
template <typename Enable = T>
typename std::enable_if<std::is_integral<Enable>::value, size_t>::type
bar(const T& value);
// provide your own specialization for other types
template <typename Enable = T>
typename std::enable_if<!std::is_integral<Enable>::value, size_t>::type
bar(const T& value);
};
template <typename T>
template <typename Enable>
typename std::enable_if<std::is_integral<Enable>::value, size_t>::type
Foo<T>::bar(const T& value) {
...
}
Nun, ich würde gerne eine Spezialisierung für die Funktion bereitstellen, die für ganzzahlige Paartypen funktioniert. Ich habe eine Vorlage metafunction für integrale Paare Überprüfung wie folgt definiert:
template <typename T>
struct is_integral_pair : std::false_type {};
template <typename T1, typename T2>
struct is_integral_pair<std::pair<T1, T2>> {
static const bool value =
std::is_integral<T1>::value && std::is_integral<T2>::value;
};
Ist es möglich für mich, meine eigene Spezialisierung zu schaffen, so dass es für alle ganzzahligen Paare funktioniert, vielleicht die Vorlage metafunction mit I oben definiert?