C++의 템플릿 클래스 std::numeric_limits
에서 digits
(및 기타)은 클래스의 (정적 const) 필드로 정의되어 있지만 min()
및 max()
은 메서드입니다. 이 방법은 단지 litteral 값을 반환합니까?C++ 클래스의 필드와 메서드 std :: numeric_limits
미리 감사드립니다.
C++의 템플릿 클래스 std::numeric_limits
에서 digits
(및 기타)은 클래스의 (정적 const) 필드로 정의되어 있지만 min()
및 max()
은 메서드입니다. 이 방법은 단지 litteral 값을 반환합니까?C++ 클래스의 필드와 메서드 std :: numeric_limits
미리 감사드립니다.
클래스 본문에서 정수가 아닌 상수 (예 : 부동 소수점)를 초기화 할 수 없습니다. C++ 11 선언에서 이 기능이 유지되는 C++ 98의 호환성을 유지하려면
...
static constexpr T min() noexcept;
static constexpr T max() noexcept;
...
로 변경, 나는 생각한다.
예 :
struct X {
// Illegal in C++98 and C++11
// error: ‘constexpr’ needed for in-class initialization
// of static data member ‘const double X::a’
// of non-integral type
//static const double a = 0.1;
// C++11
static constexpr double b = 0.1;
};
int main() {
std::cout << X::b << std::endl;
return 0;
}
"정수가 아닌 정수 (예 : 부동 소수점)를 선언 할 수 없습니다"라는 것은 무엇을 의미합니까? –
C++ 03에서는 정수 본문 만 클래스 본문 내에 정의 할 수 있습니다. 클래스 본체 밖에서 부동 소수점 상수를 정의하지 못하게하는 것은 없습니다. – Simple
@ 단순 해명 해 주셔서 감사합니다. –
나는 항상 특히'constexpr' 하나의 모양 따라서 템플릿 매개 변수에'분()'와'최대()'사용하지 전에 때문에, 그 자신 궁금했습니다! –