
I provided a sample to reproduce this issue. Has anyone had a chance to try it? I'm still blocked and can't build.... On Mon, May 14, 2012 at 4:53 PM, Robert Dailey <rcdailey.lists@gmail.com>wrote:
Here is a small sample that reproduces the issue. Compile this using Visual Studio .NET 2003 and use Boost v1.49
#include <string> #include <boost/xpressive/xpressive.hpp>
int test() { std::string _serverName = "MY-MACHINE";
using namespace boost::xpressive;
{ // This breaks sregex r = bos >> _serverName >> (as_xpr(".pushsvcs")|"a"); }
{ // This does NOT break sregex r = bos >> _serverName >> (as_xpr(".pushsvcs")|'a'); }
{ // This does NOT break sregex r = bos >> _serverName >> (as_xpr((char const*)".pushsvcs")|"a"); } }
On Mon, May 14, 2012 at 12:07 PM, Robert Dailey <rcdailey.lists@gmail.com>wrote:
Sorry I sent my last email too soon. Let me provide a more detailed example.
This fails to compile: bos >> _serverName >> (as_xpr(".pushsvcs")|".access")
But this compiles just fine (if I add an as_xpr() wrapper around ".access"): bos >> _serverName >> (as_xpr(".pushsvcs")|as_xpr(".access"))
This is odd... shouldn't the former work just fine? It doesn't fail to compile on MSVC v9
On Mon, May 14, 2012 at 12:05 PM, Robert Dailey <rcdailey.lists@gmail.com
wrote:
The problem appears to be with as_xpr(). If I don't use it, it compiles fine.
On Mon, May 14, 2012 at 11:38 AM, Robert Dailey < rcdailey.lists@gmail.com> wrote:
_serverName is a std::string.
I wish I could better understand the compiler error, I just don't know for sure if it's a problem with my own code or an incompatibility with boost & MSVC7.1
On Fri, May 11, 2012 at 1:51 PM, Eric Niebler <eric@boostpro.com>wrote:
I just tried the below code on VC++ 2003 (7.1) and was unable to reproduce your error. (I assume _serverName is of type sregex?) I'm afraid I don't know what to tell you. Perhaps if you could give me a complete repro scenario, I might be able to help.
Anyone have an idea on this issue? It's currently blocking me from checking in this code to source control, since the code absolutely must work on MSVC 7.1 :-(
On Thu, May 10, 2012 at 4:45 PM, Robert Dailey < rcdailey.lists@gmail.com>wrote:
> Hi, > > I'm using Boost 1.49 Xpressive on VC7.1. When I compile the following > code, I get compiler errors (these do not appear on VC9): > > sregex const& rex = bos >> _serverName >> !as_xpr("_GWDomino") >> > ".diagnostics" >> *(as_xpr(".base")|".renamed"); > > 'rex' is really a function parameter in my real world use case. I'm > passing the entire static regex into a function that takes a 'sregex > const&'. I get the compiler error below. Anyone know why this is happening? > > > C:\Code\work\cmake-decomp\build-vc7\third_party\boost\1.49.0-stlport-5.2.1\include\boost\proto\traits.hpp(691) > : error C2664: 'boost::proto::exprns_::expr<Tag,Args,Arity>::expr(const > boost::proto::exprns_::expr<Tag,Args,Arity> &)' : cannot convert
On 5/11/2012 9:56 AM, Robert Dailey wrote: parameter
> 1 from > 'boost::proto::detail::as_expr<T,Generator,WantsBasicExpr>::result_type' to > 'const boost::proto::exprns_::expr<Tag,Args,Arity> &' > with > [ > Tag=boost::proto::tagns_::tag::terminal, > > Args=boost::proto::argsns_::term<boost::proto::detail::as_expr<const char > [10],boost::proto::detail::base_generator<boost::proto::default_generator>::type,false>::value_type>, > Arity=0 > ] > and > [ > T=const char [10], > > Generator=boost::proto::detail::base_generator<boost::proto::default_generator>::type, > WantsBasicExpr=false > ] > and > [ > Tag=boost::proto::tagns_::tag::terminal, > > Args=boost::proto::argsns_::term<boost::proto::detail::as_expr<const char > [10],boost::proto::detail::base_generator<boost::proto::default_generator>::type,false>::value_type>, > Arity=0 > ] > Reason: cannot convert from > 'boost::proto::detail::as_expr<T,Generator,WantsBasicExpr>::result_type' to > 'const boost::proto::exprns_::expr<Tag,Args,Arity>' > with > [ > T=const char [10], > > Generator=boost::proto::detail::base_generator<boost::proto::default_generator>::type, > WantsBasicExpr=false > ] > and > [ > Tag=boost::proto::tagns_::tag::terminal, > > Args=boost::proto::argsns_::term<boost::proto::detail::as_expr<const char > [10],boost::proto::detail::base_generator<boost::proto::default_generator>::type,false>::value_type>, > Arity=0 > ] > No constructor could take the source type, or constructor overload > resolution was ambiguous > > \Code\work\cmake-decomp\server\exchange\tools\uploadlog\uploader.cpp(1372) > : see reference to function template instantiation 'const > boost::add_const<T>::type boost::proto::functional::as_expr<>::operator > ()<char,10>(const char (&)[10]) const' being compiled > with > [ > T=boost::proto::detail::as_expr<const char > [10],boost::proto::detail::base_generator<boost::proto::default_generator>::type,false>::result_type > ] >
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Eric Niebler BoostPro Computing http://www.boostpro.com
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost