默认模板参数值

就像函数参数一样,模板参数可以具有默认值。必须在模板参数列表的末尾声明具有默认值的所有模板参数。基本思想是在模板实例化时可以省略具有默认值的模板参数。

默认模板参数值用法的简单示例:

template <class T, size_t N = 10>
struct my_array {
    T arr[N];
};

int main() {
    /* Default parameter is ignored, N = 5 */
    my_array<int, 5> a;

    /* Print the length of a.arr: 5 */
    std::cout << sizeof(a.arr) / sizeof(int) << std::endl;

    /* Last parameter is omitted, N = 10 */
    my_array<int> b;

    /* Print the length of a.arr: 10 */
    std::cout << sizeof(b.arr) / sizeof(int) << std::endl;
}