[llvm-bugs] [Bug 27494] New: C++ Member access control in explicit template instantiations not working
via llvm-bugs
llvm-bugs at lists.llvm.org
Sat Apr 23 10:21:13 PDT 2016
https://llvm.org/bugs/show_bug.cgi?id=27494
Bug ID: 27494
Summary: C++ Member access control in explicit template
instantiations not working
Product: clang
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: bugfinder1 at gmx.com
CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
Classification: Unclassified
These private member functions fail to compile when used as an argument of an
explicit template instantiation:
- overloaded functions
- static overloaded functions
- templated functions
Consider the following code:
struct A
{
private:
int func(int x) { return x; } // overloaded
int func(char x) { return x; } // overloaded
template <typename T>
int funcT(T x) { return x; } // templated
};
template<int (A::*member)(int)>
struct B
{
};
template struct B<&A::func>;
template struct B<&A::funcT<int>>;
int main()
{
return 0;
}
The C++ standard states in 14.7.2/12 [temp.explicit]:
The usual access checking rules do not apply to names used to specify
explicit instantiations. [ Note: In particular, the template arguments and
names used in the function declarator (including parameter types, return types
and exception specifications) may be private types or objects which would
normally not be accessible and the template may be a member template or member
function which would not normally be accessible. — end note ]
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160423/dcdee06d/attachment-0001.html>
More information about the llvm-bugs
mailing list