19.3 Function template specialization


https://www.learncpp.com/cpp-tutorial/function-template-specialization/
メンバー関数が特定のパラメータタイプのclass objectにある場合
特殊な機能が必要な場合は、次の方法で実現できます.
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関数を簡略化するには、次のコードを使用します.
template <>
void Storage<double>::print()
{
    std::cout << std::scientific << m_value << '\n';
}
上記の場合、出力は次のようになります.
5
6.700000e+000
それ以外の例は省略する