mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 01:18:52 +08:00
Clean up string's deduction guides tests. Mark old versions of clang as unsupported, b/c they don't have deduction guides, even in C++17 mode
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@324619 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -13,17 +13,6 @@
|
||||
// basic_string(InputIterator begin, InputIterator end,
|
||||
// const Allocator& a = Allocator());
|
||||
|
||||
// template<class InputIterator,
|
||||
// class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
|
||||
// basic_string(InputIterator, InputIterator, Allocator = Allocator())
|
||||
// -> basic_string<typename iterator_traits<InputIterator>::value_type,
|
||||
// char_traits<typename iterator_traits<InputIterator>::value_type>,
|
||||
// Allocator>;
|
||||
//
|
||||
// The deduction guide shall not participate in overload resolution if InputIterator
|
||||
// is a type that does not qualify as an input iterator, or if Allocator is a type
|
||||
// that does not qualify as an allocator.
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <iterator>
|
||||
@@ -128,50 +117,4 @@ int main()
|
||||
test(input_iterator<const char*>(s), input_iterator<const char*>(s+50), A());
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
// Test deduction guides
|
||||
#if TEST_STD_VER > 14
|
||||
{
|
||||
const char* s = "12345678901234";
|
||||
std::basic_string s1{s, s+10, std::allocator<char>{}};
|
||||
using S = decltype(s1); // what type did we get?
|
||||
static_assert(std::is_same_v<S::value_type, char>, "");
|
||||
static_assert(std::is_same_v<S::traits_type, std::char_traits<char>>, "");
|
||||
static_assert(std::is_same_v<S::allocator_type, std::allocator<char>>, "");
|
||||
assert(s1.size() == 10);
|
||||
assert(s1.compare(0, s1.size(), s, s1.size()) == 0);
|
||||
}
|
||||
{
|
||||
const wchar_t* s = L"12345678901234";
|
||||
std::basic_string s1{s, s+10, test_allocator<wchar_t>{}};
|
||||
using S = decltype(s1); // what type did we get?
|
||||
static_assert(std::is_same_v<S::value_type, wchar_t>, "");
|
||||
static_assert(std::is_same_v<S::traits_type, std::char_traits<wchar_t>>, "");
|
||||
static_assert(std::is_same_v<S::allocator_type, test_allocator<wchar_t>>, "");
|
||||
assert(s1.size() == 10);
|
||||
assert(s1.compare(0, s1.size(), s, s1.size()) == 0);
|
||||
}
|
||||
{
|
||||
const char16_t* s = u"12345678901234";
|
||||
std::basic_string s1{s, s+10, min_allocator<char16_t>{}};
|
||||
using S = decltype(s1); // what type did we get?
|
||||
static_assert(std::is_same_v<S::value_type, char16_t>, "");
|
||||
static_assert(std::is_same_v<S::traits_type, std::char_traits<char16_t>>, "");
|
||||
static_assert(std::is_same_v<S::allocator_type, min_allocator<char16_t>>, "");
|
||||
assert(s1.size() == 10);
|
||||
assert(s1.compare(0, s1.size(), s, s1.size()) == 0);
|
||||
}
|
||||
{
|
||||
const char32_t* s = U"12345678901234";
|
||||
std::basic_string s1{s, s+10, explicit_allocator<char32_t>{}};
|
||||
using S = decltype(s1); // what type did we get?
|
||||
static_assert(std::is_same_v<S::value_type, char32_t>, "");
|
||||
static_assert(std::is_same_v<S::traits_type, std::char_traits<char32_t>>, "");
|
||||
static_assert(std::is_same_v<S::allocator_type, explicit_allocator<char32_t>>, "");
|
||||
assert(s1.size() == 10);
|
||||
assert(s1.compare(0, s1.size(), s, s1.size()) == 0);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user