Ticket #1320: as_literal071013.diff

File as_literal071013.diff, 1.3 KB (added by Nicola Musatti, 15 years ago)
  • as_literal.hpp

     
    2121
    2222#include <boost/range/iterator_range.hpp>
    2323#include <boost/range/detail/str_types.hpp>
     24
     25#include <boost/detail/workaround.hpp>
     26
    2427#include <cstring>
    2528#include <cwchar>
    2629
     
    104107    template< class Char, std::size_t sz >
    105108    inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
    106109    {
     110#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
     111        return boost::make_iterator_range<Char*>( arr, arr + sz - 1 );
     112#else
    107113        return boost::make_iterator_range( arr, arr + sz - 1 );
     114#endif
    108115    }
    109116
    110117   
    111118    template< class Char, std::size_t sz >
    112     inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
     119        inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
    113120    {
    114         return boost::make_iterator_range( arr, arr + sz - 1 );
    115     }
     121#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) && __BORLANDC__ >= 0x590
     122                return boost::make_iterator_range<const Char*>( arr, arr + sz - 1 );
     123#else
     124                return boost::make_iterator_range( arr, arr + sz - 1 );
     125#endif
     126        }
    116127}
    117128
    118129#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING