728x90

cpp-basic 3

[cpp] type_traits

컴파일 타임에 type을 체크하는 type_traits type_traits 란?경량 임베디드에 사용 가능한 STL을 만드는 HSTL이라는 Toy project를 하는 중인데제일 처음 type_traits를 만들어야 한다고 함 type_traits은컴파일 타임에 type을 체크하는 용도템플릿 메타 프로그래밍의 기본 요소템플릿은 “모든 타입을 다 받을 수” 있지만, 특정 타입에서만 다르게 처리하고 싶을 때가 많음즉, 컴파일 타임 조건문(static if) 을 만드는 기반#ifndef HSTL_TYPE_TRAITS_H#define HSTL_TYPE_TRAITS_Hnamespace hstl {// integral_constanttemplate struct integral_constant { static..

TIL/2025 2025.09.24

[cpp] Request and Suppress (=default, =delete)

— 의도를 코드에 담는 방법C++ 코드를 작성하다 보면 컴파일러가 자동 생성해주는 부분이 있어요.대표적인 게 바로 기본 생성자, 복사 생성자, 소멸자 같은 특별 멤버 함수들이죠. 그럼 지금 그 코드 과연 내 의도가 잘 담긴 코드일까?이 질문에서 출발해 default 와 delete 키워드를 깊게 알아봤어요. default를 써야 했던 순간처음에는 단순한 클래스였어요.class MyObject {public: MyObject(int number) { std::cout 이때 int 생성자를 하나 추가했는데, 갑자기 MyObject obj; 에서 오류가 났어요“엥? 왜 안 되지?” 하다가 찾아보니,사용자가 생성자를 하나라도 정의하면, 컴파일러는 기본 생성자를 만들어주지 않는다라는 규칙 때문..

TIL/2025 2025.09.08

[cpp] Lambda Functions

그냥 함수를 쓰면 될 것 같은데 왜 귀찮게 Lambda 함수 쓰는지 알아보자 람다 함수 생김새를 살펴보자일단 Lambda 함수의 문법을 보자아주 요상하게 생겼다[] () -> {...}[] : Captures the used variables() : Parameters-> : Return value{} : Function body아직 뭔지 잘 모르겠다함수랑 비슷하면서도 다르다 Function vs Function ObjectCompiler는 람다함수 구현체를 Class instance 형태로 해석해요해당 클래스에서 operator () 연산자를 재정의 하는게 핵심이죠 이 클래스의 객체를 생성한 것을 function object라고 불러요 만약, 아래의 람다 함수를 정의했다면auto addObj = ..

TIL/2025 2025.08.25
728x90