|
Boost Users : |
From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2007-07-27 13:38:22
According to the MPL reference, a placeholder expression
X<a1,..,an> must satisfy (among others) the following
condition:
"All of X's template parameters, including the
default ones, are types."
According to that the following should then compile
without errors:
#include <boost/mpl/apply.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_same.hpp>
using namespace boost;
using namespace boost::mpl;
template<typename T,int=0>
struct foo
{
template<typename Q>
struct apply{
typedef Q type;
};
};
typedef apply1<foo<_1>,int>::type t1;
BOOST_MPL_ASSERT((is_same<t1,int>));
int main(){}
However, I've tried with GCC 3.4.4 and the static
assertion fails! I'd like to know:
1. Whether I'm right in assuming that the code above
should compile without assertion failures.
2. What the behavior is for other versions of GCC and
compilers: reports most welcome!!
3. Whether this is a known problem specific to GCC
or, more generally, what the status of this issue is.
Thank you,
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net