Skip to content

Convert a type to its name as a std::string_view

Notifications You must be signed in to change notification settings

Sinacam/typestring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

typestring

typestring converts a type to its name as a constexpr std::string_view.

namespace N { struct S { struct R; }; }
using T = N::S::R;
std::cout << typestring::name<int>;     // prints int
std::cout << typestring::name<N::S::R>; // prints N::S::R
std::cout << typestring::name<T>;       // prints N::S::R

The name is unique unless there are auto or lambda parameters

template<auto> struct S;
std::cout << typestring::name<S<0>>;            // prints S<0>
std::cout << typestring::name<S<0u>>;           // prints S<0>
std::cout << typestring::name<decltype([]{})>;  // prints <lambda()> on gcc
                                                // prints (lambda at file.cpp:10:20) on clang

The name can be used as a ordering on types, provided as less

std::cout << typestring::less<int, void>;   // 1
std::cout << typestring::less<void, int>;   // 0

Supports gcc, clang and msvc.

About

Convert a type to its name as a std::string_view

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages