//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14 // // template valarray(const T(&)[cnt], size_t) -> valarray; #include #include "test_macros.h" int main(int, char**) { { // From (initializer_list) std::valarray v = {1, 2, 3, 4, 5}; ASSERT_SAME_TYPE(decltype(v), std::valarray); } { // From (const T(&)[N], size_t) long a[] = {1, 2, 3, 4, 5}; std::valarray v(a, 5); ASSERT_SAME_TYPE(decltype(v), std::valarray); } { // From (const T&, size_t) long a[] = {1, 2, 3, 4, 5}; std::valarray v(&a[0], 5); // Surprising but true. ASSERT_SAME_TYPE(decltype(v), std::valarray); } { // From (slice_array) std::valarray v{1,2,3,4,5}; std::valarray v2 = v[std::slice(2,3,1)]; static_assert(std::is_same_v>); } { // From (gslice_array) std::valarray v{1,2,3,4,5}; std::valarray v2 = v[std::gslice(0, {5}, {1})]; static_assert(std::is_same_v>); } { // From (mask_array) std::valarray v = {1, 2, 3, 4, 5}; std::valarray m = {true, false, true, false, true}; std::valarray v2 = v[m]; static_assert(std::is_same_v>); } { // From (indirect_array) std::valarray v = {1, 2, 3, 4, 5}; std::valarray i = {1, 2, 3}; std::valarray v2 = v[i]; static_assert(std::is_same_v>); } return 0; }