Gibt es einen C++ Ersatz für den static_assert von C++0x? Ich will ungerne einen C++0x-Compiler voraussetzen nur weil ich aus Performance-Gründen den static_assert benutze um meine Template-Argumente vom Compiler statt zur Laufzeit zu checken.
Edit: Ohne Boost und kompliziertes Gefummel versteht sich
template <typename T,int SIZE> class Vector { public: Vector(T a){ LOKI_STATIC_CHECK(SIZE>=1,NotBigEnough);//why you use a Vector of size zero ? Value[0]=a; for (int i=1;i<SIZE;++i) Value[i]=0; }
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
namespace CML { /** A workaround to use static assertions without C++. Use with the STATIC_ASSERT macro. */ template<int> struct StaticAssertion; template<> struct StaticAssertion<true> { };
int main(int argc, char **argv) { STATIC_ASSERT(5 == 6, Hier_ist_etwas_faul); // obiges Makro static_assert(5 == 6, "Hier ist etwas faul."); // C++0x Assertion return 0; }
Compiler-Meldung:
Code:
[coolcat@q9300 cml]$ g++ -std=c++0x -o test main.cpp main.cpp: In function ‘int main(int, char**)’: main.cpp:26:1: error: aggregate ‘CML::StaticAssertion<0> ASSERTION_Hier_ist_etwas_faul’ has incomplete type and cannot be defined main.cpp:27:2: error: static assertion failed: "Hier ist etwas faul." [coolcat@q9300 cml]$
Die Meldung von C++0x ist natürlich viel schöner, aber ich fürchte dagegen kann man nichts machen.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Leider nein, ich hatte das problem vor knapp 3 Monaten und mich dann für Loki entschieden. Ich werde wohl noch einige andere dinge aus der Bibliothek nutzen, diese ist gut.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.