} \
template <typename A> constexpr bool T{class_trait_ns_##T::trait_value<A>()};
-// Define enum class NAME with the given enumerators,
-// - a static function EnumToString() that maps enumerators to std::string,
-// - a constant NAME_enumSize that captures the number of items in the enum,
-// - a struct NAME_struct that implements a Meyers singleton to hold the mapping
-// from index to names
-
-void BuildIndexToString(
- const char *commaSeparated, std::string enumNames[], int enumSize);
-
-template <typename A> struct ListItemCount {
- constexpr ListItemCount(std::initializer_list<A> list) : value{list.size()} {}
- const std::size_t value;
-};
-
// Check that a pointer is non-null and dereference it
#define DEREF(p) Fortran::common::Deref(p, __FILE__, __LINE__)