Neither GCC nor Clang are compliant with standard C++
19 hours ago
- 在C++中,函数类型具有相关的'语言链接',例如C++、C或其他实现定义的选项。
- 标准规定,具有不同语言链接的函数类型是不同的类型,即使它们在其它方面完全相同。
- GCC和Clang不将语言链接信息与类型一起存储,从而允许对C和C++函数类型进行相同处理。
- 这导致诸如静态断言错误地失败以及函数重载场景中出现编译错误等问题。
- 该问题归因于标准而非编译器,并且更改行为会导致ABI破坏,实际需求很小,因为在大多数平台上调用约定通常相同。