home | help
std::regular(3) 	       C++ Standard Libary		 std::regular(3)

NAME
     std::regular - std::regular

Synopsis
	Defined in header <concepts>
	template<		    class		    T		       >
     (since C++20)
	concept regular = std::semiregular<T> && std::equality_comparable<T>;

	The regular concept specifies that a type is regular,  that  is,  it  is
     copyable,
	default constructible, and equality comparable. It is satisfied by types
     that behave
	similarly to built-in types like int, and that are comparable with ==.

Example
     // Run this code

      #include <concepts>
      #include <iostream>

      template<std::regular T>
      struct Single
      {
	  T value;
	  friend bool operator==(const Single&, const Single&) = default;
      };

      int main()
      {
	  Single<int> myInt1{4};
	  Single<int> myInt2;
	  myInt2 = myInt1;

	  if (myInt1 == myInt2)
	      std::cout << "Equal\n";

	  std::cout << myInt1.value << ' ' << myInt2.value << '\n';
      }

Output:
      Equal
      4 4

See also
	semiregular  specifies	that  an  object of a type can be copied, moved,
     swapped, and
	(C++20)     default constructed
		    (concept)

http://cppreference.com 	   2024.06.10			 std::regular(3)

home | help