프로그래밍 언어/C++
C++ 템플릿 constexpr 함수(constexpr function)
더해리
2021. 1. 3. 11:57
반응형
constexpr 함수
-
함수앞에 constexpr 붙이면 파라미터가 컴파일 타임 상수 일 경우 함수를 컴파일 시간에 연산(성능 이점)
-
일반 변수 파라미터 입력시 일반 함수처럼 동작
#include <iostream>
#include <type_traits>
using namespace std;
template<int N> struct Check
{
};
// constexpr 함수(c++11)
constexpr int add(int a, int b)
{
return a + b;
}
int main()
{
int n1 = 1, n2 = 2;
int n = add(n1, n2); // OK(일반 변수 파라미터 입력 시 일반 함수처럼 동작)
int m = add(1, 2); // OK(컴파일 타임 상수 파라미터 입력 시 컴파일 타임에 연산)
Check<add(1, 2)> c; // OK(컴파일 타임에 연산됨으로 템플릿 파라미터로 사용 가능)
Check<add(n1, n2)> c2; // Error(일반 함수처럼 동작하므로 템플릿 파라미터로 사용 불가)
}
반응형