목록template (3)
Coding Memo
먼저 간단하게 각각 짧게 요약해보자. 템플릿 특수화 (Template Specialization): 템플릿에서 특정 타입이나, 조건에 맞게 별도로 구현해 놓는 것. if constexpr: if 조건문의 constexpr 버전으로, 컴파일 타임에 해당 조건을 확인하고 false인 경우 해당 블록을 컴파일 하지 않는다. concept: C++20부터 추가된 기능으로, 템플릿에 조건을 추가하여 특정 타입이 조건에 맞는지 검증할 수 있는 기능. 이번 글은 템플릿 특수화 대신 if constexpr을 사용하는 것과, concept 타입에 대해서도 템플릿 특수화를 사용해 보는 것을 포함한다. 또한 템플릿 특수화와 if constexpr을 사용할 상황에 대한 내 생각도 작성해보겠다. (이 글을 기록하는 이유는 co..
C++20에서 추가된 Concepts의 기능인 requires에 대해서 간단히 정리해보자. requires는 C#에 비유하자면 where와 비슷한 키워드라고 생각할 수 있을 것 같다.where가 C#에서 제레릭 타입에 대한 조건을 지정하듯이,C++에서도 템플릿 타입에 대해 조건을 지정할 수 있다. Concepts 도입 전에는 SFINAE(Substitution Failure Is Not An Error)를 이용해, 템플릿 타입을 제약했었다. 그러나 C++20 이후에는, 템플릿에서 requires를 이용하여 타입에 대한 제약 조건을 쉽고 직관적으로 지정할 수 있다. 먼저 일반적인 코드를 확인해보자.struct A {};template T add(T a, T b){ return a + b;}int main(..
일단은 해당 내용은 에러나 경고로 나타나지 않고, 단순히 output에서 나타난 일종의 메시지 이다.the template instantiation context (the oldest one first) is 1> ...Session.cpp(49,23): 1> see reference to function template instantiation 'std::shared_ptr NetCore::make_shared,NetCore::_ubyte*&,const size_t&>(std::shared_ptr &&,NetCore::_ubyte *&,const size_t &)' being compiled 1> with 1> [ 1> _Ty=NetCore::Send..