This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/51213] [C++11][DR 1170] Access control checking has to be done under SFINAE conditions
- From: "jason at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 19 Jul 2012 01:36:55 +0000
- Subject: [Bug c++/51213] [C++11][DR 1170] Access control checking has to be done under SFINAE conditions
- Auto-submitted: auto-generated
- References: <bug-51213-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51213
--- Comment #6 from Jason Merrill <jason at gcc dot gnu.org> 2012-07-19 01:36:55 UTC ---
Author: jason
Date: Thu Jul 19 01:36:50 2012
New Revision: 189639
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189639
Log:
DR 1170
PR c++/51213
* semantics.c (perform_access_checks): Add complain parm, return bool.
(perform_deferred_access_checks): Likewise.
(perform_or_defer_access_check): Likewise.
(speculative_access_check): Remove.
* call.c (enforce_access): Add complain parm, return bool.
* decl.c, friend.c, class.c, init.c, parser.c: Adjust callers.
* search.c: Adjust callers.
* cp-tree.h (TINFO_RECHECK_ACCESS_P): New macro.
(FNDECL_RECHECK_ACCESS_P): New macro.
* method.c (synthesized_method_walk): Stop deferring access checks.
* pt.c (recheck_decl_substitution): New.
(instantiate_template_1): Set and check FNDECL_RECHECK_ACCESS_P.
Added:
trunk/gcc/testsuite/g++.dg/cpp0x/sfinae37.C
trunk/gcc/testsuite/g++.dg/template/access23.C
trunk/libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/class.c
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/decl.c
trunk/gcc/cp/friend.c
trunk/gcc/cp/init.c
trunk/gcc/cp/method.c
trunk/gcc/cp/parser.c
trunk/gcc/cp/pt.c
trunk/gcc/cp/search.c
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/template/access7.C
trunk/gcc/testsuite/g++.dg/template/sfinae10.C
trunk/gcc/testsuite/g++.dg/template/sfinae6_neg.C
trunk/libstdc++-v3/ChangeLog