aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2007-04-27 22:59:36 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-04-27 22:59:36 +0000
commit25959e29ee2178e6024f02619804919c165ae0ec (patch)
treeb6ce0fbc7eb73ad90bed9d9a6e094baf5cb4c6b0
parent113ab41c059d6a3aa137c11b8e582c39a6bdc100 (diff)
downloadgcc-25959e29ee2178e6024f02619804919c165ae0ec.zip
gcc-25959e29ee2178e6024f02619804919c165ae0ec.tar.gz
gcc-25959e29ee2178e6024f02619804919c165ae0ec.tar.bz2
DR 438, [DR].
2007-04-27 Paolo Carlini <pcarlini@suse.de> DR 438, [DR]. * include/bits/basic_string.h (_S_construct_aux(_InIterator, _InIterator, const _Alloc&, __true_type)): Do not cast the second argument. * include/ext/rc_string_base.h (_S_construct_aux(_Integer, _Integer, const _Alloc&, std::__true_type)): Likewise. * include/ext/sso_string_base.h (_M_construct_aux(_InIterator, _InIterator, std::__true_type)): Likewise. * include/bits/stl_deque.h (_M_initialize_dispatch(_Integer, _Integer, __true_type)): Cast the first argument. (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not cast the arguments. (_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)): Likewise. * include/bits/stl_list.h (_M_initialize_dispatch(_Integer, _Integer, __true_type)): Likewise. (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not cast both arguments. * include/bits/stl_bvector.h (_M_initialize_dispatch(_Integer, _Integer, __true_type)): Cast the first argument. (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not cast the arguments. * include/bits/stl_vector.h (_M_initialize_dispatch(_Integer, _Integer, __true_type)): Cast the first argument. (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not cast the arguments. (_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)): Likewise. * testsuite/21_strings/basic_string/requirements/dr438/ constructor.cc: New. * testsuite/ext/vstring/requirements/dr438/constructor.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/deque/ assign_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/deque/ constructor.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/deque/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/deque/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/deque/ insert_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/list/ assign_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/list/ constructor.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/list/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/list/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/list/ insert_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ assign_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ constructor.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ insert_neg.cc: Likewise. * testsuite/23_containers/requirements/sequences/dr438/vector/ bool/constructor.cc: Likewise. * docs/html/ext/howto.html: Add an entry for DR 438. From-SVN: r124243
-rw-r--r--libstdc++-v3/ChangeLog67
-rw-r--r--libstdc++-v3/docs/html/ext/howto.html8
-rw-r--r--libstdc++-v3/include/bits/basic_string.h9
-rw-r--r--libstdc++-v3/include/bits/stl_bvector.h12
-rw-r--r--libstdc++-v3/include/bits/stl_deque.h21
-rw-r--r--libstdc++-v3/include/bits/stl_list.h18
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h30
-rw-r--r--libstdc++-v3/include/ext/rc_string_base.h9
-rw-r--r--libstdc++-v3/include/ext/sso_string_base.h10
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc28
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/assign_neg.cc36
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor.cc28
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_1_neg.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_2_neg.cc31
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/insert_neg.cc37
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/assign_neg.cc36
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor.cc28
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_1_neg.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_2_neg.cc31
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/insert_neg.cc36
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/assign_neg.cc36
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/bool/constructor.cc28
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor.cc28
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_1_neg.cc30
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_2_neg.cc31
-rw-r--r--libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/insert_neg.cc36
-rw-r--r--libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc32
27 files changed, 710 insertions, 46 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 295a358..8084c5c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,70 @@
+2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+ DR 438, [DR].
+ * include/bits/basic_string.h (_S_construct_aux(_InIterator,
+ _InIterator, const _Alloc&, __true_type)): Do not cast the
+ second argument.
+ * include/ext/rc_string_base.h (_S_construct_aux(_Integer,
+ _Integer, const _Alloc&, std::__true_type)): Likewise.
+ * include/ext/sso_string_base.h (_M_construct_aux(_InIterator,
+ _InIterator, std::__true_type)): Likewise.
+ * include/bits/stl_deque.h (_M_initialize_dispatch(_Integer,
+ _Integer, __true_type)): Cast the first argument.
+ (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do
+ not cast the arguments.
+ (_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)):
+ Likewise.
+ * include/bits/stl_list.h (_M_initialize_dispatch(_Integer,
+ _Integer, __true_type)): Likewise.
+ (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do
+ not cast both arguments.
+ * include/bits/stl_bvector.h (_M_initialize_dispatch(_Integer,
+ _Integer, __true_type)): Cast the first argument.
+ (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not
+ cast the arguments.
+ * include/bits/stl_vector.h (_M_initialize_dispatch(_Integer,
+ _Integer, __true_type)): Cast the first argument.
+ (_M_assign_dispatch(_Integer, _Integer, __true_type)): Do not
+ cast the arguments.
+ (_M_insert_dispatch(iterator, _Integer, _Integer, __true_type)):
+ Likewise.
+ * testsuite/21_strings/basic_string/requirements/dr438/
+ constructor.cc: New.
+ * testsuite/ext/vstring/requirements/dr438/constructor.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/deque/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/deque/
+ constructor.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/deque/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/deque/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/deque/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/list/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/list/
+ constructor.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/list/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/list/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/list/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ assign_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ constructor.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ insert_neg.cc: Likewise.
+ * testsuite/23_containers/requirements/sequences/dr438/vector/
+ bool/constructor.cc: Likewise.
+ * docs/html/ext/howto.html: Add an entry for DR 438.
+
2007-04-25 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_classes.h: Remove redundant inline specifiers.
diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html
index c3dcca4..fff3410 100644
--- a/libstdc++-v3/docs/html/ext/howto.html
+++ b/libstdc++-v3/docs/html/ext/howto.html
@@ -543,7 +543,7 @@
</dd>
<dt><a href="lwg-defects.html#432">432</a>:
- <em>432. stringbuf::overflow() makes only one write position
+ <em>stringbuf::overflow() makes only one write position
available</em>
</dt>
<dd>Implement the resolution, beyond DR 169.
@@ -555,6 +555,12 @@
<dd>Add three overloads, taking fewer template arguments.
</dd>
+ <dt><a href="lwg-defects.html#438">438</a>:
+ <em>Ambiguity in the "do the right thing" clause</em>
+ </dt>
+ <dd>Implement the resolution, basically cast less.
+ </dd>
+
<dt><a href="lwg-defects.html#453">453</a>:
<em>basic_stringbuf::seekoff need not always fail for an empty stream</em>
</dt>
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index a6e3d6d..6317b17 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -1467,12 +1467,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
return _S_construct(__beg, __end, __a, _Tag());
}
- template<class _InIterator>
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
+ template<class _Integer>
static _CharT*
- _S_construct_aux(_InIterator __beg, _InIterator __end,
+ _S_construct_aux(_Integer __beg, _Integer __end,
const _Alloc& __a, __true_type)
- { return _S_construct(static_cast<size_type>(__beg),
- static_cast<value_type>(__end), __a); }
+ { return _S_construct(static_cast<size_type>(__beg), __end, __a); }
template<class _InIterator>
static _CharT*
diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index ba29650..be0ec90 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -793,11 +793,14 @@ template<typename _Alloc>
}
// Check whether it's an integral type. If so, it's not an iterator.
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
{
- _M_initialize(__n);
+ _M_initialize(static_cast<size_type>(__n));
std::fill(this->_M_impl._M_start._M_p,
this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
}
@@ -828,10 +831,12 @@ template<typename _Alloc>
std::copy(__first, __last, this->_M_impl._M_start);
}
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { _M_fill_assign((size_t) __n, (bool) __val); }
+ { _M_fill_assign(__n, __val); }
template<class _InputIterator>
void
@@ -888,6 +893,9 @@ template<typename _Alloc>
}
// Check whether it's an integral type. If so, it's not an iterator.
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index 2030a93..0c7d758 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -1221,11 +1221,14 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// Internal constructor functions follow.
// called by the range constructor to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
{
- _M_initialize_map(__n);
+ _M_initialize_map(static_cast<size_type>(__n));
_M_fill_initialize(__x);
}
@@ -1285,13 +1288,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// assignment work for the range versions.
// called by the range assign to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- {
- _M_fill_assign(static_cast<size_type>(__n),
- static_cast<value_type>(__val));
- }
+ { _M_fill_assign(__n, __val); }
// called by the range assign to implement [23.1.1]/9
template<typename _InputIterator>
@@ -1364,14 +1367,14 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// insertion work when all shortcuts fail.
// called by the range insert to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_insert_dispatch(iterator __pos,
_Integer __n, _Integer __x, __true_type)
- {
- _M_fill_insert(__pos, static_cast<size_type>(__n),
- static_cast<value_type>(__x));
- }
+ { _M_fill_insert(__pos, __n, __x); }
// called by the range insert to implement [23.1.1]/9
template<typename _InputIterator>
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index e37e5ee..55f3208 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -1,6 +1,6 @@
// List implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -1098,13 +1098,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// Internal constructor functions follow.
// Called by the range constructor to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
- {
- _M_fill_initialize(static_cast<size_type>(__n),
- static_cast<value_type>(__x));
- }
+ { _M_fill_initialize(static_cast<size_type>(__n), __x); }
// Called by the range constructor to implement [23.1.1]/9
template<typename _InputIterator>
@@ -1129,13 +1129,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// Internal assign functions follow.
// Called by the range assign to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- {
- _M_fill_assign(static_cast<size_type>(__n),
- static_cast<value_type>(__val));
- }
+ { _M_fill_assign(__n, __val); }
// Called by the range assign to implement [23.1.1]/9
template<typename _InputIterator>
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index f2c4b4b..93843f0a 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -1,6 +1,6 @@
// Vector implementation -*- C++ -*-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -778,13 +778,19 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// Internal constructor functions follow.
// Called by the range constructor to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
{
- this->_M_impl._M_start = _M_allocate(__n);
- this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
- std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n));
+ this->_M_impl._M_end_of_storage =
+ this->_M_impl._M_start + static_cast<size_type>(__n);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start,
+ static_cast<size_type>(__n),
+ __value,
_M_get_Tp_allocator());
this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
}
@@ -830,13 +836,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// assignment work for the range versions.
// Called by the range assign to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- {
- _M_fill_assign(static_cast<size_type>(__n),
- static_cast<value_type>(__val));
- }
+ { _M_fill_assign(__n, __val); }
// Called by the range assign to implement [23.1.1]/9
template<typename _InputIterator>
@@ -870,14 +876,14 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
// Internal insert functions follow.
// Called by the range insert to implement [23.1.1]/9
+
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
template<typename _Integer>
void
_M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
__true_type)
- {
- _M_fill_insert(__pos, static_cast<size_type>(__n),
- static_cast<value_type>(__val));
- }
+ { _M_fill_insert(__pos, __n, __val); }
// Called by the range insert to implement [23.1.1]/9
template<typename _InputIterator>
diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h
index 9a6c9a6..7c0934a 100644
--- a/libstdc++-v3/include/ext/rc_string_base.h
+++ b/libstdc++-v3/include/ext/rc_string_base.h
@@ -231,12 +231,13 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
return _S_construct(__beg, __end, __a, _Tag());
}
- template<typename _InIterator>
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
+ template<typename _Integer>
static _CharT*
- _S_construct_aux(_InIterator __beg, _InIterator __end,
+ _S_construct_aux(_Integer __beg, _Integer __end,
const _Alloc& __a, std::__true_type)
- { return _S_construct(static_cast<size_type>(__beg),
- static_cast<value_type>(__end), __a); }
+ { return _S_construct(static_cast<size_type>(__beg), __end, __a); }
template<typename _InIterator>
static _CharT*
diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h
index a97d1e1..3b87879 100644
--- a/libstdc++-v3/include/ext/sso_string_base.h
+++ b/libstdc++-v3/include/ext/sso_string_base.h
@@ -106,12 +106,12 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_M_construct(__beg, __end, _Tag());
}
- template<typename _InIterator>
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 438. Ambiguity in the "do the right thing" clause
+ template<typename _Integer>
void
- _M_construct_aux(_InIterator __beg, _InIterator __end,
- std::__true_type)
- { _M_construct(static_cast<size_type>(__beg),
- static_cast<value_type>(__end)); }
+ _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
+ { _M_construct(static_cast<size_type>(__beg), __end); }
template<typename _InIterator>
void
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc b/libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
new file mode 100644
index 0000000..2f16545
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
@@ -0,0 +1,28 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <string>
+
+void f()
+{
+ std::string s(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/assign_neg.cc
new file mode 100644
index 0000000..0c47da0
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/assign_neg.cc
@@ -0,0 +1,36 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1297 }
+// { dg-excess-errors "" }
+
+#include <deque>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::deque<A> d;
+ d.assign(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor.cc
new file mode 100644
index 0000000..f378b0b
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor.cc
@@ -0,0 +1,28 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <deque>
+
+void f()
+{
+ std::deque<int> v(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_1_neg.cc
new file mode 100644
index 0000000..fc0beff
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_1_neg.cc
@@ -0,0 +1,30 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1232 }
+// { dg-excess-errors "" }
+
+#include <deque>
+
+void f()
+{
+ std::deque<std::deque<int> > d(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_2_neg.cc
new file mode 100644
index 0000000..403f647
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/constructor_2_neg.cc
@@ -0,0 +1,31 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1232 }
+// { dg-excess-errors "" }
+
+#include <deque>
+#include <utility>
+
+void f()
+{
+ std::deque<std::deque<std::pair<char, char> > > d('a', 'b');
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/insert_neg.cc
new file mode 100644
index 0000000..2e2abc5
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/deque/insert_neg.cc
@@ -0,0 +1,37 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1377 }
+// { dg-excess-errors "" }
+
+#include <deque>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::deque<A> d;
+ d.insert(d.begin(), 10, 1);
+}
+
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/assign_neg.cc
new file mode 100644
index 0000000..4ad1127
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/assign_neg.cc
@@ -0,0 +1,36 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1138 }
+// { dg-excess-errors "" }
+
+#include <list>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::list<A> l;
+ l.assign(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor.cc
new file mode 100644
index 0000000..c20ac14
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor.cc
@@ -0,0 +1,28 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <list>
+
+void f()
+{
+ std::list<int> l(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_1_neg.cc
new file mode 100644
index 0000000..5df6fc8
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_1_neg.cc
@@ -0,0 +1,30 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1107 }
+// { dg-excess-errors "" }
+
+#include <list>
+
+void f()
+{
+ std::list<std::list<int> > l(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_2_neg.cc
new file mode 100644
index 0000000..6783727
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/constructor_2_neg.cc
@@ -0,0 +1,31 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1107 }
+// { dg-excess-errors "" }
+
+#include <list>
+#include <utility>
+
+void f()
+{
+ std::list<std::list<std::pair<char, char> > > l('a', 'b');
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/insert_neg.cc
new file mode 100644
index 0000000..c8f2026
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/list/insert_neg.cc
@@ -0,0 +1,36 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 1107 }
+// { dg-excess-errors "" }
+
+#include <list>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::list<A> l;
+ l.insert(l.begin(), 10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/assign_neg.cc
new file mode 100644
index 0000000..873c27f
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/assign_neg.cc
@@ -0,0 +1,36 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 845 }
+// { dg-excess-errors "" }
+
+#include <vector>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::vector<A> v;
+ v.assign(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/bool/constructor.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/bool/constructor.cc
new file mode 100644
index 0000000..15b4a77
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/bool/constructor.cc
@@ -0,0 +1,28 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <vector>
+
+void f()
+{
+ std::vector<bool> vb(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor.cc
new file mode 100644
index 0000000..74968bd
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor.cc
@@ -0,0 +1,28 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <vector>
+
+void f()
+{
+ std::vector<int> v(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_1_neg.cc
new file mode 100644
index 0000000..c66faae
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_1_neg.cc
@@ -0,0 +1,30 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no match" "" { target *-*-* } 706 }
+// { dg-excess-errors "" }
+
+#include <vector>
+
+void f()
+{
+ std::vector<std::vector<int> > v(10, 1);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_2_neg.cc
new file mode 100644
index 0000000..8e0130b
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/constructor_2_neg.cc
@@ -0,0 +1,31 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no match" "" { target *-*-* } 706 }
+// { dg-excess-errors "" }
+
+#include <vector>
+#include <utility>
+
+void f()
+{
+ std::vector<std::vector<std::pair<char, char> > > v('a', 'b');
+}
diff --git a/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/insert_neg.cc
new file mode 100644
index 0000000..c82a5c4
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/requirements/sequences/dr438/vector/insert_neg.cc
@@ -0,0 +1,36 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+// { dg-error "no matching" "" { target *-*-* } 886 }
+// { dg-excess-errors "" }
+
+#include <vector>
+
+struct A
+{
+ explicit A(int) { }
+};
+
+void f()
+{
+ std::vector<A> v;
+ v.insert(v.begin(), 10, 1);
+}
diff --git a/libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc b/libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
new file mode 100644
index 0000000..95d31db
--- /dev/null
+++ b/libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
@@ -0,0 +1,32 @@
+// 2007-04-27 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// { dg-do compile }
+
+#include <ext/vstring.h>
+
+void f()
+{
+ __gnu_cxx::__versa_string<char, std::char_traits<char>,
+ std::allocator<char>, __gnu_cxx::__sso_string_base> vs(10, 1);
+
+ __gnu_cxx::__versa_string<char, std::char_traits<char>,
+ std::allocator<char>, __gnu_cxx::__rc_string_base> vr(10, 1);
+}