
AMDG Joel Falcou wrote:
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.
<snip>
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 ?
Does mpl::apply work for namespace scope metafunctions? You can try moving the metafunction outside the class and typedefing it. Alternately, you can try quote: #include <boost/mpl/bool.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/mpl/if.hpp> #include <boost/mpl/apply.hpp> #include <boost/mpl/quote.hpp> using namespace boost; struct none {}; template<class T> struct scalar_mode_base { template<class Type> struct apply : mpl::if_< is_same<T,none>, Type, T> {}; }; template<class T> struct scalar_mode { typedef mpl::false_ status; //template<class Type> //struct base_impl : mpl::if_< is_same<T,none>, Type, T> {}; //typedef mpl::quote1<base_impl> base; typedef scalar_mode_base<T> base; }; typedef mpl::apply1< scalar_mode<none>::base, float>::type type; In Christ, Steven Watanabe