C++23 8. 가변인자 템플릿 가변인자 템플릿 n개의 인자를 받는 템플릿 0개일 수도 있고, 여러 개일 수도 있음 인자와 타입의 개수가 정해지지 않은 형태의 템플릿 tuple의 경우 가변인자 클래스 템플릿으로 되어 있음 인자를 0개를 줘도, 1개를 줘도, n개를 줘도 에러가 발생하지 않는다. // 가변인자 클래스템플릿 template class xtuple { }; // 가변인자 함수템플릿 template void foo(Types ... args) { } 타입의 경우 1개가 아니므로 관례상 Types로 통일 받는 인자쪽도 arg가 아닌 복수형 args로 통일 Parameter Pack C++11부터 지원 가변인자를 받는 함수의 경우 Parameter Pack을 통해 args를 사용할 수 있다. 인자가 몇 개 있는지 알고 싶으면 si.. 2022. 10. 6. 7. 템플릿 Type Traits 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ Type Traits 컴파일 시간에 타입에 대한 정보, 변형된 타입을 얻을 때 사용함 메타 함수라고도 불림 T가 포인터인지 알아내는 테크닉 #include #include // foo의 T가 포인터인지 알아내려면 구조체를 만듦 template struct xis_pointer { enum { value = false}; }; //부분 특수화 template struct xis_pointer { enum { value = true }; }; template void foo(T v) { // 부분 특수화를 통해 is_pointer 구.. 2022. 9. 30. 6. 템플릿 특수화 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ 템플릿 특수화란? 특정 타입에 대해 이렇게 처리 해주세요~ 하는 것 클래스를 만들어내는 틀을 필요에 맞게 교체하는 것 #include #include /* Primary template */ template class Stack { public: void push(T a) { std::cout 2022. 9. 29. CPP_1. AssortRock 15일차 오프라인 수업_220927 std::pair 구현 pair는 map을 구성하는 요소 map과 pair는 항상 같이 쓰임 namespace ya { template class pair { public: public: T1 first; T2 second; }; } pair의 기본 모양 템플릿으로 타입 2개를 받아서 그 타입에 대응하는 값의 쌍으로 만들어짐 외부에서 first와 second에 접근할 수 있으므로 데이터를 public으로 뺌 pair() : first(T1()) , second(T2()) {} // 생성자 pair(const T1& f, const T2& s) : first(f) , second(s) {} // 이동 생성자 pair(T1&& f, T2&& s) : first(f) , second(s) {} 기본 생성자와 .. 2022. 9. 28. 이전 1 2 3 4 5 6 다음