最終更新日時(UTC):
が更新

履歴 編集

concept
<concepts>

std::unsigned_integral(C++20)

namespace std {
  template<class T>
  concept unsigned_integral = integral<T> && !signed_integral<T>;
}

概要

unsigned_integralは、任意の型Tが符号なし整数型であることを表すコンセプトである。

備考

boolなど、符号なし整数型でなくてもunsigned_integralのモデルとなる型が存在する。

#include <iostream>
#include <concepts>
#include <cstdint>
#include <type_traits>

template<std::unsigned_integral T>
void f(const char* name) {
  std::cout << name << " is unsigned_integral" << std::endl;
}

template<typename T>
void f(const char* name) {
  std::cout << name << " is not unsigned_integral" << std::endl;
}


int main() {
  f<bool>("bool");
  f<std::size_t>("std::size_t");
  f<std::uint32_t>("std::uint32_t");
  f<char8_t>("char8_t");

  std::cout << "\n";

  f<int>("int");
  f<std::int64_t>("std::int64_t");
  f<int>("char");
  f<int*>("int*");
  f<int&>("int&");
  f<std::integral_constant<unsigned int, 1>>("std::integral_constant<unsigned int, 1>");
}

出力

bool is unsigned_integral
std::size_t is unsigned_integral
std::uint32_t is unsigned_integral
char8_t is unsigned_integral

int is not unsigned_integral
std::int64_t is not unsigned_integral
char is not unsigned_integral
int* is not unsigned_integral
int& is not unsigned_integral
std::integral_constant<int, 1> is not unsigned_integral

バージョン

言語

  • C++20

処理系

関連項目

参照