Bugs Fixed in Visual Studio 2013 Update 2

Visual Studio 2013 Update 2 includes a number of fixes filed through Connect:

  • Free functions can be called using curly braces instead of parentheses. (link)
  • When attempting to expand a recursive template, the compiler uses large amounts of memory and then crashes.
  • Internal compiler error. (link)
  • C99: Use of _Complex with an incorrect storage class can cause internal compiler errors. (link)
  • C99: Functions returning bool can return something other than true or false. (link)
  • C99: A cast operator has wrong precedence when dereferencing a compound literal. (link)
  • Uniform initialization combined with ternary operators can cause internal compiler errors.
  • When initializer lists are used, the destructors of temporary objects can be called twice. (link)
  • The “this” pointer can have a wrong value in a virtual function call with a qualified name. (link, link)
  • The compiler rejects correct covariant returns. (link)
  • Variadic templates can cause internal compiler errors. (link)
  • Initializer lists combined with unique pointers can cause heap corruption. (link)
  • Variadic templates combined with “using” type definitions can cause internal compiler errors. (link)
  • Variadic templates can cause internal compiler errors. (link)
  • Types expanded by variadic templates can’t be used in template<> brackets. (link)
  • Internal compiler error.
  • Variadic templates combined with decltype can cause internal compiler errors.
  • Variadic templates can cause internal compiler errors. (link)
  • The compiler rejects correct code involving variadic templates. (link)
  • f(const T&) is not considered more specialized than f(const Args&…)
  • Template specialization on variadic function arguments can cause internal compiler errors. (link)
  • Variadic templates can cause internal compiler errors.
  • The sizeof… operator for variadic templates can cause internal compiler errors. (link)
  • The compiler incorrectly rejects some orderings of partial specializations.
  • System::Runtime::Serialization::XsdDataContractExporter::CanExport() behaves incorrectly. (link)
  • The compiler can emit an incorrect error about type conversion in a function application.
  • Complex templates combined with std::remove_reference can cause internal compiler errors. (link)
  • The stringizing operator behaves inconsistently when question marks are used in the operand. (link)
  • Long filenames cause the compiler to emit the “file name too long” error, even though previous versions of the compiler would not have done so. (link)
  • Using std::map with braces in a return statement can cause internal compiler errors. (link)
  • Variadic templates can cause internal compiler errors. (link, link)
  • The compiler rejects correct boost:fusion code. (link)
  • GUID generation behaves incorrectly for TypedEventHandler.
  • The compiler incorrectly rejects the use of initializer lists as default function arguments. (link, link)
  • Internal compiler error.

Thanks to everyone who provided feedback!