       the macro once on each line). However when used in a header at namespace
        scope, that namespace can be continued over multiple headers, each of which
        may have their own static assertions, and on the "same" lines,
        thereby generating duplicate declarations. In theory the compiler should
        silently ignore duplicate typedef declarations, however many do not do so
        (and even if they do they are entitled to emit warnings in such cases). To
        avoid potential problem