std::is_unbounded_array(3)

πŸ“¦
version 2024.07.05 Β· 3 versions
, in nixpkgs unstable, opensuse-leap 16.0

🌸 NAME 🌸

Okay so bestie, welcome to the std::is_unbounded_array(3) page from the C++ Standard Libary manual πŸ’…. The NAME line is literally std::is_unbounded_array - std::is_unbounded_array β€” yes, she said it twice, and honestly? iconic.

✨ Synopsis ✨

Defined in header <type_traits>:

template< class T >              (since C++20)
struct is_unbounded_array;

std::is_unbounded_array is a UnaryTypeTrait.

She checks whether T is an arrays of unknown bound. Provides the member constant value which is equal to true, if T is an array type of unknown bound. Otherwise, value is equal to false.

⚠️ Heads up, bestie: if the program adds specializations for std::is_unbounded_array or std::is_unbounded_array_v, the behavior is undefined. That is a no-cap do-not-touch.

🧚 Template parameters 🧚

  • T - a type to check

πŸŽ€ Helper variable template πŸŽ€

template< class T >
inline constexpr bool is_unbounded_array_v =
(since C++20)
is_unbounded_array<T>::value;

Also: Inherited from std::integral_constant β€” slay.

πŸ’œ Member constants πŸ’œ

  • value β€” true if T is an array type of unknown bound., false otherwise; [static] (public static member constant)

🫢 Member functions 🫢

  • operator bool β€” converts the object to bool, returns value (public member function)
  • operator() β€” returns value (C++14) (public member function)

πŸ¦‹ Member types πŸ¦‹

  • value_type β€” bool
  • type β€” std::integral_constant<bool, value>

πŸ›  Possible implementation πŸ› 

template<class T>
struct is_unbounded_array: std::false_type {};

template<class T>
struct is_unbounded_array<T[]> : std::true_type {};

πŸ“ Notes πŸ“

Feature-test macro table, but make it cute:

  • Feature-test macro: __cpp_lib_bounded_array_traits
  • Value: 201902L
  • Std: (C++20)
  • Feature: std::is_bounded_array, std::is_unbounded_array

πŸ’» Example πŸ’»

// Run this code

#include <type_traits>

class A {};

static_assert
(""
    && std::is_unbounded_array_v<A> == false
    && std::is_unbounded_array_v<A[]> == true
    && std::is_unbounded_array_v<A[3]> == false
    && std::is_unbounded_array_v<float> == false
    && std::is_unbounded_array_v<int> == false
    && std::is_unbounded_array_v<int[]> == true
    && std::is_unbounded_array_v<int[3]> == false
);

int main() {}

πŸ‘€ See also πŸ‘€

  • is_array β€” checks if a type is an array type (C++11) (class template)
  • is_bounded_array β€” checks if a type is an array type of known bound (C++20) (class template)
  • extent β€” obtains the size of an array type along a specified dimension (C++11) (class template)

okay bye bestie πŸ’– this was the std::is_unbounded_array(3) page from http://cppreference.com, dated 2024.06.10 β€” mwah, go flex those type traits πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from