Perché il compilatore di Visual Studio 2013 rifiuta il primo asser statico (Errore C2057), ma non il secondo?Perché una costante è l'espressione, ma non l'altra?
#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
Probabilmente perché il [compiler VS 2013 non supporta] (https://msdn.microsoft.com/en-us/library/hh567368.aspx) 'constexpr' ancora. –
@DarkFalcon: il compilatore VS 2013 non lo farà mai! :) –
Compila bene su VS2015 RC. – Ajay