[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 --- Comment #9 from Patrick Palka --- *** Bug 80475 has been marked as a duplicate of this bug. ***
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 Jason Merrill changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED Target Milestone|--- |8.2 --- Comment #8 from Jason Merrill --- Fixed for 8.2.
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 --- Comment #7 from Jason Merrill --- Author: jason Date: Mon Jun 11 22:02:19 2018 New Revision: 261464 URL: https://gcc.gnu.org/viewcvs?rev=261464&root=gcc&view=rev Log: PR c++/61806 - missed SFINAE with partial specialization. * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind parameter to constructor. * pt.c (instantiate_class_template_1): Enable access checking before call to most_specialized_partial_spec. Added: branches/gcc-8-branch/gcc/testsuite/g++.dg/cpp0x/sfinae63.C Modified: branches/gcc-8-branch/gcc/cp/ChangeLog branches/gcc-8-branch/gcc/cp/cp-tree.h branches/gcc-8-branch/gcc/cp/pt.c
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 --- Comment #6 from Jason Merrill --- Author: jason Date: Mon Jun 4 15:16:00 2018 New Revision: 261151 URL: https://gcc.gnu.org/viewcvs?rev=261151&root=gcc&view=rev Log: PR c++/61806 - missed SFINAE with partial specialization. * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind parameter to constructor. * pt.c (instantiate_class_template_1): Enable access checking before call to most_specialized_partial_spec. Added: trunk/gcc/testsuite/g++.dg/cpp0x/sfinae63.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/pt.c
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 Jason Merrill changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 --- Comment #5 from Jonathan Wakely --- http://lab.llvm.org:8011/builders/libcxx-libcxxabi-x86_64-linux-ubuntu-gcc-tot-latest-std/builds/310/steps/test.libcxx/logs/FAIL%3A%20libc%2B%2B%3A%3Adeduct.pass.cpp
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 Jonathan Wakely changed: What|Removed |Added Last reconfirmed|2017-09-25 00:00:00 |2018-5-22 --- Comment #4 from Jonathan Wakely --- This is still present on trunk, and causing issues for libc++ when trying to use void_t expressions in deduction guides.
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 gcc-bugs at marehr dot dialup.fu-berlin.de changed: What|Removed |Added CC||gcc-bugs at marehr dot dialup.fu-b ||erlin.de --- Comment #3 from gcc-bugs at marehr dot dialup.fu-berlin.de --- I think I encountered a variant of this bug. Using this new awesome -fconcept feature, you can do the following: ``` template struct type_trait; template <> struct type_trait { static constexpr auto length = 0; }; template <> struct type_trait { private: static constexpr auto length = 0; }; template concept bool has_length = requires(type_t a) { { type_trait::length }; }; int main() { static_assert(!has_length); // expect: false, has no ::length static_assert(has_length); // expect: true, has ::length static_assert(!has_length); // expect: false, ::length is non-visible // but, last one fails in a compiler error return 0; } ``` This example asks whether a type_trait is defined for a given type. And it would be super useful to be able to express this. I think gcc uses internally SFINAE to check this but unfortunately fails because of this bug (probably).
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 Jonathan Wakely changed: What|Removed |Added Last reconfirmed|2014-12-14 00:00:00 |2017-4-20 --- Comment #2 from Jonathan Wakely --- EDG accepts it too.
[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806 Ville Voutilainen changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2014-12-14 CC||ville.voutilainen at gmail dot com Ever confirmed|0 |1 Known to fail|4.10.0 |5.0 --- Comment #1 from Ville Voutilainen --- Clang accepts the code.