mirror of
https://github.com/boostorg/asio.git
synced 2026-01-25 18:02:09 +00:00
Prevent buffer types from matching contiguous iterator overloads.
Fixes a bug where passing the deprecated const_buffers_1 and mutable_buffers_1 types to asio::buffer() would result in the contiguous iterator overloads being incorrectly chosen.
This commit is contained in:
@@ -1568,6 +1568,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
|
||||
is_contiguous_iterator<typename T::iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_const<
|
||||
typename remove_reference<
|
||||
@@ -1598,6 +1606,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_MUTABLE_BUFFER buffer(
|
||||
is_contiguous_iterator<typename T::iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_const<
|
||||
typename remove_reference<
|
||||
@@ -1627,6 +1643,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
|
||||
is_contiguous_iterator<typename T::iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
is_const<
|
||||
typename remove_reference<
|
||||
@@ -1657,6 +1681,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
|
||||
is_contiguous_iterator<typename T::iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
is_const<
|
||||
typename remove_reference<
|
||||
@@ -1685,6 +1717,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
|
||||
typename constraint<
|
||||
is_contiguous_iterator<typename T::const_iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
|
||||
{
|
||||
return BOOST_ASIO_CONST_BUFFER(
|
||||
@@ -1707,6 +1747,14 @@ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONST_BUFFER buffer(
|
||||
typename constraint<
|
||||
is_contiguous_iterator<typename T::const_iterator>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, const_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint(),
|
||||
typename constraint<
|
||||
!is_convertible<T, mutable_buffer>::value,
|
||||
defaulted_constraint
|
||||
>::type = defaulted_constraint()) BOOST_ASIO_NOEXCEPT
|
||||
{
|
||||
return BOOST_ASIO_CONST_BUFFER(
|
||||
|
||||
Reference in New Issue
Block a user