'constexpr' farklıdır, ancak GCC reddeder:Hata: yeniden bildirilmiş Clang bu kodu kabul
class Foo {
public:
static constexpr double kVal = 0.25f;
};
const double Foo::kVal;
yorumudur
~$ clang++ foo.cc -std=c++11 -c
[ok]
~$ g++ foo.cc -std=c++0x -c
foo.cc:6:19: error: redeclaration ‘Foo::kVal’ differs in ‘constexpr’
foo.cc:3:34: error: from previous declaration ‘Foo::kVal’
foo.cc:6:19: error: declaration of ‘constexpr const double Foo::kVal’ outside of class is not definition [-fpermissive]
(çınlama 3.0 ve g ++ 4.6.3 kullanarak) doğru?
Bir işlev bildirimi için hem clang hem de gcc bir hata verir. –
@JoshLee: Bir işlev için zorunlu olması, ancak kuralın değişkenler için geçerli olmaması nedeniyle. Yine de, ben şahsen aralarında tutarlılığı tercih ederim. –