15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 35a83710eSEric Fiselier // The LLVM Compiler Infrastructure 45a83710eSEric Fiselier // 55a83710eSEric Fiselier // This file is dual licensed under the MIT and the University of Illinois Open 65a83710eSEric Fiselier // Source Licenses. See LICENSE.TXT for details. 75a83710eSEric Fiselier // 85a83710eSEric Fiselier //===----------------------------------------------------------------------===// 95a83710eSEric Fiselier 105a83710eSEric Fiselier // <valarray> 115a83710eSEric Fiselier 125a83710eSEric Fiselier // template<class T> class valarray; 135a83710eSEric Fiselier 145a83710eSEric Fiselier // void swap(valarray& v); 155a83710eSEric Fiselier 165a83710eSEric Fiselier #include <valarray> 175a83710eSEric Fiselier #include <cassert> 18*e898b484SStephan T. Lavavej #include <cstddef> 195a83710eSEric Fiselier 205a83710eSEric Fiselier int main() 215a83710eSEric Fiselier { 225a83710eSEric Fiselier { 235a83710eSEric Fiselier typedef int T; 245a83710eSEric Fiselier T a1[] = {1, 2, 3, 4, 5}; 255a83710eSEric Fiselier T a2[] = {6, 7, 8, 9, 10, 11, 12}; 265a83710eSEric Fiselier const unsigned N1 = sizeof(a1)/sizeof(a1[0]); 275a83710eSEric Fiselier const unsigned N2 = sizeof(a2)/sizeof(a2[0]); 285a83710eSEric Fiselier std::valarray<T> v1(a1, N1); 295a83710eSEric Fiselier std::valarray<T> v2(a2, N2); 305a83710eSEric Fiselier std::valarray<T> v1_save = v1; 315a83710eSEric Fiselier std::valarray<T> v2_save = v2; 325a83710eSEric Fiselier v1.swap(v2); 335a83710eSEric Fiselier assert(v1.size() == v2_save.size()); 34*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v1.size(); ++i) 355a83710eSEric Fiselier assert(v1[i] == v2_save[i]); 365a83710eSEric Fiselier assert(v2.size() == v1_save.size()); 37*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v2.size(); ++i) 385a83710eSEric Fiselier assert(v2[i] == v1_save[i]); 395a83710eSEric Fiselier } 405a83710eSEric Fiselier { 415a83710eSEric Fiselier typedef int T; 425a83710eSEric Fiselier T a1[] = {1, 2, 3, 4, 5}; 435a83710eSEric Fiselier const unsigned N1 = sizeof(a1)/sizeof(a1[0]); 445a83710eSEric Fiselier const unsigned N2 = 0; 455a83710eSEric Fiselier std::valarray<T> v1(a1, N1); 465a83710eSEric Fiselier std::valarray<T> v2; 475a83710eSEric Fiselier std::valarray<T> v1_save = v1; 485a83710eSEric Fiselier std::valarray<T> v2_save = v2; 495a83710eSEric Fiselier v1.swap(v2); 505a83710eSEric Fiselier assert(v1.size() == v2_save.size()); 51*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v1.size(); ++i) 525a83710eSEric Fiselier assert(v1[i] == v2_save[i]); 535a83710eSEric Fiselier assert(v2.size() == v1_save.size()); 54*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v2.size(); ++i) 555a83710eSEric Fiselier assert(v2[i] == v1_save[i]); 565a83710eSEric Fiselier } 575a83710eSEric Fiselier { 585a83710eSEric Fiselier typedef int T; 595a83710eSEric Fiselier T a2[] = {6, 7, 8, 9, 10, 11, 12}; 605a83710eSEric Fiselier const unsigned N1 = 0; 615a83710eSEric Fiselier const unsigned N2 = sizeof(a2)/sizeof(a2[0]); 625a83710eSEric Fiselier std::valarray<T> v1; 635a83710eSEric Fiselier std::valarray<T> v2(a2, N2); 645a83710eSEric Fiselier std::valarray<T> v1_save = v1; 655a83710eSEric Fiselier std::valarray<T> v2_save = v2; 665a83710eSEric Fiselier v1.swap(v2); 675a83710eSEric Fiselier assert(v1.size() == v2_save.size()); 68*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v1.size(); ++i) 695a83710eSEric Fiselier assert(v1[i] == v2_save[i]); 705a83710eSEric Fiselier assert(v2.size() == v1_save.size()); 71*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v2.size(); ++i) 725a83710eSEric Fiselier assert(v2[i] == v1_save[i]); 735a83710eSEric Fiselier } 745a83710eSEric Fiselier { 755a83710eSEric Fiselier typedef int T; 765a83710eSEric Fiselier const unsigned N1 = 0; 775a83710eSEric Fiselier const unsigned N2 = 0; 785a83710eSEric Fiselier std::valarray<T> v1; 795a83710eSEric Fiselier std::valarray<T> v2; 805a83710eSEric Fiselier std::valarray<T> v1_save = v1; 815a83710eSEric Fiselier std::valarray<T> v2_save = v2; 825a83710eSEric Fiselier v1.swap(v2); 835a83710eSEric Fiselier assert(v1.size() == v2_save.size()); 84*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v1.size(); ++i) 855a83710eSEric Fiselier assert(v1[i] == v2_save[i]); 865a83710eSEric Fiselier assert(v2.size() == v1_save.size()); 87*e898b484SStephan T. Lavavej for (std::size_t i = 0; i < v2.size(); ++i) 885a83710eSEric Fiselier assert(v2[i] == v1_save[i]); 895a83710eSEric Fiselier } 905a83710eSEric Fiselier } 91