ArraySize.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <array>
7 #include <cstddef>
8 #include <type_traits>
9 
10 namespace tt {
11 namespace TypeTraits_detail {
12 template <typename T, std::size_t N>
14  const std::array<T, N>& /*array*/);
15 } // namespace TypeTraits_detail
16 
17 // @{
18 /// \ingroup TypeTraitsGroup
19 /// \brief Get the size of a std::array as a std::integral_constant
20 ///
21 /// \details
22 /// Given a std::array, `Array`, returns a std::integral_constant that has the
23 /// size of the array as its value
24 ///
25 /// \usage
26 /// For a std::array `T`
27 /// \code
28 /// using result = tt::array_size<T>;
29 /// \endcode
30 ///
31 /// \metareturns
32 /// std::integral_constant<std::size_t>
33 ///
34 /// \semantics
35 /// For a type `T`,
36 /// \code
37 /// using tt::array_size<std::array<T, N>> = std::integral_constant<std::size_t,
38 /// N>;
39 /// \endcode
40 ///
41 /// \example
42 /// \snippet Test_ArraySize.cpp array_size_example
43 /// \tparam Array the whose size should be stored in value of array_size
44 template <typename Array>
45 using array_size =
46  decltype(TypeTraits_detail::array_size_impl(std::declval<const Array&>()));
47 // @}
48 } // namespace tt
std::integral_constant
tt::array_size
decltype(TypeTraits_detail::array_size_impl(std::declval< const Array & >())) array_size
Get the size of a std::array as a std::integral_constant.
Definition: ArraySize.hpp:46
cstddef
array
tt
Definition: TensorExpression.hpp:113
type_traits