supported compilers: clang 3.5/clang3.6