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 // valarray();
155a83710eSEric Fiselier 
165a83710eSEric Fiselier #include <valarray>
175a83710eSEric Fiselier #include <cassert>
185a83710eSEric Fiselier 
19*2b20304dSMikhail Maltsev struct S {
20*2b20304dSMikhail Maltsev     S() { ctor_called = true; }
21*2b20304dSMikhail Maltsev     static bool ctor_called;
22*2b20304dSMikhail Maltsev };
23*2b20304dSMikhail Maltsev 
24*2b20304dSMikhail Maltsev bool S::ctor_called = false;
25*2b20304dSMikhail Maltsev 
265a83710eSEric Fiselier int main()
275a83710eSEric Fiselier {
285a83710eSEric Fiselier     {
295a83710eSEric Fiselier         std::valarray<int> v;
305a83710eSEric Fiselier         assert(v.size() == 0);
315a83710eSEric Fiselier     }
325a83710eSEric Fiselier     {
335a83710eSEric Fiselier         std::valarray<float> v;
345a83710eSEric Fiselier         assert(v.size() == 0);
355a83710eSEric Fiselier     }
365a83710eSEric Fiselier     {
375a83710eSEric Fiselier         std::valarray<double> v;
385a83710eSEric Fiselier         assert(v.size() == 0);
395a83710eSEric Fiselier     }
405a83710eSEric Fiselier     {
415a83710eSEric Fiselier         std::valarray<std::valarray<double> > v;
425a83710eSEric Fiselier         assert(v.size() == 0);
435a83710eSEric Fiselier     }
44*2b20304dSMikhail Maltsev     {
45*2b20304dSMikhail Maltsev         std::valarray<S> v;
46*2b20304dSMikhail Maltsev         assert(v.size() == 0);
47*2b20304dSMikhail Maltsev         assert(!S::ctor_called);
48*2b20304dSMikhail Maltsev     }
495a83710eSEric Fiselier }
50