Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
StringLiteral.hpp File Reference

Classes

struct  mundy::StringLiteral< StrSize >
 Literal class type that wraps a constant expression string. More...
struct  mundy::is_char_array< T >
struct  mundy::is_char_array< char[N]>
struct  mundy::is_char_array< const char[N]>
struct  mundy::is_string_literal< T >
struct  mundy::is_our_string_literal< T >
struct  mundy::is_our_string_literal< StringLiteral< N > >

Namespaces

namespace  mundy

Macros

Helpers for determining if an object is a string literal (type traits fails for string literals)
#define MUNDY_IS_CHAR_ARRAY(x)
#define MUNDY_IS_STRING_LITERAL(x)
#define MUNDY_IS_OUR_STRING_LITERAL(x)

Functions

template<size_t N>
constexpr bool mundy::operator== (const StringLiteral< N > &lhs, const StringLiteral< N > &rhs)
 Non-member equality operator for comparing two StringLiterals.
template<size_t N>
std::ostream & mundy::operator<< (std::ostream &os, const StringLiteral< N > &str)
 Non-member << operator for printing a StringLiteral.
template<size_t N>
constexpr StringLiteral< Nmundy::make_string_literal (const char(&str)[N])
 Helper function for creating a StringLiteral.

Variables

template<typename T>
constexpr bool mundy::is_char_array_v = is_char_array<std::remove_cvref_t<T>>::value
template<typename T>
constexpr bool mundy::is_string_literal_v = is_string_literal<std::remove_cvref_t<T>>::value
template<typename T>
constexpr bool mundy::is_our_string_literal_v = is_our_string_literal<std::remove_cvref_t<T>>::value

Macro Definition Documentation

◆ MUNDY_IS_CHAR_ARRAY

#define MUNDY_IS_CHAR_ARRAY ( x)
Value:
([&]() constexpr { \
static_cast<void>(sizeof(x)); \
return ::mundy::is_char_array_v<decltype(x)>; \
}())

◆ MUNDY_IS_STRING_LITERAL

#define MUNDY_IS_STRING_LITERAL ( x)
Value:
([&]<class __mundy_T = char>() constexpr { \
return std::is_same_v<__mundy_T const(&)[sizeof(x)], decltype(x)> && \
requires { std::type_identity_t<__mundy_T[sizeof(x) + 1]>{x}; }; \
}())

◆ MUNDY_IS_OUR_STRING_LITERAL

#define MUNDY_IS_OUR_STRING_LITERAL ( x)
Value:
([&]() constexpr { \
static_cast<void>(sizeof(x)); \
return ::mundy::is_our_string_literal_v<decltype(x)>; \
}())