$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: John Maddock (john_at_[hidden])
Date: 2006-10-24 12:10:49
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.