Skip to content

Latest commit

 

History

History
105 lines (84 loc) · 3.13 KB

empty.md

File metadata and controls

105 lines (84 loc) · 3.13 KB

empty

  • iterator[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp17[meta cpp]
namespace std {
  template <class C>
  constexpr auto empty(const C& c) -> decltype(c.empty());               // (1) C++17

  template <class C>
  [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); // (1) C++20

  template <class T, std::size_t N>
  constexpr bool empty(const T (&array)[N]) noexcept;                    // (2) C++17

  template <class T, std::size_t N>
  [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept;      // (2) C++20

  template <class E>
  constexpr bool empty(initializer_list<E> il) noexcept;                 // (3) C++17

  template <class E>
  [[nodiscard]] constexpr bool empty(initializer_list<E> il) noexcept;   // (3) C++20
}
  • initializer_list[link /reference/initializer_list/initializer_list.md]

概要

コンテナが空かどうかを判定する。

戻り値

  • (1) : return c.empty();
  • (2) : return false;
  • (3) : return il.size() == 0;

備考

#include <vector>
#include <iostream>

int main()
{
  int arr[4] = {};
  std::cout << std::boolalpha << std::empty(arr) << std::endl;

  std::cout << std::boolalpha << std::empty(u8"arikitari") << std::endl;

  std::vector<int> v;
  std::cout << std::boolalpha << std::empty(v) << std::endl;
  v.push_back(13);
  std::cout << std::boolalpha << std::empty(v) << std::endl;
  //変数vの型はstd名前空間にあるクラス型なので
  //ADLによって `std::`がなくとも発見できる
  std::cout << std::boolalpha << empty(v) << std::endl;
}
  • std::empty[color ff0000]
  • empty[color ff0000]

出力

false
false
true
false
false

バージョン

言語

  • C++17

処理系

参照