Почему компилятор Visual Studio 2013 отклоняет первое статическое утверждение (ошибка C2057), но не второе?Почему одно выражение постоянное, но не другое?
#include <limits>
typedef int Frequency;
const Frequency minHz{ 0 };
const Frequency maxHz{ std::numeric_limits<Frequency>::max() };
const Frequency invalidHz{ -1 };
static_assert(minHz < maxHz, "minHz must be less than maxHz"); // C2057
static_assert(invalidHz < minHz || invalidHz > maxHz, "invalidHz is valid"); // OK
Возможно, потому что [компилятор VS 2013 не поддерживает] (https://msdn.microsoft.com/en-us/library/hh567368.aspx) 'constexpr' еще. –
@DarkFalcon: компилятор VS 2013 никогда не будет! :) –
Хорошо компилируется на VS2015 RC. – Ajay