digitalmars.D.learn - Unused template arguments; what type to use?
- drathier (6/6) Jun 26 2020 How can I tell the compiler that I will never create a value of
- Simen =?UTF-8?B?S2rDpnLDpXM=?= (7/13) Jun 26 2020 Depends on what you care about, I guess. A final abstract class
- H. S. Teoh (7/19) Jun 26 2020 [...]
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?
Jun 26 2020
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. -- Simen
Jun 26 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:[...] 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 AbrashHow 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.
Jun 26 2020