Compiling the folowing using is_iless as the predicate for a multi index container results in errors.  When is_less is used instead, it compiles fine.

 

    typedef mi::multi_index_container<

        GTLayer,

        mi::indexed_by<

            mi::sequenced<>, // list-like index

            mi::ordered_unique<

                mi::tag<name>,

                mi::const_mem_fun<GTLayer, std::string, &GTLayer::GetLayerName>,

                //std::greater<std::string>

                ::boost::algorithm::is_iless  // names sorted

            >

        >

    > layer_container;

 

The error messages are –

 

Error     4          error C2440: 'type cast' : cannot convert from 'std::basic_string<_Elem,_Traits,_Ax>' to 'unsigned char'            C:\Program Files\Microsoft Visual Studio 8\VC\include\xlocale      561

 

Error     3          error C2440: 'type cast' : cannot convert from 'unsigned char' to 'std::basic_string<_Elem,_Traits,_Ax>'            C:\Program Files\Microsoft Visual Studio 8\VC\include\xlocale      583

 

Is this an include problem?  I have tried the following includes –

 

#include <boost/multi_index_container.hpp>

#include <boost/multi_index/mem_fun.hpp>

#include <boost/multi_index/ordered_index.hpp>

#include <boost/multi_index/sequenced_index.hpp>

#include <boost/algorithm/string/compare.hpp>

#include <boost/algorithm/string.hpp>

#include <boost/algorithm/string/predicate.hpp>

 

#include <map>

#include <string>

#include <cwchar>

#include <locale>

 

Thanks - Marcia