|
Boost : |
Subject: [boost] [move] [variant] Some problems with VC++10
From: Antony Polukhin (antoshkka_at_[hidden])
Date: 2011-08-08 12:54:43
There are some problems with VC10 libraries and move implementations
in Boost,Variant and Boost.Move.
The problem is that VC10 uses move() in it's STL implementation
without directly specifying namespace. That leads to ambiguity, when
VC10 containers are used with boost classes. I can not exactly
reproduce the bug, because I have no VC at home, but thats how it
looked like:
std::vector< my_variant > vec;
vec.push_back( my_variant(some_data) ); // ERROR: Leads to ambiguity.
Compiler can not choose between std::move that is defined in the same
namespace and boost::variant::detail::move(), which is found via ADL.
I think, that the same thing can happen with Boost.Move library, if
some class defined in namespace boost will be used in VC++ STL
containers.
Most generic way to get rid of such ambiguity, is to import std::move
in namespace boost (if we have std::move).
Best regards,
Antony Polukhin
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk