111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===----------------------------------------------------------------------===//
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//                     The LLVM Compiler Infrastructure
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This file is dual licensed under the MIT and the University of Illinois Open
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Source Licenses. See LICENSE.TXT for details.
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===----------------------------------------------------------------------===//
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// <array>
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// void swap(array& a);
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <array>
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <cassert>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint main()
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    {
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        typedef double T;
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        typedef std::array<T, 3> C;
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        C c1 = {1, 2, 3.5};
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        C c2 = {4, 5, 6.5};
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        c1.swap(c2);
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c1.size() == 3);
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c1[0] == 4);
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c1[1] == 5);
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c1[2] == 6.5);
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c2.size() == 3);
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c2[0] == 1);
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c2[1] == 2);
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c2[2] == 3.5);
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    {
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        typedef double T;
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        typedef std::array<T, 0> C;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        C c1 = {};
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        C c2 = {};
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        c1.swap(c2);
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c1.size() == 0);
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        assert(c2.size() == 0);
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
44