-2
升級我的mac之前,一切工作正常。升級到Capitan後,由於openmpi變得無法使用(我不知道爲什麼看起來只有我不能在世界上使用它)。我必須切換到MPICH。關於提升和mac升級的C++錯誤
當嘗試編譯與升壓MPI,系列化等相同的程序,我得到了錯誤:
./common.h:67:23: error: expected expression
ar & t.get<0>();
^
任何幫助嗎?謝謝。
編輯:T實際上從序列化的完整代碼是跟着......它可以在其他集羣和我以前的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>();
}
}}
任何想法了't'是什麼?如果你這樣做真的很有幫助。 – user4581301
't'有一個依賴類型,所以你需要't.template得到<0>()'。 – aschepler