On Tuesday, 12 May 2020 at 20:36:22 UTC, Luis wrote:
I'm trying to make a SparseSet that on function of a optional type parameter, could alongside the index set, store other data. So I need a way to declare a optional type template parameter.

A default argument of void is a common way to do it

template foo(T = void) {
   static if(is(T == void)) { not given } else { use T }
}

// trying to use ZeroOrMore() gives error : struct onlineapp.ZeroOrMore cannot deduce function from argument types !()(), candidates are: onlineapp.d(12): ZeroOrMore(T = uint, Types...)

Yeah, a template with default parameters must still be instantiated, but you do not need to give the arguments. The ! is a must though (or you could provide some alias but then it has a separate name)

Reply via email to