Скажем, мне нужно иметь дело ushort
и uint
в некотором роде, но string
по-разному. Так что предположим, мне нужен один специализированный шаблон для string
, а другой - для ushort
и uint
. Это?Несколько типов в одном специализированном шаблоне D
// for most
void func(T)(T var) { ... }
// for uint and ushort
void func(T: uint, ushort)(T var) { ... }
Это идея, хотя код не может скомпилироваться. Это действительно или очень плохо?
Обратите внимание, что в первом примере он использует Template Constraints, а второй - это условное время компиляции, 'static if.' Первый должен использоваться, если существуют типы, которые шаблон не обрабатывает, второй может использоваться с первым или когда все обрабатывается. –