Wie deklariere ich eine Template-Struktur / Klasse als Freund?

Möchte ich Folgendes tun:

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    //...
};

aber mein compiler (VC8) drosseln:

error C3857: 'foo<T>': multiple template parameter lists are not allowed

Ich würde gerne alle möglichen Instanziierungen template struct foo Freunde von foo<T> für alle T.

Wie mache ich diese Arbeit ?

EDIT:

template <typename T>
struct foo
{
    template <typename>
    friend struct foo;

private:
    //...
};

scheint zu kompilieren, aber ist es richtig ? Freunde und Vorlagen haben sehr unnatürlich syntax.

InformationsquelleAutor der Frage Alexandre C. | 2010-07-20

Schreibe einen Kommentar