- cinttypes[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp11[meta cpp]
namespace std {
imaxdiv_t
imaxdiv(intmax_t numer,
intmax_t denom); // (1) C++11
constexpr imaxdiv_t
imaxdiv(intmax_t numer,
intmax_t denom); // (1) C++23
imaxdiv_t
div(intmax_t numer,
intmax_t denom); // (2) C++11
constexpr imaxdiv_t
div(intmax_t numer,
intmax_t denom); // (2) C++23
}- imaxdiv_t[link imaxdiv_t.md]
- intmax_t[link /reference/cstdint/intmax_t.md]
最大幅の符号付き整数型 intmax_t に対して、numer / denomとnumer % denomの計算をひとつの操作で行う。imaxdiv は integer maximum division(最大幅整数の除算)の略。
- (1) :
intmax_tに対するオーバーロード。 - (2) : (1)と同じ機能を持つ、
divという名前のオーバーロード。
imaxdiv_t型オブジェクトのquotに商、remに剰余を代入して返す。
結果のどちらかがintmax_tで表現できない場合、動作は未定義である。
- (2) : このオーバーロードは、
intmax_tが拡張整数型である場合にのみ宣言される。(intmax_tがlongやlong longのような標準の整数型である場合、<cstdlib>のdivのオーバーロードと重複するため宣言されない。)
#include <iostream>
#include <cinttypes>
int main()
{
std::imaxdiv_t x = std::imaxdiv(17, 5);
std::cout << x.quot << std::endl;
std::cout << x.rem << std::endl;
}- std::imaxdiv[color ff0000]
- std::imaxdiv_t[link imaxdiv_t.md]
3
2
- C++11
- N1568 Proposed additions to TR-1 to improve compatibility with C99
- LWG Issue 3834. Missing
constexprforstd::intmax_tmath functions in<cinttypes>- C++23で、P0533R9が
<cmath>・<cstdlib>をconstexpr化した際に漏れていたimaxdiv(およびdivのオーバーロード)がconstexpr化された
- C++23で、P0533R9が