为什么调用的函数参数数量错了也能通过编译

P3369 【模板】普通平衡树

@[return_TLE](/user/912241) 编译器似乎并没有编译这部分。可能与某种编译优化有关。 调用就不能过编了。 ```cpp template <class type> struct treap { int root; void print() { print(root); print(root,0); } }; int main() { return 0; } ``` 上面代码可以过编,如果去掉 `template <class type>` 就会报错,似乎跟模板类的编译有关。
by Terrible @ 2023-12-16 18:14:52


你甚至可以在洛谷 IDE 成功运行以下代码: ```cpp template<class T> struct S { void f() { delete[]f(****f,&f->原神,启动!,f[f]/f)++/=f%666; } }; int main() { return 0; } ``` 可见一些量的类型,成员之类的编译器都懒得查了。
by Terrible @ 2023-12-16 18:27:56


@[Terrible](/user/195942) 哦...好像以前看到过文章说编译器对于这样的模板类没办法完全检查类型,所以就直接全都不检查了 虽然我看不懂,但还是谢谢你
by return_TLE @ 2023-12-16 18:40:26


|