mirror of
https://github.com/boostorg/core.git
synced 2025-05-09 23:03:54 +00:00
Add conversions from and to boost::string_view
This commit is contained in:
parent
02b3f91fc3
commit
7a79d17da2
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
@ -386,6 +386,9 @@ jobs:
|
||||
git submodule init libs/static_assert
|
||||
git submodule init libs/throw_exception
|
||||
git submodule init libs/type_traits
|
||||
git submodule init libs/utility
|
||||
git submodule init libs/io
|
||||
git submodule init libs/preprocessor
|
||||
git submodule update $GIT_ARGS
|
||||
if [ -z "${{matrix.cmake_tests}}" ]
|
||||
then
|
||||
@ -517,6 +520,8 @@ jobs:
|
||||
git submodule init libs/static_assert
|
||||
git submodule init libs/throw_exception
|
||||
git submodule init libs/type_traits
|
||||
git submodule init libs/utility
|
||||
git submodule init libs/io
|
||||
git submodule update --jobs %GIT_FETCH_JOBS%
|
||||
cmd /c bootstrap
|
||||
b2 -d0 headers
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright 2016-2019 Peter Dimov
|
||||
# Copyright 2016-2021 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
@ -77,6 +77,8 @@ install:
|
||||
- git submodule init libs/static_assert
|
||||
- git submodule init libs/throw_exception
|
||||
- git submodule init libs/type_traits
|
||||
- git submodule init libs/utility
|
||||
- git submodule init libs/io
|
||||
- git submodule init tools/build
|
||||
- git submodule init tools/boost_install
|
||||
- git submodule update --jobs 4
|
||||
|
@ -34,6 +34,9 @@
|
||||
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template<class Ch, class Tr> class basic_string_view;
|
||||
|
||||
namespace core
|
||||
{
|
||||
namespace detail
|
||||
@ -388,6 +391,11 @@ public:
|
||||
|
||||
#endif
|
||||
|
||||
template<class Ch2> basic_string_view( boost::basic_string_view<Ch2, std::char_traits<Ch2> > const& str,
|
||||
typename boost::enable_if<is_same<Ch, Ch2> >::type* = 0 ) BOOST_NOEXCEPT: p_( str.data() ), n_( str.size() )
|
||||
{
|
||||
}
|
||||
|
||||
// BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
|
||||
|
||||
// conversions
|
||||
@ -407,6 +415,12 @@ public:
|
||||
|
||||
#endif
|
||||
|
||||
template<class Ch2> operator boost::basic_string_view<Ch2,
|
||||
typename boost::enable_if<boost::core::is_same<Ch2, Ch>, std::char_traits<Ch> >::type> () const BOOST_NOEXCEPT
|
||||
{
|
||||
return boost::basic_string_view< Ch, std::char_traits<Ch> >( data(), size() );
|
||||
}
|
||||
|
||||
// iterator support
|
||||
|
||||
BOOST_CONSTEXPR const_iterator begin() const BOOST_NOEXCEPT
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright 2018, 2019, 2021 Peter Dimov
|
||||
# Copyright 2018-2021 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
@ -23,6 +23,10 @@ set(BOOST_TEST_LINK_LIBRARIES Boost::core Boost::throw_exception)
|
||||
|
||||
boost_test(TYPE run SOURCES no_exceptions_support_test.cpp)
|
||||
|
||||
set(BOOST_TEST_LINK_LIBRARIES Boost::core Boost::utility)
|
||||
|
||||
boost_test(TYPE run SOURCES sv_conversion_test2.cpp)
|
||||
|
||||
endif()
|
||||
|
||||
add_subdirectory(swap)
|
||||
|
@ -305,6 +305,7 @@ run sv_eq_test.cpp ;
|
||||
run sv_lt_test.cpp ;
|
||||
run sv_stream_insert_test.cpp ;
|
||||
run sv_conversion_test.cpp ;
|
||||
run sv_conversion_test2.cpp : ;
|
||||
|
||||
run span_test.cpp ;
|
||||
run span_types_test.cpp ;
|
||||
|
32
test/sv_conversion_test2.cpp
Normal file
32
test/sv_conversion_test2.cpp
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright 2021 Peter Dimov
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <boost/core/detail/string_view.hpp>
|
||||
#include <boost/utility/string_view.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <string>
|
||||
|
||||
boost::core::string_view f( boost::core::string_view const& str )
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
std::string s1( "123" );
|
||||
std::string s2 = f( s1 );
|
||||
|
||||
BOOST_TEST_EQ( s1, s2 );
|
||||
}
|
||||
|
||||
{
|
||||
boost::string_view s1( "123" );
|
||||
boost::string_view s2 = f( s1 );
|
||||
|
||||
BOOST_TEST_EQ( s1, s2 );
|
||||
}
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user