2017-06-04 17 views
3

上の任意の例をコンパイルすることはできませんが、これは精神:: X3のバグである任意のUbuntuの16.04でexample スピリットX3:Ubuntuの16.04

$ g++ -std=c++14 main.cpp 
In file included from /usr/include/boost/spirit/home/x3/nonterminal.hpp:14:0, 
       from /usr/include/boost/spirit/home/x3.hpp:20, 
       from main.cpp:23: 
main.cpp:226:9: error: ‘client::calculator_grammar::parse_rule’ declared as an ‘inline’ variable 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: expected ‘)’ before ‘rule_’ 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: expected primary-expression before ‘&’ token 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: ‘first’ was not declared in this scope 
     BOOST_SPIRIT_DEFINE(
     ^

をコンパイルすることができませんか?

答えて

2

2つの変更:

  1. 欠落を追加

    #include <boost/foreach.hpp> 
    
  2. が含まれる "新しいスタイル" マクロの使用を選択:私はdidnの、正直に言うと

    BOOST_SPIRIT_DEFINE(expression , term , factor); 
    

p = p_defスタイルinitiaを知っていないライゼーションが可能であった。私はそれがX3がリリースされる前に必要な構文だと思う。

+0

はい、[これ](https://github.com/boostorg/spirit/blob/boost-1.64.0/example/x3/calc/calc5.cpp)は一例であり、OPは、([差分](望んhttps://www.diffchecker.com/LZQmA4NQ))。 – llonesmiz

+0

@llonesmizあ、明らかに。私は決してリンクをチェックしていない:) – sehe