Constexpr Variable und Division
Ich versuche, diesen einfachen Ausdruck beim Kompilieren mit der neuen constexpr-Funktion von C ++ 11 auszuwerten:
template <int a, int b>
class Test
{
static constexpr double c = a / b;
};
Aber hier ist, was Clang mir immer wieder sagt:
Constexpr variable 'c' must be initialized by a constant expression
Das Seltsame ist, dass das Folgende gut kompiliert wird:
template <int a, int b>
class Test
{
static constexpr double c = a / 2.f;
};
Habt ihr eine Idee, warum a / b kein konstanter Ausdruck ist und wie ich dies zur Kompilierungszeit auswerten könnte?
Mit Clang-Compiler mit -std = c ++ 1y und -stdlib = libc ++
Aktualisiere
Das folgende Beispiel verursacht den Fehler mit dem Originalcode:
Test<10,0> test1 ;
während
Test<10,1> test1 ;
nicht