vor der Aktualisierung meines Mac, alles funktioniert gut. Nach dem Upgrade auf Capitan, da openmpi unbrauchbar wird (und ich weiß nicht, warum es scheint, dass nur ich es nicht in der Welt verwenden kann.) Ich muss zu MPICH wechseln.Fehler in C++ in Bezug auf Boost und Mac Upgrade
Sie versuchen, wann das gleiche Programm mit Boost mpi zu kompilieren, Serialisierung usw. habe ich den Fehler:
./common.h:67:23: error: expected expression
ar & t.get<0>();
^
Jede Hilfe? Vielen Dank.
Edit: t tatsächlich von Serialisierung der vollständige Code ist wie folgt ... Es ist in anderen Clustern arbeitet und meine früheren unungraded mac ...
namespace boost { namespace serialization {
template<typename Archive, typename T1>
void serialize(Archive & ar,
boost::tuple<T1> & t,
const unsigned int)
{
ar & t.get<0>();
}
template<typename Archive, typename T1,typename T2>
void serialize(Archive & ar,
boost::tuple<T1,T2> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
}
template<typename Archive, typename T1,typename T2,typename T3>
void serialize(Archive & ar,
boost::tuple<T1, T2, T3> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
ar & t.get<2>();
}
template<typename Archive, typename T1,typename T2,typename T3 ,typename T4>
void serialize(Archive & ar,
boost::tuple<T1, T2, T3 ,T4> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
ar & t.get<2>();
ar & t.get<3>();
}
template<typename Archive, typename T1,typename T2,typename T3 ,typename T4,typename T5>
void serialize(Archive & ar,
boost::tuple<T1, T2, T3 ,T4, T5> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
ar & t.get<2>();
ar & t.get<3>();
ar & t.get<4>();
}
template<typename Archive, typename T1,typename T2,typename T3 ,typename T4,typename T5,typename T6 >
void serialize(Archive & ar,
boost::tuple<T1, T2, T3 ,T4, T5, T6> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
ar & t.get<2>();
ar & t.get<3>();
ar & t.get<4>();
ar & t.get<5>();
}
template<typename Archive, typename T1,typename T2,typename T3 ,typename T4,typename T5,typename T6 ,typename T7>
void serialize(Archive & ar,
boost::tuple<T1, T2, T3 ,T4, T5, T6 ,T7> & t,
const unsigned int)
{
ar & t.get<0>();
ar & t.get<1>();
ar & t.get<2>();
ar & t.get<3>();
ar & t.get<4>();
ar & t.get<5>();
ar & t.get<6>();
}
}}
Jede Idee, was ein 't' ist? Wirklich hilfreich, wenn Sie es tun. – user4581301
't' hat einen abhängigen Typ, also brauchen Sie' t.template get <0>() '. – aschepler