summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog3
-rw-r--r--libstdc++-v3/include/bits/regex_compiler.h9
2 files changed, 10 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ea2e6c7eee9..3ecd3ba6500 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -32,6 +32,9 @@
so that std::basic_string<C> and std::vector<C> iterators dispatch to
the const C* compiler.
+ * include/bits/regex_compiler.h (__detail::__has_contiguous_iter):
+ vector<bool> storage is not contiguous.
+
2013-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/bits/regex_automaton.h (_S_opcode_word_boundry): Rename to
diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h
index 741098f8c64..b9f81272bb9 100644
--- a/libstdc++-v3/include/bits/regex_compiler.h
+++ b/libstdc++-v3/include/bits/regex_compiler.h
@@ -134,12 +134,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Ch, typename _Tr, typename _Alloc>
struct __has_contiguous_iter<std::basic_string<_Ch, _Tr, _Alloc>>
- : std::true_type
+ : std::true_type // string<Ch> storage is contiguous
{ };
template<typename _Tp, typename _Alloc>
struct __has_contiguous_iter<std::vector<_Tp, _Alloc>>
- : std::true_type
+ : std::true_type // vector<Tp> storage is contiguous
+ { };
+
+ template<typename _Alloc>
+ struct __has_contiguous_iter<std::vector<bool, _Alloc>>
+ : std::false_type // vector<bool> storage is not contiguous
{ };
template<typename _Tp>