This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/42877] New: ICE when checking the type of a lambda
- From: "piotr dot wyderski at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 26 Jan 2010 17:18:04 -0000
- Subject: [Bug c++/42877] New: ICE when checking the type of a lambda
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
gcc-trunk (20100115)
template <typename T> struct toff;
template <typename TR, typename... TA> struct toff<TR (*)(TA...)> {
typedef TR type;
};
template <typename TR, typename TC, typename... TA> struct toff<TR
(TC::*)(TA...) const> {
typedef TR type;
};
template <typename TR, typename TC, typename... TA> struct toff<TR
(TC::*)(TA...)> {
typedef TR type;
};
template <typename T> void dem(T op) {
typedef typename toff<decltype(&T::operator ())>::type r_type;
}
int main(int argc, char *argv[]) {
dem([](int x){ return x; });
return 0;
}
$ g++ -std=gnu++0x br.cpp
br.cpp: In function 'void dem(T) [with T = main(int, char**)::<lambda(int)>]':
br.cpp:29:31: instantiated from here
br.cpp:23:64: internal compiler error: canonical types differ for identical
type
s int(int) and int(int)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
--
Summary: ICE when checking the type of a lambda
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: piotr dot wyderski at gmail dot com
GCC build triplet: i686-pc-cygwin
GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42877