2013-09-16 50 views
3

一個空的結構我有一個空的結構:爲適應融合加速

struct MyStruct {}; 

我要適應這種通過加速融合使用。通常我會使用BOOST_FUSION_ADAPT_STRUCT,但是這個宏需要兩個參數來命名結構並列出它的字段。無論如何要告訴宏觀領域是不存在的?

動機:我使用Boost Spirit來定義解析器。該結構適用於boost::variant,然後傳遞給boost::apply_visitor()。給定boost::fusion::for_each()處理的變體中的一些其他項目。

回答

3

我嘗試通過/**/作爲第二個參數,它爲我編譯(g ++ - 4.6.2)。

BOOST_FUSION_ADAPT_STRUCT(MyStruct, /**/); 
+0

雖然Visual C++ v140拒絕吃它。 –

+0

@LoftyLion不幸的是我沒有MSVC來測試這個,你可能有更好的運氣問一個新的問題。 – SirGuy

+0

我去了一個使用虛擬成員的'解決方法':) –

0

嘗試通過BOOST_PP_EMPTY。沒有保證它會起作用,但考慮到它的實施似乎是可能的。

+0

我收到一個錯誤''BOOST_PP_IIF_0'沒有命名一個類型'。無論如何感謝您的建議。 – chrisaycock