Boost logo

Boost :

From: tamboril_at_[hidden]
Date: 2001-08-07 08:55:54


--- In boost_at_y..., Aleksey Gurtovoy <alexy_at_m...> wrote:
> Hmm, I tried it and MSVC doesn't accept it either. You can force it to
> compile this particular example by changing the order of 'value_type<T>' and
> 'reference<int&>' template-ids, i.e.
>
> template <typename T>
> class foo
> {
> // note that you don't need 'typename' & 'template' here
> typedef boost::iterator_traits_generator
> ::reference<int&>
> ::value_type<T>
> jj;
> };
>
> but probably you real case is more complicated, so I am afraid you'll have
> to give up on named template parameters and write
> 'boost::iterator_traits_generator<T, T&, ...> instead.

Even that doesn't work if I use ::reference<T&>. I think it has something to do with the fact that MSVC doesn't do partial specialization and there are "built-in" workarounds for fundamental types while user defined types require BOOST_BROKEN_COMPILER_TRAITS_SPECIALIZATION. But that doesn't work on a template parameter, especially inside a class.

jh


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