Visual Studio 2010 공식 팀 블로그 @vsts2010

[VC++] 14. decltype

C++0x 2009/06/30 22:00
Posted by 흥배
VSTS 2010 Beta1에 추가된 C++0x의 decltype에 대해서 아주 아주 짧게 이야기하려고 합니다.^^

템플릿 형(type)이랑 템플릿 메타 프로그래밍 등에서 함수의 반환 형이 복잡하게 정의 되어 있는 경우 형을 단순하게 기술할 수 없습니다.

C++0x에서는 이런 문제를 풀기 위해 auto decktype 두 개를 제공합니다.

auto는 이미 앞에서 제가 설명했으니 기억나지 않은 분들은 다시봐 주세요^^

 

decltype은 auto 처럼 식의 형을 컴파일 할 때 결정할 수 있습니다.


사용 예는 아래와 같습니다.

int Hp;

decltype(Hp) NPCHp = 5;

decltype(Hp + NPCHp) TotalHp;
decltype(Hp) *pHp = &Hp;


decltype(Hp) NPCHp = 5;는

Hp가 int 형이므로 int NPCHp = 5라고 컴파일 할때 결정됩니다.


decltype(Hp + NPCHp) TotalHp;

는 int와 int의 덧셈이므로 int TotalHp;로 됩니다.


decltype(Hp) *pHp = &Hp;는 int* pHp = &Hp로 됩니다.



또한 함수의 반환형에도 사용할 수 있습니다.

int foo();

decltype(foo()) value;


decltype(foo()) value;는
int value;로 됩니다.




처음 말했듯이 decltype에 대해서는 이렇게 아주 짧게 이야기를 마치겠습니다. ㅎㅎ

만약 decltype에 대해서 좀 더 자세하게 알고 싶다면 VC++ 팀의 블로그에 있는 글을 추천합니다.
http://blogs.msdn.com/vcblog/archive/2009/04/22/decltype-c-0x-features-in-vc10-part-3.aspx

 
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License

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

nullptr  (1) 2010/01/28
대용량 파일 조작을 위한 C++0x의 변화  (0) 2009/09/07
[VC++] 14. decltype  (0) 2009/06/30
[VC++] 13. Lambda - 네 번째  (3) 2009/06/23
[VC++] 12. Lambda - 세 번째  (0) 2009/06/16
[VC++] 11. Lambda - 두 번째  (0) 2009/06/09

댓글을 달아 주세요