| Index: third_party/google_benchmark/src/arraysize.h
|
| diff --git a/third_party/google_benchmark/src/arraysize.h b/third_party/google_benchmark/src/arraysize.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..51a50f2dff271a01b57bc280404bfeab0ed1ab4c
|
| --- /dev/null
|
| +++ b/third_party/google_benchmark/src/arraysize.h
|
| @@ -0,0 +1,33 @@
|
| +#ifndef BENCHMARK_ARRAYSIZE_H_
|
| +#define BENCHMARK_ARRAYSIZE_H_
|
| +
|
| +#include "internal_macros.h"
|
| +
|
| +namespace benchmark {
|
| +namespace internal {
|
| +// The arraysize(arr) macro returns the # of elements in an array arr.
|
| +// The expression is a compile-time constant, and therefore can be
|
| +// used in defining new arrays, for example. If you use arraysize on
|
| +// a pointer by mistake, you will get a compile-time error.
|
| +//
|
| +
|
| +// This template function declaration is used in defining arraysize.
|
| +// Note that the function doesn't need an implementation, as we only
|
| +// use its type.
|
| +template <typename T, size_t N>
|
| +char (&ArraySizeHelper(T (&array)[N]))[N];
|
| +
|
| +// That gcc wants both of these prototypes seems mysterious. VC, for
|
| +// its part, can't decide which to use (another mystery). Matching of
|
| +// template overloads: the final frontier.
|
| +#ifndef COMPILER_MSVC
|
| +template <typename T, size_t N>
|
| +char (&ArraySizeHelper(const T (&array)[N]))[N];
|
| +#endif
|
| +
|
| +#define arraysize(array) (sizeof(::benchmark::internal::ArraySizeHelper(array)))
|
| +
|
| +} // end namespace internal
|
| +} // end namespace benchmark
|
| +
|
| +#endif // BENCHMARK_ARRAYSIZE_H_
|
|
|