본문 바로가기

전체 글465

TensorRT CMake 스크립트 (FindTENSORRT.cmake) GitHub - junstar92/FindTENSORRT: cmake script to find TensorRT Library cmake script to find TensorRT Library. Contribute to junstar92/FindTENSORRT development by creating an account on GitHub. github.com find_package(TENSORRT)를 통해 TensorRT 라이브러리를 찾을 수 있는 스크립트 윈도우에서는 아직 테스트해보진 못함 2023. 7. 24.
[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++] Traits(특질) 구현 (2) - SFINAE References Ch 19, C++ Templates The Complete Guide Contents SFINAE-Based Tratis IsConvertibleT Detecting Members SFINAE-Based Tratis SFINAE (substitution failure is not an error; 치환 실패는 에러가 아님) 원칙으로 인해 템플릿 인자를 추론하는 동안 형성되는 유효하지 않은 타입과 표현식은 에러가 아닌 단순히 추론 실패로 취급됩니다. 따라서 다른 오버로딩 후보를 선택할 수 있습니다. 원래 SFINAE는 함수 템플릿 오버로딩에서 발생할 수 있는 가짜 에러를 피하기 위해 도입되었지만, 현재는 특정 타입이나 표현식이 유효한지를 컴파일 과정에 결정할 수 있는 훌륭한 기법으로 .. 2023. 2. 2.
[C++] Traits(특질) 구현 (1) References Ch 19, C++ Templates The Complete Guide Contents Example: Accumulating a Sequence Traits versus Policies and Policy Classes Type Functions 템플릿을 활용하면 다양한 타입으로 클래스와 함수를 파라미터화할 수 있습니다. 템플릿을 타입이나 알고리즘에 맞춰 커스터마이징할 수 있도록 최대한 많은 템플릿 파라미터를 도입하도록 할 수도 있고, 클라이언트 코드의 정확한 니즈를 충족시키도록 템플릿화된 컴포넌트를 인스턴스화시킬 수도 있습니다. 다만, 실질적으로 수십 개의 템플릿 파라미터를 사용하는 것은 그리 좋지는 않습니다. 다행히 왠만한 경우, 추가하고 싶은 파라미터의 대부분은 기본값을 가지고.. 2023. 1. 18.
[C++] 템플릿 특수화(Specialization) References Ch16, C++ Templates The Complete Guide Contents Template Specialization Overloading Function Templates Explicit Specialization Partial Class Template Specialization Partial Variable Template Specialization C++ 템플릿을 사용하여 제너릭한 정의를 사용하여 관련된 클래스, 함수, 또는 변수로 확장할 수 있습니다. 이것만으로도 강력하지만 특정 템플릿 파라미터에서는 제너릭 형태의 연산이 최적이 아닐 수 있습니다. 제너릭 프로그래밍을 지원하는 다른 프로그래밍 언어와 달리 C++에서는 제너릭 정의를 좀 더 특수화된 기능으로 바꾸는 기.. 2023. 1. 15.
[C++] 템플릿 인스턴스화(Instantiation) References Ch14, C++ Templates The Complete Guide Contents On-Demand Instantiation Lazy Instantiation The C++ Instantiation Model Implementation Schemes Explicit Instantiation Compile-Time if Statements 템플릿 인스턴스화(instantiation)는 제너릭 템플릿 정의로부터 타입, 함수, 변수를 생성하는 과정을 말합니다. C++ 템플릿의 인스턴스화 개념은 간단하지만 다소 얽혀져있습니다. 이는 템플릿에 의해 생성된 실체(entities)의 정의가 단 한 곳의 소스 코드로 한정되는 것이 아니기 때문입니다. 템플릿의 위치, 템플릿이 사용된 곳, 템플릿 .. 2023. 1. 11.
[C++] 템플릿 기본 세부사항 References Ch12, C++ Templates The Complete 2nd Contents Parameterized Declarations Template Parameters Template Arguments Variadic Templates Friends [C++] Function Templates [C++] Class Templates [C++] Nontype Template Parameters [C++] Variadic Templates (가변 템플릿) [C++] 템플릿에서 이동의미론과 enable_if [C++] Templates in Practice 앞선 포스팅들에서 템플릿에 대한 기본적인 내용, 즉, 템플릿의 선언, 템플릿 파라미터의 제약, 템플릿 인자의 제약 등에 대해 살펴봤습니다.. 2023. 1. 8.
[C++] Templates in Practice References Ch9, C++ Templates The Complete Guide Contents The Inclusion Model Templates and inline Precompiled Headers Decoding the Error 템플릿 코드는 일반 코드와 약간 다릅니다. 어떤 측면에서는 매크로와 일반(non-template) 선언의 중간이라고 볼 수도 있습니다. 이번 포스팅에서는 템플릿의 기술적인 부분은 배제하고 실제 어떻게 사용할 수 있는지에 대해서 살펴보려고 합니다. 특히 전통적인 C++ 컴파일 시스템(compiler + linker) 측면에서 어떻게 템플릿 코드를 작성하고, 작성하면서 마주할 수 있는 에러 등에 대해서 살펴봅니다. The Inclusion Model 템플릿 소스 코.. 2023. 1. 5.
[C++] Value Categories (값 카테고리) References Appendix B, C++ Templates The Complete Guide https://en.cppreference.com/w/cpp/language/value_category https://www.scs.stanford.edu/~dm/blog/decltype.html Contents lvalues(좌측값) and rvalues(우측값) Value Categories Since C++11 Check Value Categories with decltype Reference Types 표현식(expressions)은 C++ 언어의 기본 토대이며, 연산을 표현하는 기본적은 메커니즘입니다. 모든 표현식에는 타입이 있으며, 이 타입은 표현식의 연산이 생성하는 값의 정적 타입(static.. 2023. 1. 3.
[C++] 템플릿에서 이동의미론과 enable_if<> References Ch6, C++ Templates The Complete Guide Contents Perfect Forwarding Special Member Function Templates std::enable_if C++11에서 도입된 중요한 특징 중 하나가 바로 이동의미론(move semantics) 입니다. 이를 통해 원본 객체 내의 리소스를 다른 객체로 복사하는 것이 아닌 이동시켜 복사 및 할당을 최적화할 수 있습니다. 이는 원본 객체의 내부 값이나 상태가 복사한 뒤 더 이상 필요하지 않을 때 사용할 수 있습니다. 이동의미론이 도입되면서 템플릿 디자인에 많은 영향을 미쳤는데, 제너릭 코드에서 이동의미론을 지원하기 위해 특별한 규칙들도 도입되었습니다. 이번 포스팅에서는 이에 대해서 살펴보도.. 2023. 1. 2.