Boost logo

Boost Users :

Subject: [Boost-users] Using boost::container::map on OpenVMS
From: De Rudder, Stephen L. (rdls22_at_[hidden])
Date: 2012-03-02 11:22:56


I am trying to get the boost::container::map to work on OpenVMS (Alpha). I am getting an %CXX-E-BADBASECLS, (1) invalid base class error but have not been able to track it down. If I use std::map instead of boost::container::map in the code then it will work btw.

Thanks for any help,
SLDR
(Stephen L. De Rudder)
rdls22 AT tditx.com

More Info:
OpenVMS V8.2 on Alpha
$ cxx /ver
HP C++ V7.3-009 for OpenVMS Alpha V8.2

The compile command I am using is:
$ cxx/stand=strict_ansi/list/show=all/inc=userdisk4:[boost_1_49_0] t.cpp

I have enclosed the example code and the section of the listing output from the cxx compile.
#include <tree>
#include <stdio.h>
#include <stdlib.h>

#include <boost/container/string.hpp>
#include <boost/container/map.hpp>

#define cwstring std::string

class SecPrivOrderRec
{
public:
  boost::container::map<long, bool> orderMap; //map order -> grant
};

class SecPrivOrderMap
{
public:
  boost::container::map<long, SecPrivOrderRec> privMap; //map priv -> order/grant
};


class SecUserProfCompPrivMap
{
public:
  SecUserProfCompPrivMap();
  bool valid;
  SecPrivOrderMap keyPrivMap; // map priv -> order
};

SecUserProfCompPrivMap::SecUserProfCompPrivMap()
{
  this->valid = false;
}

class SecUserProfPrivMap
{
public:
  SecUserProfPrivMap();
  bool valid;
  boost::container::map<long, long> compPrivMap; // map priv -> order
  boost::container::map<cwstring, SecUserProfCompPrivMap> keyMap; // map comp -> key
};

SecUserProfPrivMap::SecUserProfPrivMap()
{
  this->valid = false;
}

class SecUserProfMap
{
public:
  boost::container::map<cwstring, SecUserProfPrivMap> compMap; // map comp -> priv
};


int
main(int argc, char **argv)
{

  boost::container::map<std::string, int> j1;
  j1["foobar"]=22;


  boost::container::map<cwstring, SecUserProfMap> userProfileMap; //map profile -> comp -> key -> priv
  long maxndx = 10000;
  long maxndx2 = 1;
  int testtype = 0;
  char ndxstr[16];
  cwstring s1 = "my_large_test_user";
  cwstring s2 = "this_is_a_key";
  cwstring s3;

    //fprintf(stderr,"Running test type 0 -- expected to consume 10x memory\n");
    for (long ndx = 0; ndx < maxndx; ndx++) {
      //sprintf(ndxstr, "%d", ndx);
      for (long ndx2 = 0; ndx2 < maxndx2; ndx2++) {
        s3 = ndxstr;
        userProfileMap[s1].compMap[s2].keyMap[s3].keyPrivMap.privMap[ndx2].orderMap[1] = true;
      }
    }
}

=========================================================================================================



                                Source Listing 2-MAR-2012 10:49:24 HP C++ V7.3-009 Page 1910
                                                                 1-JAN-2012 13:14:12 has_member_function_callable_with.hpp;1

     I6 92339 ␍
     I6 92340 BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEGIN␍
       E namespace boost { namespace container { namespace container_detail {
     I6 92341 ␍
     I6 92342 template <typename Type>␍
     I6 92343 class BOOST_PP_CAT(has_member_function_named_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)␍
       E class has_member_function_named_select_on_container_copy_construction
     I6 92344 {␍
     I6 92345 struct BaseMixin␍
     I6 92346 {␍
     I6 92347 void BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME();␍
       E void select_on_container_copy_construction();
     I6 92348 };␍
     I6 92349 ␍
     I6 92350 struct Base : public Type, public BaseMixin { Base(); };␍
                ..............................1
%CXX-E-BADBASECLS, (1) invalid base class
          detected during:
            instantiation of class
                      "boost::container::container_detail::has_member_function_
                      named_select_on_container_copy_construction<Type>::Base
                      [with Type=const
                      boost::container::container_detail::node_alloc_holder<std
                      ::allocator<std::pair<const std::string,
                      SecUserProfPrivMap>>,
                      boost::container::container_detail::intrusive_rbtree_type
                      <std::allocator<std::pair<const std::string,
                      SecUserProfPrivMap>>,
                      boost::container::container_detail::value_compare_impl<st
                      d::string, std::pair<const std::string,
                      SecUserProfPrivMap>, std::less<std::string>,
                      boost::container::container_detail::select1st<std::pair<c
                      onst std::string, SecUserProfPrivMap>>>>::type,
                      std::less<std::string>>::NodeAlloc]" at line 98 of
                      "USERDISK4:[DERUDDER.BOOST_1_49_0.BOOST.INTRUSIVE.DETAIL]
                      has_member_function_callable_with.hpp;1"



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net