Templates and __builtin-constant_p

    int a;

Local variables are not initialized, unless you provide an initial value.

    int baz = foo<__builtin_constant_p(a)>::bar;

Why would you pass an uninitialized variable to any kind of function, constant or not?