Visual Studio 2010有一些默认启用的扩展/与C++标准存在差异。
这些差异可能会让人感到惊讶,并产生不同于其他行为的行为。VS以在模板代码验证方面极其宽松而著名,而被VS接受和编译的模板代码通常会被更加符合标准的编译器(CLang、Comeau、icc、gcc等)直接拒绝。
本问题的目的是为这些差异提供一个参考(因此使用FAQ标签)。
请每个差异提供一个答案(检查是否重复),并针对每个差异:
- 解释差异 - 告诉我们是否可以禁用它(如果可以,如何禁用) - 解释后果(除了简单的拒绝之外)
注意:C++0x是下一个标准,因此避免列出C++0x扩展,因为它们很快就会成为标准。
来自@Matteo Italia:Visual Studio Compliance Page
这些差异可能会让人感到惊讶,并产生不同于其他行为的行为。VS以在模板代码验证方面极其宽松而著名,而被VS接受和编译的模板代码通常会被更加符合标准的编译器(CLang、Comeau、icc、gcc等)直接拒绝。
本问题的目的是为这些差异提供一个参考(因此使用FAQ标签)。
请每个差异提供一个答案(检查是否重复),并针对每个差异:
- 解释差异 - 告诉我们是否可以禁用它(如果可以,如何禁用) - 解释后果(除了简单的拒绝之外)
注意:C++0x是下一个标准,因此避免列出C++0x扩展,因为它们很快就会成为标准。
来自@Matteo Italia:Visual Studio Compliance Page