• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
SS20     S() : x(1) {}
~SS21     ~S() { ++cnt_dtor; }
22     int x;
23     static size_t cnt_dtor;
24 };
25 
26 size_t S::cnt_dtor = 0;
27 
main()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