lassen Vorlage wählen zwischen char / short / int durch Angabe von Bitsize?

8

Ich habe so etwas:

%Vor%

Ist es möglich, den Datentyp von _value abhängig von SIZE zu ändern? Wenn GRÖSSE & lt; = 7 ist, möchte ich, dass _value ein Zeichen ist. Wenn es & gt; = 8 und & lt; = 15 ist, möchte ich, dass es kurz ist und wenn es & lt; = 31 ist, möchte ich, dass es eine ganze Zahl ist.

    
Markus 01.02.2012, 11:51
quelle

2 Antworten

10

Das ist nicht besonders elegant, aber:

%Vor%

Dann in deiner Klasse:

%Vor%

Es geht nicht um negative Zahlen für SIZE . Dasselbe gilt für Ihren ursprünglichen Code, aber Ihre Textbeschreibung besagt, char if SIZE <= 7 zu verwenden. Ich erwarte 0 <= SIZE <= 7 wird es tun.

    
Steve Jessop 01.02.2012, 12:02
quelle
8

Boost.Integer hat Dienstprogramme für die Typauswahl :

  

boost::int_t<N>::least
  Der kleinste, integrierte, vorzeichenbehaftete Integraltyp mit mindestens N Bits, einschließlich des Vorzeichen-Bits. Der Parameter sollte eine positive Zahl sein. Ein Kompilierungsfehler tritt auf, wenn der Parameter größer als die Anzahl der Bits im größten Integertyp ist.

     

boost::int_t<N>::fast
  Der am einfachsten zu manipulierende, integrierte, vorzeichenbehaftete Integraltyp mit mindestens N Bits, einschließlich des Vorzeichenbits. Der Parameter sollte eine positive Zahl sein. Ein Kompilierungsfehler tritt auf, wenn der Parameter größer als die Anzahl der Bits im größten Integertyp ist.

    
Georg Fritzsche 01.02.2012 12:07
quelle

Tags und Links