C++17: isolate problematic code segments (see Ticket #1138)

as it turns out, "almost" the whole codebase compiles in C++17 mode.

with the exception of two metaprogramming-related problems:

 - our "duck detector" for STL containers does not trigger anymore
 - the Metafunction to dissect Function sigantures (meta::_Fun) flounders
This commit is contained in:
Fischlurch 2020-02-18 04:16:03 +01:00
parent 3cfe5a13b1
commit 577592c66e
18 changed files with 168 additions and 3 deletions

View file

@ -193,7 +193,10 @@ namespace lumiera {
throw error::Logic("Subsystem "+string(*susy)+" failed to start");
}
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
if (not and_all (susy->getPrerequisites(), isRunning() ))
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
if (true) ////FIXME
{
susy->triggerShutdown();
throw error::State("Unable to start all prerequisites of Subsystem "+string(*susy));

View file

@ -194,6 +194,7 @@ namespace util {
using Coll = typename lib::meta::Strip<CON>::TypePlain;
_RangeIter<Coll> range(std::forward<CON>(coll));
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto strings = stringify (std::move (range.iter));
if (!strings) return "";
@ -205,6 +206,8 @@ namespace util {
size_t len = buffer.str().length();
ASSERT (len >= delim.length());
return buffer.str().substr(0, len - delim.length());
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return "bääh";
}
template<class X>

View file

@ -147,10 +147,13 @@ namespace workspace {
bool
DockArea::hasPanel (const int description_index)
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return util::has_any (panels_, [=](panel::Panel* panel)
{
return getPanelType(panel) == description_index;
});
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return false; /////FIXME
}
panel::Panel&

View file

@ -140,10 +140,13 @@ namespace workspace {
bool
PanelManager::hasPanel (const int description_index)
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return util::has_any (panels_, [=](panel::Panel* panel)
{
return getPanelType(panel) == description_index;
});
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return false; //////FIXME
}
panel::Panel&

View file

@ -117,7 +117,10 @@ namespace asset {
bool
all_parents_enabled (const vector<PAsset>& parents)
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return and_all (parents, check_isActive);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return false;
}
/**

View file

@ -119,7 +119,10 @@ namespace play {
bool
isActive() const
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return not and_all (processes_, isDead);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return false;
}
private:

View file

@ -211,7 +211,10 @@ namespace test {
vector<Job> plannedChunk;
lib::append_all (jobs, plannedChunk);
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
Duration coveredTime (Offset(refPoint, last(plannedChunk).getNominalTime()));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
Duration coveredTime (lib::time::FSecs(23,55)); /////////////////////FIXME
CHECK (coveredTime >= timings.getPlanningChunkDuration());
///TODO nachfolgendes muß komplett umgeschrieben werden

View file

@ -276,6 +276,7 @@ namespace test{
,set(ATTRIB1)
,del(CHILD_T)}), steps);
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
diffMsg = MutationMessage{steps};
CHECK (!isnil (diffMsg));
@ -283,6 +284,8 @@ namespace test{
CHECK (set(ATTRIB1) == *++diffMsg);
CHECK (del(CHILD_T) == *++diffMsg);
CHECK (isnil (++diffMsg));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}

View file

@ -408,7 +408,10 @@ namespace test{
mutator1.injectNew (ATTRIB1);
CHECK (!isnil (target));
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
CHECK (contains(join(target), "α1≻"));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
mutator1.injectNew (ATTRIB3);
mutator1.injectNew (ATTRIB3);
@ -417,6 +420,7 @@ namespace test{
mutator1.injectNew (CHILD_T);
CHECK (mutator1.completeScope());
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto contents = stringify(eachElm(target));
CHECK ("α1≻" == *contents);
++contents;
@ -431,6 +435,8 @@ namespace test{
CHECK (contains(*contents, "78:56:34.012≻"));
++contents;
CHECK (isnil (contents));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
cout << "injected......" << join(target) <<endl;
@ -498,6 +504,7 @@ namespace test{
CHECK (mutator2.completeScope()); // no pending elements left, everything resolved
// verify reordered shape
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
contents = stringify(eachElm(target));
CHECK ("α1≻" == *contents);
++contents;
@ -514,6 +521,7 @@ namespace test{
CHECK (contains(*contents, "b≻"));
++contents;
CHECK (isnil (contents));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
cout << "Content after reordering...."
<< join(target) <<endl;
@ -617,6 +625,7 @@ namespace test{
cout << "Sub|" << join(subScopes[SUB_NODE.idi]) <<endl; // some new content into our implementation defined sub scope!
// verify contents of nested scope after mutation
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
contents = stringify(eachElm(subScopes[SUB_NODE.idi]));
CHECK ("≺typeξ≻" == *contents);
++contents;
@ -627,6 +636,7 @@ namespace test{
CHECK (contains(*contents, "a≻"));
++contents;
CHECK (isnil (contents));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
// now back to parent scope....
@ -644,6 +654,7 @@ namespace test{
cout << "Sub|" << join(subScopes[ATTRIB_NODE.idi]) <<endl;
// verify contents of this second nested scope
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
contents = stringify(eachElm(subScopes[ATTRIB_NODE.idi]));
CHECK ("≺typeζ≻" == *contents);
++contents;
@ -654,6 +665,7 @@ namespace test{
CHECK (contains(*contents, "a≻"));
++contents;
CHECK (isnil (contents));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
// back to parent scope....

View file

@ -139,6 +139,7 @@ namespace test {
checkStringify()
{
// use as transformer within an (iterator) pipeline
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto ss = stringify (eachNum (1.11, 10.2));
CHECK (ss);
@ -151,6 +152,8 @@ namespace test {
res += s;
CHECK (res == "..2.113.114.115.116.117.118.119.1110.11");
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
using VecS = vector<string>;
@ -166,6 +169,7 @@ namespace test {
++nn;
CHECK (6 == *nn);
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto sn = stringify (nn);
CHECK ("6" == *sn);
++sn;
@ -182,6 +186,8 @@ namespace test {
CHECK ("9" == *sn);
++sn;
CHECK (isnil (sn));
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}

View file

@ -312,6 +312,7 @@ namespace test{
void
verifyFunctionResult()
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
FunctionResult<int(void)> randomVal (std::rand);
// function was never invoked, thus the remembered result is NIL
@ -330,6 +331,8 @@ namespace test{
CHECK (v2 == *randomVal);
CHECK (v2 == *randomVal);
CHECK (v1 != *randomVal);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}

View file

@ -117,6 +117,7 @@ namespace test{
void
simpleSearch ()
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto search = chainSearch(SPAM)
.search("bacon")
.search("tomato");
@ -138,6 +139,8 @@ namespace test{
CHECK (not search);
CHECK (isnil (search));
VERIFY_ERROR (ITER_EXHAUST, *search);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}
@ -152,6 +155,7 @@ namespace test{
void
chainedIteration ()
{
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto search = chainSearch(SPAM) // Note: 1st filter step picks all s-words
.search([](string const& str){ return startsWith (str, "s"); });
@ -175,6 +179,8 @@ namespace test{
"bacon-tomato-and-" // any non-spam behind the 3rd spam
"tomato-and" // any non-spam behind the 4th spam
""); // and any non-spam behind the final spam
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}

View file

@ -340,10 +340,13 @@ namespace test{
CHECK (materialise(jj) == "3--5-8--13");
// can even adapt STL container automatically
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto kk = treeExplore(numz);
CHECK (!isnil (kk));
CHECK (1 == *kk);
CHECK (materialise(kk) == "1--2-3--5-8--13");
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}
@ -392,10 +395,12 @@ namespace test{
.expand([](uint j){ return CountDown{j-1}; }) // expand-functor: Val > StateCore
);
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
verify_treeExpandingIterator(
treeExplore(CountDown{5})
.expand([](uint j){ return NumberSequence{j-1}; }) // expand-functor: Val > Iter
); // NOTE: different Iterator type than the source!
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
// lambda with side-effect and return type different from source iter
vector<vector<uint>> childBuffer;
@ -408,10 +413,12 @@ namespace test{
return childNumbz;
};
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
verify_treeExpandingIterator(
treeExplore(CountDown{5})
.expand(expandIntoChildBuffer) // expand-functor: Val > STL-container&
);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
// test routine called the expansion functor five times
CHECK (5 == childBuffer.size());
@ -579,6 +586,7 @@ namespace test{
// demonstrate chaining of several transformation layers
vector<int64_t> numz{1,-2,3,-5,8,-13};
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
CHECK ("≺1≻-≺-2≻-≺3≻-≺-5≻-≺8≻-≺-13≻" == materialise (treeExplore(numz)
.transform(formatify)) );
@ -591,6 +599,8 @@ namespace test{
.transform(multiply)
.transform(formatify)
.transform(formatify)) );
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
// demonstrate the functor is evaluated only once per step

View file

@ -96,8 +96,11 @@ namespace test {
VecI container = someNumberz (NUM_ELMS);
RangeI iterator(container.begin(), container.end());
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
verify_accessFirstLast (container, NUM_ELMS);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
verify_accessFirstLast (iterator, NUM_ELMS);
UNIMPLEMENTED ("C++17");
}

View file

@ -131,6 +131,7 @@ namespace test {
VecI container = buildTestNumberz (NUM_ELMS);
RangeI iterator(container.begin(), container.end());
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
check_foreach_plain (container);
check_foreach_plain (iterator);
@ -151,6 +152,8 @@ namespace test {
CHECK (int(NUM_ELMS) ==container[0]);
check_ref_argument_bind (container);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
CHECK (int(NUM_ELMS) ==container[0]);
check_ref_argument_bind (iterator);
@ -410,6 +413,7 @@ namespace test {
// fed the element pointer as "this" pointer of the member function
for_each (elmPtrs, &TestElm::operation, _1 ); _NL_
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
and_all (elmPtrs, &TestElm::operation, _1 ); _NL_
has_any (elmPtrs, &TestElm::operation, _1 ); _NL_
@ -417,6 +421,8 @@ namespace test {
for_each (elms, &TestElm::operation, _1 ); _NL_
and_all (elms, &TestElm::operation, _1 ); _NL_
has_any (elms, &TestElm::operation, _1 ); _NL_
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
// note: it seems not to be possible to create a binder, which takes the "*this"-Argument by ref
}

View file

@ -198,6 +198,7 @@ namespace test{
{
VerboseRenderer verbose;
DiagnosticRenderer diagnostic;
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
auto render = [&](Receiver& renderer)
{
return join (lib::treeExplore(tokens)
@ -210,6 +211,8 @@ namespace test{
CHECK (render(diagnostic) == "woof(false,3)-honk(quaack)-honk(Hoonk)-woof(true,2)-moo(3)-meh()");
CHECK (render(verbose) == "haw-hawhaw-hawhaw-hawhaw-haw-quaack-quaack!-Hoonk-Hoonk!-Woof..Woof..-Moo__Moo__Moo-Meh?");
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
UNIMPLEMENTED ("C++17");
}

View file

@ -496,9 +496,11 @@ namespace test{
{
EventLog::ArgSeq strings;
strings.reserve (argData.childSize());
#if false //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
append_all (transformIterator (childData (argData.scope())
, util::toString<DataCap>)
,strings);
#endif //////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1138 : sort out C++17 compatibility
return strings;
}

View file

@ -45338,8 +45338,8 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581813455951" ID="ID_1821559366" MODIFIED="1581813539449" TEXT="GCC-8">
<icon BUILTIN="back"/>
<node CREATED="1581813466582" ID="ID_1727015963" MODIFIED="1581813471691" TEXT="Februar 2020">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581740476035" ID="ID_1259527140" MODIFIED="1581813881579" TEXT="Build-Fixes (analog Paketbau)">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1581740476035" ID="ID_1259527140" MODIFIED="1581906957998" TEXT="Build-Fixes (analog Paketbau)">
<icon BUILTIN="button_ok"/>
<node CREATED="1581740511638" ID="ID_673829980" MODIFIED="1581812450753" TEXT="die FSecs-Problematik">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581812473146" ID="ID_1228189647" MODIFIED="1581812478016" TEXT="betroffen...">
@ -45361,7 +45361,7 @@
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1581740733368" ID="ID_1726260734" MODIFIED="1581903029633" TEXT="TICKET #939 : should better use 64bit base type for FSecs?">
<node COLOR="#338800" CREATED="1581740733368" FOLDED="true" ID="ID_1726260734" MODIFIED="1581906950545" TEXT="TICKET #939 : should better use 64bit base type for FSecs?">
<icon BUILTIN="button_ok"/>
<node CREATED="1581740750350" ID="ID_1497724243" MODIFIED="1581819702167" TEXT="macht sich als 32bit vs 64bit-Problematik bemerkbar">
<richcontent TYPE="NOTE"><html>
@ -45504,6 +45504,96 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581813859601" ID="ID_728753164" MODIFIED="1581813869304" TEXT="auf C++17 heben">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1581991434932" ID="ID_104376570" MODIFIED="1581991443172" TEXT="Schalter setzen in Setup.py">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581991444571" ID="ID_351533384" MODIFIED="1581991483705" TEXT="Problemcode vorerst auskommentiert">
<icon BUILTIN="back"/>
<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="1581991517974" ID="ID_1722922510" MODIFIED="1581991517974" TEXT="can_STL_ForEach&lt;Container&gt;,"/>
<node CREATED="1581992406361" ID="ID_1457450258" MODIFIED="1581992409589" TEXT="von asset.cpp"/>
<node CREATED="1581992410249" ID="ID_845644128" MODIFIED="1581992429202" TEXT="von play-service.cpp : ProcessTable::isActive"/>
<node CREATED="1581992496443" ID="ID_1556779228" MODIFIED="1581992504496" TEXT="SubsystemRunner::triggerStartup"/>
<node CREATED="1581993273716" ID="ID_187313835" MODIFIED="1581993284470" TEXT="von util-foreach-test.cpp">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1581995065708" ID="ID_167787591" MODIFIED="1581995069528" TEXT="has_any">
<node CREATED="1581995072059" ID="ID_266292535" MODIFIED="1581995075974" TEXT="von dock-area.cpp:153">
<node CREATED="1581995087331" ID="ID_1008790341" MODIFIED="1581995091844" TEXT="hier &#xfc;ber std::list"/>
</node>
<node CREATED="1581995173317" ID="ID_1482525339" MODIFIED="1581995175625" TEXT="von panel-manager.cpp:146"/>
</node>
<node CREATED="1581992780940" ID="ID_846156960" MODIFIED="1581992784682" TEXT="last">
<node CREATED="1581992786719" ID="ID_868210635" MODIFIED="1581992786719" TEXT="enable_if&lt; treat_as_LumieraIterator&lt;IT&gt;"/>
<node CREATED="1581992844006" ID="ID_1452486285" MODIFIED="1581992844915" TEXT="enable_if&lt;util::{anonymous}::can_direct_access_Last&lt;COLL&gt;"/>
<node CREATED="1581992817306" ID="ID_1958248231" MODIFIED="1581992819485" TEXT="von dispatcher-interface-test.cpp"/>
<node CREATED="1581994136969" ID="ID_1071697988" MODIFIED="1581994140342" TEXT="util-collection-test.cpp">
<icon BUILTIN="back"/>
<node CREATED="1581994205823" ID="ID_548485755" MODIFIED="1581994218847" TEXT="sehr interessant: der Iterator-Fall funktioniert n&#xe4;mlich">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1581993060793" ID="ID_1110262639" MODIFIED="1581993091688" TEXT="TreeExplorer _DecoratorTraits : kann Collection-Fall nicht entscheiden">
<node CREATED="1581993101618" ID="ID_367690402" MODIFIED="1581993115453" TEXT="Verdarcht: wieder Lumiera Iter vs Collection enable-If"/>
<node CREATED="1581993133055" ID="ID_7676282" MODIFIED="1581993136234" TEXT="von iter-chain-search-test.cpp"/>
<node CREATED="1581993437094" ID="ID_553794215" MODIFIED="1581993437978" TEXT="verb-visitor-dispatch-test.cpp:203"/>
<node CREATED="1581993764266" ID="ID_1301200739" MODIFIED="1581993765334" TEXT="iter-tree-explorer-test.cpp:343"/>
</node>
<node CREATED="1581992139781" ID="ID_1486869166" MODIFIED="1581992148980" TEXT="util::join &#xfc;ber einen transformIter">
<node CREATED="1581992186951" ID="ID_510132051" MODIFIED="1581992235886" TEXT="transformIter kan Ret-Type nicht abgreifen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
src/lib/itertools.hpp:805
</p>
<p>
error: no type named 'Ret' in 'struct lib::meta::_Fun&lt;std::__cxx11::basic_string&lt;char&gt; (*)(const std::__cxx11::basic_string&lt;char&gt;&amp;) noexcept, void&gt;'
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1581992163401" ID="ID_1538196186" MODIFIED="1581993587078" TEXT="src/lib/variant.hpp:549:3: required from here"/>
<node CREATED="1581994935333" ID="ID_1128036242" MODIFIED="1581994936473" TEXT="test-nexus.cpp:50"/>
<node CREATED="1581993620189" ID="ID_868294584" MODIFIED="1581994635577" TEXT="ebenfalls via stringify()">
<node CREATED="1581993588898" ID="ID_1089387725" MODIFIED="1581994651213" TEXT="format-helper-test.cpp:142"/>
<node CREATED="1581994623271" ID="ID_628781534" MODIFIED="1581994658943" TEXT="tree-mutator-binding-test.cpp 420"/>
</node>
</node>
<node CREATED="1581994485434" ID="ID_942628679" MODIFIED="1581994495082" TEXT="MutationMessage">
<node CREATED="1581994497448" ID="ID_635292284" MODIFIED="1581994499252" TEXT="von mutation-message-test.cpp">
<node CREATED="1581994524698" ID="ID_582179423" MODIFIED="1581994535359" TEXT="kann nicht MutaionMessage-ctor ausw&#xe4;hlen"/>
</node>
</node>
<node CREATED="1581993910615" ID="ID_439067077" MODIFIED="1581993928904" TEXT="meta::_Fun Type-Deduction">
<node CREATED="1581993931924" ID="ID_1676073018" MODIFIED="1581993936207" TEXT="von item-wrapper-test.cpp:315">
<node CREATED="1581993971527" ID="ID_1616033054" MODIFIED="1581993977618" TEXT="ruft wrapper.hpp FunctionResult"/>
<node CREATED="1581994006526" ID="ID_1829879519" MODIFIED="1581994013677" TEXT="function-closure.hpp: _chain"/>
</node>
<node CREATED="1581994029929" ID="ID_20368460" MODIFIED="1581994030643" TEXT="no type named &apos;Args&apos; in &apos;struct lib::meta::_Fun&lt;int (*)() noexcept, void&gt;&apos;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1581995421239" ID="ID_1730281364" MODIFIED="1581995495636" TEXT="mutma&#xdf;liche Probleme">
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581995443649" ID="ID_986769823" MODIFIED="1581995498074" TEXT="STL collection duck detector greift nicht mehr">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1581995510176" ID="ID_1166388129" MODIFIED="1581995518450" TEXT="util-coll-Pr&#xe4;dikate"/>
<node CREATED="1581995535628" ID="ID_829639067" MODIFIED="1581995540536" TEXT="TreeExplorer"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1581995458449" ID="ID_524595490" MODIFIED="1581995499994" TEXT="meta::_Fun Type-Deduction greift nicht mehr">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1581995542307" ID="ID_1935687224" MODIFIED="1581995545415" TEXT="transformIterator"/>
<node CREATED="1581995546475" ID="ID_1004262725" MODIFIED="1581995552782" TEXT="stringify"/>
<node CREATED="1581995553206" ID="ID_984495822" MODIFIED="1581995556030" TEXT="util::join"/>
</node>
</node>
</node>
</node>
</node>