aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois Dumont <fdumont@gcc.gnu.org>2019-10-06 15:53:51 +0000
committerFrançois Dumont <fdumont@gcc.gnu.org>2019-10-06 15:53:51 +0000
commit5daedc02185507dc3241d89ec51f4a096e23965b (patch)
tree0e0396264e5a129ba49f5b267d8d4e53be85ab60
parent1c8264003ab1d6932d874bd1a9af4ac498d4b4a4 (diff)
downloadgcc-5daedc02185507dc3241d89ec51f4a096e23965b.zip
gcc-5daedc02185507dc3241d89ec51f4a096e23965b.tar.gz
gcc-5daedc02185507dc3241d89ec51f4a096e23965b.tar.bz2
Add std::copy_n istreambuf_iterator specialization
Commit this missing part which had been rejected. From-SVN: r276640
-rw-r--r--libstdc++-v3/include/bits/stl_algo.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index 187c732..661db02 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -778,8 +778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _InputIterator, typename _Size, typename _OutputIterator>
_GLIBCXX20_CONSTEXPR
_OutputIterator
- __copy_n(_InputIterator __first, _Size __n,
- _OutputIterator __result, input_iterator_tag)
+ __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result)
{
if (__n > 0)
{
@@ -795,6 +794,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
return __result;
}
+
+ template<typename _CharT, typename _Size>
+ __enable_if_t<__is_char<_CharT>::__value, _CharT*>
+ __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT>>,
+ _Size, _CharT*);
+
+ template<typename _InputIterator, typename _Size, typename _OutputIterator>
+ _GLIBCXX20_CONSTEXPR
+ _OutputIterator
+ __copy_n(_InputIterator __first, _Size __n,
+ _OutputIterator __result, input_iterator_tag)
+ {
+ return std::__niter_wrap(__result,
+ __copy_n_a(__first, __n,
+ std::__niter_base(__result)));
+ }
template<typename _RandomAccessIterator, typename _Size,
typename _OutputIterator>