通过反复试验引起了我的注意,有些 C++11 特性依赖于某种编译器魔法 (TM)。我一直在搞乱实现我自己的标准符合标准的stdlib。我知道有现成的标准库实现,但这个更多是我自己的小型应用程序的个人版本。
昨晚我std::initializer_list
根据规范实现了,但我无法让它工作,我搜索了高和低的答案,只留下了不可能的声明,并且需要对编译器本身进行修改。好吧,我决定看看libstdc++
它的当前实现,果然我的实现在设计上完全一样,只是边缘略有不同,我浪费了无意义的时间来弄清楚为什么实现不工作,当它完全正确时在设计上与中的相同libstdc++
。直到六个小时后,我才意识到它必须在命名空间 std 中。原来实现是 merley 的编译器的代理,这使得这成为initializer_list
可能,编译器本身initializer_list
在namespace std
.
我的问题是我应该知道是否还有其他库功能需要某种特殊的编译器魔法才能工作,是否需要更多隐藏的代理连接,或者为任何新的 C++11 库功能隐藏编译器本质?我想提前知道这些,这样我就可以为实现其他依赖于编译器魔法的功能做好准备,而不是浪费一整天的时间通过反复试验来解决它;这可能会变得乏味且相当烦人。
谢谢。