tested compilation with clang++