
Some of my code that uses the TR1/Tuples code has stopped working. Sorry don't know when, haven't built this particular program in a while. The test case is: #include <boost/tr1/tuple.hpp> std::tr1::tuple<double, double, double, double, double, double, double> foo(int i) { return std::tr1::make_tuple(i, i+1, i+2, i+3, i+4, i+5, i+6); } int main() { foo(2); } Which generates the errors: $ cl -EHsc -I. -c scrap.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. scrap.cpp scrap.cpp(6) : error C2664: 'boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6>::tuple(const boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6> &)' : cannot convert parameter 1 from 'boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9>' to 'const boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6> &' with [ T0=double, T1=double, T2=double, T3=double, T4=double, T5=double, T6=double ] and [ T0=int, T1=int, T2=int, T3=int, T4=int, T5=int, T6=int, T7=boost::fusion::void_, T8=boost::fusion::void_, T9=boost::fusion::void_ ] and [ T0=double, T1=double, T2=double, T3=double, T4=double, T5=double, T6=double ] Reason: cannot convert from 'boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9>' to 'const boost::fusion::tuple<T0,T1,T2,T3,T4,T5,T6>' with [ T0=int, T1=int, T2=int, T3=int, T4=int, T5=int, T6=int, T7=boost::fusion::void_, T8=boost::fusion::void_, T9=boost::fusion::void_ ] and [ T0=double, T1=double, T2=double, T3=double, T4=double, T5=double, T6=double ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called Looks like the definition of make_tuple is out of synch with tuple? It works OK with the release branch BTW. Thanks, John.