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