2 * Copyright 2008-2013 NVIDIA Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 /*! \file thrust/iterator/iterator_traits.h
19 * \brief Traits and metafunctions for reasoning about the traits of iterators
23 * (C) Copyright David Abrahams 2003.
25 * Distributed under the Boost Software License, Version 1.0.
26 * (See accompanying NOTICE file for the complete license)
28 * For more information, see http://www.boost.org
33 #include <thrust/detail/config.h>
39 /*! \p iterator_traits is a type trait class that provides a uniform
40 * interface for querying the properties of iterators at compile-time.
43 struct iterator_traits
44 : public std::iterator_traits<T>
46 }; // end iterator_traits
49 template<typename Iterator> struct iterator_value;
51 template<typename Iterator> struct iterator_pointer;
53 template<typename Iterator> struct iterator_reference;
55 template<typename Iterator> struct iterator_difference;
57 template<typename Iterator> struct iterator_traversal;
59 template<typename Iterator> struct iterator_system;
61 // TODO remove this in Thrust v1.7.0
62 template<typename Iterator>
63 struct THRUST_DEPRECATED iterator_space
65 typedef THRUST_DEPRECATED typename iterator_system<Iterator>::type type;
71 #include <thrust/iterator/detail/iterator_traversal_tags.h>
72 #include <thrust/iterator/detail/host_system_tag.h>
73 #include <thrust/iterator/detail/device_system_tag.h>
74 #include <thrust/iterator/detail/any_system_tag.h>
75 #include <thrust/iterator/detail/iterator_traits.inl>