Fix tests that fail with old std::string

* testsuite/21_strings/basic_string/allocator/char/minimal.cc: Guard
	explicit instantiation with check for new ABI.
	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
	Likewise. Use wchar_t as char_type.

From-SVN: r228435
This commit is contained in:
Jonathan Wakely 2015-10-02 23:13:18 +01:00 committed by Jonathan Wakely
parent 783aa06e9b
commit c980d0b4b7
3 changed files with 15 additions and 7 deletions

View File

@ -1,5 +1,10 @@
2015-10-02 Jonathan Wakely <jwakely@redhat.com>
* testsuite/21_strings/basic_string/allocator/char/minimal.cc: Guard
explicit instantiation with check for new ABI.
* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
Likewise. Use wchar_t as char_type.
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
(basic_string::front() const, basic_string::back() const): Use
noexcept instead of _GLIBCXX_NOEXCEPT macro.

View File

@ -22,25 +22,27 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
#if _GLIBCXX_USE_CXX11_ABI
using C = char;
const C c = 'a';
using traits = std::char_traits<C>;
using __gnu_test::SimpleAllocator;
template class std::basic_string<C,traits, SimpleAllocator<C>>;
template class std::basic_string<C, traits, SimpleAllocator<C>>;
void test01()
{
#if _GLIBCXX_USE_CXX11_ABI
typedef SimpleAllocator<C> alloc_type;
typedef std::allocator_traits<alloc_type> traits_type;
typedef std::basic_string<C, traits, alloc_type> test_type;
test_type v(alloc_type{});
v.assign(1, c);
v.assign(100, c);
#endif
}
#else
void test01() { }
#endif
int main()
{

View File

@ -22,7 +22,8 @@
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
using C = char;
#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
using C = wchar_t;
const C c = 'a';
using traits = std::char_traits<C>;
@ -32,18 +33,18 @@ template class std::basic_string<C,traits, SimpleAllocator<C>>;
void test01()
{
#if _GLIBCXX_USE_CXX11_ABI && defined(_GLIBCXX_USE_WCHAR_T)
typedef SimpleAllocator<C> alloc_type;
typedef std::allocator_traits<alloc_type> traits_type;
typedef std::basic_string<C, traits, alloc_type> test_type;
test_type v(alloc_type{});
v.assign(1, c);
v.assign(100, c);
#endif
}
#else
void test01() { }
#endif
int main()
{
test01();
return 0;
}