2 Stimmen

Boost::binary<>

Gibt es in den Boost-Bibliotheken etwas Ähnliches wie binär? Zum Beispiel würde ich gerne schreiben:

binary<10101> a;

Es tut mir leid zuzugeben, dass ich versucht habe, danach zu suchen (Google, Boost), aber keine Ergebnisse gefunden habe. Sie erwähnen etwas über binary_int<>, aber ich habe weder gefunden, ob es verfügbar ist noch welche Header-Datei ich includieren soll;

Danke für die Hilfe.

12voto

Johannes Schaub - litb Punkte 479831

Es gibt das BOOST_BINARY Makro, das so verwendet wird

int array[BOOST_BINARY(1010)];
  // entspricht int array[012]; (Dezimal 10)

Um mit deinem Beispiel fortzufahren:

template struct binary { static int const value = N; };
binary a;

Wenn ein Compiler C++0x's benutzerdefinierte Literale unterstützt, könntest du schreiben

template
struct conv2bin;

template
struct conv2bin {
    static_assert(high == '0' || high == '1', "keine Binärzahl!");
    static int const value = (high - '0') * (1 << sizeof...(digits)) + 
                             conv2bin::value;
};

template
struct conv2bin {
    static_assert(high == '0' || high == '1', "keine Binärzahl!");
    static int const value = (high - '0');
};

template
constexpr int operator "" _b() {
    return conv2bin::value;
}

int array[1010_b];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X