
class foo
{
public:
	static const int constant; // constant ist konstant, enthält auch später einen constexpr Wert
};

const int bar = foo::constant + 1; // hier weiß der Compiler das aber noch nicht...

const int foo::constant = 6; // ... da die Definition von constant erst hier erfolgt

template <int i>
void func();

int main()
{
	func<bar>(); // und bar deshalb hier kein konstanter Ausdruck ist
}