std classes(initializer_list)在编译器内硬编码

时间:2017-11-01 09:58:20

标签: c++ gcc compiler-construction g++

问题:initializer_list不能嵌套在除std之外的命名空间内,因为{1, 2, 3}只评估std::initializer_list

这就是为什么我得出结论std::initializer_list在编译器中以某种方式硬编码。

我也做了以下测试:如果我更改了行" typedef size_t size_type;"到" typedef long long size_type;"从/ usr / include / c ++ / 5 / initializer_list,使用initializer_list的程序不再编译。因此,似乎编译器会检查initializer_list结构的完整性。错误消息似乎不相关。

还有其他类吗?如果是,我在哪里可以阅读有关这类异常的更多信息?

观察:我使用gcc和libcxx的实现进行了上述测试,使用g ++ - 5.4编译器(c ++ 14)

0 个答案:

没有答案