본문 바로가기

c++ template the complete guide6

[C++] Type Erasure Reference Ch22, C++ Template The Complete Guide Contents Function Objects, Pointers, and std::function Bridge Interface Type Erasure Optional Bridging (for lambda) C++에는 정적 다형성(static polymorphism - via template)과 동적 다형성(dynamic polymorphism - via inheritance and virtual function)이 있다. 코드를 작성할 때 두 종류의 다형성으로 강력한 추상화가 가능하지만, 각각에는 장단점이 있다. 정적 다형성은 다형성이 적용되지 않은 일반 코드와 같은 성능을 갖지만, 런타임에 사용할 수 있는 타입 집합.. 2023. 12. 15.
[C++] Overloading on Type Properties References Ch 20, C++ Templates The Complete Guide Contents Algorithm Specialization Tag Dispatching Enabling/Disabling Function Templates 함수 오버로딩(function overloading)은 같은 함수 이름을 여러 함수에서 사용할 수 있도록 하는 것이다. 단, 이러한 함수들은 이 함수들의 파라미터로 구별된다. void f(int); void f(char const*); 함수 템플릿(function templates)에서는 타입 패턴에 오버로드된다. template void f(T*); template void f(Array); Type traits를 생각해 보면 템플릿 인자의 속성을 기반으로 .. 2023. 11. 25.
[C++] 값으로 전달과 참조로 전달 (std::ref(), std::cref()) References Ch7, C++ Templates The Complete 2nd Contents Passing By Value Passing By Reference Using std::ref() and std::cref() Dealing with String Literals and Raw Arrays Dealing with Return Values C++이 처음 나왔을 때부터 call-by-value(값으로 전달)와 call-by-reference(참조로 전달)을 모두 제공한다. 일반적이지 않은 객체를 전달할 때는 참조로 전달하는게 더 나을 때가 많지만 값으로 전달보다 더 복잡하다. C++11부터는 이동 의미론 개념이 생기면서 참조로 전달하는 방법이 아래와 같이 더욱 다양해졌다. X const& (.. 2023. 7. 11.
[C++] Nontype Template Parameters References ch3, C++ Templates The Complete Guide Contents Nontype Class Template Parameters Nontype Function Template Parameters Restrictions for Nontype Template Parameters Template Parameter Type auto [C++] Function Templates [C++] Class Templates 함수와 클래스 템플릿에서 템플릿 파라미터가 반드시 타입일 필요는 없으며, 일반적인 값일 수도 있습니다. 타입 파라미터를 사용하는 템플릿을 사용한다면 코드가 실제로 사용되기 전까지 특정 세부 구현이 결정되지 않은 채로도 코드를 정의할 수 있습니다 (템플릿은 실제로 사.. 2022. 12. 30.
[C++] Class Templates References Ch2, C++ Templates The Complete Guide 2nd Contents Stack 클래스 템플릿 구현 및 사용, 부분 사용 Friends Specialization (특수화) Partial specialization Default class template arguments Type aliases Class template argument deduction Templatized aggregates [C++] Function Templates 지난 포스팅인 함수 템플릿에 이어서 이번 포스팅에서는 클래스 템플릿에 대해서 살펴보도록 하겠습니다. 클래스도 함수처럼 하나 이상의 타입으로 파라미터화될 수 있는데, 특정 타입의 요소를 관리하는 STL의 컨테이너 클래스가 이러한 .. 2022. 12. 29.
[C++] Function Templates References Ch 1, C++ Templates The Complete Guide 2nd Contents Basic of function templates Two-Phase Translation Template argument deduction Multiple template parameters Default template arguments Overloading function templates Function Templates 함수 템플릿은 다른 타입들에 대해 호출될 수 있는 기능적인 동작을 제공합니다. 즉, 함수 템플릿은 함수족(a family of functions)라고 표현할 수 있습니다. 아마 잘 아시다시피 템플릿 함수는 함수의 몇몇 요소의 타입이 결정되지 않았다는 것만을 제외하면 일반.. 2022. 12. 28.