Nếu tôi được phép làm như sau:
template <typename T = int>
class Foo{
};
Tại sao tôi không được phép làm như sau?
Foo me;
Nhưng tôi phải xác định như sau:
Foo<int> me;
C ++ 11 đã giới thiệu các đối số mẫu mặc định và ngay bây giờ chúng khó nắm bắt được sự hiểu biết hoàn chỉnh của tôi.
Foo
có thể là định danh mẫu hoặc có thể là một khởi tạo rõ ràng tùy thuộc vào việc có một đối số mặc định hay không. Tốt hơn nên giữ cú pháp khởi tạo rõ ràng. Hãy nghĩ về nó giống như một hàmfoo
với một tham số mặc định duy nhất. Bạn không thể gọi nó như thếfoo
, bạn gọi nó vớifoo()
. Nó có ý nghĩa để giữ sự nhất quán này.