On October 19, 2019 9:11:52 AM GMT+02:00, The Other <simplytheot...@gmail.com> wrote: >Hi, > >I'm currently working on a branch of gccrs aiming to create some kind >of >Rust frontend within GCC. I've advanced to the stage where attempting >to >use pre-C++11 features is becoming inconvenient, particularly in the >unique_ptr department. Part of the frontend AST is best expressed as >vectors of pointers (due to polymorphism), and the gnu::unique_ptr >clone of >std::unique_ptr states it does not support standard containers like >vector. > >I am aware that GCC currently has the policy of being compilable with a >C++03 compiler, but I was wondering whether frontends other than the C >and >C++ ones are also subject to this restriction. For example, would it be >acceptable if the frontend was written in C++11, given that it can >still be >compiled by g++?
I think it is acceptable to write drontends not required for bootstrapping in any language GCC supports itself. Richard. >I see two other possible solutions if this restriction does in fact >apply: > >If gnu::unique_ptr does in fact work with vector, I could simply use >that. >However, the lack of move semantics would lead to a very clunky kind of >interface for the AST, which I would rather avoid, if possible. > >I could also use regular pointers, but this would make memory >management >more "clunky", so I would also prefer not to do so if possible. Perhaps >just as importantly, the lack of move semantics would have performance >implications - the deep copying of the vectors required to simplify >memory >management would be quite inefficient. > >Thanks, >Theo