38
Tôi muốn làm như sau:Mẫu người bạn
template <typename T>
struct foo
{
template <typename S>
friend struct foo<S>;
private:
// ...
};
nhưng trình biên dịch của tôi (VC8) cuộn cảm trên nó:
error C3857: 'foo<T>': multiple template parameter lists are not allowed
Tôi muốn có tất cả các khởi tạo có thể có của template struct foo
bạn bè của foo<T>
cho tất cả T
.
Làm cách nào để thực hiện công việc này?
EDIT: Đây
template <typename T>
struct foo
{
template <typename>
friend struct foo;
private:
// ...
};
dường như biên dịch, nhưng là nó có đúng không? Bạn bè và các mẫu có cú pháp rất không tự nhiên.
cảm ơn hoạt động. Đúng, đó là điều tôi muốn. –
bạn có thể vui lòng đăng phần tham chiếu đến tiêu chuẩn mà nó được xác định không? –
Trong C++ 03 trong 14.5.3.3 và 14.5.3.4, trong C++ 11 bạn cần đọc phần Friends trong 14.5.4 –