私はこのtypedefに出くわしました:
typedef char (&small)[1];
typedef char (&large)[2];
&
参照修飾子または演算子のアドレスのいずれかとして知っています。ここでは型を扱っているので参考になるかと思いますが、括弧には特別な意味があるのでしょうか?
私が得たコンテキストでは、型の変換可能性についてコンパイル時のチェックを実行するために使用されますが、この typedef はこの問題でどのように役立ちますか?
私はこのtypedefに出くわしました:
typedef char (&small)[1];
typedef char (&large)[2];
&
参照修飾子または演算子のアドレスのいずれかとして知っています。ここでは型を扱っているので参考になるかと思いますが、括弧には特別な意味があるのでしょうか?
私が得たコンテキストでは、型の変換可能性についてコンパイル時のチェックを実行するために使用されますが、この typedef はこの問題でどのように役立ちますか?
これらのステートメントtypedef
は、それぞれサイズ 1 とサイズ 2 の配列を参照します。これは例です:
/*
foo accepts arrays of size 10 only!
*/
void foo(int (&array)[10])
{ ... }
もう一つの例:
/*
foo accepts arrays of size len!
The size is len, so you can know the size of the array
unlike when using a pointer to int.
(unless you pass the size in the next parameter, of course!)
*/
template <std::size_t len>
void foo(int (&array)[len])
{ ... }