왜이 기능이 작동하지 않습니까? 오류 1 오류 C2057 :numeric_limits 문제
enum : long {MaxValue = std::numeric_limits<long int>::max()};
나는 오류를 받고 있어요 예상 상수 식 그것에 대해 일정하지 무엇
? 긴 int의 한계는 컴파일 타임에 알려져 있으므로 무엇이 문제입니까?
왜이 기능이 작동하지 않습니까? 오류 1 오류 C2057 :numeric_limits 문제
enum : long {MaxValue = std::numeric_limits<long int>::max()};
나는 오류를 받고 있어요 예상 상수 식 그것에 대해 일정하지 무엇
? 긴 int의 한계는 컴파일 타임에 알려져 있으므로 무엇이 문제입니까?
문제는 std::numeric_limits<long int>::max()
기능은 상수 값을 반환하지만, (climits 헤더 참조) 런타임에 라고하고
은 아마 방금 대신 LONG_MAX
값을 사용할 수 있습니다 컴파일 시간에 상수 값을해야 할 것이 무엇입니까?
예,하지만 컴파일 타임에 함수를 실행할 수 없습니다. max()
참조. http://en.wikipedia.org/wiki/Compile_time_function_execution. 아마 GCC는 CTFE를 지원하지 않지만,이 문맥에서 max()는 인라인 될 가능성이 높으며 상수를 반환하기 때문에 컴파일 타임에 GCC에 의해 잘 평가 될 수 있습니다. –
'static constexpr T max(); // (C++ 11 이후)'... 그러나 VS 2012에서 많은 C++ 11 기능을 지원하지만 Visual Studio 2012에서는 여전히 컴파일 타임 상수로 작동하지 않습니다 (여전히 C2057 제공). –