Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-02-23 17:59:51


"Andreas Huber" <ah2003_at_[hidden]> writes:

> Dave,
>
> "David Abrahams" <dave_at_[hidden]> wrote in message
> news:ud6lihco0.fsf_at_boost-consulting.com...
>> This looks seriously like ETI (early template instantiation) again.
>> Unfortunately I'm not sure exactly what the fix is; Aleksey is the
>> only person I know who really understands how to work around this.
>> One thing you could try:
>>
>> template< class Derived,
>> class Context,
>> class Transitions = empty_list,
>> class InnerInitial = empty_list >
>> class simple_state
>> : public mpl::identity< // Here
>> typename state_base_type<
>> Derived, Context, Transitions, InnerInitial >::type
>> >::type // Here
>> {};
>
> Unfortunately this doesn't help, 7.0 reports
>
> d:\Data\StopWatch\StopWatch.cpp(58) : error C2516:
> 'boost::mpl::identity<T>::type' : is not a legal base class
> with
> [
> T=state_base_type<Derived,Context,Transitions,InnerInitial>::type
> ]
>
> But thanks anyway! I'll wait for Aleksey then...

One last shot-in-the-dark: add this specialization:

    template <> class simple_state<int, int, int, int> {};

What ETI does is to use an instantiation of some template with all int
parameters internally as a stopgap measure while it's waiting to
discover what the parameters really are. After this, I give up!

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk