My code has the following layout

```
// A exists only as a true specialization
template<int Boolean>
struct A;

template<>
struct A<1> {};

// B exists only as a false specialization
template<int Boolean>
struct B;

template<>
struct B<0> {};

// then I use it like so
cond ? A<cond> : B<cond>; // actually I want to access an enumeration member value

```

Doesn't short circuiting apply to the ternary operator? Why do I get a compiler error?