summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/bits/stl_algobase.h
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/include/bits/stl_algobase.h')
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h33
1 files changed, 19 insertions, 14 deletions
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 35a8a0383d8..a6d155a95a4 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -67,7 +67,7 @@
#include <cwchar>
#include <cstdlib>
#include <cstddef>
-#include <iosfwd>
+#include <bits/functexcept.h>
#include <bits/stl_pair.h>
#include <bits/cpp_type_traits.h>
#include <ext/type_traits.h>
@@ -317,21 +317,33 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
// Helpers for streambuf iterators (either istream or ostream).
+ // NB: avoid including <iosfwd>, relatively large.
+ template<typename _CharT>
+ struct char_traits;
+
+ template<typename _CharT, typename _Traits>
+ class istreambuf_iterator;
+
+ template<typename _CharT, typename _Traits>
+ class ostreambuf_iterator;
+
template<typename _CharT>
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- ostreambuf_iterator<_CharT> >::__type
- __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>);
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_aux(_CharT*, _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
template<typename _CharT>
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- ostreambuf_iterator<_CharT> >::__type
- __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>);
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_aux(const _CharT*, const _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
template<typename _CharT>
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
_CharT*>::__type
- __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
- _CharT*);
+ __copy_aux(istreambuf_iterator<_CharT, char_traits<_CharT> >,
+ istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
template<bool, bool>
struct __copy_normal
@@ -403,13 +415,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__result);
}
- // Overload for streambuf iterators.
- template<typename _CharT>
- typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- ostreambuf_iterator<_CharT> >::__type
- copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
- ostreambuf_iterator<_CharT>);
-
template<bool, typename>
struct __copy_backward
{