diff --git a/include/boost/python/suite/indexing/suite_utils.hpp b/include/boost/python/suite/indexing/suite_utils.hpp index 2cb51302..47303678 100755 --- a/include/boost/python/suite/indexing/suite_utils.hpp +++ b/include/boost/python/suite/indexing/suite_utils.hpp @@ -1,5 +1,3 @@ -// -*- mode:c++ -*- -// // Header file suite_utils.hpp // // Shared utilities for the indexing suite. @@ -23,6 +21,24 @@ #include namespace boost { namespace python { namespace indexing { +#if !BOOST_MSVC + enum index_style_t { + index_style_none // No random access (iteration only) + , index_style_nonlinear // Random access by key (no slicing) + , index_style_linear // Random access by integer index (allows slicing) + }; +#else + // MSVC seems to have problems with static member variable constants + // of enumerated types, where it doesn't believe that an expression + // like (traits::index_style == index_style_linear) is a + // compile-time constant. However, the problem doesn't exist for + // int. + typedef int index_style_t; + index_style_t const index_style_none = 0; + index_style_t const index_style_nonlinear = 1; + index_style_t const index_style_linear = 2; +#endif + template class is_mutable_ref {