Здравствуйте, rg45, Вы писали:
R>Ни о каких обработках на стадии компиляции речи нигде не идет.
Фишка в том, что #-конструкции являются директивами препроцессирования. И описанная конструкция работает исключительно в силу того, что в компилятор встроен костыль, обрабатывающий конкретно эту директиву на этапе раскрытия шаблона, а не на этапе препроцессирования. Я хотел это добавить, но забыл. И это, кстати, лишает программиста возможности вывести оттуда сообщение именно на этапе препроцессирования.
А __pragma добавлена не просто "для использования в макросах", а как раз для того, чтобы обрабатываться там, где макрос раскрывается, а не где он определяется.