(C++) const와 constexpr

Posted by : at

Category : Cpp


// constexpr은 컴파일 시간 상수 만 넣을 수 있다. (컴파일 할 당시 상수인 것)
int n = 10;

// const는 런타임, 컴파일 타임 다 넣을 수 있음.
const int c1 = 10;    // 컴파일 시간에 알 수 있다.(컴파일 시간 상수)
const int c2 = n;     // 컴파일 시간에 알 수 없다. (실행시간 상수)

// constexpr은 컴파일 타임으로 한정 짓는다
constexpr int c3 = 10;    // Ok
constexpr int c4 = n;     // Compile Error, 컴파일 시간 상수만 넣을 수 있다.

Example

#include <iostream>
using namespace std;

int main()
{
    // generic lambda : c++14
    auto f1 = [](auto a, auto b){ return a + b; }

    // nullary lambda : 괄호를 빼도 됨
    auto f2 = [] { return 10; }

    // c++17 : ()함수를 constexpr함수로
    auto f3 = [](int a, int b) constexpr
    {
        return a + b;
    };

    int y[f3(1,2)]; // 컴파일타임에 상수로 고정됨
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links