http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50864
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|ice-on-invalid-code |ice-on-valid-code
Status|WAITING |NEW
CC| |jason at gcc dot gnu.org
Summary|SFINAE bug |[4.6/4.7 Regression] ICE
| |with decltype and "declval"
| |from another namespace
--- Comment #6 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-10-25
17:04:41 UTC ---
Ok, this way at least part of the issue is more clear: the below doesn't parse,
remove the impl namespace and it works:
/////////////////
namespace impl
{
template <class T> T create();
}
template < class lhs, class rhs >
struct is_arrow_operable_impl
{
template <class T, class U,
class = decltype(impl::create<T>() -> impl::create<U>())>
void test();
};