Project: switch to C++17 (closes: #1138)

Signed-off-by: Ichthyostega <prg@ichthyostega.de>
This commit is contained in:
Fischlurch 2020-02-21 21:08:31 +01:00
parent 00c9ecb659
commit beb8406abe
7 changed files with 98 additions and 108 deletions

View file

@ -74,7 +74,7 @@ def defineBuildEnvironment():
env.Replace( CPPPATH =["#src"] # used to find includes, "#" means always absolute to build-root env.Replace( CPPPATH =["#src"] # used to find includes, "#" means always absolute to build-root
, CPPDEFINES=['LUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines , CPPDEFINES=['LUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
, CCFLAGS='-Wall -Wextra -Wformat-security' , CCFLAGS='-Wall -Wextra -Wformat-security'
, CXXFLAGS='-std=gnu++14 -Wno-enum-compare -Wno-noexcept-type' , CXXFLAGS='-std=gnu++17 -Wno-enum-compare'
, CFLAGS='-std=gnu99' , CFLAGS='-std=gnu99'
) )
env.Append(LINKFLAGS='-Wl,--no-undefined') # require every dependency is given on link, in the right order env.Append(LINKFLAGS='-Wl,--no-undefined') # require every dependency is given on link, in the right order

View file

@ -1,7 +1,7 @@
Build Dependencies Build Dependencies
================== ==================
:Author: core-devs :Author: core-devs
:Date: 11/2015 :Date: 2/2020
:toc: :toc:
@ -54,29 +54,32 @@ Languages and Tools
* C / C++ * C / C++
- a C99 / C++14 compatible compiler footnote:[in practice, we build using GCC and - a C99 / C++17 compatible compiler footnote:[in practice, we build using GCC and
occasionally we check using Clang] occasionally we check using Clang]
- GCC *4.9* or Clang *3.5* should be fine footnote:[basically we try to use just the stock language. - GCC *7* or Clang *6* should be fine footnote:[basically we try to use just the stock language.
On rare occasions in the past, we _did_ use some GCC extensions, like `typeof()`, but we care for On rare occasions in the past, we _did_ use some GCC extensions, like `typeof()`, but we care for
workarounds, in case this becomes a problem. Incidentally, `typeof()` is obsoleted by the new workarounds, in case this becomes a problem. Incidentally, `typeof()` is obsoleted by the new
C++ standard, which provides `decltype()` for this purpose.]. C++ standard, which provides `decltype()` for this purpose.].
* BOOST (listed below are the Debian package names) * BOOST (listed below are the Debian package names)
- libboost-dev (at least *1.55*) - libboost-dev (at least *1.67*)
- libboost-program-options-dev - libboost-program-options-dev
- libboost-program-options-dev - libboost-program-options-dev
- libboost-filesystem-dev - libboost-filesystem-dev
* Script languages * Script languages
- Python (*2.7*) for build scripts - Python (*2.x*) might still be handy for build scripts.footnote:[SCons supports both Python 2.x
and Python 3.x transparently. Basically there is no reason to stick to Python 2.x -- just the standard
python is not yet switched on Debian/stable, and so we might miss out on some scripts.]
- bash (some test scripts use bash specific extensions) - bash (some test scripts use bash specific extensions)
Build Tools Build Tools
~~~~~~~~~~~ ~~~~~~~~~~~
* Git * Git
* SCons *2.0* footnote:[we build with SCons >= 2.0 since a long time. Previously the buildsystem used to work with 1.0 * SCons *2.0* footnote:[we build with SCons >= 3.0 since a long time. However, since the times of 2.0,
In addition, we use some SCons plug-ins, which are all shipped in-tree (`admin/scons`)] there are no major breaking improvements we rely on -- so chances are that the Build works fine with
older versions. In addition, we use some SCons plug-ins, which are all shipped in-tree (`admin/scons`)]
* pkg-config * pkg-config
* Doxygen * Doxygen

View file

@ -12,8 +12,8 @@ language and compiler support wasn't ready for what we consider _state of the cr
amended deficiencies by rolling our own helper facilities, with a little help from Boost. amended deficiencies by rolling our own helper facilities, with a little help from Boost.
Thus there was no urge for us to adopt the new language standard; we could simply wait for Thus there was no urge for us to adopt the new language standard; we could simply wait for
the compiler support to mature. In spring 2014, finally, we were able to switch our codebase the compiler support to mature. In spring 2014, finally, we were able to switch our codebase
to C++11 with minimal effort.footnote:[since 8/2015 -- after the switch to Debian/Jessie to C++11 with minimal effort.footnote:[since 2/2020 -- after the switch to Debian/Buster
as a »reference platform«, we even compile with `-std=gnu++14`] as a »reference platform«, we even compile with `-std=gnu++17`]
Following this switch, we're now able to reap the benefits of Following this switch, we're now able to reap the benefits of
this approach; we may now gradually replace our sometimes clunky helpers and workarounds this approach; we may now gradually replace our sometimes clunky helpers and workarounds
with the smooth syntax of the ``new language'' -- without being forced to learn or adopt with the smooth syntax of the ``new language'' -- without being forced to learn or adopt
@ -201,28 +201,11 @@ August 2015::
our »reference system« (platform) is Debian/Jessie from now on. our »reference system« (platform) is Debian/Jessie from now on.
We have switched to **C\+\+14** and use (even require) GCC-4.9 or CLang 3.5 -- we can expect solid support We have switched to **C\+\+14** and use (even require) GCC-4.9 or CLang 3.5 -- we can expect solid support
for all C\+\+11 features and most C++14 features. for all C\+\+11 features and most C++14 features.
February 2020::
our »reference system« (platform) is Debian/Buster from now on.
We have switched to **C\+\+17** and use (even require) GCC-8 or CLang 7 -- we can expect solid support
for all C\+\+17 features.
Perfect forwarding
~~~~~~~~~~~~~~~~~~
Unfortunately, we ran into nasty problems with both GCC-4.7 and CLang 3.0 here, when chaining several forwarding calls.
- the new _reference collapsing rules_ seem to be unreliably still. Note that even the standard library uses an
overload to implement `std::forward`, while in theory, a single definition should work for every case.
- in one case, the executable generated by GCC passed a reference to an temporary, where it should have
passed a rvalue reference (i.e. it should have _moved_ the temporary, instead of referring to the
location on stack)
- CLang is unable to pass a plain-flat rvalue through a chain of templated functions with rvalue references.
We get the inspiring error message ``binding of reference to type `std::basic_string<char>` to a value of
type `std::basic_string<char>` drops qualifiers''
Thus -- as of 9/2014 -- the _rules of the game_ are as folows
- it is OK to take arguments by rvalue reference, when the type is explicit
- it is OK to use std::forward _once_ to pass-trough a templated argument
- but the _time is not yet ready_ to get rid of intermediary copies
- we still prefer returning by value (eligible for RVO) and copy-initialisation
- we refrain from switching our metaprogramming code from Loki-Typelists and hand-written specialisations
to variadic templates and `std::tuple`

View file

@ -29,7 +29,7 @@ There is nothing really fancy with the configuration, things work as you'd expec
actually enabled. This provider is used by the IDE to retrieve definitions from the compiler for syntax checks actually enabled. This provider is used by the IDE to retrieve definitions from the compiler for syntax checks
while you type and for building the search index. Typically, this provider is called ``GCC Builtin Compiler Settings''; while you type and for building the search index. Typically, this provider is called ``GCC Builtin Compiler Settings'';
please ensure in the global (or the project specific) configuration that the invocation command line includes please ensure in the global (or the project specific) configuration that the invocation command line includes
the argument `-std=gnu++14` -- otherwise you'll get a lot of red squiggles on the new language features ;-) the argument `-std=gnu++17` -- otherwise you'll get a lot of red squiggles on the new language features ;-)
Indexer troubleshooting Indexer troubleshooting
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
@ -55,6 +55,20 @@ was able to see the right files with the right locations
_manually_ -- more so if they are still accessible on the system. Dont blame the Indexer, which basically _manually_ -- more so if they are still accessible on the system. Dont blame the Indexer, which basically
has no way to find out he is looking at the obsolete source files... has no way to find out he is looking at the obsolete source files...
Sourcecode for relevant external libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Especially when working on the GUI, it can be handy to have some of the most relevant libraries around:
`gdl`, `gdlmm3`, `glib2.0`, `glibmm2.4`, `gtk+3.0`, `gtkmm3.0`. Just extract the source code into a directory
and add it via the ``Makefile Project with Existing Code'' wizard. Of course it helps to some degree if you're
also able to _build_ that code (even partially) from within the IDE, since the indexer is than able to pick up
more cross linking information. However, this is not a strict requirement -- even while `F3` often fails, the
``Open Type'' dialog is able to spot the definition in many cases non the less, and when this fails, you can
still use ``brute-force'' file search. What turns out to be much more an impediment in practice is the fact
that you'll have to jump through that C++ binding layer, and you need to pick up some basic knowledge how
this layer works to wrap the underlying plain-C GTK entities; don't confuse the C++ _wrapper objects_
with the _gobject_ (a concept from GLib) used by GTK.
Debugger Breakpoints not working Debugger Breakpoints not working
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This seems to be a FAQ since Eclipse Kepler: If some or all breakpoints just refuse to work and you see This seems to be a FAQ since Eclipse Kepler: If some or all breakpoints just refuse to work and you see

