Re: x3::variant vs boost::variant
Baptiste Wicht <[email protected]>
| Newsgroups | gmane.comp.parsers.spirit.general |
|---|---|
| Message-ID | <[email protected]> |
On Sun, Feb 21, 2016 at 09:55:02AM +0800, Joel de Guzman wrote:
> On 2/20/16 5:14 PM, Baptiste Wicht wrote:
> > On Sat, Feb 20, 2016 at 05:42:14AM +0800, Joel de Guzman wrote:
> >> On 2/18/16 4:48 AM, Baptiste Wicht wrote:
> >>
> >>> The main problem that remains is with x3::variant and x3::forward_ast:
> >>>
> >>> I have a type like this:
> >>>
> >>> using Type = boost::spirit::x3::variant<
> >>> SimpleType,
> >>> boost::spirit::x3::forward_ast<ArrayType>,
> >>> boost::spirit::x3::forward_ast<TemplateType>,
> >>> boost::spirit::x3::forward_ast<PointerType>
> >>> >;
> >>>
> >>> And a lot of code resembling this:
> >>>
> >>> if(auto* ptr = boost::get<ast::SimpleType>(&type)){
> >>> //Do something on *ptr
> >>> } else if(auto* ptr = boost::get<ast::ArrayType>(&type)){
> >>> //Do something on *ptr
> >>> } else if(auto* ptr = boost::get<ast::PointerType>(&type)){
> >>> //...
> >>> }
> >>> //...
> >>>
> >>> But this does not work since ArrayType is not a member of the variant
> >>> because of the forward_ast and I have an error from boost strict_get.
> >>>
> >>> I really have a lot of code like this, I won't be able (neither have the
> >>> motivation for it) to change all of it. If there is no simple solution,
> >>> I'll use my old AST with boost::variant and recursive_wrapper.
> >>>
> >>> Is there anything I can do to use boost::get with forward_ast ?
> >>
> >> There should be a solution. tell you what. Give me a minimal test
> >> case and I can work on getting it compile and run as expected.
> >
> > Here it is: http://coliru.stacked-crooked.com/a/641b689346ff322c
>
> There is a solution, but it involves some meta code that can slow down CT.
> I'm not sure if it's worth it. The only reasonable solution is to simply
> get<forward_ast<T>>(v).
Too bad, tt makes for really inelegant code :(
I'll test the slowdown of my syntax with boost::variant instead of
x3::variant to see if it's still worth it.
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Spirit-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spirit-general
signature.asc
(application/pgp-signature, 801 B)
-----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJWyYx9AAoJEMVWa2x/iEUy9DsP/jxVaSXqwzTGeNxq/jq7HP/b di6lVUyPJiy5B6X/vD49yZUrWijqK/x657GC8vHpoaEf0tG2WhRcd0ZfJClIHbxx +6H4pl8NwuqGg2h8CqL2GNCEjJXap+9p+5MWnCfVlLjnJ7boKKBUI57JF7MUQ5kP GTVgKKN8psD7p+4a1BXwbQJcMfRoF4s0hcZ41ZhIwha5p5AjyZceHTbknhRzI5np FjUYI4bOaxboMlTskRRNskDgHiUXzAaTRtMvnEUrpdkPz7V1JvMPPpEOQNbqXa4n ApAv6DoSY/T4lQ+Bai/t6v9uEEBJLnUaBis5mgaSYcxFVmNwe17FpqHJgedSe9+c W2R0MwB9tz2SNZBKtN3CpfMahHxnBPYt1XhG0ocxU+hO4ozQ6+lB0CjJGbZdm4oH A+gRLHWgT5zs3IA876yNWAZY5oSs7Ss/VmI8RyeOZNl0Otb7GgyPe39Hflv9Ivjx F9xcWpiyxAIKklZ7Ps2R/qgH6YF5J/ZsUYtOtyo9NaxCrT7NOvxJOBXwo+70WAia nD1r36y89PK2+cIBA59KW2J8+JTleK2RHi5uG13nBjJ4N0U8n8VaGSJv6v09UJIX sD7S6DYKle9GZPzPiTG082W5c0MZ9GTyVe3fb5pab2M0AhDSQ+YbAjm4rwhsHfwd 9SF9iah3VpznSO0XvMPV =Dyqw -----END PGP SIGNATURE-----