R: R: R: Error only on G++ Debian

Claudio La Rosa <[email protected]> Mon, 22 Jan 2018 18:20:34 +0100
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <[email protected]>
>All the source is better than no source at all. You just tell us you're
>using `parse` or `phrase_parse`. Well, obviously you do since you're
>using Boost Spirit Qi.

>If it's a lot of code all you risk is that no one is going to have time
>to look at it. Right now, all you risk is wasting any time we **could
>have** spent looking at (too much) code.


>Seth

I reduced my program to a minimum. I report it here:


#include <iostream>
#include <fstream>
#include <string>

#include <boost/bind.hpp>

#include <boost/lexical_cast.hpp>

#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/spirit/include/phoenix_core.hpp>


#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/qi_raw.hpp>
#include <boost/spirit/include/qi_int.hpp>
#include <boost/spirit/repository/include/qi_seek.hpp>
#include <boost/spirit/include/qi_list.hpp>
#include <boost/spirit/include/qi_eol.hpp>
#include <boost/spirit/include/qi_eoi.hpp>

#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/spirit/include/phoenix_core.hpp>

#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/any.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/trim.hpp>
#include <boost/spirit/include/qi_int.hpp>
#include <boost/spirit/repository/include/qi_seek.hpp>
#include <boost/spirit/include/qi_list.hpp>
#include <boost/spirit/include/qi_eol.hpp>
#include <boost/spirit/include/qi_eoi.hpp>

#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/spirit/include/phoenix_core.hpp>

#include <boost/phoenix/bind/bind_member_function.hpp>



using namespace std;

namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;

using qi::double_;
using qi::phrase_parse;
using qi::_1;
using ascii::space;
using phoenix::push_back;


template <typename Iterator>
struct asmGrammar : qi::grammar<Iterator, std::string()>
{
public:

        //CTor
        asmGrammar() : asmGrammar::base_type(start)
        {
                using qi::eps;
                using qi::lit;
                using qi::_val;
                using qi::_1;
                using ascii::char_;
                using boost::spirit::ascii::no_case;
                using phoenix::push_back;
                using phoenix::ref;
                using boost::spirit::qi::int_;
                using boost::spirit::qi::eol;
                using boost::spirit::qi::eoi;

                start =  *qi::char_(' ');
        }


        void parseFirstStep(string line)
        {
                phrase_parse(line.begin(), line.end(), start, ascii::space);
        }

private:
        qi::rule<Iterator, std::string()> start;
};



int main(int argc, char *argv[])
{
    asmGrammar<std::string::const_iterator> assemblyParser;

    assemblyParser.parseFirstStep("ciao!");
        
    std::cin.get();
    return 0;
}


This code do not compile on Debian Linux with G++ 6.3.0
(Linux version 4.4.91-ti-r133 (root@b7-am57xx-beagle-x15-2gb) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ))

The same code compile without problem in VisualStudio 2017.

Ciao
Claudio

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

_______________________________________________
Spirit-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spirit-general