summaryrefslogtreecommitdiffstats
path: root/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/utilities/memory/allocator.traits/rebind_traits.pass.cpp')
-rw-r--r--test/utilities/memory/allocator.traits/rebind_traits.pass.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp b/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp
index 9605a12fa..6a4dd13df 100644
--- a/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp
+++ b/test/utilities/memory/allocator.traits/rebind_traits.pass.cpp
@@ -1 +1 @@
-//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <memory> // template <class Alloc> // struct allocator_traits // { // template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>; // ... // }; #include <memory> #include <type_traits> template <class T> struct ReboundA {}; template <class T> struct A { typedef T value_type; template <class U> struct rebind {typedef ReboundA<U> other;}; }; template <class T, class U> struct ReboundB {}; template <class T, class U> struct B { typedef T value_type; template <class V> struct rebind {typedef ReboundB<V, U> other;}; }; template <class T> struct C { typedef T value_type; }; template <class T, class U> struct D { typedef T value_type; }; template <class T> struct E { typedef T value_type; template <class U> struct rebind {typedef ReboundA<U> otter;}; }; int main() { #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>, std::allocator_traits<ReboundA<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>, std::allocator_traits<ReboundB<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>, std::allocator_traits<C<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>, std::allocator_traits<D<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>, std::allocator_traits<E<double> > >::value), ""); #else static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>::other, std::allocator_traits<ReboundA<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>::other, std::allocator_traits<ReboundB<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>::other, std::allocator_traits<C<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>::other, std::allocator_traits<D<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>::other, std::allocator_traits<E<double> > >::value), ""); #endif } \ No newline at end of file
+//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <memory> // template <class Alloc> // struct allocator_traits // { // template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>; // ... // }; #include <memory> #include <type_traits> template <class T> struct ReboundA {}; template <class T> struct A { typedef T value_type; template <class U> struct rebind {typedef ReboundA<U> other;}; }; template <class T, class U> struct ReboundB {}; template <class T, class U> struct B { typedef T value_type; template <class V> struct rebind {typedef ReboundB<V, U> other;}; }; template <class T> struct C { typedef T value_type; }; template <class T, class U> struct D { typedef T value_type; }; template <class T> struct E { typedef T value_type; template <class U> struct rebind {typedef ReboundA<U> otter;}; }; int main() { #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>, std::allocator_traits<ReboundA<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>, std::allocator_traits<ReboundB<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>, std::allocator_traits<C<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>, std::allocator_traits<D<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>, std::allocator_traits<E<double> > >::value), ""); #else static_assert((std::is_same<std::allocator_traits<A<char> >::rebind_traits<double>::other, std::allocator_traits<ReboundA<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<B<int, char> >::rebind_traits<double>::other, std::allocator_traits<ReboundB<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<C<char> >::rebind_traits<double>::other, std::allocator_traits<C<double> > >::value), ""); static_assert((std::is_same<std::allocator_traits<D<int, char> >::rebind_traits<double>::other, std::allocator_traits<D<double, char> > >::value), ""); static_assert((std::is_same<std::allocator_traits<E<char> >::rebind_traits<double>::other, std::allocator_traits<E<double> > >::value), ""); #endif } \ No newline at end of file