How to ensure the template type is scalar in D? -


i have 2 functions: 1 scalar multiplication vector , other - vector-matrix multiplication:

pure t[] mul(s, t)(s s, t[] a) 

and

pure t[] mul(t)(t[] a, t[][] b) 

of course leads conflict, s can vector too, first template covers second. how tell compiler, want scalar type s?

you need use template constraint.

pure t[] mul(s, t)(s s, t[] a) if (isscalartype!s) 

this declares template should considered when isscalartype!s true.

isscalartype can found in std.traits.

in d, scalar types numeric types, character types, , bool. can restrict further using other traits std.traits if (e.g. isnumeric or isfloatingpoint).


Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -