Адаптация пустой структуры для Boost Fusion

У меня пустая структура:

struct MyStruct {};

Я хочу адаптировать это для использования в Boost Fusion. Обычно я бы использовал BOOST_FUSION_ADAPT_STRUCT, но для этого макроса требуются два параметра, чтобы назвать структуру и перечислить ее поля. Есть ли способ сообщить макросу, что поля не существуют?

Мотивация: я использую Boost Spirit для определения парсера. Структура предназначена для boost::variant, который затем передается в boost::apply_visitor(). Некоторые другие элементы в варианте были обработаны boost::fusion::for_each().


person chrisaycock    schedule 16.09.2013    source источник


Ответы (2)


Я попытался передать /**/ в качестве второго параметра, и он скомпилировался для меня (g ++ - 4.6.2).

    BOOST_FUSION_ADAPT_STRUCT(MyStruct, /**/);
person SirGuy    schedule 16.09.2013
comment
Однако Visual C ++ v140 отказывается его есть. - person Lofty Lion; 18.04.2016
comment
@LoftyLion К сожалению, у меня нет MSVC, чтобы проверить это, возможно, вам повезет, если вы зададите новый вопрос. - person SirGuy; 18.04.2016

Попробуйте передать BOOST_PP_EMPTY. Нет гарантий, что это сработает, но с учетом реализации это кажется вероятным.

person Sebastian Redl    schedule 16.09.2013
comment
Я получаю сообщение об ошибке 'BOOST_PP_IIF_0' does not name a type. Тем не менее, спасибо за предложение. - person chrisaycock; 16.09.2013