templates und static variables - wieso kompiliert das?
Verfasst: 25.08.2011, 18:00
Folgender Code
wirft mir wie erwünscht und erwartet einen Kompilierfehler:
so kompiliert der ansonsten unveränderte Code plötzlich seltsamerweise.
Genauso kompiliert das, wenn es in eine lokale Variable in einer Funktion innerhalb von Test ist.
Kann sich das (bzw. mir den Grund) wer erklären?
Die Frage ist eher interessehalber. Habe das eigentlich Problem jetzt anders gelöst (wozu habe ich schließlich COMPILE_TIME_ASSERT_TRUE ...)
Code: Alles auswählen
template<bool isTrue> struct IsTrue;
template<> struct IsTrue<true>
{
};
struct Test
{
IsTrue<false> failToCompileIfNotTrue;
};
Mache ich die Variable hingegen static'Test::failToCompileIfNotTrue' uses undefined struct 'IsTrue<isTrue>'
1> with
1> [
1> isTrue=false
1> ]
Code: Alles auswählen
template<bool isTrue> struct IsTrue;
template<> struct IsTrue<true>
{
};
struct Test
{
static IsTrue<false> failToCompileIfNotTrue;
};
Genauso kompiliert das, wenn es in eine lokale Variable in einer Funktion innerhalb von Test ist.
Kann sich das (bzw. mir den Grund) wer erklären?
Die Frage ist eher interessehalber. Habe das eigentlich Problem jetzt anders gelöst (wozu habe ich schließlich COMPILE_TIME_ASSERT_TRUE ...)