static_assert problem
Marc Glisse
marc.glisse@inria.fr
Sun Mar 18 20:41:00 GMT 2012
On Sun, 18 Mar 2012, MichaÅ Walenciak wrote:
> Hi all
>
> here i have a simple example:
>
> template <int a, int c>
> void foo()
> {
> if (a > 0)
> static_assert(c != 0, "fdfd");
>
> }
>
>
> void bar()
> {
> foo<0, 0>();
> }
>
>
> when i compile it like: g++ a.cpp -std=c++0x -c
>
> i get:
> a.cpp: In function âvoid foo() [with int a = 0, int c = 0]â:
> a.cpp:13:12: instantiated from here
> a.cpp:6:4: error: static assertion failed: "fdfd"
>
> is it right? 'a' variable is not > 0, so static_assert should not be checked
> (imho)
Yes it should. It is a static assertion, whereas "if" is a pure runtime
object. There are some people trying to introduce a static version of
"if", but that's not in C++11.
--
Marc Glisse
More information about the Gcc-help
mailing list