1 //===----------------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 // <array> 10 11 // template <size_t I, class T, size_t N> const T& get(const array<T, N>& a); 12 13 #include <array> 14 #include <cassert> 15 16 #include "test_macros.h" 17 18 // std::array is explicitly allowed to be initialized with A a = { init-list };. 19 // Disable the missing braces warning for this reason. 20 #include "disable_missing_braces_warning.h" 21 22 TEST_CONSTEXPR_CXX14 bool tests() 23 { 24 { 25 std::array<double, 1> const array = {3.3}; 26 assert(std::get<0>(array) == 3.3); 27 } 28 { 29 std::array<double, 2> const array = {3.3, 4.4}; 30 assert(std::get<0>(array) == 3.3); 31 assert(std::get<1>(array) == 4.4); 32 } 33 { 34 std::array<double, 3> const array = {3.3, 4.4, 5.5}; 35 assert(std::get<0>(array) == 3.3); 36 assert(std::get<1>(array) == 4.4); 37 assert(std::get<2>(array) == 5.5); 38 } 39 { 40 std::array<double, 1> const array = {3.3}; 41 static_assert(std::is_same<double const&, decltype(std::get<0>(array))>::value, ""); 42 } 43 44 return true; 45 } 46 47 int main(int, char**) 48 { 49 tests(); 50 #if TEST_STD_VER >= 14 51 static_assert(tests(), ""); 52 #endif 53 return 0; 54 } 55