1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <valarray> 11 12 // template<class T> class valarray; 13 14 // explicit valarray(size_t); 15 16 #include <valarray> 17 #include <cassert> 18 19 struct S { 20 S() : x(1) {} 21 ~S() { ++cnt_dtor; } 22 int x; 23 static size_t cnt_dtor; 24 }; 25 26 size_t S::cnt_dtor = 0; 27 28 int main() 29 { 30 { 31 std::valarray<int> v(100); 32 assert(v.size() == 100); 33 for (int i = 0; i < 100; ++i) 34 assert(v[i] == 0); 35 } 36 { 37 std::valarray<double> v(100); 38 assert(v.size() == 100); 39 for (int i = 0; i < 100; ++i) 40 assert(v[i] == 0); 41 } 42 { 43 std::valarray<std::valarray<double> > v(100); 44 assert(v.size() == 100); 45 for (int i = 0; i < 100; ++i) 46 assert(v[i].size() == 0); 47 } 48 { 49 std::valarray<S> v(100); 50 assert(v.size() == 100); 51 for (int i = 0; i < 100; ++i) 52 assert(v[i].x == 1); 53 } 54 assert(S::cnt_dtor == 100); 55 } 56