Boost logo

Boost Users :

From: Joel Falcou (joel.falcou_at_[hidden])
Date: 2008-07-15 10:22:08


I'm compiling some code on the Cell processor main CPU using its
dedicated gcc. The code is calling mpl::apply1 onto a custom meta-function.

The compiler -v is :
ppu-g++ -v Using built-in specs.
Target: ppu
Configured with: ../toolchain/gcc/configure --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info
--with-as=/usr/bin/ppu-as --with-ld=/usr/bin/ppu-ld --enable-threads
--with-system-zlib --disable-checking --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-languages=c,c++,fortran,ada
--disable-nls --enable-clocale=gnu
--enable-version-specific-runtime-libs --with-long-double-128
--program-prefix=ppu- --disable-bootstrap --host=ppu
--build=powerpc64-unknown-linux-gnu --target=ppu
Thread model: posix
gcc version 4.1.1

The code :

template<class T> struct scalar_mode
   {
     typedef mpl::false_ status;

     struct base
     {
       template<class Type>
       struct apply : mpl::if_< is_same<T,none>, Type, T> {};
     };
};

typedef mpl::apply1< scalar_mode<none>::base, float>::type type;

The compiler errors are :

../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:
In instantiation of 'const int
boost::mpl::aux::template_arity_impl<nt2::scalar_mode<nt2::none>::base,
1>::value':
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:93:
   instantiated from 'const int
boost::mpl::aux::template_arity<nt2::scalar_mode<nt2::none>::base>::value'
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:98:
   instantiated from
'boost::mpl::aux::template_arity<nt2::scalar_mode<nt2::none>::base>'
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/apply.hpp:48:
   instantiated from
'boost::mpl::apply1<nt2::scalar_mode<nt2::none>::base, float>'
essais/simd.cpp:13: instantiated from here
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:85:
error: call of overloaded
'arity_helper(boost::mpl::aux::type_wrapper<nt2::scalar_mode<nt2::none>::base>,
boost::mpl::aux::arity_tag<1>)' is ambiguous
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:30:
note: candidates are: char (& boost::mpl::aux::arity_helper(...))[1]
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:37:
note: char (&
boost::mpl::aux::arity_helper(boost::mpl::aux::type_wrapper<F<T1> >,
boost::mpl::aux::arity_tag<1>))[2] [with F = nt2::scalar_mode<T>::base,
T1 = nt2::none]
../../../lib/include/boost-1_35/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:37:
note: char (&
boost::mpl::aux::arity_helper(boost::mpl::aux::type_wrapper<F<T1> >,
boost::mpl::aux::arity_tag<1>))[2] [with F = nt2::scalar_mode<T>::base,
T1 = nt2::none]

I know that "officially" boost is not supported on this kidn of platform
but most of my code compiles and works flawlessly except for this. Any
hints on what to do to fix this even locally ?

Thanks in advance


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