diff options
Diffstat (limited to 'Client/ThirdParty/fpm/3rdparty/googlebench/src/arraysize.h')
-rw-r--r-- | Client/ThirdParty/fpm/3rdparty/googlebench/src/arraysize.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Client/ThirdParty/fpm/3rdparty/googlebench/src/arraysize.h b/Client/ThirdParty/fpm/3rdparty/googlebench/src/arraysize.h new file mode 100644 index 0000000..51a50f2 --- /dev/null +++ b/Client/ThirdParty/fpm/3rdparty/googlebench/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_ |