[sandbox.move] coexistence issues with boost.interprocess + small suggestion

View: New views
2 Messages — Rating Filter:   Alert me  

[sandbox.move] coexistence issues with boost.interprocess + small suggestion

by Jeffrey Hellrung :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I suppose this is mostly addressed to Ion.

It appears that containers in the move library in the boost sandbox
can't coexist with containers from the boost.interprocess library.  This
isn't a problem for me currently (I can just use the containers from the
move library), but it may be an indication of a larger problem with
either or both libraries, so I figured it'd be worth sharing.  I wasn't
sure if this would be an appropriate trac ticket to file under
boost.interprocess, as it involves technically non-boost code, but I can
certainly do that if desired.

So to be specific, the following program fails to compile (MSVC 2009,
boost 1.39, include paths are boost root and
$(BOOST_SVN)/boost-sandbox/move):

--------
#include <boost/interprocess/containers/vector.hpp>
#include <boost/container/vector.hpp>

int main(int argc, char* argv[])
{
     boost::interprocess::vector< int > v1; // line 6
     boost::container::vector< int > v2; // line 7
     return 0;
}
--------

The compiler output is:

--------
1>.\main.cpp(7) : error C3083: 'container': the symbol to the left of a
'::' must be a type
1>.\main.cpp(7) : error C2039: 'vector' : is not a member of 'boost'
1>.\main.cpp(7) : error C2065: 'vector' : undeclared identifier
1>.\main.cpp(7) : error C2062: type 'int' unexpected
--------

Removing either the interprocess vector (include directive, variable
declaration) pair or the move vector (include directive, variable
declaration) pair produces a compilable program.

Reversing the order of the include directives gives a different compiler
error:

--------
1>E:\boost_1_39_0\boost/interprocess/containers/vector.hpp(24) : error
C3083: 'interprocess_container': the symbol to the left of a '::' must
be a type
1>E:\boost_1_39_0\boost/interprocess/containers/vector.hpp(24) : error
C2039: 'vector' : is not a member of 'boost'
1>E:\boost_1_39_0\boost/interprocess/containers/vector.hpp(24) : error
C2873: 'vector' : symbol cannot be used in a using-declaration
1>.\main.cpp(6) : error C2039: 'vector' : is not a member of
'boost::interprocess'
1>.\main.cpp(6) : error C2065: 'vector' : undeclared identifier
1>.\main.cpp(6) : error C2062: type 'int' unexpected
--------

Any idea what's going on here?  Am I just doing something really
boneheaded, e.g., with the include paths?

Additionally, I have a small suggestion for the move library.  It would
be somewhat more convenient if boost::is_movable<T> had a nested type
typedef, e.g., if it inherited from mpl::bool_<...> or
integral_constant< bool, ...>.  As it stands, I don't think it can be
used directly in MPL expressions such as mpl::and_.

Thanks in advance,

- Jeff
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Re: [sandbox.move] coexistence issues with boost.interprocess + small suggestion

by Daniel James :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/7/9 Jeffrey Hellrung <jhellrung@...>:
>
> It appears that containers in the move library in the boost sandbox can't
> coexist with containers from the boost.interprocess library.  This isn't a
> problem for me currently (I can just use the containers from the move
> library), but it may be an indication of a larger problem with either or
> both libraries, so I figured it'd be worth sharing.  I wasn't sure if this
> would be an appropriate trac ticket to file under boost.interprocess, as it
> involves technically non-boost code, but I can certainly do that if desired.

The containers in the move library are the next version of the
interprocess containers so they're not meant to coexist. The plan is
to move them into their own library. I think he'll use forwarding
headers to ease the transition to their new location when he adds them
to boost.

Daniel
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost