預設模板引數值

就像函式引數一樣,模板引數可以具有預設值。必須在模板引數列表的末尾宣告具有預設值的所有模板引數。基本思想是在模板例項化時可以省略具有預設值的模板引數。

預設模板引數值用法的簡單示例:

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;
}