Boost logo

Boost :

Subject: [boost] Using some of Boost on i5/OS but still problems
From: Jon Brisbin (jon.brisbin_at_[hidden])
Date: 2009-09-28 15:38:57


I was able to use Boost FOREACH in my tests, now I'm trying to use
Boost optionals in a C++ ILE module. The compiler is yelling at me,
though:

"/home/jbrisbin/include/boost/optional/optional.hpp", line 434.66:
   CZP0210(30) "T" is not a base class of
   "basic_string<char,std::char_traits<char>,std::allocator<char> >".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 434.10:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional_detail::optional_base<std::basic_string<char,std::char_
   traits<char>,std::allocator<char> >
>::destroy_impl(is_not_reference_tag)".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 408.9:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional_detail::optional_base<std::basic_string<char,std::char_
   traits<char>,std::allocator<char> > >::destroy()".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 237.24:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional_detail::optional_base<std::basic_string<char,std::char_
   traits<char>,std::allocator<char> > >::~optional_base()".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 145.7:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional_detail::optional_base<std::basic_string<char,std::char_
   traits<char>,std::allocator<char> > >::__dftbdt()".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 522.5:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional<std::basic_string<char,std::char_traits<char>,std::allo
   cator<char> > >::~optional()".
"/home/jbrisbin/include/boost/optional/optional.hpp", line 454.7:
   CZP0700(0) The previous message was produced while processing
    
"boost::optional<std::basic_string<char,std::char_traits<char>,std::allo
   cator<char> > >::__dftdt()".
"/home/jbrisbin/src/boosttest.cpp", line 6.5: CZP0700(0) The previous
   message was produced while processing "main(int, char **)".

Any hints on what I need to hack here? This seems to be a problem with:

     void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->T::~T
() ; m_initialized = false ; }

I understand what's happening, I'm just not sure how to make the i5/OS
compiler happy with this. I keep running into little quirks like this
where the AS400 needs a little different treatment. IBM says Boost
won't work on the AS400, which I'm finding to be inaccurate at best.
It DOES work, just not everything straight out of the box. Lots of
things work fine, but some need a little bit of tweaking.

What else can I try to get the destructor called?

Jon Brisbin
Portal Webmaster
NPC International, Inc.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk