반응형
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(일반 함수처럼 동작하므로 템플릿 파라미터로 사용 불가)
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
c++ 템플릿 type_traits 배열 타입 체크(is_array) (0) | 2021.01.03 |
---|---|
c++ 템플릿 type_traits 포인터 타입 체크(is_pointer) (0) | 2021.01.03 |
C++ 템플릿 메타 프로그래밍(Template meta programming) (0) | 2021.01.03 |
C++ 템플릿 특수화 예제(Tuple) (0) | 2021.01.03 |
C++ 템플릿 특수화 예제(Couple) (0) | 2021.01.03 |