728x90
반응형

constexpr 2

[C++] constexpr 함수

일반적으로 함수는 compile-time에서 평가할 수 없으므로 상수 표현식에서 호출할 수 없다. constexpr함수를 지정함으로써 상수 표현식이 인수로 주어지면 상수 표현식에서 사용할 수 있기를 원한다는 것을 나타낸다. constexpr int fac(int n) { return (n>1) ? n∗fac(n−1) : 1; } constexpr int f9 = fac(9); // must be evaluated at compile time constexpr이 함수 정의에서 사용될 때, "상수 표현식이 인수로 주어지면 상수 표현식을 사용할 수 있어야 한다"라는 의미다. 객체 정의에서 사용하면, compile-time에 intiailizer를 평가한다는 의미다. void f(int n) { int f5 =..

[C++] Constant Expressions

C++에서 'constant'는 두 가지 관련 의미를 제공한다. constexpr : 컴파일 타임에 평가 const : scope 내 수정 방지 기본적으로 constexpr의 역할은 compile-time 평가를 활성화하고 보장하는 반면 const의 주요 역할은 인터페이스에서 불변성을 지정하는 것이다. 여기서는 compile-time 평가와 관련 있다. 컴파일 시 알려지지 않은 값은 사용할 수 없으며 이에 대한 side effect는 없다. 궁극적으로 constant 표현식은 정수, 실수, 열거자로 시작해야 하며 다음을 수행하는 constexpr 함수와 연산자를 사용하여 이들을 결합하여 값을 생성할 수 있다. 또한 일부 주소는 일부 형태의 상수 표현식에서 사용할 수 있다. (따로 논의) 누군가가 리터럴이..

728x90
반응형