Boost logo

Boost Users :

Subject: [Boost-users] [Multi-index] : code fail to compile with VS2010 and boost 1.46.1. Proposed workaround
From: Mathieu Peyréga (mathieu.peyrega_at_[hidden])
Date: 2011-05-02 06:47:50


I had some code using boost 1.46.1 Multi-index library that used to
compile and work very well with VS2008.
I recently turned to VS2010 and some code is not compiling anymore.

The problem is located in the
boost_1_46_1\boost\multi_index\composite_key.hpp file and the compiler
complains about not being able to distinguish between ambiguous overloads...

I had to modify the composite_key.hpp file and have following changes :

line 1001 :
    //return operator()(x,make_tuple(cref(y)));
      return operator()(x,make_tuple(boost::cref(y)));

line 1036 :
    //return operator()(make_tuple(cref(x)),y);
    return operator()(make_tuple(boost::cref(x)),y);

In order to explicitely add the boost namespace for cref.

With those changes, it do compile and works very well.
Can those changes in composite_key.hpp break something else ? Is there
another workaround I would have missed ?
I'm suspecting some conflict with new TR1 things i'm not very familiar

Best regards,

Mathieu Peyréga

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at