use clang diagnostic push once