// Copyright (c) 2011 INRIA Saclay Ile-de-France (France). // All rights reserved. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is part of CGAL (www.cgal.org); you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; version 2.1 of the License. // See the file LICENSE.LGPL distributed with CGAL. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // // $URL$ // $Id$ // // // Author(s) : Marc Glisse #ifndef CGAL_IS_ITERATOR_H #define CGAL_IS_ITERATOR_H #include #include #include namespace CGAL { namespace internal { BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category) template struct is_iterator_ { enum { value = has_iterator_category::value || boost::is_pointer::value }; }; template ::value> struct is_iterator_type_ { enum { value=false }; }; template struct is_iterator_type_ : //boost::is_base_of::iterator_category> boost::is_convertible::iterator_category,U> {}; } // NOTE: we don't want the real std::decay or functions are included template struct is_iterator : internal::is_iterator_::type>::type> {}; template struct is_iterator_type : internal::is_iterator_type_::type>::type,Tag> {}; } #endif // CGAL_IS_ITERATOR_H