Namespaces
Variants
Views
Actions

std::type_info::name

From cppreference.com
< cpp‎ | types‎ | type info
Revision as of 12:57, 6 June 2017 by JulienC (Talk | contribs)

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
 
 
const char* name() const;

Returns an implementation defined null-terminated character string containing the name of the type. No guarantees are given, in particular, the returned string can be identical for several types and change between invocations of the same program.

Contents

Parameters

(none)

Return value

null-terminated character string containing the name of the type.

Notes

Some implementations (such as MSVC, IBM, Oracle) produce a human-readable type name. Others, most notably gcc and clang, return the mangled name. The mangled name can be converted to human-readable form using implementation-specific API such as abi::__cxa_demangle directly or through boost::core::demangle. It can also be piped through the commandline utility c++filt -t.

Example

#include <iostream>
#include <typeinfo>
 
struct Base { virtual ~Base() = default; };
struct Derived : Base {};
 
int main() {
	Base b1;
	Derived d1;
 
	const Base *pb = &b1;
	std::cout << typeid(*pb).name() << '\n';
	pb = &d1;
	std::cout << typeid(*pb).name() << '\n';
}

Possible output:

4Base
7Derived

See also

(C++11)
returns a value which is identical for the same types
(public member function) [edit]