N4072: Fixed Size Parameter Packs は期待出来る

N4072: Fixed Size Parameter Packsという提案が出ています。

参考記事:
本の虫: 2014-07 post Rapperswil mailingのレビュー: N4070-N4079

そこにこのような例があります。

template<unsigned int N, unsigned int M>
void f(int...[N], int...[M]) {}

f<2>(1,2,3); // M is deduced as 1. (N can't be deduced, but is given.)

これが可能ならば定数オーダーでパックのN番目の要素を取り出すのは以下の様に書けることが期待出来るはず。

template <unsigned int N, typename...[N] Types, typename T>
auto f(Types&&... args, T&& arg, ...) {
  return std::forward<T>(arg);
}

f<2>(1, 2, 3, 4 ,5); // 3

もはやパラメータパック分割イディオムに頼ることもなく、このようなことが出来るのですね。同様にしてtype_atのようなメタ関数も簡単に定数オーダーで実装出来るのではないでしょうか。

期待が高まります。