Library: fix follow-up problems with const correctness
...the improved const correctness on STL iterators uncovered another latent problem with out diagnositc format helper, which provide consistently rounded float and double output, but failed to take CV-qualifiaction into account
This commit is contained in:
parent
e176e54004
commit
0df0fd001e
5 changed files with 163 additions and 46 deletions
|
|
@ -168,12 +168,15 @@ namespace util {
|
|||
* by boost::lexical_cast. For double or float values, hard wired
|
||||
* rounding to a fixed number of digits will be performed, to yield
|
||||
* a predictable display of printed unit-test results.
|
||||
* @remark while the actual parameter is passed by const-ref,
|
||||
* cv-qualifiactions and references are stripped from the type
|
||||
*/
|
||||
template<typename TY>
|
||||
inline std::string
|
||||
toString (TY const& val) noexcept
|
||||
{
|
||||
return StringConv<TY>::invoke (val);
|
||||
using PlainVal = typename lib::meta::Strip<TY>::TypeReferred;
|
||||
return StringConv<PlainVal>::invoke (val);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ namespace meta {
|
|||
struct Unwrap<X*>
|
||||
: std::true_type
|
||||
{
|
||||
using Type = typename std::remove_cv<X>::type;
|
||||
using Type = remove_cv_t<X>;
|
||||
|
||||
static Type&
|
||||
extract (const X* ptr)
|
||||
|
|
@ -246,10 +246,10 @@ namespace meta {
|
|||
template<typename X>
|
||||
struct Strip
|
||||
{
|
||||
using TypeUnconst = typename std::remove_cv<X> ::type;
|
||||
using TypeReferred = typename std::remove_reference<TypeUnconst>::type;
|
||||
using TypePointee = typename std::remove_pointer<TypeReferred> ::type;
|
||||
using TypePlain = typename std::remove_cv<TypePointee> ::type;
|
||||
using TypeUnconst = remove_cv_t<X>;
|
||||
using TypeReferred = remove_reference_t<TypeUnconst>;
|
||||
using TypePointee = remove_pointer_t<TypeReferred>;
|
||||
using TypePlain = remove_cv_t<TypePointee>;
|
||||
|
||||
using Type = typename Unwrap<TypePlain>::Type;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -347,8 +347,11 @@ namespace util {
|
|||
* the danger of creating much header inclusion and code size bloat. A more
|
||||
* elaborate, [extended solution](\ref lib::toString), including _lexical conversions
|
||||
* for numbers,_ is defined in format-obj.hpp
|
||||
* @tparam X the nominal type to base the string conversion on; should be
|
||||
* a plain type (class or value) without CV-qualification and references
|
||||
* @note any exceptions during string conversion are caught and silently ignored;
|
||||
* the returned string indicates "↯" in this case.
|
||||
* @see util::toString() a user friendly front-end
|
||||
*/
|
||||
template<typename X, typename COND =void>
|
||||
struct StringConv
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "lib/format-util.hpp"
|
||||
#include "lib/format-string.hpp"
|
||||
#include "lib/iter-adapter-stl.hpp"
|
||||
#include "lib/test/test-helper.hpp"
|
||||
#include "lib/error.hpp"
|
||||
|
||||
#include <vector>
|
||||
|
|
@ -215,7 +216,7 @@ namespace test {
|
|||
"6.6--+--"
|
||||
"7.7--+--"
|
||||
"8.8--+--"
|
||||
"9.9");
|
||||
"9.9"_expect);
|
||||
CHECK (join (transformIterator(eachElm(dubious), justCount))
|
||||
== "Nr.01(0.0), "
|
||||
"Nr.02(2.2), "
|
||||
|
|
@ -226,7 +227,7 @@ namespace test {
|
|||
"Nr.07(13.2), "
|
||||
"Nr.08(15.4), "
|
||||
"Nr.09(17.6), "
|
||||
"Nr.10(19.8)" );
|
||||
"Nr.10(19.8)"_expect);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -54407,8 +54407,7 @@
|
|||
das ist der wichtigste Part: ich grenze mich hier explizit von der STL ab;  ein »Lumiera Forward Iterator« ist nicht eine <i>besondere Art von Pointer</i> — wir wissen sonst wirklich nichts, und wir verzichten auf ein absolut optimale Performance. Und wir bieten <b>keinerlei</b>  weitere Features, wie Rückwärts-Iteration, random-access, Löschen und Einfügen. Einen einmal verbrauchten Iterator kann man nur noch wegwerfen.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -54431,8 +54430,7 @@
|
|||
offensichtlich habe ich das gleiche Problem hier mehrfach gelöst und das dann wieder vergessen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
<node CREATED="1684280227062" ID="ID_1267159955" MODIFIED="1684280309727" TEXT="meta::TypeBinding<IT> ("lib/meta/value-type-binding.hpp")"/>
|
||||
<node CREATED="1684280251514" ID="ID_1628114025" MODIFIED="1684280266180" TEXT="meta::RefTraits<TY> ("lib/meta.hpp")"/>
|
||||
|
|
@ -70514,10 +70512,10 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684283054061" ID="ID_308870405" MODIFIED="1684283070409" TEXT="besseres Schema entwickeln">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684283167742" ID="ID_1215524261" MODIFIED="1684283172974" TEXT="Nutzung aufklären">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1684283054061" ID="ID_308870405" MODIFIED="1684705269237" TEXT="besseres Schema entwickeln">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#323686" CREATED="1684283167742" FOLDED="true" ID="ID_1215524261" MODIFIED="1684705263433" TEXT="Nutzung aufklären">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1684283181124" ID="ID_1050927524" MODIFIED="1684283195247" TEXT="(zum Glück) noch ein relativ abgeschlossenes Ökosystem">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
|
|
@ -70534,8 +70532,7 @@
|
|||
denn diese ist am aller fragwürdigsten
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<node CREATED="1684283608938" ID="ID_789340133" MODIFIED="1684283616371" TEXT="iter-adapter">
|
||||
<node CREATED="1684283310011" ID="ID_990692893" MODIFIED="1684283370038" TEXT="IterAdapter"/>
|
||||
<node CREATED="1684283378578" ID="ID_1166144503" MODIFIED="1684283379781" TEXT="RangeIter"/>
|
||||
|
|
@ -70607,8 +70604,7 @@
|
|||
...was wohl genau daran liegt, daß das TypeBinding bisher konzeptionell "daneben" war
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -70671,8 +70667,7 @@
|
|||
hier ist ein Hinweis auf <b>TICKET #1125 : get rid of Val</b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684285185549" ID="ID_524136739" MODIFIED="1684285230007" TEXT="gefährlich">
|
||||
|
|
@ -70694,17 +70689,57 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684285740036" ID="ID_265016247" MODIFIED="1684285746031" TEXT="Umbau-Plan">
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684283073854" ID="ID_1161646513" MODIFIED="1684705071997" TEXT="Nutzung vereinheitlichen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684283085033" ID="ID_637878819" MODIFIED="1684283100218" TEXT="der meta::RefWrapper wird nur von den Itertools genutzt"/>
|
||||
<node CREATED="1684283104526" ID="ID_1800561250" MODIFIED="1684283143956" TEXT="TypeBinding wird von vielen anderen Lumiera-Forward-Iteratoren genutzt"/>
|
||||
<node CREATED="1684283144761" ID="ID_378332003" MODIFIED="1684705069855" STYLE="fork" TEXT="manche machen's immer noch direkt"/>
|
||||
<node CREATED="1684705076909" ID="ID_318662270" MODIFIED="1684705228200" TEXT="bessere Struktur">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node COLOR="#338800" CREATED="1684705081314" ID="ID_869903897" MODIFIED="1684705238444" TEXT="meta::RefTraits für die generische Typ-Behandlung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
analog zu meta::Strip, nur weniger aggressiv
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Referenzen werden nivelliert
|
||||
</li>
|
||||
<li>
|
||||
Pointer bleiben ein separater Typ
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684705201545" ID="ID_1849546034" MODIFIED="1684705238444" TEXT="ValueTypeBindings speziell für Iteratoren und nested Typedefs">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684705232117" ID="ID_1509834522" MODIFIED="1684705238445" TEXT="bauen nun aufeinander auf">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684285740036" ID="ID_265016247" MODIFIED="1684705059043" TEXT="schrittweiser Umbau">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1684285746921" ID="ID_453018815" MODIFIED="1684453850245" TEXT="erst einmal alles in TypeBinding zusammenführen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684285761285" ID="ID_399824938" MODIFIED="1684453848315" TEXT="dort zusätzliche Variante base_type einführen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684285782158" ID="ID_1046713320" MODIFIED="1684627513659" TEXT="dann Semantik von value_type ändern">
|
||||
<node COLOR="#338800" CREATED="1684285782158" FOLDED="true" ID="ID_1046713320" MODIFIED="1684705028570" TEXT="dann Semantik von value_type ändern">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684457336456" ID="ID_668731240" MODIFIED="1684457339328" TEXT="Probleme">
|
||||
<node CREATED="1684457340219" ID="ID_349629435" MODIFIED="1684457345698" TEXT="const-correctness">
|
||||
<node COLOR="#435e98" CREATED="1684457336456" FOLDED="true" ID="ID_668731240" MODIFIED="1684705007675" TEXT="Probleme">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node COLOR="#435e98" CREATED="1684457340219" ID="ID_349629435" MODIFIED="1684704996420" TEXT="const-correctness">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684457356442" ID="ID_718673785" MODIFIED="1684457361150" TEXT="iter-curstor-test">
|
||||
<node CREATED="1684457376306" ID="ID_1078884821" MODIFIED="1684457376306" TEXT="CIter = IterCursor<Numz::const_iterator>;"/>
|
||||
<node CREATED="1684457442699" ID="ID_492340662" MODIFIED="1684457443679" TEXT="IterStateWrapper<typename iter::CursorGear<IT>::value_type, iter::CursorGear<IT>>"/>
|
||||
|
|
@ -70724,7 +70759,8 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684457756467" ID="ID_1799112543" MODIFIED="1684457763201" TEXT="pointer strip">
|
||||
<node COLOR="#435e98" CREATED="1684457756467" ID="ID_1799112543" MODIFIED="1684704996421" TEXT="pointer strip">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684457764640" ID="ID_589412032" MODIFIED="1684457771969" TEXT="scoped-collection-test">
|
||||
<node CREATED="1684457794295" ID="ID_1727116794" MODIFIED="1684457799167" TEXT="CollI = ScopedCollection<uint>"/>
|
||||
<node CREATED="1684457816624" ID="ID_1452815222" MODIFIED="1684457817291" TEXT="CollI coll (20, CollI::pull(source.begin()));"/>
|
||||
|
|
@ -70744,7 +70780,7 @@
|
|||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684459906255" ID="ID_1378023279" MODIFIED="1684626459648" TEXT="placement-Index">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684459919427" ID="ID_1436515063" MODIFIED="1684626423578" TEXT="has_any (elementsInScope, equalsTheElement);">
|
||||
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1436515063" ENDARROW="Default" ENDINCLINATION="953;0;" ID="Arrow_ID_233825462" SOURCE="ID_845601504" STARTARROW="None" STARTINCLINATION="953;0;"/>
|
||||
</node>
|
||||
|
|
@ -70775,7 +70811,7 @@
|
|||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684460327937" ID="ID_1243195068" MODIFIED="1684626167397" TEXT="JobTicket::buildProvisionSpec">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684460427537" ID="ID_1226575987" MODIFIED="1684460443243" TEXT="von: MockSegmentation::buildTicketFromSpec(GenNode)">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
|
|
@ -70830,7 +70866,7 @@
|
|||
<node CREATED="1684539670393" ID="ID_310218838" MODIFIED="1684539778471" TEXT="CON = std::shared_ptr<lib::IterSource<const char*> >"/>
|
||||
<node CREATED="1684539670393" ID="ID_1854935145" MODIFIED="1684539789446" TEXT="IterAdapter<POS, CON>::reference = const char&"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684539583917" ID="ID_112700804" MODIFIED="1684539611127" TEXT="hier werden Typen aber ziemlich falsch zugeornet">
|
||||
<node COLOR="#ff0000" CREATED="1684539583917" ID="ID_112700804" MODIFIED="1684539611127" TEXT="hier werden Typen aber ziemlich falsch zugeornet">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1684540675424" ID="ID_1620874341" MODIFIED="1684540690953">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -70858,12 +70894,12 @@
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684540984894" ID="ID_71878097" MODIFIED="1684541006615" TEXT="also muß das Desaster wohl direkt in ValueTypeBinding passieren">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684540984894" ID="ID_71878097" MODIFIED="1684701338581" TEXT="also muß das Desaster wohl direkt in ValueTypeBinding passieren">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684541044909" ID="ID_829271566" MODIFIED="1684541051786" TEXT="was ist std::remove_pointer_t<POS>">
|
||||
<node COLOR="#435e98" CREATED="1684541044909" ID="ID_829271566" MODIFIED="1684701330550" TEXT="was ist std::remove_pointer_t<POS>">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684541062585" ID="ID_690843749" MODIFIED="1684541091476" TEXT="und wie ergibt sich dann daraus reference = char const&">
|
||||
<node COLOR="#435e98" CREATED="1684541062585" ID="ID_690843749" MODIFIED="1684701330550" TEXT="und wie ergibt sich dann daraus reference = char const&">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -70888,7 +70924,7 @@
|
|||
<node CREATED="1684545909915" ID="ID_493146886" MODIFIED="1684545972282" TEXT="damit geht es an join(CON, delim) mit CON = initializer_list<string> const&"/>
|
||||
</node>
|
||||
<node CREATED="1684546028926" ID="ID_34906560" MODIFIED="1684546088662" TEXT="stringify(IT&&) with IT = RangeIter<const string *>">
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684546334838" ID="ID_547357409" MODIFIED="1684546350340" TEXT="woher kommt hier der const string* ?">
|
||||
<node COLOR="#435e98" CREATED="1684546334838" ID="ID_547357409" MODIFIED="1684701330549" TEXT="woher kommt hier der const string* ?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1684626094980" ID="ID_829378008" MODIFIED="1684626104491" TEXT="von einem direkt programmierten Type-Binding"/>
|
||||
<node COLOR="#338800" CREATED="1684626105086" ID="ID_1025913285" MODIFIED="1684626122919" TEXT="durch ValueTypeBinding<IT>::value_type ersetzt">
|
||||
|
|
@ -70908,13 +70944,13 @@
|
|||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1684546491857" ID="ID_1736947794" MODIFIED="1684546499939" TEXT="RangeIter<const string *>"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684546581725" ID="ID_1681461344" MODIFIED="1684546725943" TEXT="also ValueTypeBinding<TY *> paßt hier nicht">
|
||||
<arrowlink COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="64;-2;" ID="Arrow_ID_926464248" STARTARROW="None" STARTINCLINATION="-265;16;"/>
|
||||
<arrowlink COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="44;-16;" ID="Arrow_ID_926464248" STARTARROW="None" STARTINCLINATION="-265;16;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684546673741" ID="ID_164341663" MODIFIED="1684626063307" TEXT="RangeIter<TY *> geht nicht korrekt mit Pointern um">
|
||||
<linktarget COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="64;-2;" ID="Arrow_ID_926464248" SOURCE="ID_1681461344" STARTARROW="None" STARTINCLINATION="-265;16;"/>
|
||||
<linktarget COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="44;-16;" ID="Arrow_ID_926464248" SOURCE="ID_1681461344" STARTARROW="None" STARTINCLINATION="-265;16;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1684546753135" HGAP="35" ID="ID_1396741432" MODIFIED="1684546926029" TEXT="operator*() : *p_ fordert const string ⟼ const string * &" VSHIFT="22"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684546891740" HGAP="40" ID="ID_915912294" MODIFIED="1684626059090" TEXT="Hinweis: der Kommentar impliziert "Magic"" VSHIFT="7">
|
||||
|
|
@ -70961,7 +70997,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684621584827" ID="ID_1014436557" MODIFIED="1684621610333" TEXT="Zwischen-Befund / Reflexion">
|
||||
<node COLOR="#435e98" CREATED="1684621584827" ID="ID_1014436557" MODIFIED="1684704975335" TEXT="Zwischen-Befund / Reflexion">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node COLOR="#338800" CREATED="1684621612562" ID="ID_641071847" MODIFIED="1684621699986" TEXT="diverse Probleme mit der const-correctness aufgeklärt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -70983,9 +71019,90 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684701350915" ID="ID_43056917" MODIFIED="1684704973575" TEXT="Folge-Problem mit FormatUtils_test">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684701367882" ID="ID_561133382" MODIFIED="1684701388742" TEXT="bessere const-correctness hat Folgen...">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1684460928713" ID="ID_781322960" MODIFIED="1684543483308" TEXT="Analyse">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1684701390886" ID="ID_1127329674" MODIFIED="1684701503856" TEXT="StringConv<double> ist speziell definiert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
der Double wird nämlich (wohlweislich) für diese Diagnostic-Anzeige auf 8 Stellen gerundet ... genau wegen Probemen wie hier
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node CREATED="1684701416058" ID="ID_154721343" MODIFIED="1684701430372" TEXT="aber StringConv<const double> nicht"/>
|
||||
<node CREATED="1684701438209" ID="ID_195122706" MODIFIED="1684701450439" TEXT="...und fällt daher in den generischen lexical-cast-Zweig"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684701451533" ID="ID_223521412" MODIFIED="1684701462222" TEXT="wodurch der Test scheitert">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1684701511699" ID="ID_1180510868" MODIFIED="1684701562681" TEXT="in den Testdaten ist nämlich »Zahlenstaub«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
1 * 1.1 = 1.100000000000000000000000000001
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1684701577650" ID="ID_508691413" MODIFIED="1684701594347" TEXT="und genau deshalb haben wir ja diese spezielle Formatfunktion!">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684702676714" ID="ID_902426926" MODIFIED="1684704944797" TEXT="welches Problem ist hier zu lösen?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1684702728539" ID="ID_672513912" MODIFIED="1684702799208" TEXT="util::StringConv<val> ist inkonsistent bzw. CV">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
konkret: double verhält sich anders als const double oder volatile double
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1684703187279" ID="ID_258062015" MODIFIED="1684703232937" TEXT="andererseits ist StringConv ein Implementierungs-Delegate"/>
|
||||
<node CREATED="1684703233757" ID="ID_138153655" MODIFIED="1684704163826" TEXT="und sollte eigentlich von util::toString aufgerufen werden">
|
||||
<arrowlink COLOR="#233986" DESTINATION="ID_812758633" ENDARROW="Default" ENDINCLINATION="24;-33;" ID="Arrow_ID_1690463920" STARTARROW="None" STARTINCLINATION="-82;4;"/>
|
||||
</node>
|
||||
<node CREATED="1684704008121" ID="ID_947184317" MODIFIED="1684704119578" TEXT="header-Includes (Gewicht) bedenken...!">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
lib/meta/util.hpp wird pervasiv verwendet und darf daher nahezu keine weiteren Includes vorraussetzen
|
||||
</li>
|
||||
<li>
|
||||
demgegenüber wiegt lib/meta/trait.hpp schon mehr
|
||||
</li>
|
||||
<li>
|
||||
und die Format-Funktionen können auch Itertools etc. mit includieren (denn sie werden i.d.r. aus der Implementierung heraus verwendet)
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684703889449" ID="ID_812758633" MODIFIED="1684704939920" TEXT="⟹ util::toString (format-util.hpp) sollte CV strippen">
|
||||
<linktarget COLOR="#233986" DESTINATION="ID_812758633" ENDARROW="Default" ENDINCLINATION="24;-33;" ID="Arrow_ID_1690463920" SOURCE="ID_138153655" STARTARROW="None" STARTINCLINATION="-82;4;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684460928713" ID="ID_781322960" MODIFIED="1684705027179" TEXT="Analyse">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1684543492882" ID="ID_1765561986" MODIFIED="1684627380924" TEXT="zunächst value-type-binding-test durchprüfen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684543612090" ID="ID_847618892" MODIFIED="1684543794926" TEXT="Problem-1">
|
||||
|
|
@ -71036,13 +71153,6 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684283073854" ID="ID_1161646513" MODIFIED="1684283082079" TEXT="Nutzung vereinheitlichen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1684283085033" ID="ID_637878819" MODIFIED="1684283100218" TEXT="der meta::RefWrapper wird nur von den Itertools genutzt"/>
|
||||
<node CREATED="1684283104526" ID="ID_1800561250" MODIFIED="1684283143956" TEXT="TypeBinding wird von vielen anderen Lumiera-Forward-Iteratoren genutzt"/>
|
||||
<node CREATED="1684283144761" ID="ID_378332003" MODIFIED="1684283152252" TEXT="manche machen's immer noch direkt"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue