要是让我自己开脑洞的话函数重载可以算一个。之前C23也不是没有相关的提案,但这些提案要么企图在C里面引入C++的name mangling,要么就是增加新的类似于typedef的关键词,我不理解的是为什么WG14不肯借鉴一下枚举的做法,就像这样:

冒号后面是函数实际上的名字,但调用的时候可以用冒号前面的名字来实现重载的效果,为了描述的需要以下给这种形式命名为
-
别名:函数名
-
现在补充几条规则:
1. 一个函数可以没有别名,此时函数名就是别名,并且声明时不能有冒号;
(这一条是为了兼容已有的函数声明)
2. 一个使用别名的函数必须有一个别名和函数名相同的重载;
(也是为了兼容性,见下一条)
3. 有2的保证,对重载函数取指针(&运算符)取的是对函数名和别名相同的那个重载的指针。
-
这种引入函数重载的方法有两个好处:
1. 不需要name mangling;
(以现在的情况,在C里面引入name mangling简直是天方夜谭)
2. 不需要新关键词,而且很简洁。
-
不过我说什么当然是不算的,WG14并不是没有加入函数重载的意愿,只是如果现在没有慎重考虑就冒冒失失地做出决定,到时候再想改就难受了,这大概是这一类提案一直得不到很多支持的原因吧

冒号后面是函数实际上的名字,但调用的时候可以用冒号前面的名字来实现重载的效果,为了描述的需要以下给这种形式命名为
-
别名:函数名
-
现在补充几条规则:
1. 一个函数可以没有别名,此时函数名就是别名,并且声明时不能有冒号;
(这一条是为了兼容已有的函数声明)
2. 一个使用别名的函数必须有一个别名和函数名相同的重载;
(也是为了兼容性,见下一条)
3. 有2的保证,对重载函数取指针(&运算符)取的是对函数名和别名相同的那个重载的指针。
-
这种引入函数重载的方法有两个好处:
1. 不需要name mangling;
(以现在的情况,在C里面引入name mangling简直是天方夜谭)
2. 不需要新关键词,而且很简洁。
-
不过我说什么当然是不算的,WG14并不是没有加入函数重载的意愿,只是如果现在没有慎重考虑就冒冒失失地做出决定,到时候再想改就难受了,这大概是这一类提案一直得不到很多支持的原因吧
XeO2