C++ constexpr

2022. 3. 2. 22:51·C++
반응형

컴파일 시 값 평가를 강제하기 위하여 탬플릿 메타프로그래밍 남용

-> 보통 컴파일러가 자발적으로 평가해주지만 어떤 코드로 인하여 컴파일러가 해주지 않는 경우가 있다.

=> constexpr는 이를 해달라는 프로그래머의 의도를 보여주는 방식이다.(비슷한 예시로 inline이 있다)

컴파일 도중 "반드시" 값이 결정되게 하려면 constexpr변수를 쓸 것

 

문자열 해쉬를 도중에 만들 수 있다면?

-> 문자열 비교에 드는 런타임 비용은 언제나 O(1)이 된다.

-> constexpr을 써서 컴파일 타임에 문자열 해쉬를 만들 수 있게 됐다!

 

참고로 const와 constexpr은 다르다.

변수의 경우

const => 변경을 불허

constexpr => 컴파일 시 평가를 해달라

하지만 둘 다 const다

즉 constexpr도 변경을 불허한다.

함수의 경우

const => 멤버 함수에만 사용 가능, 멤버 변수 변경 불가

constexpr => 멤버, 비멤버 함수에 사용 가능, 멤버 변수를 변경 가능(C++ 14부터)

반응형
저작자표시 (새창열림)

'C++' 카테고리의 다른 글

가변 인자 템플릿  (1) 2022.03.04
람다 식(Lambda Expression)  (0) 2022.03.03
이동 생성자 및 이동 대입 연산자  (0) 2022.02.19
C++ 스마트 포인터  (1) 2021.12.28
C++ STL  (0) 2021.12.27
'C++' 카테고리의 다른 글
  • 가변 인자 템플릿
  • 람다 식(Lambda Expression)
  • 이동 생성자 및 이동 대입 연산자
  • C++ 스마트 포인터
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (302)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (49)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
C++ constexpr
상단으로

티스토리툴바