19 #ifndef GEOSX_DATAREPOSITORY_DEFAULTVALUE_HPP_ 20 #define GEOSX_DATAREPOSITORY_DEFAULTVALUE_HPP_ 24 #include "codingUtilities/traits.hpp" 28 namespace dataRepository
38 template<
typename T >
42 static constexpr
bool value = std::is_arithmetic< T > ::value ||
43 std::is_same< T, string >::value ||
44 std::is_same< T, Path >::value ||
45 traits::is_tensorT< T > ||
46 std::is_enum< T >::value;
56 template<
typename T,
typename ENABLE=
void >
60 static constexpr
bool has_default_value =
false;
63 using value_type = void;
74 template<
typename T >
75 struct Helper< T, std::enable_if_t< is_defaultable< T >::value > >
78 static constexpr
bool has_default_value =
true;
84 value_type value = value_type();
96 template<
typename T >
97 struct Helper< T, std::enable_if_t< traits::HasAlias_value_type< T > &&
98 is_defaultable< typename T::value_type >::value &&
99 !traits::is_string< T > &&
100 !traits::is_tensorT< T > > >
103 static constexpr
bool has_default_value =
true;
106 using value_type =
typename T::value_type;
109 value_type value = value_type();
112 template<
typename T >
113 std::enable_if_t< !Helper< T >::has_default_value, std::ostream & >
119 template<
typename T >
120 std::enable_if_t< Helper< T >::has_default_value, std::ostream & >
121 operator<<( std::ostream & stream, Helper< T >
const & value )
123 return stream << value.value;
132 template<
typename T >
internal::Helper< T > DefaultValue
A templated alias to hold default values.
#define GEOSX_UNUSED_PARAM(X)
Mark an unused argument and silence compiler warnings.