[Bug c++/61806] [C++11] Expression sfinae w/o access gives hard error in partial template specializations

2021-04-28 Thread ppalka at gcc dot gnu.org via Gcc-bugs
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

2018-06-12 Thread jason at gcc dot gnu.org
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

2018-06-11 Thread jason at gcc dot gnu.org
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=gcc=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

2018-06-04 Thread jason at gcc dot gnu.org
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=gcc=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

2018-06-04 Thread jason at gcc dot gnu.org
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

2018-05-22 Thread redi at gcc dot gnu.org
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

2018-05-22 Thread redi at gcc dot gnu.org
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

2017-09-25 Thread gcc-bugs at marehr dot dialup.fu-berlin.de
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

2017-04-20 Thread redi at gcc dot gnu.org
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

2014-12-13 Thread ville.voutilainen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61806

Ville Voutilainen ville.voutilainen at gmail dot com 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 ville.voutilainen at gmail dot com ---
Clang accepts the code.