Backwards Breaking Changes from version 1.1 to 2.0 (and native C++ 14 compiler)
I had to go through the C++ part for an ISV so I thought I would share the URL: https://www.gotdotnet.com/team/changeinfo/Backwards1.1to2.0/default.aspx.
As of today (10/5/04), the list for C++ is:
Languages: C++
- Pointer-to-members now require qualified name and the & operator
- __asm int 3 now generates native code
- A using declaration of nested type is now illegal
- Compiler disallows forward declaration of a managed enum
- Cannot scope native enums.
- Switch removal: /YX
- Switch removal: Optimizations /Oa, /Op and /Ow
- Switch removal: /ML and /MLd
- Switch removal: /G3 - /G7, /GB, /Gf, /GD, /GM
- Switch change: /GS turned on by default.
- Synchronous Exception handling (/Ehs) guarantees that S.E.H exceptions will not be caught
- In mixed mode, native constructors are called before managed constructors
- Added debug iterators
- Many new asserts added to debug CRT
- ATL, MFC, SCL, and CRT libraries are side-by-side shared assemblies with manifests.
- Many existing functions now validate their parameters and will call the invalid_parameter_handler when an invalid parameter is passed
- Explicit specialization not allowed as a copy constructor/copy assignment operator
- The single-threaded CRT libraries, libc.lib, licd.lib, msvcrt.lib, and msvcrtd.lib, have been removed. /ML and /MLd switches are no longer supported
- Existing less secure versions of many functions have been deprecated.
- The swprintf functions has been changed to be conformant.
- Compiler no longer allows const_cast to down cast in the old syntax.
- Switch conflict: /clr and /MT
- CArchive global operators now member operators
- The overload of pow, double pow(int, int), was removed to better conform with the standard
- RTC now supports unicode file names, variable names, etc.
- The file descriptor value -2 is now used to indicate that stdout and stderr are not available for output, as for example in a Windows application that has no console window. The previous value used was -1.
- CUrl::CrackUrl input flag ATL_URL_DECODE now functions exactly like ATL_URL_ESCAPE
- Floating-point control word support functions have been deprecated for applications compiled with /CLR or /CLR:PURE
- The _spawn family of functions does not reset errno to zero on success, as it did in previous versions.
- Object copied by the CLR without calling copy constructor
- _set_security_error_handler has been deprecated and will be removed in the near future.