Namespaces
Variants
Views
Actions

std::type_info::name

From cppreference.com
< cpp‎ | types‎ | type info
Revision as of 00:48, 14 June 2017 by 85.18.102.222 (Talk)

 
 
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]