
BUMP On Tue, May 15, 2012 at 12:05 PM, Robert Dailey <rcdailey.lists@gmail.com>wrote:
Has anyone been able to reproduce the issue via the sample I've provided below? Simply paste the code in a new CPP file in Visual Studio .NET 2003 and compile :)
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.
On 5/11/2012 9:56 AM, Robert Dailey wrote: > 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 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