reverse_iterator.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===// 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The LLVM Compiler Infrastructure 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// License. See LICENSE.TXT for details. 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===// 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// <iterator> 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// reverse_iterator 135e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles) 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// template <class U> 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// requires HasConstructor<Iter, const U&> 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// reverse_iterator(const reverse_iterator<U> &u); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <iterator> 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <cassert> 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "../../../../iterators.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <class It, class U> 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)test(U u) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){ 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::reverse_iterator<U> r2(u); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::reverse_iterator<It> r1 = r2; 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) assert(r1.base() == u); 30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)struct base {}; 33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)struct derived : base {}; 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)int main() 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles){ 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) derived d; 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d)); 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d)); 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) test<base*>(&d); 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)