mirror of
https://github.com/boostorg/core.git
synced 2025-05-11 05:07:39 +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/static_assert
|
||||||
git submodule init libs/throw_exception
|
git submodule init libs/throw_exception
|
||||||
git submodule init libs/type_traits
|
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
|
git submodule update $GIT_ARGS
|
||||||
if [ -z "${{matrix.cmake_tests}}" ]
|
if [ -z "${{matrix.cmake_tests}}" ]
|
||||||
then
|
then
|
||||||
@ -517,6 +520,8 @@ jobs:
|
|||||||
git submodule init libs/static_assert
|
git submodule init libs/static_assert
|
||||||
git submodule init libs/throw_exception
|
git submodule init libs/throw_exception
|
||||||
git submodule init libs/type_traits
|
git submodule init libs/type_traits
|
||||||
|
git submodule init libs/utility
|
||||||
|
git submodule init libs/io
|
||||||
git submodule update --jobs %GIT_FETCH_JOBS%
|
git submodule update --jobs %GIT_FETCH_JOBS%
|
||||||
cmd /c bootstrap
|
cmd /c bootstrap
|
||||||
b2 -d0 headers
|
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.
|
# 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)
|
# (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/static_assert
|
||||||
- git submodule init libs/throw_exception
|
- git submodule init libs/throw_exception
|
||||||
- git submodule init libs/type_traits
|
- 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/build
|
||||||
- git submodule init tools/boost_install
|
- git submodule init tools/boost_install
|
||||||
- git submodule update --jobs 4
|
- git submodule update --jobs 4
|
||||||
|
@ -34,6 +34,9 @@
|
|||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
||||||
|
template<class Ch, class Tr> class basic_string_view;
|
||||||
|
|
||||||
namespace core
|
namespace core
|
||||||
{
|
{
|
||||||
namespace detail
|
namespace detail
|
||||||
@ -388,6 +391,11 @@ public:
|
|||||||
|
|
||||||
#endif
|
#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;
|
// BOOST_CONSTEXPR basic_string_view& operator=( basic_string_view const& ) BOOST_NOEXCEPT & = default;
|
||||||
|
|
||||||
// conversions
|
// conversions
|
||||||
@ -407,6 +415,12 @@ public:
|
|||||||
|
|
||||||
#endif
|
#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
|
// iterator support
|
||||||
|
|
||||||
BOOST_CONSTEXPR const_iterator begin() const BOOST_NOEXCEPT
|
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.
|
# 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
|
# 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)
|
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()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(swap)
|
add_subdirectory(swap)
|
||||||
|
@ -305,6 +305,7 @@ run sv_eq_test.cpp ;
|
|||||||
run sv_lt_test.cpp ;
|
run sv_lt_test.cpp ;
|
||||||
run sv_stream_insert_test.cpp ;
|
run sv_stream_insert_test.cpp ;
|
||||||
run sv_conversion_test.cpp ;
|
run sv_conversion_test.cpp ;
|
||||||
|
run sv_conversion_test2.cpp : ;
|
||||||
|
|
||||||
run span_test.cpp ;
|
run span_test.cpp ;
|
||||||
run span_types_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