Date: Sun, 19 Jul 2020 07:02:22 +0100
You are correct, it does not. You will have to mark the method as a friend
in derived.
On Sun, Jul 19, 2020, 05:33 Magnus Fromreide <magfr_at_[hidden]> wrote:
> Hello!
>
> I read P0847R4 and got curious about an edge case.
>
> Consider
>
> struct Base
> {
> int i = 0;
>
> template <class Self>
> auto& f(this Self&& self)
> {
> return forward<Self>(self).i;
> }
> };
>
> struct Derived: private Base
> {
> using Base::f;
> };
>
> Now, as I am reading the proposal the call
>
> Derived().f()
>
> should be ill-formed as it tries to access Derived.i but that is private in
> this context, or does the proposal change the access rules somehow?
>
> /MF
>
in derived.
On Sun, Jul 19, 2020, 05:33 Magnus Fromreide <magfr_at_[hidden]> wrote:
> Hello!
>
> I read P0847R4 and got curious about an edge case.
>
> Consider
>
> struct Base
> {
> int i = 0;
>
> template <class Self>
> auto& f(this Self&& self)
> {
> return forward<Self>(self).i;
> }
> };
>
> struct Derived: private Base
> {
> using Base::f;
> };
>
> Now, as I am reading the proposal the call
>
> Derived().f()
>
> should be ill-formed as it tries to access Derived.i but that is private in
> this context, or does the proposal change the access rules somehow?
>
> /MF
>
Received on 2020-07-19 01:05:48