both clang and gcc compile without warning