Boost logo

Boost :

From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2005-01-12 10:29:23


David Abrahams wrote:

> * The way that Boost.MPL uses partial specialization on template
> template parameters to peel apart lambda expressions and turn them into
> metafunction classes.

I thought I understand how it's done, but now that I am trying to apply this
to my own problem, it seems that default template parameters may be a
showstopper in applying this technique, at least in some compilers. For
example if I have:

template<class T> struct do_something;

template<template<class> class T, class P0>
struct do_something<T<P0> >
{};

template<template<class, class> class T, class P0, class P1>
struct do_something<T<P0, P1> >
{};

GCC 3.4.2 can't figure out which specialization to use for, e.g.,
std::vector. At the same time VC71 is fine with this, and chooses the one
with 2 parameteres.

Unfortunately I am unable to find my way around the MPL source to figure out
what's really done...

Can you clarify this?

Thanks in advance,
Arkadiy


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