19.3 Function template specialization
https://www.learncpp.com/cpp-tutorial/function-template-specialization/
メンバー関数が特定のパラメータタイプのclass objectにある場合
特殊な機能が必要な場合は、次の方法で実現できます.
5
6.7
しかしdoubleの場合、出力を特別にしたいと思っています.
print関数を簡略化するには、次のコードを使用します.
5
6.700000e+000
それ以外の例は省略する
メンバー関数が特定のパラメータタイプの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
それ以外の例は省略する
Reference
この問題について(19.3 Function template specialization), 我々は、より多くの情報をここで見つけました https://velog.io/@ikmy0ung/19.3-Function-template-specializationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol