This code completely breaks the compiler:
Ruby The Roobster
rubytheroobster at yandex.com
Fri Aug 19 04:25:25 UTC 2022
On Friday, 19 August 2022 at 04:16:28 UTC, JG wrote:
> On Friday, 19 August 2022 at 03:13:03 UTC, Ruby The Roobster
> wrote:
>> On Friday, 19 August 2022 at 03:10:38 UTC, Ruby The Roobster
>> wrote:
>>> This snippet compiles. Even if `dsds` and `sadsad` are
>>> defined nowhere, this code compiles.
>>>
>>> [SNIP]
>>>
>>> The reason why this compiles is because of the varidic
>>> template parameter, `Mtypes`.
>>>
>>> Either there is something I'm missing, or the compiler
>>> completely breaks when it sees varidic template arguments.
>>
>> The only way to get the code to not compile is to actually
>> call the function.
>
> I think it might help to post the entire code you think should
> not compile (which does). I guess you are aware that templated
> code is only "fully checked" when it is instantiated. E.g. this
> will compile.
> ```d
> import std;
>
> auto nonsense(T)(T t) {
> return 5+"six";
> }
>
> void main() {
> }
> ```
So that's why it compiled. Still, I believe that stuff like this
ought to be detected at compile time, as supposed to in a
unittest or, if someone forgot to write the tests, in production.
More information about the Digitalmars-d-learn
mailing list