To the best of my understanding benchmark.cc#L316, which calls offsetof on benchmark::State, is undefined behavior.
C++11 18.2.4 [support.types]
The macro offsetof(type, member-designator) accepts a restricted set of type arguments in this International Standard. If type is not a standard-layout class (Clause 9), the results are undefined.
benchmark::State is a non standard-layout type because all of its non-static members do not have the same access control.
I am not sure what would be lost by just removing the static_assert, so I am starting this off as an issue instead of going straight for a PR.