|
Boost Users : |
Subject: Re: [Boost-users] [multi-index][foreach] Iterating over a sequence index (worked in 1.46, broke in 1.47)
From: Michel MORIN (mimomorin_at_[hidden])
Date: 2011-07-29 04:03:48
Maxime van Noppen wrote:
> On 07/29/2011 09:36 AM, Igor R wrote:
>>
>> It seems that gcc attempts to copy the index, for some reason.
>>
>> BTW, your code compiles well with VC10.
>
> So it looks like it's a g++ and clang++ bug ?
It's not a bug.
GCC 4.6 (in C++03 mode) changes the behavior of rvalue conversion.
This affects the way of lvalue/rvalue detection in Boost.Foreach;
then compilation error occurs.
To detect detecting lvalue/rvalue, Boost.Foreach tries to copy
`sequenced_index` (though the copy is never executed
).
However, the copy ctor of `sequenced_index` is protected,
and so the compile error emitted.
To compile the code please add the following code:
namespace boost { namespace foreach
{
template<typename SuperMeta,typename TagList>
struct is_noncopyable<
boost::multi_index::detail::sequenced_index<SuperMeta, TagList>
> : mpl::true_
{};
}}
Regards,
Michel
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net