template-Spezialisierung nach Größe des Typs

Ich möchte eine Template-Funktion bereitstellen, deren Implementierung (-> Spezialisierung) von der Größe des Vorlagentyps abhängt.

Etwas Ähnliches (ausgelassene Typecasts), aber ohne das if / elseif:

template<class T>
T byteswap(T & swapIt)
{
    if(sizeof(T) == 2)
    {
        return _byteswap_ushort (swapIt);
    }
    else if(sizeof(T) == 4)
    {
        return _byteswap_ulong(swapIt);
    }
    else if(sizeof(T) == 8)
    {
        return _byteswap_uint64(swapIt);
    }
            throw std::exception();
}

ch weiß, dass es viele Wege gibt, um mein Ziel zu erreichen, aber seitdem versuche ich, etwas über @ zu lerneSFINAE undtype traits Ich bin besonders an Lösungen interessiert, die diese Techniken verwenden, um beim Kompilieren zu entscheiden, welche Spezialisierung ausgewählt werden soll und welche Aufrufe nicht zugelassen sind.

Vielleicht wird das Klassenmerkmal is_4ByteLong implementiert und boost :: enable_if ... @ verwende

Ich muss zugeben, ich stecke gerade fest, also danke ich Ihnen für jede Hilfe oder jeden Rat.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage