Skip to content

Latest commit

 

History

History
702 lines (683 loc) · 43.5 KB

source_location.md

File metadata and controls

702 lines (683 loc) · 43.5 KB

What is this?

This page shows the output of the included program srcloctest from different compilers. There are nine different sets of tests for each compiler - conjure_enum and conjure_type use this information to inform the parsing algorithm to extract enum and type info. For most compilers, there will be few if any differences between compiler versions - certainly few that impact conjure_enum - however there have been a couple of changes with earlier releases. Since the output of std::source_location is entirely implementation dependent, future changes may occur.

Want to add your compiler to this list?

Run srcloctest with the -m switch, append the output to this document in your fork and open a pull request to the dev branch.


Compiler: Clang: Ubuntu Clang 16.0.6 (23ubuntu4)

1. scoped enum

static const char *conjure_type<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]

2. unscoped enum

static const char *conjure_type<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]

3. scoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]

4. unscoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]

5. scoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]

6. unscoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]

7. types in named and anonymous namespaces

static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]

8. other types

static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::basic_string_view<char>>::tpeek() [T = std::basic_string_view<char>]
static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_string_view<char>>>>::tpeek() [T = std::vector<std::tuple<int, char, std::basic_string_view<char>>>]

9. edge enum types

static const char *conjure_type<(anonymous namespace)::NineEnums>::tpeek() [T = (anonymous namespace)::NineEnums]
static const char *conjure_type<(anonymous namespace)::NineEnums1>::tpeek() [T = (anonymous namespace)::NineEnums1]
static const char *conjure_type<TEST::NineEnums>::tpeek() [T = TEST::NineEnums]
static const char *conjure_type<TEST::NineEnums1>::tpeek() [T = TEST::NineEnums1]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums1>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums1]
static const char *conjure_type<TEST::TEST1::NineEnums>::tpeek() [T = TEST::TEST1::NineEnums]
static const char *conjure_type<TEST::TEST1::NineEnums1>::tpeek() [T = TEST::TEST1::NineEnums1]

Compiler: GCC: 14.0.1 20240412 (experimental) [master r14-9935-g67e1433a94f]

1. scoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace_Enum_Type::Value; T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type)100; T = Namespace_Enum_Type]

2. unscoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type1)100; T = Namespace_Enum_Type1]

3. scoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Enum_Type::Value; T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type)100; T = {anonymous}::Anon_Enum_Type]

4. unscoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type1)100; T = {anonymous}::Anon_Enum_Type1]

5. scoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Namespace_Enum_Type::Value; T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type)100; T = Namespace::Namespace_Enum_Type]

6. unscoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type1)100; T = Namespace::Namespace_Enum_Type1]

7. types in named and anonymous namespaces

static consteval const char* conjure_type<T>::tpeek() [with T = Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Foo]

8. other types

static consteval const char* conjure_type<T>::tpeek() [with T = int]
static consteval const char* conjure_type<T>::tpeek() [with T = std::basic_string_view<char>]
static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std::tuple<int, char, std::basic_string_view<char, std::char_traits<char> > > >]

9. edge enum types

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums1]

Compiler: MSVC: 1940

1. scoped enum

const char *__cdecl conjure_type<enum Namespace_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type>::epeek<Namespace_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type>::epeek<(enum Namespace_Enum_Type)0x64>(void) noexcept

2. unscoped enum

const char *__cdecl conjure_type<enum Namespace_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type1>::epeek<Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace_Enum_Type1>::epeek<(enum Namespace_Enum_Type1)0x64>(void) noexcept

3. scoped enum in anonymous namespace

const char *__cdecl conjure_type<enum `anonymous namespace'::Anon_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type>::epeek<`anonymous-namespace'::Anon_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type>::epeek<(enum `anonymous-namespace'::Anon_Enum_Type)0x64>(void) noexcept

4. unscoped enum in anonymous namespace

const char *__cdecl conjure_type<enum `anonymous namespace'::Anon_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type1>::epeek<`anonymous-namespace'::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Enum_Type1>::epeek<(enum `anonymous-namespace'::Anon_Enum_Type1)0x64>(void) noexcept

5. scoped enum in namespace

const char *__cdecl conjure_type<enum Namespace::Namespace_Enum_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type>::epeek<Namespace::Namespace_Enum_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type>::epeek<(enum Namespace::Namespace_Enum_Type)0x64>(void) noexcept

6. unscoped enum in namespace

const char *__cdecl conjure_type<enum Namespace::Namespace_Enum_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type1>::epeek<Namespace::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Namespace_Enum_Type1>::epeek<(enum Namespace::Namespace_Enum_Type1)0x64>(void) noexcept

7. types in named and anonymous namespaces

const char *__cdecl conjure_type<struct Foo>::tpeek(void) noexcept
const char *__cdecl conjure_type<class Namespace::Namespace_Foo>::tpeek(void) noexcept
const char *__cdecl conjure_type<class `anonymous namespace'::Anon_Foo>::tpeek(void) noexcept

8. other types

const char *__cdecl conjure_type<int>::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::basic_string_view<char,struct std::char_traits<char> > >::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::vector<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > >,class std::allocator<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > > > > >::tpeek(void) noexcept

9. edge enum types

const char *__cdecl conjure_type<enum `anonymous namespace'::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::TEST1::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::TEST1::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::TEST1::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::TEST1::NineEnums1>::tpeek(void) noexcept

Compiler: MSVC: 1939

1. scoped enum

const char *__cdecl conjure_enum<enum Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Type>::epeek<Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Type>::epeek<(enum Type)0x64>(void) noexcept

2. unscoped enum

const char *__cdecl conjure_enum<enum Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Type1>::epeek<Value>(void) noexcept
const char *__cdecl conjure_enum<enum Type1>::epeek<(enum Type1)0x64>(void) noexcept

3. scoped enum in anonymous namespace

const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type>::epeek<`anonymous-namespace'::Anon_Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type>::epeek<(enum `anonymous-namespace'::Anon_Type)0x64>(void) noexcept

4. unscoped enum in anonymous namespace

const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type1>::epeek<`anonymous-namespace'::Value>(void) noexcept
const char *__cdecl conjure_enum<enum `anonymous namespace'::Anon_Type1>::epeek<(enum `anonymous-namespace'::Anon_Type1)0x64>(void) noexcept

5. scoped enum in namespace

const char *__cdecl conjure_enum<enum Namespace::Type>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Type>::epeek<Namespace::Type::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Type>::epeek<(enum Namespace::Type)0x64>(void) noexcept

6. unscoped enum in namespace

const char *__cdecl conjure_enum<enum Namespace::Type1>::tpeek(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Type1>::epeek<Namespace::Value>(void) noexcept
const char *__cdecl conjure_enum<enum Namespace::Type1>::epeek<(enum Namespace::Type1)0x64>(void) noexcept

7. other type

const char *__cdecl conjure_type<int>::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::basic_string_view<char,struct std::char_traits<char> > >::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::vector<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > >,class std::allocator<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > > > > >::tpeek(void) noexcept

8. other types

const char *__cdecl conjure_type<int>::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::basic_string_view<char,struct std::char_traits<char> > >::tpeek(void) noexcept
const char *__cdecl conjure_type<class std::vector<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > >,class std::allocator<class std::tuple<int,char,class std::basic_string_view<char,struct std::char_traits<char> > > > > >::tpeek(void) noexcept

9. edge enum types

const char *__cdecl conjure_type<enum `anonymous namespace'::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::TEST1::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum `anonymous namespace'::TEST1::NineEnums1>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::TEST1::NineEnums>::tpeek(void) noexcept
const char *__cdecl conjure_type<enum TEST::TEST1::NineEnums1>::tpeek(void) noexcept

Compiler: Clang: Apple LLVM 15.0.0 (clang-1500.3.9.4)

1. scoped enum

static const char *conjure_type<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]

2. unscoped enum

static const char *conjure_type<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]

3. scoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]

4. unscoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]

5. scoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]

6. unscoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]

7. types in named and anonymous namespaces

static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]

8. other types

static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::string_view>::tpeek() [T = std::string_view]
static const char *conjure_type<std::vector<std::tuple<int, char, std::string_view>>>::tpeek() [T = std::vector<std::tuple<int, char, std::string_view>>]

9. edge enum types

static const char *conjure_type<(anonymous namespace)::NineEnums>::tpeek() [T = (anonymous namespace)::NineEnums]
static const char *conjure_type<(anonymous namespace)::NineEnums1>::tpeek() [T = (anonymous namespace)::NineEnums1]
static const char *conjure_type<TEST::NineEnums>::tpeek() [T = TEST::NineEnums]
static const char *conjure_type<TEST::NineEnums1>::tpeek() [T = TEST::NineEnums1]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums1>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums1]
static const char *conjure_type<TEST::TEST1::NineEnums>::tpeek() [T = TEST::TEST1::NineEnums]
static const char *conjure_type<TEST::TEST1::NineEnums1>::tpeek() [T = TEST::TEST1::NineEnums1]

