Boost logo

Boost Users :

Subject: Re: [Boost-users] xpressive
From: Louis Lavery (Louis_at_[hidden])
Date: 2011-05-06 14:56:38


On 06/05/2011 04:03, Eric Niebler wrote:
> On 5/5/2011 8:59 PM, Louis Lavery wrote:
[snip]
>
> What version of MSVC is this?
>

Visual C++ 2008 express

> I'm sorry, I can't reproduce this error on trunk. Are you really using
> Boost 1.45.0 like the error message suggests? I'm attempting to download
> it now, but I'm on a slow, unreliable connection. It could be a while.
>
> Can you try this regex:
>
> sregex rex = as_xpr("foo");
>
> That's xpressive's very first test case. I guarantee when 1.45.0 went
> out the door, this regex worked with every version of MSVC above 7.0.
>

I've tried this...

#pragma warning(disable:4996)
#include <boost/xpressive/xpressive.hpp>

int main()
{
     using namespace boost::xpressive;

     sregex rex = as_xpr("foo");

     return 0;
}

...which, with langauge extensions enabled, gives one warning...

c:\boost_1_45_0\boost\proto\expr.hpp(98) : warning C4701: potentially
uninitialized local variable 'that' used

...which refers to this function...

template<typename T, typename Expr, typename Arg0, std::size_t N>
Expr make_terminal(T const(&t)[N], Expr *, proto::term<Arg0[N]> *)
{
     Expr that;
     for(std::size_t i = 0; i < N; ++i)
     {
         that.child0[i] = t[i];
     }
     return that;
}

...at the top of the file contain that function is...

///////////////////////////////////////////////////////////////////////////////
/// \file expr.hpp
/// Contains definition of expr\<\> class template.
//
// Copyright 2008 Eric Niebler. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

#ifndef BOOST_PROTO_EXPR_HPP_EAN_04_01_2005
#define BOOST_PROTO_EXPR_HPP_EAN_04_01_2005

...I don't know if that gives you a clue as to what version I have.
But the boost I have is in directory boost_1_45_0 (I don't remember if I
created that directory or the install script) and the documentation is
for release 1.45.0.

Apart from the C4701 warning (which I can suppress for now) it seems
happy compiling stuff like this...

sregex rex = as_xpr("foo") >> _d >> "xyz";

...so long as I enable language extensions and use the pragma.

I'm happy with this for now as I expect to move on to vc++ 2010 in the
near future. Although I'd like to know if it's necessary to enable
language extensions with later versions of the compiler, do you know?

Thanks for you help, and for xpressive.

Louis.


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