https://llvm.org/bugs/show_bug.cgi?id=28517

            Bug ID: 28517
           Summary: Unable to call a protected member function from a
                    derived class
           Product: clang
           Version: 3.8
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++14
          Assignee: unassignedclangb...@nondot.org
          Reporter: roman.perepeli...@gmail.com
                CC: llvm-bugs@lists.llvm.org
    Classification: Unclassified

struct B1 {
   protected:
    static void F(int);
  };

  struct B2 : B1 {
   protected:
    using B1::F;
    static void F();
  };

  struct D : B2 {
    template <class T>
    using Void = decltype(D::F(T()));
  };

  void Test() {
    using Void = D::Void<int>;
  }

Expected behaviour: compiles.
Actual behaviour: compile error (see below).

  15 : error: 'F' is a protected member of 'B2'
  using Void = decltype(D::F(T()));
  ~~~^
  19 : note: in instantiation of template type alias 'Void' requested here
  using Void = D::Void<int>;
  ^
  9 : note: declared protected here
  using B1::F;
  ^

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to