compiles on clang