问题: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)