C ++: Fehler "Explizite Spezialisierung im Nicht-Namespace-Bereich"

template<typename T1, typename T2>
class Bimap {
public:
    class Data {
    private:
        template<typename T> Data& set(T);
        template<> Data& set<T1>(typename T1 v) { /*...*/ }
    };
};

Das gibt mir den Fehler:

error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'

Ich verstehe, was der Fehler sagt. Aber warum kann ich das nicht? Und wie kann ich das beheben?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage