diff options
| author | Eric Fiselier <eric@efcs.ca> | 2014-12-20 01:40:03 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2014-12-20 01:40:03 +0000 |
| commit | 5a83710e371fe68a06e6e3876c6a2c8b820a8976 (patch) | |
| tree | afde4c82ad6704681781c5cd49baa3fbd05c85db /libcxx/test/std/iterators/iterator.primitives/iterator.basic | |
| parent | f11e8eab527fba316c64112f6e05de1a79693a3e (diff) | |
| download | bcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.tar.gz bcm5719-llvm-5a83710e371fe68a06e6e3876c6a2c8b820a8976.zip | |
Move test into test/std subdirectory.
llvm-svn: 224658
Diffstat (limited to 'libcxx/test/std/iterators/iterator.primitives/iterator.basic')
| -rw-r--r-- | libcxx/test/std/iterators/iterator.primitives/iterator.basic/iterator.pass.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/libcxx/test/std/iterators/iterator.primitives/iterator.basic/iterator.pass.cpp b/libcxx/test/std/iterators/iterator.primitives/iterator.basic/iterator.pass.cpp new file mode 100644 index 00000000000..26d5c866028 --- /dev/null +++ b/libcxx/test/std/iterators/iterator.primitives/iterator.basic/iterator.pass.cpp @@ -0,0 +1,82 @@ +//===----------------------------------------------------------------------===// +// +// 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. +// +//===----------------------------------------------------------------------===// + +// <iterator> + +// template<class Category, class T, class Distance = ptrdiff_t, +// class Pointer = T*, class Reference = T&> +// struct iterator +// { +// typedef T value_type; +// typedef Distance difference_type; +// typedef Pointer pointer; +// typedef Reference reference; +// typedef Category iterator_category; +// }; + +#include <iterator> +#include <type_traits> + +struct A {}; + +template <class T> +void +test2() +{ + typedef std::iterator<std::forward_iterator_tag, T> It; + static_assert((std::is_same<typename It::value_type, T>::value), ""); + static_assert((std::is_same<typename It::difference_type, std::ptrdiff_t>::value), ""); + static_assert((std::is_same<typename It::pointer, T*>::value), ""); + static_assert((std::is_same<typename It::reference, T&>::value), ""); + static_assert((std::is_same<typename It::iterator_category, std::forward_iterator_tag>::value), ""); +} + +template <class T> +void +test3() +{ + typedef std::iterator<std::bidirectional_iterator_tag, T, short> It; + static_assert((std::is_same<typename It::value_type, T>::value), ""); + static_assert((std::is_same<typename It::difference_type, short>::value), ""); + static_assert((std::is_same<typename It::pointer, T*>::value), ""); + static_assert((std::is_same<typename It::reference, T&>::value), ""); + static_assert((std::is_same<typename It::iterator_category, std::bidirectional_iterator_tag>::value), ""); +} + +template <class T> +void +test4() +{ + typedef std::iterator<std::random_access_iterator_tag, T, int, const T*> It; + static_assert((std::is_same<typename It::value_type, T>::value), ""); + static_assert((std::is_same<typename It::difference_type, int>::value), ""); + static_assert((std::is_same<typename It::pointer, const T*>::value), ""); + static_assert((std::is_same<typename It::reference, T&>::value), ""); + static_assert((std::is_same<typename It::iterator_category, std::random_access_iterator_tag>::value), ""); +} + +template <class T> +void +test5() +{ + typedef std::iterator<std::input_iterator_tag, T, long, const T*, const T&> It; + static_assert((std::is_same<typename It::value_type, T>::value), ""); + static_assert((std::is_same<typename It::difference_type, long>::value), ""); + static_assert((std::is_same<typename It::pointer, const T*>::value), ""); + static_assert((std::is_same<typename It::reference, const T&>::value), ""); + static_assert((std::is_same<typename It::iterator_category, std::input_iterator_tag>::value), ""); +} + +int main() +{ + test2<A>(); + test3<A>(); + test4<A>(); + test5<A>(); +} |

