@@ -114,7 +114,7 @@ namespace traits
114114{
115115 /*
116116 * size
117- * determines the size (number of dimensions) of the given expression type
117+ * gets the vector size of expression T
118118 */
119119 template <class >
120120 struct size : std::integral_constant<size_t , 1 > {};
@@ -130,7 +130,7 @@ namespace traits
130130
131131 /*
132132 * scalar
133- * determines the scalar type of the given expression type
133+ * gets the scalar type of expression T
134134 */
135135 template <class S >
136136 struct scalar : std::common_type<S> {};
@@ -146,7 +146,7 @@ namespace traits
146146
147147 /*
148148 * result
149- * determines the result type of given expression type
149+ * gets the resulting vector value of expression T
150150 */
151151 template <class >
152152 struct result {};
@@ -162,7 +162,7 @@ namespace traits
162162
163163 /*
164164 * is_expr
165- * determines if given type is an expression
165+ * determines if T is a vector expression
166166 */
167167 template <class T >
168168 struct is_expr : std::is_base_of<expr::base<T>, T> {};
@@ -172,17 +172,18 @@ namespace traits
172172
173173 /*
174174 * is_same_size
175- * determines if the two given types are expressions of the same size
175+ * determines if T and U are both expressions of the same size
176176 */
177- template <class L , class R >
178- struct is_same_size : std::conjunction<is_expr<L >, is_expr<R >, std::bool_constant<size_v<L > == size_v<R >>> {};
177+ template <class T , class U >
178+ struct is_same_size : std::conjunction<is_expr<T >, is_expr<U >, std::bool_constant<size_v<T > == size_v<U >>> {};
179179
180- template <class L , class R >
181- inline constexpr bool is_same_size_v = is_same_size<L, R >::value;
180+ template <class T , class U >
181+ inline constexpr bool is_same_size_v = is_same_size<T, U >::value;
182182
183183 /*
184184 * is valid operation
185- * determines if the two given types form a valid vector operation
185+ * determines if T and U make up a valid operation
186+ * STRICT_ORDERING = true forbids a scalar type from appearing first
186187 */
187188 template <class L , class R , bool STRICT_ORDERING>
188189 struct is_valid_operation
@@ -195,7 +196,7 @@ namespace traits
195196
196197 /*
197198 * is value
198- * determines if given type is a value expression
199+ * determines if T is a value expression
199200 */
200201 template <class >
201202 struct is_value : std::false_type {};
@@ -208,7 +209,7 @@ namespace traits
208209
209210 /*
210211 * has named components
211- * determines if given value type has named components
212+ * determines if T has named components
212213 */
213214 template <class T , class = void >
214215 struct has_named_components : std::false_type {};
@@ -221,8 +222,7 @@ namespace traits
221222
222223 /*
223224 * has_converter
224- * checks if there is a converter defined for T and U
225- * only checks for converters with template parameters in specified order (converter<T, U>)
225+ * determines if there is a converter specialization defined from T to U
226226 */
227227 template <class T , class U , class = void >
228228 struct has_converter : std::false_type {};
0 commit comments