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
이 외의 예시는 생략한다