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)