
#include <iostream> #include <boost/utility/enable_if.hpp> #include <boost/fusion/include/is_sequence.hpp> struct S { double skid; }; template<typename Archive> void serialize(Archive& ar, S& sp, unsigned int) { std::cout<<"1st one"<<std::endl; } template <typename Archive, typename Seq> typename boost::enable_if_c<boost::fusion::traits::is_sequence<Seq>::value, void>::type serialize( Archive& ar, Seq& seq, unsigned int) { std::cout<<"2nd one"<<std::endl; } template void serialize<double>(double&, S&, unsigned int); int main() { S s; double d1=5.; serialize(d1, s, 5); return 0; } The above code compiles ok on gcc4.5.1 and prints 1st one. It crashes vs2008. vs2010 was fixed not to crash but fails to compile according to those who have vs2010. Is this correct code (I guess I mean standard conforming)? regards,