具体到 C++,奇技淫巧和是否符合标准之间没有必然关系,倒不如说不符合标准的奇技淫巧都不好意思说自己是奇技淫巧(逃
具体到主贴这个例子,任何 STL 容器的 iterator 是否会被 invalidate 以及在何时会被 invalidate 作为 STL 接口的一部分都是被写在标准文档里的.所以这和各个实现的差异没有关系,毕竟敢于公开声明自己无视 ISO C++标准的实现到目前为止一个都没有——换句话说,C++各个实现中几乎没有形成符合大众认知的所谓"方言"的东西,根据各个实现公开的文档所描述的东西之间的差异大部分不超过对于 C++(不同版本)标准的实现的差异.而 C++标准及其各个版本的差异在 cppreference 里都可以按照词条查到——比如主贴所说的 iterator 问题.当然,早已向公众公开的 ISO C++标准草案(及其历史版本们)毫无疑问则是更权威的一个资料来源.
当然不怕一万就怕万一.真的要折腾不同实现的差异的情况也不是没有.比如某些实现对于标准的支持程度就是呵呵,再比如需要折腾 impl-defined 或者一些编译器扩展.我接触过的编译器不多,碰到这种情况我通常会查阅各个编译器自己的文档.比如 msvc 就上
https://docs.microsoft.com/en-us/cpp/cpp/c-cpp-language-and-standard-libraries , GCC 就上
https://gcc.gnu.org/onlinedocs/ , Clang 就上
https://clang.llvm.org/docs/ ,无论是查标准支持差异,还是实现定义行为,或是对标准的扩展,都是可以轻松查到的.