[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C++, exception, and memory handling
From: |
Akim Demaille |
Subject: |
Re: C++, exception, and memory handling |
Date: |
Sat, 16 Mar 2019 13:21:02 +0100 |
Hi Valentin!
> Le 16 mars 2019 à 10:46, Valentin Tolmer <address@hidden> a écrit :
>
> Hi Akim,
>
> Thanks for the answer! I expected something like this, but I wanted to make
> sure.
>
> What's the policy towards standard features? Things like C++11 and so on:
We target C++98, but support C++11 features (such as move semantics)
conditionally. You should easily find examples of this looking for
YY_CPLUSPLUS. (That's also why I prefer using std containers: they
handle the different versions of C++ by themselves.)
The test suite (and the CI) checks different -std=c++XX values to make
sure we behave properly in each case.
See tests/types.at for examples of how to write tests that _require_
C++11 or more (or just grep for things such as std::unique_ptr).
> do we assume 98 if nothing is specified, and guard modern alternatives with
> the m4 flags?
Nope, CPP guards.
> Or can we at least use 11, with things like "nullptr" and so
> on? I'll have to check what's not included in 98, I haven't written in so
> old a standard in a looooong time :)
nullptr/NULL/0 is taken care of with YY_NULLPTR. See skeletons/c.m4,
b4_null_define.
And again, the CI will help you catch (most) C++ portability issues :)
I suggest that you make a PR against my repo on GitHub, then look for
your PR here:
https://travis-ci.org/akimd/bison/pull_requests
(Don't worry about push -f on this PR: I will perfectly understand that
the PR is WIP.)
Cheers!