Boost logo

Boost Users :

Subject: Re: [Boost-users] commandline args
From: Diederick C. Niehorster (dcnieho_at_[hidden])
Date: 2009-08-24 01:58:07


Yup, now it works.

For reference, I got rid of the duplicated bk::eol also by using the
folloing code:

bk::generate(ostream_iterator<char>(cout),
        "Command line options not recognized:\n" <<
        (" \"" << ba::string << '"' << bk::eol) % "",
        vsTest);

Not putting an empty char array after the modulus operator would be
invalid C++ and is thus required.

Thanks again,
Best,
Diederick

On Mon, Aug 24, 2009 at 1:45 PM, Diederick C.
Niehorster<dcnieho_at_[hidden]> wrote:
> Dear OvermindDL1,
>
> That solves the issue then, I'm using Boost 1.39 ;)
>
> Let me try trunk, all should work fine then. I have seen the other
> thread in which the location of sprit v2.1's doc were disclosed,
> however i didn't connect those threads for some reason.
>
> Thanks again!
>
> Best,
> Diederick
>
> On Mon, Aug 24, 2009 at 1:36 PM, OvermindDL1<overminddl1_at_[hidden]> wrote:
>> On Sun, Aug 23, 2009 at 11:20 PM, Diederick C.
>> Niehorster<dcnieho_at_[hidden]> wrote:
>>> That also gave me compilation errors:
>>>
>>> ..\Dependency\boost\boost/spirit/home/karma/generate.hpp(72) : error
>>> C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1
>>> from 'boost::mpl::failed ************(__thiscall
>>> boost::spirit::karma::generate::error_invalid_expression::*
>>> ***********)(Expr)' to 'boost::mpl::assert<false>::type'
>>>
>>> ..\Dependency\boost\boost/spirit/home/karma/generate.hpp(76) : error
>>> C2039: 'generate' : is not a member of
>>> 'boost::proto::exprns_::expr<Tag,Args,Arity>'
>>>
>>> Below, please find a minimal example.
>>> Thank you for your continued help!
>>>
>>> Best,
>>> Dee
>>>
>>> ---
>>> #include <vector>
>>> #include <string>
>>> #include <iostream>
>>> using namespace std;
>>> #include <boost/spirit/include/karma.hpp>
>>> namespace bk  = boost::spirit::karma;
>>> namespace ba  = boost::spirit::ascii;
>>>
>>>
>>> int main()
>>> {
>>>    vector<string> vsTest;
>>>    vsTest.push_back("test");
>>>    vsTest.push_back("t2");
>>>    vsTest.push_back("t3");
>>>
>>>
>>>    bk::generate(ostream_iterator<char>(cout),
>>>        "Command line options not recognized:\n" <<
>>>        ("  \"" << ba::string % ("\"" << bk::eol)) << "\"" << bk::eol,
>>>        vsTest);
>>>
>>>
>>>    bk::generate(ostream_iterator<char>(cout),
>>>        "Command line options not recognized:\n" <<
>>>        ('\"' << ba::string << '\"') % bk::eol << bk::eol,
>>>        vsTest);
>>>
>>>    return 0;
>>> }
>>> ---
>>>
>>
>> This is what I get when I compile with your test:
>> 1>------ Build started: Project: pure_testing, Configuration: Release
>> Win32 ------
>> 1>Compiling...
>> 1>main.cpp
>> 1>using native typeof
>> 1>Linking...
>> 1>Generating code
>> 1>Finished generating code
>> 1>Embedding manifest...
>> 1>Build Time 0:27
>> 1>Build log was saved at
>> "file://r:\Programming_Projects\pure_testing\Release\BuildLog.htm"
>> 1>pure_testing - 0 error(s), 0 warning(s)
>> ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
>>
>> Looks like it works perfect to me.  You are using Boost Trunk like I
>> stated in my first post in this thread, right?
>>
>> You should still use this grammar though, it is the best:
>>        bk::generate(ostream_iterator<char>(cout),
>>                "Command line options not recognized:\n" <<
>>                ("  \"" << ba::string << '\"') % bk::eol
>>                ,vsTest);
>> And yes, I confirmed it compiles and runs as you want.
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
>


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net