Допустимы ли пустые макро-аргументы в C ++ 11?

Я иногда намеренно опускаю аргументы макроса. Например, для подобного функции макроса

#define MY_MACRO(A, B, C)  ...

Я мог бы назвать это как:

MY_MACRO(, bar, baz)

Технически есть еще 3 аргумента; просто первый «пустой». Этот вопрос не о вариационных макросах.

Когда я делаю это, я получаю предупреждения от g ++ при компиляции с-ansi (ака-std=c++98), но не когда я использую-std=c++0x, Означает ли это, что пустые аргументы макросов допустимы в новом стандарте C ++?

Вот и весь мой вопрос, но предвосхищение "почему ты хочешь?" ответ, вот пример. Мне нравится хранить файлы .h незагроможденными телами функций, но реализация простых средств доступа вне файла .h утомительна. Поэтому я написал следующий макрос:

#define IMPLEMENT_ACCESSORS(TEMPLATE_DECL, RETURN_TYPE, CLASS, FUNCTION, MEMBER) \
  TEMPLATE_DECL                                                         \
  inline RETURN_TYPE* CLASS::Mutable##FUNCTION() {                      \
    return &MEMBER;                                                     \
  }                                                                     \
                                                                        \
  TEMPLATE_DECL                                                         \
  inline const RETURN_TYPE& CLASS::FUNCTION() const {                   \
    return MEMBER;                                                      \
  }

Вот как я бы использовал его для шаблона класса, который содержитint называетсяint_:

IMPLEMENT_ACCESSORS(template<typename T>, int, MyTemplate<T>, Int, int_)

Для не шаблонного класса мне не нужноtemplate<typename T>поэтому я опускаю этот аргумент макроса:

IMPLEMENT_ACCESORS(, int, MyClass, Int, int_)

Ответы на вопрос(0)

Ваш ответ на вопрос