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.