Wie kann ich std :: enable_if in einem Konvertierungsoperator verwenden?

Grundsätzlich möchte ich, dass mein Bereichstyp implizit von konvertierbar istRange<const char> zuRange<const unsigned char>. std :: enable_if scheint unmöglich zu sein, da die Funktion keine Argumente akzeptiert und keine Rückgabe hat. Was ist die Arbeit um?

Im Grunde habe ich Folgendes versucht:

template<typename T>
class Range{
    T* begin_;
    T* end_;
public:
    Range(T* begin,T* end):begin_{begin},end_{end}{}
    template<int N>
    Range(T (&a)[N]):begin_{static_cast<T*>(&a[0])},end_{static_cast<T*>(&a[N-1])}{}
    T* Begin(){return begin_;}
    T* End(){return end_;}
    operator typename std::enable_if<std::is_same<T,const char>::value,Range<const unsigned char>&>::Type (){
        return *reinterpret_cast<Range<const unsigned char>*>(this);
    }
};

Antworten auf die Frage(1)

Ihre Antwort auf die Frage