Patches to improve compatibility with modern C++ standard

Richard Kimberly Heck rikiheck at lyx.org
Mon May 4 18:58:27 UTC 2020


On 5/4/20 2:09 PM, Jean-Marc Lasgouttes wrote:
> Le 04/05/2020 à 06:05, Thibaut Cuvelier a écrit :
>> Dear list,
>
> Dear Thibaut,
>
>> During my work on DocBook (which started at
>> www.lyx.org/trac/ticket/8444 <http://www.lyx.org/trac/ticket/8444>),
>> I switched to Visual C++ 2019 as a compiler. The only way I found to
>> make it compile large parts of LyX was to switch to recent C++
>> standards, so that all features are available. Unfortunately, some
>> deprecated parts of C++ have been removed in the latest versions of
>> the standard… These changes are probably not required for now with
>> other compilers, but some form will be required in the future when
>> switching to newer C++ versions.
>
> Thanks for the patches. As you mentioned later, the boost part should
> be done by upgrading boost. The new includues are OK.
>
> Concerning the "modern" C++ contructs, I am all for removing helper
> casses that we had, but I would not describe lambda functions as
> something that one may like to read. 

I was just working on this, for the same reason: All the lambdas
threaten to make the code unreadable, and hard to maintain (as so many
of them declare the same function). But what we can do is:

// Takes the argument d and returns a (pointer to a) function that
returns whether
// some Branch b has the name d.
std::function<bool (Branch const &)> BranchNamesEqual(docstring const & d)
{
    return [d](Branch const & b){ return b.branch() == d; };
}

I think that should work in C++11? Similarly in other cases.

I'm happy to do these fixes if the idea seems right.

Riki




More information about the lyx-devel mailing list