今回は正直言って何に使うのかわかりませんが、元ネタの流れに沿って、メタ関数とconstexpr版それぞれを実装してみます。
まずはメタ関数版からです。次のメタ関数は、○月Day日(dow曜日)が、その月の何回目のdow曜日かを返します。
0 1 2 3 4 5 6 |
template <int Day> struct day_to_nth_day_of_week { static const int value = (Day - 1) / 7 + 1; }; |
次にconstexprを使った関数を実装してみます。メタ関数と同名ですので、併用する場合はどちらかの名前を変更してください。
0 1 2 3 4 5 |
constexpr int day_to_nth_day_of_week(int day) { return (day - 1) / 7 + 1; } |
用途がよくわかっていませんので、今回はこれだけにしておきます。