[prev in list] [next in list] [prev in thread] [next in thread]
List: gcc-bugs
Subject: [Bug c++/78173] New: Hard error subtracting pointers to incomplete type in SFINAE context
From: "Casey at Carter dot net" <gcc-bugzilla () gcc ! gnu ! org>
Date: 2016-10-31 17:13:05
Message-ID: bug-78173-4 () http ! gcc ! gnu ! org/bugzilla/
[Download RAW message or body]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78173
Bug ID: 78173
Summary: Hard error subtracting pointers to incomplete type in
SFINAE context
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: Casey at Carter dot net
Target Milestone: ---
Created attachment 39934
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39934&action=edit
Minimal repro
This TU, which should compile without errors:
template<class T>
T&& declval();
template<class...>
using void_t = void;
template<class, class = void>
struct foo { static const bool value = false; };
template<class T>
struct foo<T, void_t<decltype(declval<T>() - declval<T>())>> {
static const bool value = true;
};
struct A;
#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__)
STATIC_ASSERT(!foo<void*>::value); // error: invalid use of 'void'
STATIC_ASSERT(!foo<A*>::value); // error: invalid use of incomplete type
'struct A'
instead produces diagnostics
(http://melpon.org/wandbox/permlink/EwcDiz7ZuqpFXdHZ):
prog.cc: In substitution of 'template<class T> struct foo<T, void_t<decltype
((declval<T>() - declval<T>()))> > [with T = void*]':
prog.cc:22:1: required from here
prog.cc:10:44: error: invalid use of 'void'
struct foo<T, void_t<decltype(declval<T>() - declval<T>())>> {
~~~~~~~~~~~~~^~~~~~~~~~~~~~
prog.cc: In substitution of 'template<class T> struct foo<T, void_t<decltype
((declval<T>() - declval<T>()))> > [with T = A*]':
prog.cc:23:1: required from here
prog.cc:10:44: error: invalid use of incomplete type 'struct A'
prog.cc:14:8: note: forward declaration of 'struct A'
struct A;
^=
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic