C++ Logo

STD-PROPOSALS

Advanced search

Subject: [std-proposals] Variadic Friends
From: Jody Hagins (coachhagins_at_[hidden])
Date: 2020-01-31 12:44:48


I would like to get feedback on adding a new clause to 17.5.3:4 [temp.variadic] such that the following example would make all classes in the expanded pack friends.

template <typename ... Ts> class Foo
{
    friend Ts...;
};

If the pack is empty, there are no friend declarations. Otherwise, it would be as-if there were one friend declaration for each type in the Ts parameter pack. For example,

// As-if instantiation for Foo<>
template <> class Foo<> {
};

// As-if instantiation for Foo<A>
template <> class Foo<A> {
    friend A;
};

// As-if instantiation for Foo<A, B, C>
template <> class Foo<A, B, C> {
    friend A;
    friend B;
    friend C;
};

While this does not fit the more traditional patterns for parameter pack expansion, it is not too different from variadic-using statements.

I would have thought that this would have already come up, but I can't seem to find anything via google searches, nor a search of this group history. In addition to feedback on this, I would also appreciate any input on how to improve searches for such things.

Thanks!



STD-PROPOSALS list run by std-proposals-owner@lists.isocpp.org

Standard Proposals Archives on Google Groups