I tried to reduce as much as possible (maybe too much, we'll see...) an issue
which is blocking our work on std::bind. Note, the problem disappears if I
simplify the testcase further to not use variadic templates while keeping the
rest unchanged.
Jason, can you help us?
//////////////////
template<typename... _Elements>
class tuple;
template<typename _Arg>
class _Mu;
template<typename _Signature>
struct _Bind;
template<typename _Functor, typename... _Bound_args>
class _Bind<_Functor(_Bound_args...)>
{
template<typename... _Args, typename
= decltype(_Functor()(_Mu<_Bound_args>()(_Bound_args(),
tuple<_Args...>())...) )>
void __call() { }
};
template<typename _Functor, typename _Arg>
_Bind<_Functor(_Arg)>
bind(_Functor, _Arg) { }
struct State
{
bool ready() { return true; }
void f()
{
bind(&State::ready, this);
}
};
--
Summary: [C++0x] ICE with decltype and variadic templates
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: paolo dot carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42266