なぜかよくわからないが、Ubuntu 12.04の環境で、clangとlibsupc++を使うと、Variadic template nameのmangled nameが不正になる。
// Ubuntu 12.04, libstdc++ and libsupc++ #include <cstdlib> #include <iostream> #include <typeinfo> #include <cxxabi.h> template < typename ... pack > struct test { } ; int main() { // gcc prints 4testIIiEE // clang prints 4testIJiEE std::cout << typeid( test<int> ).name() << std::endl ; int status = 0 ; char * realname = abi::__cxa_demangle( typeid( test<int> ).name(), 0, 0, &status) ; std::free(realname) ; // in clang, status is -2(invalid mangled name) std::cout << status << std::endl ; }
誰か確認できるだろうか。
No comments:
Post a Comment