N
コンパイル時に推定されるサイズの配列への参照を取る次の関数を考えてみましょう:
template <size_t N>
void array_consumer(unsigned const (&source)[N]) {
// ...
}
次のような配列初期化子で呼び出したい:
array_consumer({1u, 2u, 3u, 4u});
これは機能しますが、after every 値を指定したくありませんu
(実際の配列はもっと長くなる可能性があります)。これを回避するために、関数の署名または呼び出しサイトでできることはありますか?
配列が実際には内部で符号なし型である必要があることに注意してくださいarray_consumer
(実際にはコピーを作成したくありません)ので、署名をに変更してint const (&source)[N])
も機能しません。