Move test into test/std subdirectory.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@224658 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class T>
|
||||
// struct pointer_traits<T*>
|
||||
// {
|
||||
// typedef ptrdiff_t difference_type;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
int main()
|
||||
{
|
||||
static_assert((std::is_same<std::pointer_traits<double*>::difference_type, std::ptrdiff_t>::value), "");
|
||||
}
|
@@ -0,0 +1,25 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class T>
|
||||
// struct pointer_traits<T*>
|
||||
// {
|
||||
// typedef T element_type;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
int main()
|
||||
{
|
||||
static_assert((std::is_same<std::pointer_traits<const short*>::element_type, const short>::value), "");
|
||||
}
|
32
test/std/utilities/memory/pointer.traits/pointer.pass.cpp
Normal file
32
test/std/utilities/memory/pointer.traits/pointer.pass.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class Ptr>
|
||||
// struct pointer_traits
|
||||
// {
|
||||
// typedef Ptr pointer;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
struct A
|
||||
{
|
||||
typedef short element_type;
|
||||
typedef char difference_type;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
static_assert((std::is_same<std::pointer_traits<A>::pointer, A>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<int*>::pointer, int*>::value), "");
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class Ptr>
|
||||
// struct pointer_traits
|
||||
// {
|
||||
// static pointer pointer_to(<details>);
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
||||
template <class T>
|
||||
struct A
|
||||
{
|
||||
private:
|
||||
struct nat {};
|
||||
public:
|
||||
typedef T element_type;
|
||||
element_type* t_;
|
||||
|
||||
A(element_type* t) : t_(t) {}
|
||||
|
||||
static A pointer_to(typename std::conditional<std::is_void<element_type>::value,
|
||||
nat, element_type>::type& et)
|
||||
{return A(&et);}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
int i = 0;
|
||||
A<int> a = std::pointer_traits<A<int> >::pointer_to(i);
|
||||
assert(a.t_ == &i);
|
||||
}
|
||||
{
|
||||
(std::pointer_traits<A<void> >::element_type)0;
|
||||
}
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class Ptr>
|
||||
// struct pointer_traits
|
||||
// {
|
||||
// typedef <details> difference_type;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
struct A
|
||||
{
|
||||
typedef short element_type;
|
||||
typedef char difference_type;
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
typedef short element_type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct C {};
|
||||
|
||||
template <class T>
|
||||
struct D
|
||||
{
|
||||
typedef char difference_type;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
static_assert((std::is_same<std::pointer_traits<A>::difference_type, char>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<B>::difference_type, std::ptrdiff_t>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<C<double> >::difference_type, std::ptrdiff_t>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<D<int> >::difference_type, char>::value), "");
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class Ptr>
|
||||
// struct pointer_traits
|
||||
// {
|
||||
// typedef <details> element_type;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
struct A
|
||||
{
|
||||
typedef char element_type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct B
|
||||
{
|
||||
typedef char element_type;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct C
|
||||
{
|
||||
};
|
||||
|
||||
template <class T, class U>
|
||||
struct D
|
||||
{
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
static_assert((std::is_same<std::pointer_traits<A>::element_type, char>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<B<int> >::element_type, char>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<C<int> >::element_type, int>::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<D<double, int> >::element_type, double>::value), "");
|
||||
}
|
@@ -0,0 +1,69 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class Ptr>
|
||||
// struct pointer_traits
|
||||
// {
|
||||
// template <class U> using rebind = <details>;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
template <class T>
|
||||
struct A
|
||||
{
|
||||
};
|
||||
|
||||
template <class T> struct B1 {};
|
||||
|
||||
template <class T>
|
||||
struct B
|
||||
{
|
||||
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
template <class U> using rebind = B1<U>;
|
||||
#else
|
||||
template <class U> struct rebind {typedef B1<U> other;};
|
||||
#endif
|
||||
};
|
||||
|
||||
template <class T, class U>
|
||||
struct C
|
||||
{
|
||||
};
|
||||
|
||||
template <class T, class U> struct D1 {};
|
||||
|
||||
template <class T, class U>
|
||||
struct D
|
||||
{
|
||||
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
template <class V> using rebind = D1<V, U>;
|
||||
#else
|
||||
template <class V> struct rebind {typedef D1<V, U> other;};
|
||||
#endif
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
static_assert((std::is_same<std::pointer_traits<A<int*> >::rebind<double*>, A<double*> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<B<int> >::rebind<double>, B1<double> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<C<char, int> >::rebind<double>, C<double, int> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<D<char, int> >::rebind<double>, D1<double, int> >::value), "");
|
||||
#else // _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
static_assert((std::is_same<std::pointer_traits<A<int*> >::rebind<double*>::other, A<double*> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<B<int> >::rebind<double>::other, B1<double> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<C<char, int> >::rebind<double>::other, C<double, int> >::value), "");
|
||||
static_assert((std::is_same<std::pointer_traits<D<char, int> >::rebind<double>::other, D1<double, int> >::value), "");
|
||||
#endif // _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
}
|
32
test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp
Normal file
32
test/std/utilities/memory/pointer.traits/pointer_to.pass.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class T>
|
||||
// struct pointer_traits<T*>
|
||||
// {
|
||||
// static pointer pointer_to(<details>);
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
int i = 0;
|
||||
int* a = std::pointer_traits<int*>::pointer_to(i);
|
||||
assert(a == &i);
|
||||
}
|
||||
{
|
||||
(std::pointer_traits<void*>::element_type)0;
|
||||
}
|
||||
}
|
29
test/std/utilities/memory/pointer.traits/rebind.pass.cpp
Normal file
29
test/std/utilities/memory/pointer.traits/rebind.pass.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class T>
|
||||
// struct pointer_traits<T*>
|
||||
// {
|
||||
// template <class U> using rebind = U*;
|
||||
// ...
|
||||
// };
|
||||
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
|
||||
int main()
|
||||
{
|
||||
#ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
|
||||
static_assert((std::is_same<std::pointer_traits<int*>::rebind<double>, double*>::value), "");
|
||||
#else
|
||||
static_assert((std::is_same<std::pointer_traits<int*>::rebind<double>::other, double*>::value), "");
|
||||
#endif
|
||||
}
|
Reference in New Issue
Block a user