형식 연역 결과를 직접 확인하는 수단은 소프트웨어 개발 과정에서 정보가 필요한 시점에 따라서 다릅니다. 이번 항목에서는 다음과 같은 3가지 시점에서 형식 연역 정보를 얻는 방법을 살펴보겠습니다 : 코드를 작성 및 수정하는 시점 컴파일 시점 실행시점 코드를 작성 및 수정하는 시점 IDE 편집기 IDE의 코드 편집기 중에는 프로그램 개체(변수, 매개변수, 함수 등) 위에 마우스 커서를 올리면 그 개체의 형식을 표시해 주는 것이 많습니다. 예를 들어, 다음과 같이 코드가 있을 때, const int the Answer= 42; auto x = theAnswer; auto y = &theAnswer; IDE 편집기는 x의 연역된 형식이 int이고 y의 연역된 형식이 const int*임을 표시해 줍니다. IDE..
decltype은 주어진 이름이나 표현식의 형식(type)을 알려주는 키워드입니다. 대부분의 경우에서 decltype이 사용자가 예측한 그 형식을 말해 주지만, 아주 가끔 예상 밖의 결과를 제공하기도 합니다. 먼저, 대부분의 경우부터 살펴보겠습니다. 템플릿과 auto의 형식 연역(항목 1과 항목 2 참고)에서 일어나는 일과는 달리. decltype은 주어진 이름이나 표현식의 구체적인 형식을 그대로 말해줍니다. const int i = 0; // decltype(i)는 const int bool f(const Widget& w) // decltype(w)는 const Widget& // decltype(f)는 bool(const Widget&) struct Point{ int x, int y; // dec..
항목 1에서 템플릿의 형식 연역에 대해서 알아 봤습니다. 템플릿에 대한 형식 연역을 이해하고 있다면 auto의 형식 연역에 대한 것의 거의 전부를 알고 있다고 할 수 있습니다. 한 가지의 기이한 예외를 빼고, auto의 형식 연역이 곧 템플릿의 형식 연역 방식과 같기 때문입니다. 앞서 항목 1 에서는 일반적인 함수 템플릿과 일반적인 템플릿 함수 호출을 다음과 같이 예를 들어서 템플릿 형신 연역을 설명했습니다: // 템플릿 함수 선언 template void f(ParamType param); // 템플릿 함수 호출 f(expr); // 어떤 표현식으로 f 호출 auto를 이용해서 변수를 선언할 때 auto는 템플릿의 T 와 동일한 역할을 하며, 변수의 형식 지정자(type specifier)는 Param..
어떤 복잡한 시스템의 사용자가 그 시스템의 작동 방식을 알지 못해도 잘 사용할 수 있다면 설계가 잘 된 것이라는 관점에서 템플릿 형식 연역은 엄청난 성공작이라 할 수 있습니다. 여기에 대해서 템플릿 연역 규칙을 모르는 프로그래머에 대해서는 좋은 소식과 나쁜 소식이 있습니다 : 좋은 소식 : auto가 템플릿에 대한 형식 영역을 기반으로 작동한다는 것입니다 나쁜 소식 : 템플릿 형식의 연역 규칙들이 auto의 문맥에 적용될 때에는 템플릿에 적용될 때에 비해 덜 직관적인 경우가 존재합니다. 앞서 언급한 사항들 때문에 auto를 잘 활용하기 위해 auto가 기초하고 있는 템플릿 형식 연역의 면모를 제대로 이해하는 것이 중요합니다. 먼저 함수 템플릿의 선언을 살펴보겠습니다 : // 함수 템플릿 선언의 일반적 모..
본 포스팅은 Effective Modern C++ (3rd edition)에 대한 내용을 정리하기 위한 시리즈입니다. 이번 포스팅에서는 소개 부분의 간단히 정리되어 있는 C++ 문법과 idiom에 대한 용어만 짧막하게 정리하였습니다. 용어 정리 l-value와 r-value l-value는 등호의 좌변에 올 수 있는 값을 뜻하는 'left value'에서 비롯된 것입니다. 하지만 C++에서는 LVALUE가 아니면서도 등호의 좌변에 올 수 있는 값이 존재합니다. r-value는 l-value가 아닌 값들입니다. 일반적으로 value에 주소 연산자(&)를 취할 수 있다면 l-value이고 그렇지 않다면 r-value입니다. 함수 객체, 클로저 함수 객체(function object)라는 용어는 operato..
- Total
- Today
- Yesterday
- 언리얼 엔진
- C++ Compile error
- 퍼포스 개요
- P4 Stream
- c++ 핫 리로드
- UE4
- 행렬
- 구간합
- visual studio 핫 리로드
- C7568
- 코드 저작권
- 구글테스트
- visual studio hot reload
- Perforce Streams
- game hot reload
- code copyright
- C++
- C# 익명함수
- 알고리즘
- c++ hot reload
- Visual Studio C1083
- GoogleTest
- DXGI
- MSVC C1083
- C# lambda expression
- P4 Streams
- Perforce Stream
- C# 람다식
- Auto
- 퍼포스 스트림
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |