19.3 Function template specialization
https://www.learncpp.com/cpp-tutorial/function-template-specialization/
만약 member function이 특정 parameter type의 class object에서
특별한 functionality를 원하는 경우에 다음과 같은 방법으로 가능하다
template <typename T>
class Storage
{
private:
T m_value {};
public:
Storage(T value)
: m_value { value }
{
}
void print()
{
std::cout << m_value << '\n';
}
};
다음과 같은 일반적인 template class가 있다
int main()
{
// Define some storage units
Storage<int> nValue { 5 };
Storage<double> dValue { 6.7 };
// Print out some values
nValue.print();
dValue.print();
}
위와 같이 실행하면 출력은 다음과 같다
5
6.7
그런데 우리가 double의 경우 출력을 특별하게 하고 싶다
이때 다음과 같은 코드를 사용해 print함수를 cutomizing할 수 있다
template <>
void Storage<double>::print()
{
std::cout << std::scientific << m_value << '\n';
}
위와 같은 경우에 출력은 다음과 같다
5
6.700000e+000
이 외의 예시는 생략한다
Author And Source
이 문제에 관하여(19.3 Function template specialization), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ikmy0ung/19.3-Function-template-specialization저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)