View file

@ -1,6 +1,6 @@
Building Lumiera from source Building Lumiera from source
============================ ============================
:Date: 2013 :Date: 2020
:toc: :toc:
At the moment you can build Lumiera, start the standard Lumiera GUI and run the At the moment you can build Lumiera, start the standard Lumiera GUI and run the
@ -46,7 +46,7 @@ authoritative information about the build dependencies is encoded into the
link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build
system aborts, indicating that a never version of some library is required, system aborts, indicating that a never version of some library is required,
then usually the build system is right...] then usually the build system is right...]
More specifically, you'll need the GNU C/C\++ compiler with C++14 support (Version >= 4.9) More specifically, you'll need the GNU C/C\++ compiler with C++17 support (Version >= 7)
in addition to the following tools and libraries: in addition to the following tools and libraries:
* link:http://git-scm.com/[Git] (version management system) * link:http://git-scm.com/[Git] (version management system)
@ -63,12 +63,6 @@ The GUI depends on the following:
* link:https://wiki.gnome.org/LibRsvg[lib rSVG] * link:https://wiki.gnome.org/LibRsvg[lib rSVG]
* link:https://git.gnome.org/browse/gdl[lib GDL] * link:https://git.gnome.org/browse/gdl[lib GDL]
CAUTION: there are known problems with *GCC-5.x* as of 11/2015 +
on recent distributions (Ubuntu/wily, Debian/stretch) you might
encounter failing tests.footnote:[these problems aren't really serious;
basically we're sometimes checking mangled class/type names, and seemingly
the mangling behaviour of GCC has changed slightly. We're working on that...]
TIP: Generally speaking, when you want to build software, you'll need the TIP: Generally speaking, when you want to build software, you'll need the
_development_ version of the packages that contain the headers and pre-built _development_ version of the packages that contain the headers and pre-built
libraries to link against. These packages are usually named `-devel` or `-dev`. libraries to link against. These packages are usually named `-devel` or `-dev`.
@ -81,17 +75,6 @@ libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem
libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev
------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------
Ubuntu note::
some people reported you need to install the `intltool` package from the standard
Ubuntu repository (for this reason it is included in the above collection)
Mint-17.2 (Rafaela) and Ubuntu 12.LTS::
we really need the gcc-4.9, so building on these platforms is a bit tricky. See our
link:{ldoc}/technical/howto/backporting.html#_building_on_mint_17_2_rafaela_8201_8212_8201_gcc_and_libstdc_4_9[»Backporting«]
page for detailed info...
GCC-5.0::
we're aware of some changes in mangled names (or type-IDs), which cause some tests to fail.
Other than that, compilation worked for us.
Build Directory Build Directory

View file

@ -268,7 +268,6 @@ Steam Layer::
* implement a command dispatcher to allow blocking and queuing of commands * implement a command dispatcher to allow blocking and queuing of commands
* develop a scheme how to code the GUI commands in practice * develop a scheme how to code the GUI commands in practice
- implement a symbol table for the `lib::Symbol` datatype
- provide the foundation for symbolic rules and script bindings - provide the foundation for symbolic rules and script bindings
* expand on the work done for symbolic and hash references * expand on the work done for symbolic and hash references

View file

@ -44515,8 +44515,8 @@
</node> </node>
<node CREATED="1439176872457" HGAP="15" ID="ID_355008543" MODIFIED="1557498707241" POSITION="left" TEXT="Plattform" VSHIFT="41"> <node CREATED="1439176872457" HGAP="15" ID="ID_355008543" MODIFIED="1557498707241" POSITION="left" TEXT="Plattform" VSHIFT="41">
<icon BUILTIN="go"/> <icon BUILTIN="go"/>
<node CREATED="1439176875682" HGAP="47" ID="ID_1487331591" MODIFIED="1581812835067" TEXT="Referenzplattform" VSHIFT="60"> <node CREATED="1439176875682" HGAP="47" ID="ID_1487331591" MODIFIED="1582315396874" TEXT="Referenzplattform" VSHIFT="60">
<icon BUILTIN="stop"/> <icon BUILTIN="prepare"/>
<node COLOR="#435e98" CREATED="1439176875682" FOLDED="true" ID="ID_263510975" MODIFIED="1581813331909" TEXT="Debian/Jessie"> <node COLOR="#435e98" CREATED="1439176875682" FOLDED="true" ID="ID_263510975" MODIFIED="1581813331909" TEXT="Debian/Jessie">
<edge COLOR="#648f70" STYLE="linear"/> <edge COLOR="#648f70" STYLE="linear"/>
<icon BUILTIN="licq"/> <icon BUILTIN="licq"/>
@ -44933,12 +44933,13 @@
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1439176875682" ID="ID_1546966992" MODIFIED="1581813317904" TEXT="Debian/Buster"> <node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1439176875682" ID="ID_1546966992" MODIFIED="1582315392127" TEXT="Debian/Buster">
<edge COLOR="#956a6a" STYLE="linear"/> <edge COLOR="#956a6a" STYLE="linear"/>
<icon BUILTIN="flag-pink"/> <icon BUILTIN="pencil"/>
<node CREATED="1581813838219" ID="ID_292810279" MODIFIED="1581813843787" TEXT="Aufgaben"> <node CREATED="1581813838219" ID="ID_292810279" MODIFIED="1581813843787" TEXT="Aufgaben">
<node CREATED="1581813846914" ID="ID_1924268278" MODIFIED="1581813850500" TEXT="C++17"> <node COLOR="#338800" CREATED="1581813846914" ID="ID_1924268278" MODIFIED="1582315382771" TEXT="C++17">
<font BOLD="true" NAME="SansSerif" SIZE="12"/> <font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
<node CREATED="1439176890840" ID="ID_1573907176" MODIFIED="1581813253348" TEXT="Probleme"/> <node CREATED="1439176890840" ID="ID_1573907176" MODIFIED="1581813253348" TEXT="Probleme"/>
@ -44973,6 +44974,9 @@
</node> </node>
</node> </node>
</node> </node>
<node COLOR="#338800" CREATED="1582315830960" ID="ID_284872523" MODIFIED="1582315840434" TEXT="Testsuite GR&#xdc;N">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1439644339480" ID="ID_1582631934" MODIFIED="1581813253348" TEXT="Lumiera DEB"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1439644339480" ID="ID_1582631934" MODIFIED="1581813253348" TEXT="Lumiera DEB">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head>
@ -45237,8 +45241,8 @@
</node> </node>
</node> </node>
</node> </node>
<node CREATED="1447978374453" HGAP="140" ID="ID_156552320" MODIFIED="1581813549648" TEXT="Compiler" VSHIFT="-10"> <node CREATED="1447978374453" HGAP="140" ID="ID_156552320" MODIFIED="1582315374832" TEXT="Compiler" VSHIFT="-10">
<icon BUILTIN="prepare"/> <icon BUILTIN="go"/>
<node CREATED="1447978472591" ID="ID_281213456" MODIFIED="1581813532154" TEXT="GCC-4.9"> <node CREATED="1447978472591" ID="ID_281213456" MODIFIED="1581813532154" TEXT="GCC-4.9">
<icon BUILTIN="licq"/> <icon BUILTIN="licq"/>
</node> </node>
@ -45335,8 +45339,8 @@
</node> </node>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581813455951" ID="ID_1821559366" MODIFIED="1581813539449" TEXT="GCC-8"> <node CREATED="1581813455951" ID="ID_1821559366" MODIFIED="1582315344844" TEXT="GCC-8">
<icon BUILTIN="back"/> <icon BUILTIN="button_ok"/>
<node CREATED="1581813466582" ID="ID_1727015963" MODIFIED="1581813471691" TEXT="Februar 2020"> <node CREATED="1581813466582" ID="ID_1727015963" MODIFIED="1581813471691" TEXT="Februar 2020">
<node COLOR="#338800" CREATED="1581740476035" ID="ID_1259527140" MODIFIED="1581906957998" TEXT="Build-Fixes (analog Paketbau)"> <node COLOR="#338800" CREATED="1581740476035" ID="ID_1259527140" MODIFIED="1581906957998" TEXT="Build-Fixes (analog Paketbau)">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
@ -45501,14 +45505,14 @@
</node> </node>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581813859601" ID="ID_728753164" MODIFIED="1581813869304" TEXT="auf C++17 heben"> <node COLOR="#338800" CREATED="1581813859601" FOLDED="true" ID="ID_728753164" MODIFIED="1582315336837" TEXT="auf C++17 heben">
<font BOLD="true" NAME="SansSerif" SIZE="12"/> <font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1581991434932" ID="ID_104376570" MODIFIED="1581991443172" TEXT="Schalter setzen in Setup.py"> <node COLOR="#338800" CREATED="1581991434932" ID="ID_104376570" MODIFIED="1582312758108" TEXT="Schalter setzen in Setup.py">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581991444571" ID="ID_351533384" MODIFIED="1581991483705" TEXT="Problemcode vorerst auskommentiert"> <node COLOR="#435e98" CREATED="1581991444571" FOLDED="true" ID="ID_351533384" MODIFIED="1582312758109" TEXT="Problemcode vorerst auskommentiert">
<icon BUILTIN="back"/> <icon BUILTIN="licq"/>
<node CREATED="1581992755658" ID="ID_1595558796" MODIFIED="1581992775966" TEXT="util-coll.hpp"> <node CREATED="1581992755658" ID="ID_1595558796" MODIFIED="1581992775966" TEXT="util-coll.hpp">
<node CREATED="1581991489253" ID="ID_821303087" MODIFIED="1581992404462" TEXT=" and_all "> <node CREATED="1581991489253" ID="ID_821303087" MODIFIED="1581992404462" TEXT=" and_all ">
<node CREATED="1581991517974" ID="ID_1722922510" MODIFIED="1581991517974" TEXT="can_STL_ForEach&lt;Container&gt;,"/> <node CREATED="1581991517974" ID="ID_1722922510" MODIFIED="1581991517974" TEXT="can_STL_ForEach&lt;Container&gt;,"/>
@ -45594,9 +45598,9 @@
</node> </node>
</node> </node>
</node> </node>
<node COLOR="#435e98" CREATED="1581995421239" ID="ID_1730281364" MODIFIED="1582312452693" TEXT="mutma&#xdf;liche Probleme"> <node COLOR="#435e98" CREATED="1581995421239" ID="ID_1730281364" MODIFIED="1582312758109" TEXT="mutma&#xdf;liche Probleme">
<icon BUILTIN="info"/> <icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1581995443649" ID="ID_986769823" MODIFIED="1582306722680" TEXT="STL collection duck detector greift nicht mehr"> <node COLOR="#435e98" CREATED="1581995443649" FOLDED="true" ID="ID_986769823" MODIFIED="1582312758109" TEXT="STL collection duck detector greift nicht mehr">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1582073183681" ID="ID_652495805" MODIFIED="1582073205034" TEXT="erkl&#xe4;rt Defekt"> <node CREATED="1582073183681" ID="ID_652495805" MODIFIED="1582073205034" TEXT="erkl&#xe4;rt Defekt">
<node CREATED="1582073420161" ID="ID_1988954672" MODIFIED="1582073427721" TEXT="util-foreach-Pr&#xe4;dikate"/> <node CREATED="1582073420161" ID="ID_1988954672" MODIFIED="1582073427721" TEXT="util-foreach-Pr&#xe4;dikate"/>
@ -45643,7 +45647,7 @@
</node> </node>
</node> </node>
</node> </node>
<node COLOR="#435e98" CREATED="1581995458449" ID="ID_524595490" MODIFIED="1582312410611" TEXT="meta::_Fun Type-Deduction greift nicht mehr"> <node COLOR="#435e98" CREATED="1581995458449" FOLDED="true" ID="ID_524595490" MODIFIED="1582312758109" TEXT="meta::_Fun Type-Deduction greift nicht mehr">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1582073209005" ID="ID_1128456119" MODIFIED="1582073212094" TEXT="erkl&#xe4;rt Defekt"> <node CREATED="1582073209005" ID="ID_1128456119" MODIFIED="1582073212094" TEXT="erkl&#xe4;rt Defekt">
<node CREATED="1581995542307" ID="ID_1935687224" MODIFIED="1581995545415" TEXT="transformIterator"/> <node CREATED="1581995542307" ID="ID_1935687224" MODIFIED="1581995545415" TEXT="transformIterator"/>
@ -45654,15 +45658,16 @@
<arrowlink COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" STARTARROW="None" STARTINCLINATION="551;0;"/> <arrowlink COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" STARTARROW="None" STARTINCLINATION="551;0;"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582226930039" ID="ID_520524824" MODIFIED="1582312457500" TEXT="Union-Initialisierung on-the-fly"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582226930039" ID="ID_520524824" MODIFIED="1582312758109" TEXT="Union-Initialisierung on-the-fly">
<arrowlink COLOR="#ca99b1" DESTINATION="ID_1404034997" ENDARROW="Default" ENDINCLINATION="-5;81;" ID="Arrow_ID_402256801" STARTARROW="None" STARTINCLINATION="235;22;"/> <arrowlink COLOR="#ca99b1" DESTINATION="ID_1404034997" ENDARROW="Default" ENDINCLINATION="-5;81;" ID="Arrow_ID_402256801" STARTARROW="None" STARTINCLINATION="235;22;"/>
<icon BUILTIN="hourglass"/> <icon BUILTIN="hourglass"/>
</node> </node>
</node> </node>
<node CREATED="1582233568711" ID="ID_1046617766" MODIFIED="1582233574777" TEXT="L&#xf6;sungen"> <node CREATED="1582233568711" ID="ID_1046617766" MODIFIED="1582312758109" TEXT="L&#xf6;sungen">
<node COLOR="#338800" CREATED="1582233577705" ID="ID_1368671019" MODIFIED="1582306571178" TEXT="STL-Iterierbarkeit"> <icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1582233577705" ID="ID_1368671019" MODIFIED="1582312758109" TEXT="STL-Iterierbarkeit">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1582233592571" ID="ID_409234723" MODIFIED="1582233639556"> <node CREATED="1582233592571" ID="ID_409234723" MODIFIED="1582312758109">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head>
@ -45675,24 +45680,24 @@
</html> </html>
</richcontent> </richcontent>
<icon BUILTIN="help"/> <icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582233691150" ID="ID_860044262" MODIFIED="1582233697555" TEXT="NEIN"> <node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582233691150" ID="ID_860044262" MODIFIED="1582312758109" TEXT="NEIN">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/> <font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
</node> </node>
<node CREATED="1582233699511" ID="ID_287790035" MODIFIED="1582233717614" TEXT="das ist nicht Teil des Konzepts &#xbb;Iterierbarkeit&#xab;"> <node CREATED="1582233699511" ID="ID_287790035" MODIFIED="1582312758109" TEXT="das ist nicht Teil des Konzepts &#xbb;Iterierbarkeit&#xab;">
<node CREATED="1582233730337" ID="ID_1576759110" MODIFIED="1582233744219" TEXT="hier ganz klar &quot;im weitesten Sinne&quot; gemeint"/> <node CREATED="1582233730337" ID="ID_1576759110" MODIFIED="1582312758109" TEXT="hier ganz klar &quot;im weitesten Sinne&quot; gemeint"/>
<node CREATED="1582233816125" ID="ID_1024965560" MODIFIED="1582233839557" TEXT="Beweis: &lt;bits/range_access.h&gt;"> <node CREATED="1582233816125" ID="ID_1024965560" MODIFIED="1582312758109" TEXT="Beweis: &lt;bits/range_access.h&gt;">
<node CREATED="1582233844361" ID="ID_697050029" MODIFIED="1582233864786" TEXT="Funktion std::begin(X) ist ohne noexcept definiert"/> <node CREATED="1582233844361" ID="ID_697050029" MODIFIED="1582312758109" TEXT="Funktion std::begin(X) ist ohne noexcept definiert"/>
<node CREATED="1582233871134" ID="ID_439487192" MODIFIED="1582233878481" TEXT="macht auch inhaltlich Sinn so"/> <node CREATED="1582233871134" ID="ID_439487192" MODIFIED="1582312758109" TEXT="macht auch inhaltlich Sinn so"/>
</node> </node>
</node> </node>
</node> </node>
<node COLOR="#338800" CREATED="1582233905345" ID="ID_374929365" MODIFIED="1582306757303" TEXT="L&#xf6;sungsansatz-1: beide Varianten explizit pr&#xfc;fen"> <node COLOR="#338800" CREATED="1582233905345" ID="ID_374929365" MODIFIED="1582312758109" TEXT="L&#xf6;sungsansatz-1: beide Varianten explizit pr&#xfc;fen">
<linktarget COLOR="#0eaf68" DESTINATION="ID_374929365" ENDARROW="Default" ENDINCLINATION="143;-60;" ID="Arrow_ID_325541082" SOURCE="ID_173149831" STARTARROW="None" STARTINCLINATION="279;23;"/> <linktarget COLOR="#0eaf68" DESTINATION="ID_374929365" ENDARROW="Default" ENDINCLINATION="143;-60;" ID="Arrow_ID_325541082" SOURCE="ID_173149831" STARTARROW="None" STARTINCLINATION="279;23;"/>
<icon BUILTIN="back"/> <icon BUILTIN="back"/>
<node CREATED="1582237126809" ID="ID_885223940" MODIFIED="1582237134567" TEXT="das w&#xfc;rde den Status-quo einfach reparieren"/> <node CREATED="1582237126809" ID="ID_885223940" MODIFIED="1582312758109" TEXT="das w&#xfc;rde den Status-quo einfach reparieren"/>
<node CREATED="1582237135080" ID="ID_247923480" MODIFIED="1582237151522" TEXT="dieser ist aber selbst einigerma&#xdf;en &quot;pragmatisch&quot; und verworren"> <node CREATED="1582237135080" ID="ID_247923480" MODIFIED="1582312758109" TEXT="dieser ist aber selbst einigerma&#xdf;en &quot;pragmatisch&quot; und verworren">
<node CREATED="1582237183692" ID="ID_898840580" MODIFIED="1582237277357" TEXT="siehe z.B. lib/meta/trait-special.hpp"> <node CREATED="1582237183692" ID="ID_898840580" MODIFIED="1582312758109" TEXT="siehe z.B. lib/meta/trait-special.hpp">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head>
@ -45715,8 +45720,8 @@
<icon BUILTIN="smily_bad"/> <icon BUILTIN="smily_bad"/>
</node> </node>
</node> </node>
<node CREATED="1582237153893" ID="ID_1734163342" MODIFIED="1582237170263" TEXT="...und ich wei&#xdf;, da&#xdf; das Thema f&#xfc;r C++20 angegangen und aufger&#xe4;umt werden mu&#xdf;"/> <node CREATED="1582237153893" ID="ID_1734163342" MODIFIED="1582312758109" TEXT="...und ich wei&#xdf;, da&#xdf; das Thema f&#xfc;r C++20 angegangen und aufger&#xe4;umt werden mu&#xdf;"/>
<node COLOR="#435e98" CREATED="1582305423630" ID="ID_406561498" MODIFIED="1582305474131" TEXT="ist die einzige zur Zeit sinnvoll umsetzbare L&#xf6;sung"> <node COLOR="#435e98" CREATED="1582305423630" ID="ID_406561498" MODIFIED="1582312758109" TEXT="ist die einzige zur Zeit sinnvoll umsetzbare L&#xf6;sung">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head>
@ -45739,15 +45744,15 @@
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
</node> </node>
<node CREATED="1582233920415" ID="ID_1234146956" MODIFIED="1582305405142" TEXT="L&#xf6;sungsansatz-2: umstellen auf RangeTS-Iterierbarkeit"> <node CREATED="1582233920415" ID="ID_1234146956" MODIFIED="1582312758109" TEXT="L&#xf6;sungsansatz-2: umstellen auf RangeTS-Iterierbarkeit">
<icon BUILTIN="closed"/> <icon BUILTIN="closed"/>
<node CREATED="1582236780720" ID="ID_617011073" MODIFIED="1582236796290" TEXT="welchen Zweck erf&#xfc;llt dieser Trait?"> <node CREATED="1582236780720" ID="ID_617011073" MODIFIED="1582312758109" TEXT="welchen Zweck erf&#xfc;llt dieser Trait?">
<node CREATED="1582236798072" ID="ID_626851812" MODIFIED="1582236835100" TEXT="geht es um &#xbb;Iterierbarket&#xab;?"/> <node CREATED="1582236798072" ID="ID_626851812" MODIFIED="1582312758110" TEXT="geht es um &#xbb;Iterierbarket&#xab;?"/>
<node CREATED="1582236809676" ID="ID_1014412331" MODIFIED="1582236832229" TEXT="oder geht es um STL-Container?"/> <node CREATED="1582236809676" ID="ID_1014412331" MODIFIED="1582312758110" TEXT="oder geht es um STL-Container?"/>
</node> </node>
<node CREATED="1582237912798" ID="ID_1995184792" MODIFIED="1582237920945" TEXT="alle bisherigen Verwendungen...."> <node CREATED="1582237912798" ID="ID_1995184792" MODIFIED="1582312758110" TEXT="alle bisherigen Verwendungen....">
<node CREATED="1582237974967" ID="ID_1205441472" MODIFIED="1582238028108" TEXT="...dienen dazu, Lumiera-Itarator und STL-Container einheitlich &#xbb;iterierbar&#xab; zu adaptieren"/> <node CREATED="1582237974967" ID="ID_1205441472" MODIFIED="1582312758110" TEXT="...dienen dazu, Lumiera-Itarator und STL-Container einheitlich &#xbb;iterierbar&#xab; zu adaptieren"/>
<node CREATED="1582237960985" ID="ID_1470506535" MODIFIED="1582238123532" TEXT="...es gibt gar nicht so viele Verwendungen"> <node CREATED="1582237960985" ID="ID_1470506535" MODIFIED="1582312758110" TEXT="...es gibt gar nicht so viele Verwendungen">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head>
@ -45765,14 +45770,14 @@
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
</node> </node>
<node CREATED="1582305384364" ID="ID_238579581" MODIFIED="1582305402839" TEXT="ist nicht das was wir hier wollen"> <node CREATED="1582305384364" ID="ID_238579581" MODIFIED="1582312758110" TEXT="ist nicht das was wir hier wollen">
<icon BUILTIN="button_cancel"/> <icon BUILTIN="button_cancel"/>
</node> </node>
</node> </node>
<node CREATED="1582237046588" ID="ID_400180049" MODIFIED="1582305363418" TEXT="L&#xf6;sunsansatz-3: ein ma&#xdf;geschneidertes Concept bauen"> <node CREATED="1582237046588" ID="ID_400180049" MODIFIED="1582312758110" TEXT="L&#xf6;sunsansatz-3: ein ma&#xdf;geschneidertes Concept bauen">
<icon BUILTIN="button_cancel"/> <icon BUILTIN="button_cancel"/>
<node CREATED="1582237081319" ID="ID_1673821136" MODIFIED="1582237093290" TEXT="bereits im Vorgriff auf C++20 implementiert"/> <node CREATED="1582237081319" ID="ID_1673821136" MODIFIED="1582312758110" TEXT="bereits im Vorgriff auf C++20 implementiert"/>
<node CREATED="1582237094158" ID="ID_206423592" MODIFIED="1582237113383"> <node CREATED="1582237094158" ID="ID_206423592" MODIFIED="1582312758110">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head>
@ -45785,31 +45790,31 @@
</html> </html>
</richcontent> </richcontent>
</node> </node>
<node CREATED="1582305280750" ID="ID_1737226688" MODIFIED="1582305293156" TEXT="hab&apos;s versucht"> <node CREATED="1582305280750" ID="ID_1737226688" MODIFIED="1582312758110" TEXT="hab&apos;s versucht">
<icon BUILTIN="stop-sign"/> <icon BUILTIN="stop-sign"/>
<node CREATED="1582305294632" ID="ID_1508436965" LINK="https://stackoverflow.com/a/16316640/444796" MODIFIED="1582305314720" TEXT="in Anlehnung an (SO)"/> <node CREATED="1582305294632" ID="ID_1508436965" LINK="https://stackoverflow.com/a/16316640/444796" MODIFIED="1582312758110" TEXT="in Anlehnung an (SO)"/>
<node CREATED="1582305317917" ID="ID_63672565" MODIFIED="1582305325880" TEXT="wird aber sehr komplex im Detail"/> <node CREATED="1582305317917" ID="ID_63672565" MODIFIED="1582312758110" TEXT="wird aber sehr komplex im Detail"/>
</node> </node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582305327187" ID="ID_393824782" MODIFIED="1582305337183" TEXT="Abbruch"> <node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582305327187" ID="ID_393824782" MODIFIED="1582312758110" TEXT="Abbruch">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/> <font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
<node CREATED="1582305338154" ID="ID_529828571" MODIFIED="1582305347714" TEXT="L&#xf6;sung ist nicht lesbar"/> <node CREATED="1582305338154" ID="ID_529828571" MODIFIED="1582312758110" TEXT="L&#xf6;sung ist nicht lesbar"/>
<node CREATED="1582305348153" ID="ID_1318841418" MODIFIED="1582305360490" TEXT="in 2 Jahren nutzen wir Concepts"> <node CREATED="1582305348153" ID="ID_1318841418" MODIFIED="1582312758110" TEXT="in 2 Jahren nutzen wir Concepts">
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
</node> </node>
</node> </node>
</node> </node>
<node COLOR="#338800" CREATED="1582312227006" ID="ID_1679109428" MODIFIED="1582312398197" TEXT="Funktions-Detektor"> <node COLOR="#338800" CREATED="1582312227006" ID="ID_1679109428" MODIFIED="1582312758110" TEXT="Funktions-Detektor">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1582312235632" ID="ID_1383769424" MODIFIED="1582312241748" TEXT="es ist ebenfalls noexcept"> <node CREATED="1582312235632" ID="ID_1383769424" MODIFIED="1582312758110" TEXT="es ist ebenfalls noexcept">
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
<node COLOR="#338800" CREATED="1582312256096" ID="ID_698919272" MODIFIED="1582312433072" TEXT="l&#xe4;&#xdf;t sich mit forwarding-specialisation wegstrippen"> <node COLOR="#338800" CREATED="1582312256096" ID="ID_698919272" MODIFIED="1582312758110" TEXT="l&#xe4;&#xdf;t sich mit forwarding-specialisation wegstrippen">
<linktarget COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" SOURCE="ID_1422313569" STARTARROW="None" STARTINCLINATION="551;0;"/> <linktarget COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" SOURCE="ID_1422313569" STARTARROW="None" STARTINCLINATION="551;0;"/>
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
<node CREATED="1582312269622" ID="ID_1014206981" LINK="https://stackoverflow.com/a/55701361/444796" MODIFIED="1582312395433" TEXT="Gefahr der kombinatorischen Explosion"> <node CREATED="1582312269622" ID="ID_1014206981" LINK="https://stackoverflow.com/a/55701361/444796" MODIFIED="1582312758110" TEXT="Gefahr der kombinatorischen Explosion">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head>
@ -45828,8 +45833,11 @@
</node> </node>
</node> </node>
</node> </node>
<node CREATED="1447978388930" ID="ID_78828927" MODIFIED="1557498707243" TEXT="Clang 3.5"> <node CREATED="1447978388930" ID="ID_78828927" MODIFIED="1582315355090" TEXT="Clang 3.5">
<icon BUILTIN="button_ok"/> <icon BUILTIN="licq"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582315356166" ID="ID_568554401" MODIFIED="1582315369107" TEXT="Clang-7">
<icon BUILTIN="bell"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1446480582168" FOLDED="true" HGAP="46" ID="ID_554745278" MODIFIED="1581813780309" TEXT="Release" VSHIFT="-5"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1446480582168" FOLDED="true" HGAP="46" ID="ID_554745278" MODIFIED="1581813780309" TEXT="Release" VSHIFT="-5">