Wie deklariere ich eine Struktur/Klasse mit Vorlage als Freund?

Lesezeit: 1 Minute

Wie deklariere ich eine StrukturKlasse mit Vorlage als Freund
Alexandre C.

Ich möchte Folgendes tun:

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

private:
    // ...
};

aber mein Compiler (VC8) verschluckt sich daran:

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

Ich möchte alle möglichen Instanziierungen von haben template struct foo Freunde von foo<T> für alle T.

Wie mache ich das?

EDIT: Das

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

private:
    // ...
};

scheint zu kompilieren, aber ist es richtig? Freunde und Vorlagen haben eine sehr unnatürliche Syntax.

template<typename> friend class foo

Dadurch werden jedoch alle Vorlagen miteinander befreundet. Aber ich denke, das ist, was Sie wollen?

  • Können Sie bitte den Referenzabschnitt zum Standard posten, wo er definiert ist?

    – Herr Anubis

    5. März 2012 um 18:20 Uhr

  • In C++03 in 14.5.3.3 und 14.5.3.4 müssen Sie in C++11 den Abschnitt „Freunde“ in 14.5.4 lesen

    – Mohammed

    4. April 2014 um 13:37 Uhr

915620cookie-checkWie deklariere ich eine Struktur/Klasse mit Vorlage als Freund?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy