15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65a83710eSEric Fiselier // 75a83710eSEric Fiselier //===----------------------------------------------------------------------===// 85a83710eSEric Fiselier 95a83710eSEric Fiselier // <valarray> 105a83710eSEric Fiselier 115a83710eSEric Fiselier // template<class T> class valarray; 125a83710eSEric Fiselier 135a83710eSEric Fiselier // explicit valarray(size_t); 145a83710eSEric Fiselier 155a83710eSEric Fiselier #include <valarray> 165a83710eSEric Fiselier #include <cassert> 175a83710eSEric Fiselier 18*7fc6a556SMarshall Clow #include "test_macros.h" 19*7fc6a556SMarshall Clow 202b20304dSMikhail Maltsev struct S { SS212b20304dSMikhail Maltsev S() : x(1) {} ~SS222b20304dSMikhail Maltsev ~S() { ++cnt_dtor; } 232b20304dSMikhail Maltsev int x; 242b20304dSMikhail Maltsev static size_t cnt_dtor; 252b20304dSMikhail Maltsev }; 262b20304dSMikhail Maltsev 272b20304dSMikhail Maltsev size_t S::cnt_dtor = 0; 282b20304dSMikhail Maltsev main(int,char **)292df59c50SJF Bastienint main(int, char**) 305a83710eSEric Fiselier { 315a83710eSEric Fiselier { 325a83710eSEric Fiselier std::valarray<int> v(100); 335a83710eSEric Fiselier assert(v.size() == 100); 345a83710eSEric Fiselier for (int i = 0; i < 100; ++i) 355a83710eSEric Fiselier assert(v[i] == 0); 365a83710eSEric Fiselier } 375a83710eSEric Fiselier { 385a83710eSEric Fiselier std::valarray<double> v(100); 395a83710eSEric Fiselier assert(v.size() == 100); 405a83710eSEric Fiselier for (int i = 0; i < 100; ++i) 415a83710eSEric Fiselier assert(v[i] == 0); 425a83710eSEric Fiselier } 435a83710eSEric Fiselier { 445a83710eSEric Fiselier std::valarray<std::valarray<double> > v(100); 455a83710eSEric Fiselier assert(v.size() == 100); 465a83710eSEric Fiselier for (int i = 0; i < 100; ++i) 475a83710eSEric Fiselier assert(v[i].size() == 0); 485a83710eSEric Fiselier } 492b20304dSMikhail Maltsev { 502b20304dSMikhail Maltsev std::valarray<S> v(100); 512b20304dSMikhail Maltsev assert(v.size() == 100); 522b20304dSMikhail Maltsev for (int i = 0; i < 100; ++i) 532b20304dSMikhail Maltsev assert(v[i].x == 1); 542b20304dSMikhail Maltsev } 552b20304dSMikhail Maltsev assert(S::cnt_dtor == 100); 562df59c50SJF Bastien 572df59c50SJF Bastien return 0; 585a83710eSEric Fiselier } 59