Compiler: GCC: 11.4.0

1. scoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace_Enum_Type::Value; T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type)100; T = Namespace_Enum_Type]

2. unscoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type1)100; T = Namespace_Enum_Type1]

3. scoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Enum_Type::Value; T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type)100; T = {anonymous}::Anon_Enum_Type]

4. unscoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type1)100; T = {anonymous}::Anon_Enum_Type1]

5. scoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Namespace_Enum_Type::Value; T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type)100; T = Namespace::Namespace_Enum_Type]

6. unscoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type1)100; T = Namespace::Namespace_Enum_Type1]

7. types in named and anonymous namespaces

static consteval const char* conjure_type<T>::tpeek() [with T = Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Foo]

8. other types

static consteval const char* conjure_type<T>::tpeek() [with T = int]
static consteval const char* conjure_type<T>::tpeek() [with T = std::basic_string_view<char>]
static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std::tuple<int, char, std::basic_string_view<char, std::char_traits<char> > > >]

9. edge enum types

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums1]

Compiler: Clang: Ubuntu Clang 18.1.3 (1ubuntu1)

1. scoped enum

static const char *conjure_type<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]

2. unscoped enum

static const char *conjure_type<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]

3. scoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]

4. unscoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]

5. scoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]

6. unscoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]

7. types in named and anonymous namespaces

static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]

8. other types

static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::basic_string_view<char>>::tpeek() [T = std::basic_string_view<char>]
static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_string_view<char>>>>::tpeek() [T = std::vector<std::tuple<int, char, std::basic_string_view<char>>>]

9. edge enum types

static const char *conjure_type<(anonymous namespace)::NineEnums>::tpeek() [T = (anonymous namespace)::NineEnums]
static const char *conjure_type<(anonymous namespace)::NineEnums1>::tpeek() [T = (anonymous namespace)::NineEnums1]
static const char *conjure_type<TEST::NineEnums>::tpeek() [T = TEST::NineEnums]
static const char *conjure_type<TEST::NineEnums1>::tpeek() [T = TEST::NineEnums1]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums1>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums1]
static const char *conjure_type<TEST::TEST1::NineEnums>::tpeek() [T = TEST::TEST1::NineEnums]
static const char *conjure_type<TEST::TEST1::NineEnums1>::tpeek() [T = TEST::TEST1::NineEnums1]

Compiler: GCC: 12.3.0

1. scoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace_Enum_Type::Value; T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type)100; T = Namespace_Enum_Type]

2. unscoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type1)100; T = Namespace_Enum_Type1]

3. scoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Enum_Type::Value; T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type)100; T = {anonymous}::Anon_Enum_Type]

4. unscoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type1)100; T = {anonymous}::Anon_Enum_Type1]

5. scoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Namespace_Enum_Type::Value; T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type)100; T = Namespace::Namespace_Enum_Type]

6. unscoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type1)100; T = Namespace::Namespace_Enum_Type1]

7. types in named and anonymous namespaces

static consteval const char* conjure_type<T>::tpeek() [with T = Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Foo]

8. other types

static consteval const char* conjure_type<T>::tpeek() [with T = int]
static consteval const char* conjure_type<T>::tpeek() [with T = std::basic_string_view<char>]
static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std::tuple<int, char, std::basic_string_view<char, std::char_traits<char> > > >]

9. edge enum types

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums1]

Compiler: GCC: 13.2.0

1. scoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace_Enum_Type::Value; T = Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type)100; T = Namespace_Enum_Type]

2. unscoped enum

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Value; T = Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace_Enum_Type1)100; T = Namespace_Enum_Type1]

3. scoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Anon_Enum_Type::Value; T = {anonymous}::Anon_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type)100; T = {anonymous}::Anon_Enum_Type]

4. unscoped enum in anonymous namespace

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = <unnamed>::Value; T = {anonymous}::Anon_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (<unnamed>::Anon_Enum_Type1)100; T = {anonymous}::Anon_Enum_Type1]

5. scoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Namespace_Enum_Type::Value; T = Namespace::Namespace_Enum_Type]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type)100; T = Namespace::Namespace_Enum_Type]

6. unscoped enum in namespace

static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = Namespace::Value; T = Namespace::Namespace_Enum_Type1]
static consteval const char* conjure_enum<T>::epeek() [with T e = (Namespace::Namespace_Enum_Type1)100; T = Namespace::Namespace_Enum_Type1]

