타입들에 대해 여러가지 연산을 수행할 수 있는 메타 함수들을 제공하고 있다.static_assert(bool 타입의 constexpr) 전달된 식이 참이라면 컴파일러에 의해 해당 식은 무시되고 거짓이라면 해당 문장에서 컴파일 오류 발생시킴v를 static 인자로 가지는
이 데이터에 이름이 있고 주소를 취할 수 있는가(정체성) / 이동시킬 수 있는가(이동 생성자, 이동 대입 연산자등 사용여부)에 대한 분류이다.위의 세 가지를 묶어서 부르는 '그룹명', 컴파일러가 규칙을 적용할 때 주로 사용 정체성(Identity)을 가진 모든 것

타입을 알고자 하는 식의 타입으로 치환되게 됨괄호로 둘러쌓이지 않은 식별자 표현식(id-expression)일 경우 해당식의 타입을 얻을 수 있다.개별 엔티티(변수, 함수, 네임스페이스 등)를 식별하기 위해 사용하는 모든 명칭이 식별자 표현식에 해당한다. 범위 결정

이 키워드가 붙은 객체나 함수의 리턴 값을 컴파일 타임에 알 수 있다는 의미를 가짐 어떠한 식이 상수식이라고 명시해주는 키워드const로 정의된 상수들은 굳이 컴파일 타임에 그 값을 알 필요가 없음.goto 문 사용예외 처리(trya문 C++ 20 부터 가능)리터럴 타
C++11 이전에는 객체를 초기화하는 방법이 너무 파편화되어 있었습니다.어떤 건 ()를 쓰고, 어떤 건 {}를 쓰고, 어떤 건 =를 썼죠.특히 "가장 성가신 구문 분석(Most Vexing Parse)"이라는 치명적인 문법적 모호함이 있었습니다.모든 데이터 타입을 중괄

std::thread는 하위 레벨의 운영체제 스레드를 직접 다루는 객체입니다. 스레드가 생성되어 함수를 실행하고 나면, 그 결과값을 어디에 저장해야 할지 std::thread 자체는 알 방법이 없습니다.비동기성: 스레드는 자기가 할 일을 다 하고 언제 끝날지 모릅니다.
현대 C++의 동기화 도구들은 "안전성, 성능, 추상화"라는 세 가지 축을 중심으로 발전해 왔습니다.일반적인 mutex는 운영체제의 커널 리소스를 사용하므로 매우 무겁습니다. 스레드가 잠들고 깨어날 때 발생하는 Context Switch 비용을 줄이고, CPU 하드웨
std::move는 단지 x를 T&&로 static_cast 해주는 함수→ “이 값은 이제 rvalue(xvalue)처럼 취급해도 좋다”는 의사를 알리는 역할메모리 복사 X자원 이동 X내부 상태 변경 X→ 진짜 “move” 작업은 move constructor / mo
“이름이 있고, 주소를 잡을 수 있고, 계속 존재하는 객체”를 나타내는 표현식&expr 해서 주소를 얻을 수 있는 애들이 대부분 lvaluex, s, s.a 전부 “실제 메모리 어딘가에 있는 객체”나중에 다시 읽고/쓰고 싶을 때 재사용 가능한 애들 → lvalue“계산
copy elision은 말 그대로 “복사(또는 이동)를 생략하는 최적화이다.copy constructor 또는 move constructor가 호출되어야 하는 지점에서컴파일러가 임시 객체를 만들지 않고, 최종 목적지에 바로 객체를 생성해서복사/이동 생성자 호출 자체를
std::function은 단순 함수뿐만 아니라 operator(), 람다, 멤버 함수, std::bind 등을 포함한 모든 callable 객체를 저장하고 호출할 수 있는 다형적인 함수 래퍼 클래스입니다.템플릿 인자로 함수의 타입(반환, 인자)를 받아 함수 객체를 보
예외처리 과정에서 delete 해야 했던 것을 못하고 넘어가게 되는 경우가 발생→ 메모리 누수(memory leak)하지만 C++에서는,예외가 발생해 함수에서 빠져나가더라도,그 함수의 스택에 정의된 모든 객체는 자동으로 소멸자 호출됨→ 이 과정을 stack unwind
rvalue는 일반적으로 "임시 값", "이름 없는 값"으로 즉, 한 번 쓰고 버리는 값이라고 생각하면 된다. 그렇기에 lvalue 레퍼런스를 하듯 rvalue 레퍼런스를 사용할 경우 오류가 발생할 수 있다. 따라서 &&라는 기호를 사용하여 rvalue 레퍼런스를
C++에서 예외(Exception)는 프로그램 실행 중 오류 또는 비정상적인 상황이 발생했을 때 이를 감지하고 적절히 처리하는 메커니즘이다.예외 처리를 사용하면 프로그램이 비정상적으로 종료되는 것을 방지하고, 오류를 보다 체계적으로 관리할 수 있다.C++ 예외 처리는
람다 함수는 익명 함수(anonymous function)로, 간결하게 정의하여 코드의 가독성을 높이고, 함수 객체(functor) 없이도 간편하게 사용할 수 있다.✅ 람다 함수 기본 문법✅ 예제\[] : 캡처 리스트 (외부 변수를 사용할 수 있게 함)\-> 클래스처럼
문자열을 탐색할 때 사용하는 알고리즘이다.핵심 아이디어는 찾고자 하는 문자열의 접두사(prefix)와 접미사(suffix)에 대하여 일치하는 개수(길이)를 배열로 저장한 후에 탐색할 때 사용하는 것이다.예를 들어 찾고자 하는 문자열 p가 ababc 일 경우 i = 0,
백준 2263번주어진 inorder과 postorder를 고려해 봤을 때 postorder을 통해서 루트를 얻어올 수 있고 inorder를 통하여 미리 구한 루트를 기준으로 왼쪽 서브트리 오른쪽 서브트리를 구할 수 있다는 것을 알아냈다.이를 구현하기 위해 postord
개발자가 함수 반환값을 반드시 사용해야 하는 상황에서 실수를 방지하도록 돕는 도구이다.이런 경우일 때 사용되고 추가로 \`\`\`\[nodiscard("사용자에 대한 ID를 사용하지 않고 있습니다!")] int GetID(const std::wstring& userN
사용자가 원하는 타입을 넣어주면 그에 맞게 짜여지는 틀과 같은 역할을 한다.위 코드처럼 들어가는 변수의 타입에 맞게 코드가 실행된다.위 경우들 처럼 클래스 템플릿에 인자를 전달해서 실제 코드를 생성하는 것을 클래스 템플릿 인스턴스화 (class template inst
레스터라이져 설명Desc와 모드에 관한 더 상세한 설명output merger에 대한 설명(깊이,스텐실,블렌딩)Blend DescBlend Desc에 관한 상세한 설명Depth/Stencil DescDepth/Stencil Desc 상세 설명