10.7 グレゴリオ暦/ユリウス暦⇒通算日数変換 公開日:2021年9月9日 C++関数・テンプレート集プログラミング技術情報 ユリウス通日に関して、元ネタでは紀元前1年の3月1日を0日目として計算するアルゴリズムが紹介されているようです。ところがWikipediaで調べてみると、実際には、ユリウス日はユリウス暦紀元前4713年1月1日の正午から […] 続きを読む
10.6 ライブラリ関数を使わずに指定日時(年月日曜時)が夏時間か判定する。 公開日:2021年9月7日 C++関数・テンプレート集プログラミング技術情報 これについても、C++になったからといってとくに変わりませんので、基本は元ネタと同じようにすればOKです。ただし、若干そのままではうまくいかないところがありますので、その部分だけはケアしてあげることにしましょう。また、せ […] 続きを読む
10.5 同じ月の別の日の曜日を求める。 公開日:2021年9月6日 C++関数・テンプレート集プログラミング技術情報 これはC++で書いても元ネタと変わらないのですが、せめてconstexprを付けた関数として実装することにしましょう。 [crayon-676f0be92908e220298035/] 今回はこれだけです。メタ関数を作っ […] 続きを読む
10.4 ○月D日(W曜)は、その月の何回目のW曜日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 今回は正直言って何に使うのかわかりませんが、元ネタの流れに沿って、メタ関数とconstexpr版それぞれを実装してみます。 まずはメタ関数版からです。次のメタ関数は、○月Day日(dow曜日)が、その月の何回目のdow曜 […] 続きを読む
10.3 ○月のN回目のW曜日は何日? 公開日:2021年9月5日 C++関数・テンプレート集プログラミング技術情報 次のメタ関数は、ある月のN回目のD曜日の日付を求めます。D1には、その月の1日の曜日を指定してください。 [crayon-676f0be92924c130848350/] せっかくですのでconstexprを使った関数版 […] 続きを読む
10.2 日付が有効か否かの判定(グレゴリオ暦/ユリウス暦) 公開日:2021年9月4日 C++関数・テンプレート集プログラミング技術情報 指定した日付が有効かどうかを判定する関数テンプレートです。元ネタとは異なり、std::tm構造体のtm_monに合わせて、月は0~11で指定するようにしています。また、閏年用のテーブルも持たせることで、コードを単純化しま […] 続きを読む
10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 公開日:2021年9月2日 C++関数・テンプレート集プログラミング技術情報 元ネタでは、負の表現に1の補数を使う処理系に配慮した上で、負の年にも対応しようとしていますが、一応、高速判定が売りですので、ここでは無駄はバッサリ切り捨てて、1年~のみ対応としました。また、ユリウス暦とグレゴリオ暦を動的 […] 続きを読む
10. 日付・グレゴリオ暦計算テンプレート 更新日:2021年9月10日 公開日:2021年9月1日 C++関数・テンプレート集プログラミング技術情報 元ネタ 10.1 閏年の高速判定 (グレゴリオ暦/ユリウス暦) 10.2 日付が有効か否かの判定 (グレゴリオ暦/ユリウス暦) 10.3 ○月のN回目のW曜日は何日? 10.4 ○月D日(W曜)は、その月の何回目のW曜日 […] 続きを読む
9.3 エンディアン名を取得する関数テンプレート 公開日:2021年9月1日 C++関数・テンプレート集プログラミング技術情報 元ネタではリトルエンディアンとビッグエンディアンだけでなく、あらゆるバイトオーダーに対応しているようです。ただ、そこまでやっても実用価値はほぼないので、当サイトではリトルエンディアンとビッグエンディアンだけに対応すること […] 続きを読む
9.1 実行時にエンディアンを判定する関数 公開日:2021年8月30日 C++関数・テンプレート集プログラミング技術情報 今回はテンプレートではなく、単純な判別関数です。これを無理矢理テンプレートにする必然性はまったくありません。CHAR_BITがいくつであっても正しく動作するはずです。 [crayon-676f0be9295bf77264 […] 続きを読む