7. types in named and anonymous namespaces

static consteval const char* conjure_type<T>::tpeek() [with T = Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = Namespace::Namespace_Foo]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::Anon_Foo]

8. other types

static consteval const char* conjure_type<T>::tpeek() [with T = int]
static consteval const char* conjure_type<T>::tpeek() [with T = std::basic_string_view<char>]
static consteval const char* conjure_type<T>::tpeek() [with T = std::vector<std::tuple<int, char, std::basic_string_view<char, std::char_traits<char> > > >]

9. edge enum types

static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = {anonymous}::TEST1::NineEnums1]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums]
static consteval const char* conjure_type<T>::tpeek() [with T = TEST::TEST1::NineEnums1]

Compiler: Clang: Ubuntu Clang 17.0.6 (9ubuntu1)

1. scoped enum

static const char *conjure_type<Namespace_Enum_Type>::tpeek() [T = Namespace_Enum_Type]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace_Enum_Type>::epeek() [T = Namespace_Enum_Type, e = (Namespace_Enum_Type)100]

2. unscoped enum

static const char *conjure_type<Namespace_Enum_Type1>::tpeek() [T = Namespace_Enum_Type1]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = Value]
static const char *conjure_enum<Namespace_Enum_Type1>::epeek() [T = Namespace_Enum_Type1, e = (Namespace_Enum_Type1)100]

3. scoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = (anonymous namespace)::Anon_Enum_Type::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type>::epeek() [T = (anonymous namespace)::Anon_Enum_Type, e = ((anonymous namespace)::Anon_Enum_Type)100]

4. unscoped enum in anonymous namespace

static const char *conjure_type<(anonymous namespace)::Anon_Enum_Type1>::tpeek() [T = (anonymous namespace)::Anon_Enum_Type1]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = (anonymous namespace)::Value]
static const char *conjure_enum<(anonymous namespace)::Anon_Enum_Type1>::epeek() [T = (anonymous namespace)::Anon_Enum_Type1, e = ((anonymous namespace)::Anon_Enum_Type1)100]
```                                                                                                                                                                                                                                                  ## 5. scoped enum in namespace
```c++
static const char *conjure_type<Namespace::Namespace_Enum_Type>::tpeek() [T = Namespace::Namespace_Enum_Type]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = Namespace::Namespace_Enum_Type::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type>::epeek() [T = Namespace::Namespace_Enum_Type, e = (Namespace::Namespace_Enum_Type)100]

6. unscoped enum in namespace

static const char *conjure_type<Namespace::Namespace_Enum_Type1>::tpeek() [T = Namespace::Namespace_Enum_Type1]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = Namespace::Value]
static const char *conjure_enum<Namespace::Namespace_Enum_Type1>::epeek() [T = Namespace::Namespace_Enum_Type1, e = (Namespace::Namespace_Enum_Type1)100]

7. types in named and anonymous namespaces

static const char *conjure_type<Foo>::tpeek() [T = Foo]
static const char *conjure_type<Namespace::Namespace_Foo>::tpeek() [T = Namespace::Namespace_Foo]
static const char *conjure_type<(anonymous namespace)::Anon_Foo>::tpeek() [T = (anonymous namespace)::Anon_Foo]

8. other types

static const char *conjure_type<int>::tpeek() [T = int]
static const char *conjure_type<std::basic_string_view<char>>::tpeek() [T = std::basic_string_view<char>]
static const char *conjure_type<std::vector<std::tuple<int, char, std::basic_string_view<char>>>>::tpeek() [T = std::vector<std::tuple<int, char, std::basic_string_view<char>>>]

9. edge enum types

static const char *conjure_type<(anonymous namespace)::NineEnums>::tpeek() [T = (anonymous namespace)::NineEnums]
static const char *conjure_type<(anonymous namespace)::NineEnums1>::tpeek() [T = (anonymous namespace)::NineEnums1]
static const char *conjure_type<TEST::NineEnums>::tpeek() [T = TEST::NineEnums]
static const char *conjure_type<TEST::NineEnums1>::tpeek() [T = TEST::NineEnums1]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums]
static const char *conjure_type<(anonymous namespace)::TEST1::NineEnums1>::tpeek() [T = (anonymous namespace)::TEST1::NineEnums1]
static const char *conjure_type<TEST::TEST1::NineEnums>::tpeek() [T = TEST::TEST1::NineEnums]
static const char *conjure_type<TEST::TEST1::NineEnums1>::tpeek() [T = TEST::TEST1::NineEnums1]