swap.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <stack> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch// template <class T, class Container> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// void swap(stack<T, Container>& x, stack<T, Container>& y); 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stack> 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert> 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class C> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)C 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make(int n) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) C c; 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch for (int i = 0; i < n; ++i) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) c.push(i); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return c; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main() 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::stack<int> q1 = make<std::stack<int> >(5); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::stack<int> q2 = make<std::stack<int> >(10); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::stack<int> q1_save = q1; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::stack<int> q2_save = q2; 3429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch swap(q1, q2); 3529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch assert(q1 == q2_save); 3629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch assert(q2 == q1_save); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)