[Bug c++/63198] New: [c++1y] decltype in template function declaration yields spurious error
eightycc at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Sep 7 15:36:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63198
Bug ID: 63198
Summary: [c++1y] decltype in template function declaration
yields spurious error
Product: gcc
Version: 4.9.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eightycc at gmail dot com
Created attachment 33455
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33455&action=edit
reproduces decltype bug
Attempting to use decltype to name an argument type in a template function
declaration results in a spurious error message. For example,
// Reproduce decltype bug, condensed from Spirit X3
// gcc 4.9.1 fails to identify f1's declaration
template <typename T>
struct s1;
template <typename T>
struct s2 {
typedef s1<T> t1;
};
template <typename T>
struct s1 {
template <typename T2>
s2<T> operator = (T2 const &) const;
};
struct T;
s1<T> v1;
s2<T> v2;
template <typename T>
void f1(decltype(v1 = v2)::t1);
Compiling this yields:
blackice:decltype-bug rabeles$
~/Development/gcc/gcc-4.9.1-baseline-build/gcc/cc1plus test1.cpp --std=c++1y
test1.cpp:19:30: error: variable or field ‘f1’ declared void
void f1(decltype(v1 = v2)::t1);
More information about the Gcc-bugs
mailing list