[Source]

#include <boost/units/detail/utility.hpp>
#include <iostream>
#include <typeinfo>

namespace bud = boost::units::detail;
using namespace std;

namespace ns
{
  class MyClass {};
  struct MyStruct {};
}

void test()
{
  cout << "int          = " << typeid(int).name() << endl;
  cout << "int*         = " << typeid(int*).name() << endl;
  cout << "MyClass      = " << typeid(ns::MyClass).name() << endl;
  cout << "MyClass*     = " << typeid(ns::MyClass*).name() << endl;
  cout << "MyStruct     = " << typeid(ns::MyStruct).name() << endl;
  cout << "MyStruct*    = " << typeid(ns::MyStruct*).name() << endl;
  cout << "std::string  = " << typeid(std::string).name() << endl;
  cout << "std::string* = " << typeid(std::string*).name() << endl;
}

void demangle_test()
{
  cout << "int          = " << bud::demangle(typeid(int).name()) << endl;
  cout << "int*         = " << bud::demangle(typeid(int*).name()) << endl;
  cout << "MyClass      = " << bud::demangle(typeid(ns::MyClass).name()) << endl;
  cout << "MyClass*     = " << bud::demangle(typeid(ns::MyClass*).name()) << endl;
  cout << "MyStruct     = " << bud::demangle(typeid(ns::MyStruct).name()) << endl;
  cout << "MyStruct*    = " << bud::demangle(typeid(ns::MyStruct*).name()) << endl;
  cout << "std::string  = " << bud::demangle(typeid(std::string).name()) << endl;
  cout << "std::string* = " << bud::demangle(typeid(std::string*).name()) << endl;
}

int main()
{
  test();
  cout << endl;
  demangle_test();
  return 0;
}


[Result]

[Visual Studio]
int          = int
int*         = int *
MyClass      = class ns::MyClass
MyClass*     = class ns::MyClass *
MyStruct     = struct ns::MyStruct
MyStruct*    = struct ns::MyStruct *
std::string  = class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
std::string* = class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *

int          = int
int*         = int *
MyClass      = class ns::MyClass
MyClass*     = class ns::MyClass *
MyStruct     = struct ns::MyStruct
MyStruct*    = struct ns::MyStruct *
std::string  = class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
std::string* = class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *

[g++]
int          = i
int*         = Pi
MyClass      = N2ns7MyClassE
MyClass*     = PN2ns7MyClassE
MyStruct     = N2ns8MyStructE
MyStruct*    = PN2ns8MyStructE
std::string  = Ss
std::string* = PSs

int          = int
int*         = int*
MyClass      = ns::MyClass
MyClass*     = ns::MyClass*
MyStruct     = ns::MyStruct
MyStruct*    = ns::MyStruct*
std::string  = std::string
std::string* = std::string*



[Download]

rtti_test.zip