Это текст из комментария MSDN: «Согласно книге ATL Internals (2ed) использование атрибутов не рекомендуется и не должно использоваться в новых проектах ATL».
Но почему?!!





В ATL эти атрибуты были уловкой компилятора. Они не были основной частью платформы, как атрибуты в C#. Они также были более запутанными при отладке, чем макросы, и метод сброса сгенерированного кода атрибутов был проблемой.
Я подозреваю, что другая проблема, вероятно, связана с совместимостью компилятора C++ и соблюдением стандартов. Атрибуты не сделали код C++ красивее, и, возможно, этот синтаксис может быть использован в будущей версии настоящего стандарта C++.
Об этом говорится в Приложении D книги.
Атрибут ATL требует расширения компилятора, и возникшие проблемы включают: