
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