[Bug c++/80368] New: g++ thinks sizeof a non-type template parameter is dependent
aschepler at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Apr 8 13:07:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80368
Bug ID: 80368
Summary: g++ thinks sizeof a non-type template parameter is
dependent
Product: gcc
Version: 6.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: aschepler at gmail dot com
Target Milestone: ---
g++ rejects the following valid code:
template <unsigned int N>
struct A {
static constexpr unsigned int value = N;
};
template <unsigned int N>
struct B : public A<sizeof(N)> {
static constexpr unsigned int member = value;
};
claiming "value" was not declared in the scope of B<N>.
Standard section 14.6.2 is clear: sizeof unary-expression is never
type-dependent, and is only value-dependent if the unary-expression is
type-dependent. But (N) is only value-dependent, so sizeof(N) is not dependent
at all. Name lookup should include members of all non-dependent base classes.
More information about the Gcc-bugs
mailing list