@@ -43,9 +43,10 @@ namespace adm {
4343
4444 // / base class with set/get/has methods for a required parameter of type T
4545 // / combine these together using HasParameters
46- template <typename T,
47- typename Tag = typename detail::ParameterTraits<T>::tag>
46+ template <typename T>
4847 class RequiredParameter {
48+ using Tag = typename detail::ParameterTraits<T>::tag;
49+
4950 public:
5051 using ParameterType = T;
5152 static constexpr Flags flags = Flags::HAS_GET_SET_HAS ;
@@ -61,9 +62,10 @@ namespace adm {
6162 // / base class with set/get/has/isDefault/unset methods for an optional
6263 // / parameter of type T with no default. combine these together using
6364 // / HasParameters
64- template <typename T,
65- typename Tag = typename detail::ParameterTraits<T>::tag>
65+ template <typename T>
6666 class OptionalParameter {
67+ using Tag = typename detail::ParameterTraits<T>::tag;
68+
6769 public:
6870 using ParameterType = T;
6971 static constexpr Flags flags =
@@ -82,9 +84,10 @@ namespace adm {
8284 // / base class with set/get/has/isDefault/unset methods for an optional
8385 // / parameter of type T, which has a default provided by DefaultParameter.
8486 // / combine these together using HasParameters
85- template <typename T,
86- typename Tag = typename detail::ParameterTraits<T>::tag>
87+ template <typename T>
8788 class DefaultParameter {
89+ using Tag = typename detail::ParameterTraits<T>::tag;
90+
8891 public:
8992 using ParameterType = T;
9093 static constexpr Flags flags =
@@ -112,9 +115,9 @@ namespace adm {
112115 // / base class for storage of multiple elements in a std::vector.
113116 // / T should be a std::vector<Something>, as this is what the tag is
114117 // / associated with.
115- template <typename T,
116- typename Tag = typename detail::ParameterTraits<T>::tag>
118+ template <typename T>
117119 class VectorParameter {
120+ using Tag = typename detail::ParameterTraits<T>::tag;
118121 using Value = typename T::value_type;
119122
120123 public:
0 commit comments