10#if !defined(_MSC_VER) && __has_include(<cxxabi.h>)
14#include "native/mask_traits.h"
26using ::native::mask_traits;
43 #if !defined(_MSC_VER) && __has_include(<cxxabi.h>)
45 std::unique_ptr<char,
decltype(&std::free)> demangled(
46 abi::__cxa_demangle(
typeid(T).name(),
nullptr,
nullptr, &status),
49 if (status != 0 || !demangled) {
50 return typeid(T).name();
52 return demangled.get();
55 return typeid(T).name();
66 return type<std::remove_cvref_t<
decltype(t)>>;
70template <
typename T,
typename ... candidates>
71concept one_of_t = (std::is_same_v<T,candidates> || ... ||
false);
74template <
typename T,
typename ... candidates>
Compiler attributes for host code, with shader-safe shared modifiers.
type T is not one of the candidates
type T is one of the candidates
#define native_nodiscard
C++17 [[nodiscard]].
std::string_view const type
typename mask_traits< std::remove_cvref_t< T > >::type mask
std::string_view type_of(auto const &t)
Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its...