Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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

NAME
       std::modulus - std::modulus

Synopsis
	  Defined in header <functional>
	  template<>			  (since C++14)
	  class	modulus<void>;

	  std::modulus<void>  is a specialization of std::modulus with parame-
       ter and return
	  type deduced.

Member functions
	  operator() returns the modulus of two	arguments
		     (public member function)

       std::modulus<void>::operator()

	  template< class T, class U >

	  constexpr auto operator()( T&& lhs, U&& rhs )	const

	      -> decltype(std::forward<T>(lhs) % std::forward<U>(rhs));

	  Returns the remainder	of the division	of lhs by rhs.

Parameters
	  lhs, rhs - values to divide

Return value
	  std::forward<T>(lhs) % std::forward<U>(rhs).

Example
       // Run this code

	#include <functional>
	#include <iostream>

	struct M
	{
	    M(int x) { std::cout << "M(" << x << ");\n"; }
	    M()	{}
	};

	auto operator%(M, M) { std::cout << "operator%(M, M);\n"; return  M{};
       }
	auto  operator%(M,  int) { std::cout <<	"operator%(M, int);\n";	return
       M{}; }
	auto operator%(int, M) { std::cout << "operator%(int,  M);\n";	return
       M{}; }

	int main()
	{
	    M m;

	    // 42 is converted into a temporary	object M{42}
	    std::modulus<M>{}(m, 42);	 // calls operator%(M, M)

	    // no temporary object
	    std::modulus<void>{}(m, 42); // calls operator%(M, int)
	    std::modulus<void>{}(42, m); // calls operator%(int, M)
	}

Output:
	M(42);
	operator%(M, M);
	operator%(M, int);
	operator%(int, M);

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::modulus&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help