Ticket #4115: lexicalCastNoTypeInfoFix.patch

File lexicalCastNoTypeInfoFix.patch, 2.4 KB (added by arkadiy_s@…, 13 years ago)
  • config/stdlib/dinkumware.hpp

     
    8686#  define BOOST_NO_STD_LOCALE
    8787#endif
    8888
     89#if defined(_HAS_EXCEPTIONS) && (_HAS_EXCEPTIONS == 0)
     90#  define BOOST_NO_STD_TYPEINFO   
     91#endif
     92
    8993//  C++0x headers implemented in 520 (as shipped by Microsoft)
    9094//
    9195#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
  • lexical_cast.hpp

     
    5252    throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)))
    5353#endif
    5454
     55// Define BOOST_LCAST_STD_NS to the namespace that contains type_info.
     56#ifdef BOOST_NO_STD_TYPEINFO
     57// Embedded VC++ does not have type_info in namespace std
     58#  define BOOST_LCAST_STD_NS
     59#else
     60#  define BOOST_LCAST_STD_NS std
     61#endif
     62
    5563namespace boost
    5664{
    5765    // exception used to indicate runtime lexical_cast failure
     
    7482        }
    7583
    7684        bad_lexical_cast(
    77             const std::type_info &source_type_arg,
    78             const std::type_info &target_type_arg) :
     85            const BOOST_LCAST_STD_NS::type_info &source_type_arg,
     86            const BOOST_LCAST_STD_NS::type_info &target_type_arg) :
    7987            source(&source_type_arg), target(&target_type_arg)
    8088        {
    8189        }
    8290
    83         const std::type_info &source_type() const
     91        const BOOST_LCAST_STD_NS::type_info &source_type() const
    8492        {
    8593            return *source;
    8694        }
    87         const std::type_info &target_type() const
     95        const BOOST_LCAST_STD_NS::type_info &target_type() const
    8896        {
    8997            return *target;
    9098        }
     
    98106        {
    99107        }
    100108    private:
    101         const std::type_info *source;
    102         const std::type_info *target;
     109        const BOOST_LCAST_STD_NS::type_info *source;
     110        const BOOST_LCAST_STD_NS::type_info *target;
    103111    };
    104112
    105113    namespace detail // selectors for choosing stream character type
     
    11491157
    11501158            Target result;
    11511159            if(!(interpreter << arg && interpreter >> result))
    1152               BOOST_LCAST_THROW_BAD_CAST(Source, Target);
     1160                BOOST_LCAST_THROW_BAD_CAST(Source, Target);
    11531161            return result;
    11541162        }
    11551163#if (defined _MSC_VER)