https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67684

            Bug ID: 67684
           Summary: [concepts] friend access not working with constrained
                    function
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ryan.burn at gmail dot com
  Target Milestone: ---

The following code fails to compile with g++ (GCC) 6.0.0 20150915
(experimental)

/////////////////////////////////
template<class T>
class A {
 public:
  template<int I, class S>
    requires I > 0
  friend int f(const A<S>&);
 private:
  int x = 2;
};

template<int I, class S>
  requires I > 0
int f(const A<S>& a) { 
  return a.x;
} 

int main() { 
  A<double> a;
  f<2>(a);
  return 0;
} 
/////////////////////////////////

I get the error

main.cpp:14:12: error: ‘int A<double>::x’ is private within this context

But I expect it should be valid code (it compiles fine if the constraint is
removed)

Reply via email to