[Bug c++/60708] [4.8/4.9 Regression] An array temporary causes an ICE in gimplify
ville.voutilainen at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Mar 31 12:54:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60708
--- Comment #3 from Ville Voutilainen <ville.voutilainen at gmail dot com> ---
So, to clarify, this is not accepts-invalid, nor is it a 4.7->4.9 regression
with regards to whether the function should be accepted. If I change the test
to
be purely C++11, it ICEs on 4.7 and 4.8 as well.
template <class T, class U> struct mypair {
mypair(T, U) {}
};
template <class T, class U> auto my_make_pair(T t, U u) -> mypair<T, U>
{
return mypair<T, U>(t, u);
}
template<typename T> struct S {
mypair<T *, int> get_pair() noexcept {
return my_make_pair((T*)nullptr, 0);
}
};
static void foo(const mypair<char *, int> (&a)[2]) noexcept { }
int main()
{
S<char> s;
//mypair<char*, int> jones[2]{s.get_pair(), s.get_pair()};
//foo(jones);
foo({s.get_pair(), s.get_pair()});
}
More information about the Gcc-bugs
mailing list