Scott Meyers (and the standard) clearly instruct not to treat arrays polymorphically in C++. Because compiler has no means of finding out whether heap objects pointed by base class pointers are base class objects or derived class objects. Program will bomb when deleting array of base class pointers pointing to derived class objects.
I understand his advise, makes perfect sense, no issues there. But MSVC doesn't comply to Scott's advise: deleting an array of base class pointers pointing to derived class objects works perfectly fine in MSVC. But bombs in other popular compilers. I'm not bothered about porting in my project, its all MFC code anyway, so porting is a non-issue. Any reasons why I should follow Scott's advise "for my\any projcet in MFC\MSVC"? I googled on this topic and found few threads. They talk about same thing: works on MSVC, bombs on other compilers. But could not find a thread on why I shouldn't treat array polymorphically in MSVC. The only reason I could think of is to fall into the trap of thinking MSVC behavior is also available on other compilers, I'll face issues when using some other compiler. But as long as I keep that in some corner of my mind, I see no reason why arrays should not be treated polymorphically when using MSVC. Please let me know your thoughts. Cheers - Ananth
