Unused template arguments; what type to use?

H. S. Teoh hsteoh at quickfur.ath.cx
Fri Jun 26 16:05:06 UTC 2020


On Fri, Jun 26, 2020 at 01:40:57PM +0000, Simen Kjærås via Digitalmars-d-learn wrote:
> On Friday, 26 June 2020 at 13:21:25 UTC, drathier wrote:
> > How can I tell the compiler that I will never create a value of type
> > X, while still being able to write code that uses it? Using void as
> > a template parameter is where I started, but I still need to be able
> > to declare variables inside this unreachable function, like `T foo;`
> > even when `T == void`. Can I get any closer to what I want than an
> > empty struct?
> 
> Depends on what you care about, I guess. A final abstract class has
> been my go-to on a few occasions. I'd argue the empty struct is better
> in most cases, and a forward-declared struct with no implementation
> might work in some cases.
[...]

You can also use void[0], which has size 0, unlike an empty struct which
has size 1.


T

-- 
The best compiler is between your ears. -- Michael Abrash


More information about the Digitalmars-d-learn mailing list