
On Sat, Nov 7, 2009 at 11:18 AM, Mateusz Loskot <mateusz@loskot.net> wrote:
Beman Dawes wrote:
On Sat, Nov 7, 2009 at 7:13 AM, Daniel James <daniel_james@fmail.co.uk> wrote:
On 07/11/2009 10:38, Paul A. Bristow wrote:
Stephan Lavavej from Microsoft told me that that this option triggers known bugs in the compiler. He strongly recommends to stay away from it. Why would he do that for his own company's compiler? Yes, however, does really Stephan recommends it? That would be the first question.
What, you don't believe me when I tell you that STL personally told me that? :) With his permission: "While /Za is supported (both by the compiler and the standard library), we recommend against using it. Although it increases conformance in several areas (e.g. preventing unqualified name lookup from reaching into dependent base classes), it isn't subjected to exhaustive testing like the default setting is. There have been and will probably continue to be examples of /Za exposing compiler bugs that otherwise aren't exposed. For example, during VC10's development, /Za's elided copy constructor check was being triggered during move construction, when no copy constructor is being called (even theoretically). In particular, if you compile with multiple compilers, /Za isn't very useful - other compilers will detect nonconformant code that /Za would have detected." I would add that it my experience /Za doesn't make MSVC fully conformant anyway (I mean, in practice, not only in theory) and given Stephan's recommendation I no longer use it. Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode