text: Nonstandard Behavior
  The following sections list some of the places where the Visual C++ implementation of C++ does not comply with the C++ standard. The section numbers given below refer to the section numbers in the C++ 11 standard (ISO/IEC 14882:2011(E)).
  The list of compiler limits that differ from those defined in the C++ standard is given in Compiler Limits.
  Virtual base classes are not supported as covariant return types when the virtual function has a variable number of arguments. This does not comply with section 10.3, paragraph 7 of the C++ ISO specification. The following sample does not compile, giving compiler error C2688
  The Visual C++ compiler does not currently support binding nondependent names when initially parsing a template. This does not comply with section 14.6.3 of the C++ ISO specification. This can cause overloads declared after the template (but before the template is instantiated) to be seen.
  Function exception specifiers other than throw() are parsed but not used. This does not comply with section 15.4 of the ISO C++ specification. For example:
  For more information on exception specifications, see Exception Specifications.
  The C++ standard states that char_traits::eof must not correspond to a valid char_type value. The Visual C++ compiler enforces this constraint for type char, but not for type wchar_t. This does not comply with the requirement in Table 62 in section 12.1.1 of the C++ ISO specification. The example below demonstrates this.
  #include <iostream> int main() { using namespace std; char_traits<char>::int_type int2 = char_traits<char>::eof(); cout << "The eof marker for char_traits<char> is: " << int2 << endl; char_traits<wchar_t>::int_type int3 = char_traits<wchar_t>::eof(); cout << "The eof marker for char_traits<wchar_t> is: " << int3 << endl; }