본문 바로가기

[C++17] filesystem C++17에서, 경로와 디렉터리, 확장자 등에 관련된 연산을 하는 C++ 표준 라이브러리가 추가됐다. boost API에 있는 기능이었지만, 사용법은 약간 다른 것 같다(boost API를 써 본 적이 없어서 확답을 못 하겠다). namespace std::experimental::filesystem::v1 에 정의되어 있으며(#include ), C++ 표준 라이브러리와 같이 사용하면 굉장히 편하게 사용이 가능하다. 장점 : 파일 경로를 저장하기 위한 path 클래스를 지원한다. path 클래스의 멤버는 문자열과 경로 설정을 위한 기능을 제공한다. path 클래스를 사용하여 간단하게 확장자를 확인하고 교체할 수 있다. path 클래스에서 UNICODE와 MULTIBYTE 모두 지원한다. 이것은 std:.. 더보기
[C++] invoke 함수의 동작원리를 통해 설명하는 템플릿 부분 특수화와 SFINAE 템플릿 부분 특수화 기법(partial template specialization)은 템플릿을 이용한 구조체나 클래스, 함수 등에서 일부 템플릿을 특정하여 오버로드 하는 기법을 말한다. 자세한 것은 MSDN을 참고 | https://msdn.microsoft.com/ko-kr/library/3967w96f.aspx SFINAE(Substitution Failure Is Not An Error)은 템플릿의 치환이 틀리더라도, 다른 템플릿에서 알맞은 치환이 있을 수 있기 때문에 Substitution Failure (치환 실패 : 형식을 올바로 추론할 수 없을 경우) Is Not An Error(에러가 아니다) 라고 부른다. 자세한 것은 SFINAE를 검색해도 좋고, 개인적으로 해당 블로그를 참고했다. SF.. 더보기
[C++11] 균일 초기화(중괄호 초기화) 중괄호 초기화 Visual Studio 2010, 또는 그 이하의 버전에서 구조체를 초기화하려면 별도의 초기화 함수를 두거나, 클래스처럼 초기화를 만들어야 했다. 예를 들어, Windows API 에서 자주 쓰이는 구조체 RECT를 보자. VS 2010 까지는 RECT의 초기화를 이렇게 해줘야 했다. RECT rc;rc.left = 0; rc.top = 0, rc.right = 100; rc.bottom = 100; 조금 더 귀찮아지면 이렇게 만들어 줄 수 있다.RECT MakeRect(LONG left, LONG top, LONG right, LONG bottom){RECT rc;rc.left = left; rc.top = top, rc.right = right; rc.bottom = bottom;re.. 더보기