同じような内容が続きますが、今回はC言語の標準ライブラリにあるdiv関数をテンプレート化したものです。

C++ではdiv関数が引数の型によって多重定義されています。しかし、返却値の型はC言語と同じで、div_t、ldiv_t、lldiv_tのようにバラバラの型になっています。これを前回までも登場したxdiv_t構造体テンプレートに置き換えることで、使い勝手を向上させてみます。

例によってC++98以降で使えるようにしていますのが、assertの引数に使っているis_signedはTR1かBoost C++ Librariesのものを使用してください。NDEBUGマクロを定義してassertを無効にしてもいいでしょう。


元ネタ

↑ 1. 整数型に関するテンプレート