rvalue support on gcc/clang but not on msvc