//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // vector // explicit vector(size_type n); #include #include #include "min_allocator.h" #include "test_allocator.h" template void test2(typename C::size_type n, typename C::allocator_type const& a = typename C::allocator_type ()) { #if _LIBCPP_STD_VER > 11 C c(n, a); assert(c.__invariants()); assert(c.size() == n); assert(c.get_allocator() == a); #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES for (typename C::const_iterator i = c.cbegin(), e = c.cend(); i != e; ++i) assert(*i == typename C::value_type()); #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES #endif } template void test1(typename C::size_type n) { C c(n); assert(c.__invariants()); assert(c.size() == n); assert(c.get_allocator() == typename C::allocator_type()); for (typename C::const_iterator i = c.cbegin(), e = c.cend(); i != e; ++i) assert(*i == typename C::value_type()); } template void test(typename C::size_type n) { test1 ( n ); test2 ( n ); } int main() { test >(50); #if __cplusplus >= 201103L test> >(50); test2> >( 100, test_allocator(23)); #endif }