diff --git a/src/google/protobuf/stubs/macros.h b/src/google/protobuf/stubs/macros.h index eb38268e393b5..0e9a9ec198208 100644 --- a/src/google/protobuf/stubs/macros.h +++ b/src/google/protobuf/stubs/macros.h @@ -113,12 +113,13 @@ struct CompileAssert { } // namespace internal #undef GOOGLE_COMPILE_ASSERT +#if __cplusplus >= 201103L +#define GOOGLE_COMPILE_ASSERT(expr, msg) static_assert(expr, #msg) +#else #define GOOGLE_COMPILE_ASSERT(expr, msg) \ ::google::protobuf::internal::CompileAssert<(bool(expr))> \ msg[bool(expr) ? 1 : -1]; \ (void)msg - - // Implementation details of COMPILE_ASSERT: // // - COMPILE_ASSERT works by defining an array type that has -1 @@ -159,6 +160,7 @@ struct CompileAssert { // // This is to avoid running into a bug in MS VC 7.1, which // causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. +#endif // __cplusplus >= 201103L } // namespace protobuf } // namespace google