Buffer-Provider: investigate Problem with embedded type-constructor-arguments
This is a possible extension which frequently comes up again during the design of the Engine. Basically, the `TypeHandler` in the metadata-descriptor used by the `BufferProvder` could capture additional context-arguments, which are then later passed to an object instance embedded into the buffer. Yesterday I attempted to use this feature for a simple demonstration in `NodeBasic_test`, just to find out that passing additional constructor arguments to the capture fails with a confusing compilation error message. This failure could be traced down to the function binder; and what at first sight seemed to be a compiler error, turned out to be a quite logical limitation: When we »close« some objects of the constructor, but delay the construction itself, we'll have to store a copy in the constructor-λ. And this implies, that we'll have to change the types used for instantiation of the compiler, so that the construction-function can be invoked by passing references from the captured copy of the additional arguments. When naively passing those forwarded arguments into the std::bind()-call, the resulting functor will fail at instantiation, when the compiler attempts to generate the function-call `operator()` see: https://stackoverflow.com/q/30968573/444796
This commit is contained in:
parent
39fee624a9
commit
03b17c78da
4 changed files with 301 additions and 146 deletions
136
research/try.cpp
136
research/try.cpp
|
|
@ -1,23 +1,31 @@
|
||||||
/* try.cpp - to try out and experiment with new features....
|
/* try.cpp - to try out and experiment with new features....
|
||||||
* scons will create the binary bin/try
|
* scons will create the binary bin/try
|
||||||
*/
|
*/
|
||||||
|
// 12/24 - investigate problem when perfect-forwarding into a binder
|
||||||
// 12/24 - investigate overload resolution on a templated function similar to std::get
|
// 12/24 - investigate overload resolution on a templated function similar to std::get
|
||||||
// 11/24 - how to define a bare object location comparison predicate
|
// 11/24 - how to define a bare object location comparison predicate
|
||||||
// 11/23 - prototype for grouping from iterator
|
// 11/23 - prototype for grouping from iterator
|
||||||
|
|
||||||
|
|
||||||
/** @file try.cpp
|
/** @file try.cpp
|
||||||
* Find out about the conditions when an overload of a function template is picked.
|
* Partially binding / closing arguments of a function with _perfect forwarding_ can be problematic.
|
||||||
* This is an investigation regarding the proper way to overload `std::get`
|
* The problem was encountered in the steam::engine::TypeHandler::create() - function with additional
|
||||||
* especially when the base class of the custom type itself is a tuple.
|
* constructor arguments. Obviously, we want these to be _perfect forwarded_ into the actual constructor,
|
||||||
|
* but the binding must store a captured copy of these values, because the handler can be used repeatedly.
|
||||||
*
|
*
|
||||||
* As it turns out, overload resolution works as expected; rather the implementation
|
* The actual problem is caused by the instantiation of the target function, because the arguments are
|
||||||
* of `std::get` causes the problems, as it triggers an assertion immediately when
|
* also passed into the binding mechanism by _perfect forwarding._ The target function template will thus
|
||||||
* instantiated with out-of-bounds parameters, which prevents the overload resolution
|
* be instantiated to expect RValues, but the binder can only pass a copy by-reference. At this point then
|
||||||
* to commence and directly terminates the compilation. The reason is that this
|
* the problem materialises (with a rather confusing error message).
|
||||||
* standard implementation relies on std::tuple_element<I,T> to do the actual
|
*
|
||||||
* bounds checking. This can be demonstrated by extracting the standard
|
* The Problem was already discussed on [Stackoverflow]
|
||||||
* implementation and our custom implementation under a different name.
|
*
|
||||||
|
* A simple workaround is to change the types in the instantiation into references;
|
||||||
|
* obviously this can not work for some argument types; if a more elaborate handling is necessary,
|
||||||
|
* the [handling of bound arguments] should be considered in detail.
|
||||||
|
*
|
||||||
|
* [Stackoverflow]: https://stackoverflow.com/q/30968573/444796
|
||||||
|
* [handling of bound arguments]: http://en.cppreference.com/w/cpp/utility/functional/bind#Member_function_operator.28.29
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef unsigned int uint;
|
typedef unsigned int uint;
|
||||||
|
|
@ -26,94 +34,52 @@ typedef unsigned int uint;
|
||||||
#include "lib/format-cout.hpp"
|
#include "lib/format-cout.hpp"
|
||||||
#include "lib/test/test-helper.hpp"
|
#include "lib/test/test-helper.hpp"
|
||||||
#include "lib/test/diagnostic-output.hpp"
|
#include "lib/test/diagnostic-output.hpp"
|
||||||
#include "lib/hetero-data.hpp"
|
|
||||||
#include "lib/util.hpp"
|
#include "lib/util.hpp"
|
||||||
|
|
||||||
#include <utility>
|
#include <functional>
|
||||||
#include <string>
|
|
||||||
#include <tuple>
|
|
||||||
|
|
||||||
using lib::test::showTypes;
|
using std::cout;
|
||||||
using std::tuple;
|
using std::endl;
|
||||||
|
using std::forward;
|
||||||
|
using std::placeholders::_1;
|
||||||
|
|
||||||
struct B { };
|
template<typename...ARGS>
|
||||||
|
inline void
|
||||||
|
dummy (int extra, ARGS&& ...args)
|
||||||
|
{
|
||||||
|
cout << extra <<"▷";
|
||||||
|
((cout << forward<ARGS>(args) << "•"), ...)
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
struct D1 : B { };
|
template<typename...ARGS>
|
||||||
|
auto
|
||||||
|
bound (ARGS&& ...args)
|
||||||
|
{
|
||||||
|
return std::bind (dummy<ARGS&...>, _1, forward<ARGS>(args) ...);
|
||||||
|
}
|
||||||
|
|
||||||
struct D2 : D1 { };
|
void
|
||||||
|
fun (int&& a)
|
||||||
|
{
|
||||||
|
std::cout << a << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
string getty (B&) { return "getty-B&"; }
|
|
||||||
string getty (D1&&){ return "getty-D1&&"; }
|
|
||||||
string getty (D1&) { return "getty-D1&"; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
string getty (tuple<TS...>&) { return "getty-tuple& "+showTypes<TS...>(); }
|
|
||||||
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
struct F : tuple<TS...> { };
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
struct FD1 : F<TS...> {};
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
struct FD2 : FD1<TS...> {};
|
|
||||||
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
string getty (FD1<TS...>&) { return "getty-FD1& "+showTypes<TS...>(); }
|
|
||||||
|
|
||||||
|
|
||||||
template<class...TS>
|
|
||||||
string getty (lib::HeteroData<TS...>&) { return "getty-Hetero& "+showTypes<TS...>(); }
|
|
||||||
|
|
||||||
|
|
||||||
template<std::size_t __i, typename... _Elements>
|
|
||||||
// constexpr std::__tuple_element_t<__i, tuple<_Elements...>>&
|
|
||||||
decltype(auto)
|
|
||||||
gritty(tuple<_Elements...>& __t) noexcept
|
|
||||||
{ return std::__get_helper<__i>(__t); }
|
|
||||||
|
|
||||||
template<size_t I, typename...DATA>
|
|
||||||
constexpr std::tuple_element_t<I, lib::HeteroData<DATA...>>&
|
|
||||||
gritty (lib::HeteroData<DATA...> & heDa) noexcept
|
|
||||||
{
|
|
||||||
return heDa.template get<I>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int, char**)
|
main (int, char**)
|
||||||
{
|
{
|
||||||
D2 d2;
|
dummy (55,2,3,5,8);
|
||||||
SHOW_EXPR(getty(d2));
|
|
||||||
|
|
||||||
FD2<int, char**> fd2;
|
auto bun = bound (2,3,5);
|
||||||
SHOW_EXPR(getty(fd2));
|
using Bun = decltype(fun);
|
||||||
|
SHOW_TYPE(Bun)
|
||||||
|
bun (55);
|
||||||
|
|
||||||
|
auto bi = std::bind (fun, 55);
|
||||||
|
// bi(); /////////// this invocation does not compile, because the Binder passes a copy to the RValue-Ref
|
||||||
|
|
||||||
using Het = lib::HeteroData<uint,double>;
|
cout << "\n.gulp." <<endl;
|
||||||
Het h1;
|
|
||||||
SHOW_EXPR(getty(h1));
|
|
||||||
// SHOW_EXPR(std::get<1>(h1) = 5.5)
|
|
||||||
SHOW_EXPR(h1.get<1>() = 5.5)
|
|
||||||
|
|
||||||
using Constructor = Het::Chain<bool,string>;
|
|
||||||
auto h2 = Constructor::build (true, "Ψ");
|
|
||||||
h2.linkInto(h1);
|
|
||||||
|
|
||||||
using Het2 = Constructor::ChainType;
|
|
||||||
Het2& chain2 = Constructor::recast (h1);
|
|
||||||
SHOW_TYPE(Het2)
|
|
||||||
SHOW_EXPR(getty(chain2));
|
|
||||||
// SHOW_EXPR(std::get<1>(chain2))
|
|
||||||
// SHOW_EXPR(std::get<3>(chain2))
|
|
||||||
SHOW_EXPR(chain2.get<1>())
|
|
||||||
SHOW_EXPR(chain2.get<3>())
|
|
||||||
SHOW_EXPR(gritty<1>(chain2))
|
|
||||||
SHOW_EXPR(gritty<3>(chain2))
|
|
||||||
|
|
||||||
cout << "\n.gulp.\n";
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,14 +133,19 @@ namespace engine {
|
||||||
, identity{deriveCombinedTypeIdenity<CTOR,DTOR>()}
|
, identity{deriveCombinedTypeIdenity<CTOR,DTOR>()}
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/** builder function defining a TypeHandler
|
/** builder function for a pre-configured TypeHandler to place a
|
||||||
* to place an object into the buffer,
|
* new instance into the buffer, possibly with given ctor arguments.
|
||||||
* possibly with given ctor arguments. */
|
* @warning additional ctor arguments will be materialised
|
||||||
|
* and stored as copy in the TypeHandler, for repeated use.
|
||||||
|
* @remark need to change the instantiation type to LValue-ref
|
||||||
|
* as pointed out on [Stackoverflow]
|
||||||
|
* [Stackoverflow]: https://stackoverflow.com/q/30968573/444796
|
||||||
|
*/
|
||||||
template<class X, typename...ARGS>
|
template<class X, typename...ARGS>
|
||||||
static TypeHandler
|
static TypeHandler
|
||||||
create (ARGS&& ...args)
|
create (ARGS&& ...args)
|
||||||
{
|
{
|
||||||
return TypeHandler ( bind (buildIntoBuffer<X,ARGS...>, _1, forward<ARGS> (args)...)
|
return TypeHandler ( bind (buildIntoBuffer<X,ARGS&...>, _1, forward<ARGS> (args)...)
|
||||||
, destroyInBuffer<X>);
|
, destroyInBuffer<X>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,7 @@ namespace test {
|
||||||
// CHECK (m1.param );
|
// CHECK (m1.param );
|
||||||
|
|
||||||
BufferProvider& provider = DiagnosticBufferProvider::build();
|
BufferProvider& provider = DiagnosticBufferProvider::build();
|
||||||
BuffHandle buff = provider.lockBufferFor<long>(); ////////////////////////////OOO can not pass ctor-args directly here
|
BuffHandle buff = provider.lockBufferFor<long> (-55);
|
||||||
buff.accessAs<long>() = -55;
|
|
||||||
CHECK (buff.isValid());
|
CHECK (buff.isValid());
|
||||||
CHECK (buff.accessAs<long>() == -55);
|
CHECK (buff.accessAs<long>() == -55);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24275,9 +24275,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1583525076319" ID="ID_815242494" MODIFIED="1583525638834" TEXT="geht so nicht -- Widgets nicht sicher addressierbar">
|
<node CREATED="1583525076319" ID="ID_815242494" MODIFIED="1583525638834" TEXT="geht so nicht -- Widgets nicht sicher addressierbar">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
es gibt keinen <i>einfachen und performanten</i> Mechanismus, über den ich mir irgend ein Widget merken und später noch sicher addressieren kann, selbst wenn eine Diff-Nachricht inzwischen die Anzeige umbaut und das bezeichnete Element inzwischen gelöscht ist. Und zwar deshalb, weil wir hier von echten einfachen GTK-Widgets reden, und nicht von unseren "Tangibles", die am UI-Bus hängen. Selbst wenn wir noch gesicherte »Mediatoren« dazwischenschalten, also z.B. diese Nachrichten über jeweils ein zuständiges model::Tangible zustellen, dann haben wiederum diese das identische Problem: sie bekommen nicht garantiert mit, wenn eines der von ihnen verwalteten Widgets inzwischen nicht mehr existiert. Wir bräuchten
|
es gibt keinen <i>einfachen und performanten</i> Mechanismus, über den ich mir irgend ein Widget merken und später noch sicher addressieren kann, selbst wenn eine Diff-Nachricht inzwischen die Anzeige umbaut und das bezeichnete Element inzwischen gelöscht ist. Und zwar deshalb, weil wir hier von echten einfachen GTK-Widgets reden, und nicht von unseren "Tangibles", die am UI-Bus hängen. Selbst wenn wir noch gesicherte »Mediatoren« dazwischenschalten, also z.B. diese Nachrichten über jeweils ein zuständiges model::Tangible zustellen, dann haben wiederum diese das identische Problem: sie bekommen nicht garantiert mit, wenn eines der von ihnen verwalteten Widgets inzwischen nicht mehr existiert. Wir bräuchten
|
||||||
|
|
@ -24827,9 +24825,7 @@
|
||||||
<node CREATED="1611915545852" ID="ID_580313241" MODIFIED="1611915553582" TEXT="eine Zeit-Position"/>
|
<node CREATED="1611915545852" ID="ID_580313241" MODIFIED="1611915553582" TEXT="eine Zeit-Position"/>
|
||||||
<node CREATED="1611915554690" ID="ID_200419284" MODIFIED="1611915668706" TEXT="expliziter vertikaler Shift">
|
<node CREATED="1611915554690" ID="ID_200419284" MODIFIED="1611915668706" TEXT="expliziter vertikaler Shift">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
noch nicht klar, welche Rolle der spielt; ich sehe ihn erst mal vor, weil er möglich ist. Denkbar wäre, daß er durch User-Interaktion entsteht, oder aber auch systematisch generiert wird, um bestimmte Arten von Clips optisch abzusetzen
|
noch nicht klar, welche Rolle der spielt; ich sehe ihn erst mal vor, weil er möglich ist. Denkbar wäre, daß er durch User-Interaktion entsteht, oder aber auch systematisch generiert wird, um bestimmte Arten von Clips optisch abzusetzen
|
||||||
|
|
@ -25537,9 +25533,7 @@
|
||||||
<node CREATED="1540511879965" ID="ID_1507237353" MODIFIED="1540511884826" TEXT="Varianten denkbar">
|
<node CREATED="1540511879965" ID="ID_1507237353" MODIFIED="1540511884826" TEXT="Varianten denkbar">
|
||||||
<node CREATED="1540511887116" ID="ID_467242392" MODIFIED="1576282358073" TEXT="nicht-virtuelle Methode">
|
<node CREATED="1540511887116" ID="ID_467242392" MODIFIED="1576282358073" TEXT="nicht-virtuelle Methode">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...aber die gesamte Verankerungs-Aktion läßt sich rein auf Widget-Interface-Ebene machen.
|
...aber die gesamte Verankerungs-Aktion läßt sich rein auf Widget-Interface-Ebene machen.
|
||||||
|
|
@ -26300,9 +26294,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1576756331616" ID="ID_1376732304" MODIFIED="1576756364407" TEXT="Nein! auch dann brauchen wir noch eine Kette">
|
<node CREATED="1576756331616" ID="ID_1376732304" MODIFIED="1576756364407" TEXT="Nein! auch dann brauchen wir noch eine Kette">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
weil der Trigger irgendwo unten passiert, und nicht auf dem top-Level ViewHook
|
weil der Trigger irgendwo unten passiert, und nicht auf dem top-Level ViewHook
|
||||||
|
|
@ -27450,9 +27442,7 @@
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node COLOR="#435e98" CREATED="1677426176707" ID="ID_1699845140" MODIFIED="1677426300779" TEXT="bleibe bei »Außenbogen« und »Innenbogen«">
|
<node COLOR="#435e98" CREATED="1677426176707" ID="ID_1699845140" MODIFIED="1677426300779" TEXT="bleibe bei »Außenbogen« und »Innenbogen«">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
weil ich diese Benennungen von Anfang an auch so in FreeCAD verwendet habe, und jetzt nicht alles umbenennen möchte
|
weil ich diese Benennungen von Anfang an auch so in FreeCAD verwendet habe, und jetzt nicht alles umbenennen möchte
|
||||||
|
|
@ -29034,9 +29024,7 @@
|
||||||
<node CREATED="1557446482447" FOLDED="true" ID="ID_835188518" MODIFIED="1561827469138" TEXT="Lösung: Duck-Detector für Methoden-Name">
|
<node CREATED="1557446482447" FOLDED="true" ID="ID_835188518" MODIFIED="1561827469138" TEXT="Lösung: Duck-Detector für Methoden-Name">
|
||||||
<node CREATED="1557446494679" ID="ID_1259664145" MODIFIED="1557498707229" TEXT="verzichtet auf Signatur-Check">
|
<node CREATED="1557446494679" ID="ID_1259664145" MODIFIED="1557498707229" TEXT="verzichtet auf Signatur-Check">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
d.h. wenn zufällig das Interface auch eine Methode CloneInto() enthält, aber mit einer unpassenden Signatur
|
d.h. wenn zufällig das Interface auch eine Methode CloneInto() enthält, aber mit einer unpassenden Signatur
|
||||||
|
|
@ -29090,9 +29078,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1557446924907" ID="ID_1029661613" MODIFIED="1557498707229" TEXT="...was hier absolut naheliegend ist">
|
<node CREATED="1557446924907" ID="ID_1029661613" MODIFIED="1557498707229" TEXT="...was hier absolut naheliegend ist">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
nämlich immer dann, wenn man tatsächlich den CopySupport oder CloneSupport als Basis des Interfaces verwendet...
|
nämlich immer dann, wenn man tatsächlich den CopySupport oder CloneSupport als Basis des Interfaces verwendet...
|
||||||
|
|
@ -33199,9 +33185,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1567685388541" ID="ID_1586460223" MODIFIED="1567747074910">
|
<node CREATED="1567685388541" ID="ID_1586460223" MODIFIED="1567747074910">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
macht ggfs <i>ganz natürlich</i> einen box-shadow sichtbar
|
macht ggfs <i>ganz natürlich</i> einen box-shadow sichtbar
|
||||||
|
|
@ -33277,9 +33261,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1679072221005" ID="ID_744686625" MODIFIED="1679072247211">
|
<node COLOR="#435e98" CREATED="1679072221005" ID="ID_744686625" MODIFIED="1679072247211">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
<font face="Monospaced" size="2">ClipPresenter::determineRequiredVerticalExtension()</font>
|
<font face="Monospaced" size="2">ClipPresenter::determineRequiredVerticalExtension()</font>
|
||||||
|
|
@ -35265,9 +35247,7 @@
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
<node CREATED="1663955710647" HGAP="23" ID="ID_1436931569" MODIFIED="1663955749454" VSHIFT="17">
|
<node CREATED="1663955710647" HGAP="23" ID="ID_1436931569" MODIFIED="1663955749454" VSHIFT="17">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
weil dies die einzige Info ist,
|
weil dies die einzige Info ist,
|
||||||
|
|
@ -36594,9 +36574,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1533221649380" ID="ID_727991171" MODIFIED="1533221669408">
|
<node CREATED="1533221649380" ID="ID_727991171" MODIFIED="1533221669408">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
das ist ein <i>akzidentelles Problem</i>
|
das ist ein <i>akzidentelles Problem</i>
|
||||||
|
|
@ -37335,9 +37313,7 @@
|
||||||
<node CREATED="1614546235626" ID="ID_1042308082" MODIFIED="1614546278044" TEXT="am Ende brauchen wir dann auch noch die Metrik vom Layout(Canvas), für das Zeit-Delta"/>
|
<node CREATED="1614546235626" ID="ID_1042308082" MODIFIED="1614546278044" TEXT="am Ende brauchen wir dann auch noch die Metrik vom Layout(Canvas), für das Zeit-Delta"/>
|
||||||
<node CREATED="1615558270517" ID="ID_295152392" MODIFIED="1615558374895" TEXT="Widersprüchliche Ownership der UI-Position">
|
<node CREATED="1615558270517" ID="ID_295152392" MODIFIED="1615558374895" TEXT="Widersprüchliche Ownership der UI-Position">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
gehört diese nun dem Layout-Manager, oder gehört er der Geste?
|
gehört diese nun dem Layout-Manager, oder gehört er der Geste?
|
||||||
|
|
@ -37628,9 +37604,7 @@
|
||||||
<node CREATED="1616771255343" ID="ID_620255063" MODIFIED="1616771287475" TEXT="deshalb kann das Subject die Einrichtung nicht fix machen"/>
|
<node CREATED="1616771255343" ID="ID_620255063" MODIFIED="1616771287475" TEXT="deshalb kann das Subject die Einrichtung nicht fix machen"/>
|
||||||
<node CREATED="1616771294654" ID="ID_334680468" MODIFIED="1616771818181" TEXT="auch der Zeitpunkt ist nicht absolut festgelegt">
|
<node CREATED="1616771294654" ID="ID_334680468" MODIFIED="1616771818181" TEXT="auch der Zeitpunkt ist nicht absolut festgelegt">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -38431,9 +38405,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1619787626757" ID="ID_1522870458" MODIFIED="1619799442131" TEXT="und ist hier nicht gerechtfertigt">
|
<node CREATED="1619787626757" ID="ID_1522870458" MODIFIED="1619799442131" TEXT="und ist hier nicht gerechtfertigt">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
das Platzieren auf den Canvas ist <b>keine</b> high-Performance-Operation;<br />vielmehr ist es sogar <i>vernachlässigbar im Vergleich </i>zum Aufwand der Zeichen-Operationen; und letztere werden eben genau aus Performance-Gründen gebatcht und gebündelt....
|
das Platzieren auf den Canvas ist <b>keine</b> high-Performance-Operation;<br />vielmehr ist es sogar <i>vernachlässigbar im Vergleich </i>zum Aufwand der Zeichen-Operationen; und letztere werden eben genau aus Performance-Gründen gebatcht und gebündelt....
|
||||||
|
|
@ -82697,7 +82669,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<arrowlink COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" STARTARROW="None" STARTINCLINATION="651;43;"/>
|
<arrowlink COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" STARTARROW="None" STARTINCLINATION="645;44;"/>
|
||||||
<icon BUILTIN="forward"/>
|
<icon BUILTIN="forward"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1728582010084" ID="ID_814015395" MODIFIED="1728582033557" TEXT="muß implizit selber eine geeignete FeedManifold enthalten"/>
|
<node CREATED="1728582010084" ID="ID_814015395" MODIFIED="1728582033557" TEXT="muß implizit selber eine geeignete FeedManifold enthalten"/>
|
||||||
|
|
@ -88526,7 +88498,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734310333302" ID="ID_1944960168" MODIFIED="1734310341752" TEXT="jeweils eine Manifold erstellen"/>
|
<node CREATED="1734310333302" ID="ID_1944960168" MODIFIED="1734310341752" TEXT="jeweils eine Manifold erstellen"/>
|
||||||
<node CREATED="1734310343475" ID="ID_594704625" MODIFIED="1734310357870" TEXT="mit einem Test-BuffHandle beschicken">
|
<node COLOR="#338800" CREATED="1734310343475" ID="ID_594704625" MODIFIED="1734389465766" TEXT="mit einem Test-BuffHandle beschicken">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734310375328" ID="ID_126539331" MODIFIED="1734310384120" TEXT="Test-Setup funktioniert nicht">
|
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734310375328" ID="ID_126539331" MODIFIED="1734310384120" TEXT="Test-Setup funktioniert nicht">
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
<node CREATED="1734310554672" ID="ID_1304749247" MODIFIED="1734310563567" TEXT="der Shortcut BufferProvider::lockBufferFor(args...)"/>
|
<node CREATED="1734310554672" ID="ID_1304749247" MODIFIED="1734310563567" TEXT="der Shortcut BufferProvider::lockBufferFor(args...)"/>
|
||||||
|
|
@ -88586,8 +88559,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<font face="Monospaced" size="2">        }</font>
|
<font face="Monospaced" size="2">        }</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734310629446" ID="ID_509553711" MODIFIED="1734311171944" TEXT="Symtom: der Binder kann nicht in eine std::function gepackt werden">
|
<node CREATED="1734310629446" ID="ID_509553711" MODIFIED="1734311171944" TEXT="Symtom: der Binder kann nicht in eine std::function gepackt werden">
|
||||||
<icon BUILTIN="info"/>
|
<icon BUILTIN="info"/>
|
||||||
|
|
@ -88602,8 +88574,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<font face="Monospaced" size="1">  std::function<void(void*)>::function(</font><font face="Monospaced" size="1" color="#b90563">std::<b>_Bind</b><void (*(std::_Placeholder<1>, int))(void*, int&&)></font><font face="Monospaced" size="1">&)</font>
|
<font face="Monospaced" size="1">  std::function<void(void*)>::function(</font><font face="Monospaced" size="1" color="#b90563">std::<b>_Bind</b><void (*(std::_Placeholder<1>, int))(void*, int&&)></font><font face="Monospaced" size="1">&)</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734311048512" ID="ID_1681074174" MODIFIED="1734311077645" TEXT="weiter oben im Type-Stack sieht man bereits, daß dies der Template-Parameter CTOR ist"/>
|
<node CREATED="1734311048512" ID="ID_1681074174" MODIFIED="1734311077645" TEXT="weiter oben im Type-Stack sieht man bereits, daß dies der Template-Parameter CTOR ist"/>
|
||||||
<node CREATED="1734311079017" ID="ID_1399777845" MODIFIED="1734311159072">
|
<node CREATED="1734311079017" ID="ID_1399777845" MODIFIED="1734311159072">
|
||||||
|
|
@ -88614,8 +88585,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<font face="Monospaced" size="2">with </font><font face="Monospaced" size="2" color="#710b0b">CTOR</font><font face="Monospaced" size="2"> = std::_<b>Bind</b><</font><font face="Monospaced" size="2" color="#420477">void (*(std::_Placeholder<1>, int))(void*, int&&)</font><font face="Monospaced" size="2">>;</font>
|
<font face="Monospaced" size="2">with </font><font face="Monospaced" size="2" color="#710b0b">CTOR</font><font face="Monospaced" size="2"> = std::_<b>Bind</b><</font><font face="Monospaced" size="2" color="#420477">void (*(std::_Placeholder<1>, int))(void*, int&&)</font><font face="Monospaced" size="2">>;</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<linktarget COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" SOURCE="ID_1282234493" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
<linktarget COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" SOURCE="ID_1282234493" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -88623,6 +88593,203 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<arrowlink COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
<arrowlink COLOR="#a502af" DESTINATION="ID_1399777845" ENDARROW="Default" ENDINCLINATION="77;114;" ID="Arrow_ID_1332245965" STARTARROW="None" STARTINCLINATION="221;17;"/>
|
||||||
<icon BUILTIN="stop-sign"/>
|
<icon BUILTIN="stop-sign"/>
|
||||||
</node>
|
</node>
|
||||||
|
<node CREATED="1734376827379" ID="ID_781787798" MODIFIED="1734376870062" TEXT="Analyse mit direktem Aufruf (try.cpp)">
|
||||||
|
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1734376872367" ID="ID_1505723613" MODIFIED="1734376903471" TEXT="reproduzierbar">
|
||||||
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734376912301" HGAP="30" ID="ID_1396318540" MODIFIED="1734377033194" TEXT="Problem liegt am bind()-Ausdruck" VSHIFT="19">
|
||||||
|
<node CREATED="1734376971625" ID="ID_1500057972" MODIFIED="1734376981959" TEXT="nur die Variante ohne weitere Argumente funktioniert"/>
|
||||||
|
<node CREATED="1734376982941" ID="ID_1093169887" MODIFIED="1734377042591" TEXT="funktioniert auch nicht wenn man die Variadics wegläßt"/>
|
||||||
|
<node CREATED="1734377003920" ID="ID_1513970872" MODIFIED="1734377047351" TEXT="funktioniert auch nicht wenn man jedwede Templates wegläßt"/>
|
||||||
|
<node CREATED="1734377068534" ID="ID_790750756" MODIFIED="1734377094096" TEXT="std::function akzeptiert es nicht"/>
|
||||||
|
<node CREATED="1734377094946" ID="ID_1562880863" MODIFIED="1734377109874" TEXT="unser lib::meta::_Fun erkennt es nicht als Funktion"/>
|
||||||
|
<node CREATED="1734377117241" ID="ID_529939193" MODIFIED="1734377124476" TEXT="kann es auch tatsächlich nicht aufrufen">
|
||||||
|
<node CREATED="1734377210261" ID="ID_219419117" MODIFIED="1734377922744" TEXT="template argument deduction/substitution failed"/>
|
||||||
|
<node CREATED="1734377976414" ID="ID_899976342" MODIFIED="1734377979425" TEXT="Signaturen">
|
||||||
|
<node CREATED="1734377998260" ID="ID_366994394" MODIFIED="1734378017600">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Aufgerufen: <font face="Monospaced">(std::_Bind<void (*(std::_Placeholder<1>, int))(void*, int&&)>) (void*&)</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734378022592" ID="ID_1829030870" MODIFIED="1734378077075">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Candidate: <font face="Monospaced">_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...)</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734378114379" ID="ID_1370955696" MODIFIED="1734378125475">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
  <font face="Monospaced">_Functor = void (*)(void*, int&&)</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734378145086" ID="ID_1150616171" MODIFIED="1734378155688">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
  <font face="Monospaced">_Bound_args = {std::_Placeholder<1>, int}</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734378499213" ID="ID_424256926" MODIFIED="1734378549609">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Beobachtung: <font face="Monospaced">_Functor(_Bound_args ...)</font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<node CREATED="1734378654651" ID="ID_461500481" MODIFIED="1734378710056" TEXT="void (*(std::_Placeholder<1>, int))(void*, int&&)"/>
|
||||||
|
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734378652331" ID="ID_804249162" MODIFIED="1734378687327" TEXT="≠">
|
||||||
|
<font NAME="SansSerif" SIZE="14"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734378600970" ID="ID_1568813709" MODIFIED="1734378712108" TEXT="(void (*)(void*, int&&)) (std::_Placeholder<1>, int)"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#5b280f" CREATED="1734380583440" ID="ID_944972328" MODIFIED="1734386726726" TEXT="Nein! das ist es nicht">
|
||||||
|
<arrowlink COLOR="#5b3840" DESTINATION="ID_544743170" ENDARROW="Default" ENDINCLINATION="119;6;" ID="Arrow_ID_662126387" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
<arrowlink COLOR="#fde3e9" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="464;20;" ID="Arrow_ID_891244985" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
<icon BUILTIN="stop-sign"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734380600127" ID="ID_1702540399" MODIFIED="1734380605641" TEXT="reduziertes Beispiel">
|
||||||
|
<node CREATED="1734380607054" ID="ID_795404603" MODIFIED="1734380615327" TEXT="kein Placeholder"/>
|
||||||
|
<node CREATED="1734380616275" ID="ID_701523446" MODIFIED="1734380620046" TEXT="nur ein Argument"/>
|
||||||
|
<node CREATED="1734381356576" ID="ID_544743170" MODIFIED="1734386619880" TEXT="ABER: RValue-Ref als Argument der gebundenen Funktion">
|
||||||
|
<linktarget COLOR="#5b3840" DESTINATION="ID_544743170" ENDARROW="Default" ENDINCLINATION="119;6;" ID="Arrow_ID_662126387" SOURCE="ID_944972328" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734382759141" ID="ID_1882396684" MODIFIED="1734386826582" TEXT="Minimales Beispiel">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node CREATED="1734383075588" ID="ID_1238945155" MODIFIED="1734383114465" STYLE="bubble">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<div http-equiv="content-type" content="text/html; charset=utf-8" style="color: #000000; background-color: #fffffe; font-family: Consolas, Liberation Mono, Courier, monospace, Droid Sans Mono, monospace, monospace; font-weight: normal; font-size: 14px; line-height: 19px; white-space: pre">
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">#include</font><font color="#000000" face="Monospaced" size="2"> </font><font color="#0000ff" face="Monospaced" size="2"><</font><font color="#a31515" face="Monospaced" size="2">functional</font><font color="#0000ff" face="Monospaced" size="2">></font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">#include</font><font color="#000000" face="Monospaced" size="2"> </font><font color="#0000ff" face="Monospaced" size="2"><</font><font color="#a31515" face="Monospaced" size="2">iostream</font><font color="#0000ff" face="Monospaced" size="2">></font>
|
||||||
|
</div>
|
||||||
|
<font face="Monospaced" size="2"><br face="Monospaced" size="2" />
|
||||||
|
</font>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">inline</font><font color="#000000" face="Monospaced" size="2"> </font><font color="#0000ff" face="Monospaced" size="2">void</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">fun (</font><font color="#0000ff" face="Monospaced" size="2">int</font><font color="#000000" face="Monospaced" size="2">&& a)</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">{</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">std::cout << a << std::endl;</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">}</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">int</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">main (</font><font color="#0000ff" face="Monospaced" size="2">int</font><font color="#000000" face="Monospaced" size="2">, </font><font color="#0000ff" face="Monospaced" size="2">char</font><font color="#000000" face="Monospaced" size="2">**)</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">{</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">auto</font><font color="#000000" face="Monospaced" size="2"> bi = std::bind (fun, </font><font color="#098658" face="Monospaced" size="2">55</font><font color="#000000" face="Monospaced" size="2">);</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">bi();</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#0000ff" face="Monospaced" size="2">return</font><font color="#000000" face="Monospaced" size="2"> </font><font color="#098658" face="Monospaced" size="2">0</font><font color="#000000" face="Monospaced" size="2">;</font>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<font color="#000000" face="Monospaced" size="2">}</font>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#efb775" COLOR="#fa002a" CREATED="1734383189560" ID="ID_1267982630" MODIFIED="1734386862320" TEXT="Problem reproduzierbar mit neuesten Compilern">
|
||||||
|
<icon BUILTIN="broken-line"/>
|
||||||
|
<node CREATED="1734383206198" ID="ID_1168801076" LINK="https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:17,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:17,startColumn:1,startLineNumber:1),source:'%23include+%3Cfunctional%3E%0A%23include+%3Ciostream%3E%0A%0Ainline+void%0Afun+(int%26%26+a)%0A++%7B%0A++++std::cout+%3C%3C+a+%3C%3C+std::endl%3B%0A++%7D%0A++++%0Aint%0Amain+(int,+char**)%0A++%7B%0A++++auto+bi+%3D+std::bind+(fun,+55)%3B%0A++++bi()%3B%0A++++return+0%3B%0A++%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:52.28357191547376,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((g:!((h:output,i:(editorid:1,fontScale:14,fontUsePx:'0',j:1,wrap:'1'),l:'5',n:'0',o:'Output+of+x86-64+gcc+(trunk)+(Compiler+%231)',t:'0')),k:50,l:'4',m:50,n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:gsnapshot,filters:(b:'0',binary:'0',binaryObject:'1',commentOnly:'0',debugCalls:'1',demangle:'0',directives:'0',execute:'0',intel:'0',libraryCode:'0',trim:'1',verboseDemangling:'0'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',overrides:!(),selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1),l:'5',n:'0',o:'+x86-64+gcc+(trunk)+(Editor+%231)',t:'0')),header:(),l:'4',m:50,n:'0',o:'',s:0,t:'0')),k:47.71642808452624,l:'3',n:'0',o:'',t:'0')),l:'2',n:'0',o:'',t:'0')),version:4" MODIFIED="1734383340767" TEXT="Godbolt"/>
|
||||||
|
<node CREATED="1734383353042" ID="ID_651192533" LINK="https://godbolt.org/z/5xvdbEM64" MODIFIED="1734383359752" TEXT="Short-Link"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1734385893133" ID="ID_1856944234" MODIFIED="1734385928505" TEXT="Ursache: Binder liefert eine Kopie">
|
||||||
|
<icon BUILTIN="broken-line"/>
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734381356576" ID="ID_217508249" MODIFIED="1734386742771" TEXT="...und die gebundene Funktion wurde aber für RValues instantiiert">
|
||||||
|
<linktarget COLOR="#fde3e9" DESTINATION="ID_217508249" ENDARROW="Default" ENDINCLINATION="464;20;" ID="Arrow_ID_891244985" SOURCE="ID_944972328" STARTARROW="None" STARTINCLINATION="-86;10;"/>
|
||||||
|
<icon BUILTIN="broken-line"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734385977834" ID="ID_1426672931" MODIFIED="1734385991397" TEXT="Das ist wohl ein inhärentes Problem">
|
||||||
|
<node CREATED="1734385993072" ID="ID_1158678528" LINK="https://stackoverflow.com/q/30968573/444796" MODIFIED="1734386037190" TEXT="Diskussion auf Stackoverflow">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734386435689" ID="ID_1289426456" MODIFIED="1734386491795" TEXT="Workaround: gebundene Funktion für LValues (Referenzen) instantiieren"/>
|
||||||
|
<node CREATED="1734386495301" ID="ID_1179078617" MODIFIED="1734388255009">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
also: <font face="Monospaced">func<</font><font face="Monospaced" color="#612549">ARGS</font><font face="Monospaced" color="#ed0212"><b>&</b></font><font face="Monospaced"> ...></font>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<linktarget COLOR="#f7fdca" DESTINATION="ID_1179078617" ENDARROW="Default" ENDINCLINATION="-159;21;" ID="Arrow_ID_1473711263" SOURCE="ID_314389327" STARTARROW="None" STARTINCLINATION="22;-36;"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#bd000b" CREATED="1734386778574" ID="ID_233689242" MODIFIED="1734386807216" TEXT="(funktioniert natürlich nicht mit allen Typen...)">
|
||||||
|
<font NAME="SansSerif" SIZE="8"/>
|
||||||
|
<node CREATED="1734387463481" HGAP="34" ID="ID_1440834304" LINK="http://en.cppreference.com/w/cpp/utility/functional/bind#Member_function_operator.28.29" MODIFIED="1734387491134" TEXT="siehe Doku für std::bind" VSHIFT="7">
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#338800" CREATED="1734388195447" ID="ID_1278882594" MODIFIED="1734388372025" TEXT="Workaround: Typen für Argumente im Type-Handler auf Kopie umschreiben">
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
|
<node BACKGROUND_COLOR="#cdd0af" CREATED="1734388228011" ID="ID_314389327" MODIFIED="1734388299434" TEXT="direkt wie auf Stackoverflow gezeigt">
|
||||||
|
<arrowlink COLOR="#f7fdca" DESTINATION="ID_1179078617" ENDARROW="Default" ENDINCLINATION="-159;21;" ID="Arrow_ID_1473711263" STARTARROW="None" STARTINCLINATION="22;-36;"/>
|
||||||
|
<icon BUILTIN="idea"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#163792" CREATED="1734388306532" ID="ID_835024295" MODIFIED="1734388882033" TEXT="mit den offensichtlichen Einschränkungen — die ich vorerst auf sich beruhen lasse">
|
||||||
|
<linktarget COLOR="#7e1a3e" DESTINATION="ID_835024295" ENDARROW="Default" ENDINCLINATION="66;330;" ID="Arrow_ID_1506573281" SOURCE="ID_1635091232" STARTARROW="None" STARTINCLINATION="-952;66;"/>
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -91887,6 +92054,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734133400400" ID="ID_1364724277" MODIFIED="1734141875620" TEXT="zusätzlichen Funktor für die Parameter akzeptieren">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734133400400" ID="ID_1364724277" MODIFIED="1734141875620" TEXT="zusätzlichen Funktor für die Parameter akzeptieren">
|
||||||
<arrowlink COLOR="#c0023e" DESTINATION="ID_1127056731" ENDARROW="Default" ENDINCLINATION="-1257;-48;" ID="Arrow_ID_1717201620" STARTARROW="None" STARTINCLINATION="-908;50;"/>
|
<arrowlink COLOR="#c0023e" DESTINATION="ID_1127056731" ENDARROW="Default" ENDINCLINATION="-1257;-48;" ID="Arrow_ID_1717201620" STARTARROW="None" STARTINCLINATION="-908;50;"/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
|
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1734388801494" ID="ID_1469272212" MODIFIED="1734389073266" TEXT="Hier könnte ein Buffer-Typ-Konstruktor mit eingebunden werden">
|
||||||
|
<icon BUILTIN="hourglass"/>
|
||||||
|
<node BACKGROUND_COLOR="#e2be92" CREATED="1734388824979" ID="ID_1655919747" MODIFIED="1734389385989" TEXT="dieses Thema tauchte im Design immer wieder auf">
|
||||||
|
<arrowlink COLOR="#a94eac" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-357;-399;" ID="Arrow_ID_1864365252" STARTARROW="None" STARTINCLINATION="822;40;"/>
|
||||||
|
<linktarget COLOR="#6c169e" DESTINATION="ID_1655919747" ENDARROW="Default" ENDINCLINATION="619;33;" ID="Arrow_ID_1405551684" SOURCE="ID_1586871031" STARTARROW="None" STARTINCLINATION="-249;15;"/>
|
||||||
|
<icon BUILTIN="bell"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734388839099" ID="ID_892140003" MODIFIED="1734388850539" TEXT="es könnte weitere Probleme nebenbei mit lösen"/>
|
||||||
|
<node CREATED="1734388851863" ID="ID_1985594589" MODIFIED="1734388873007" TEXT="ist aber im Detail anspruchsvoll in der Umsetzung"/>
|
||||||
|
<node BACKGROUND_COLOR="#e2c190" COLOR="#a50125" CREATED="1734388447261" ID="ID_1635091232" MODIFIED="1734388882032" TEXT="Typ-Konstruktor-λ hat Einschränkungen">
|
||||||
|
<arrowlink COLOR="#7e1a3e" DESTINATION="ID_835024295" ENDARROW="Default" ENDINCLINATION="66;330;" ID="Arrow_ID_1506573281" STARTARROW="None" STARTINCLINATION="-952;66;"/>
|
||||||
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734196306235" ID="ID_1975026226" MODIFIED="1734196338552" TEXT="Funktor geht mit in den Turnout-Typ ein">
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734196306235" ID="ID_1975026226" MODIFIED="1734196338552" TEXT="Funktor geht mit in den Turnout-Typ ein">
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
<node CREATED="1734196346326" ID="ID_362452179" MODIFIED="1734196435265" TEXT="std::function hier kann Template-Bloat reduzieren">
|
<node CREATED="1734196346326" ID="ID_362452179" MODIFIED="1734196435265" TEXT="std::function hier kann Template-Bloat reduzieren">
|
||||||
|
|
@ -91929,8 +92110,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
Für die BuffTable war früher jede Menge Funktionalität geplant, die inzwischen im BufferProvider realisiert wurde; der alte Test hängt seit >10 Jahren bei den Engine-Tests unimplementiert mit rum — es ist sinnlos, ihn nun umzuwidmen
|
Für die BuffTable war früher jede Menge Funktionalität geplant, die inzwischen im BufferProvider realisiert wurde; der alte Test hängt seit >10 Jahren bei den Engine-Tests unimplementiert mit rum — es ist sinnlos, ihn nun umzuwidmen
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<icon BUILTIN="button_cancel"/>
|
<icon BUILTIN="button_cancel"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734310510263" TEXT="angesiedelt in NodeBase_test">
|
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734310510263" TEXT="angesiedelt in NodeBase_test">
|
||||||
|
|
@ -92151,9 +92331,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1721838899545" ID="ID_960529387" MODIFIED="1721844774406" TEXT="doch wieder auf die Buffer-Konstruktor-Closure zurückkommen?">
|
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1721838899545" ID="ID_960529387" MODIFIED="1734389385989" TEXT="doch wieder auf die Buffer-Konstruktor-Closure zurückkommen?">
|
||||||
<arrowlink COLOR="#b42d6a" DESTINATION="ID_1819206244" ENDARROW="Default" ENDINCLINATION="43;40;" ID="Arrow_ID_1051671986" STARTARROW="None" STARTINCLINATION="13;-15;"/>
|
<arrowlink COLOR="#b42d6a" DESTINATION="ID_1819206244" ENDARROW="Default" ENDINCLINATION="43;40;" ID="Arrow_ID_1051671986" STARTARROW="None" STARTINCLINATION="13;-15;"/>
|
||||||
<linktarget COLOR="#332ba3" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-46;-257;" ID="Arrow_ID_977971374" SOURCE="ID_1119846327" STARTARROW="None" STARTINCLINATION="-22;219;"/>
|
<linktarget COLOR="#332ba3" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-46;-257;" ID="Arrow_ID_977971374" SOURCE="ID_1119846327" STARTARROW="None" STARTINCLINATION="-22;219;"/>
|
||||||
|
<linktarget COLOR="#a94eac" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-357;-399;" ID="Arrow_ID_1864365252" SOURCE="ID_1655919747" STARTARROW="None" STARTINCLINATION="822;40;"/>
|
||||||
<font NAME="SansSerif" SIZE="12"/>
|
<font NAME="SansSerif" SIZE="12"/>
|
||||||
<icon BUILTIN="help"/>
|
<icon BUILTIN="help"/>
|
||||||
<icon BUILTIN="hourglass"/>
|
<icon BUILTIN="hourglass"/>
|
||||||
|
|
@ -93182,6 +93363,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#fed3ac" COLOR="#990033" CREATED="1731889726616" ID="ID_1814790289" MODIFIED="1731889761047" TEXT="zu klären: wer instruiert den BufferProvider?">
|
<node BACKGROUND_COLOR="#fed3ac" COLOR="#990033" CREATED="1731889726616" ID="ID_1814790289" MODIFIED="1731889761047" TEXT="zu klären: wer instruiert den BufferProvider?">
|
||||||
<icon BUILTIN="help"/>
|
<icon BUILTIN="help"/>
|
||||||
|
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734388913415" HGAP="29" ID="ID_1586871031" MODIFIED="1734389094228" TEXT="Zusammenhang mit dem Thema Konstruktor-λ" VSHIFT="11">
|
||||||
|
<arrowlink COLOR="#6c169e" DESTINATION="ID_1655919747" ENDARROW="Default" ENDINCLINATION="619;33;" ID="Arrow_ID_1405551684" STARTARROW="None" STARTINCLINATION="-249;15;"/>
|
||||||
|
<icon BUILTIN="bell"/>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -94913,7 +95098,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node CREATED="1720178577432" ID="ID_563185736" MODIFIED="1720178597453" TEXT="ADA ≡ Typ der Invocation-Adapter Klasse"/>
|
<node CREATED="1720178577432" ID="ID_563185736" MODIFIED="1720178597453" TEXT="ADA ≡ Typ der Invocation-Adapter Klasse"/>
|
||||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1720999461725" ID="ID_668512282" MODIFIED="1728436131057" TEXT="klären: wo/wie wird diese instantiiert?">
|
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1720999461725" ID="ID_668512282" MODIFIED="1728436131057" TEXT="klären: wo/wie wird diese instantiiert?">
|
||||||
<arrowlink COLOR="#8c303b" DESTINATION="ID_1536301470" ENDARROW="Default" ENDINCLINATION="-653;972;" ID="Arrow_ID_1675114658" STARTARROW="None" STARTINCLINATION="373;-24;"/>
|
<arrowlink COLOR="#8c303b" DESTINATION="ID_1536301470" ENDARROW="Default" ENDINCLINATION="-653;972;" ID="Arrow_ID_1675114658" STARTARROW="None" STARTINCLINATION="373;-24;"/>
|
||||||
<linktarget COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" SOURCE="ID_1951506826" STARTARROW="None" STARTINCLINATION="651;43;"/>
|
<linktarget COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" SOURCE="ID_1951506826" STARTARROW="None" STARTINCLINATION="645;44;"/>
|
||||||
<icon BUILTIN="help"/>
|
<icon BUILTIN="help"/>
|
||||||
<node CREATED="1720999894058" ID="ID_214293974" MODIFIED="1728514565103" TEXT="Instantiiert wird sie erst im Turnout::weave()">
|
<node CREATED="1720999894058" ID="ID_214293974" MODIFIED="1728514565103" TEXT="Instantiiert wird sie erst im Turnout::weave()">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
|
@ -95770,7 +95955,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1731890254602" ID="ID_447051297" MODIFIED="1731890346832" TEXT="brauche Buffer">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1731890254602" ID="ID_447051297" MODIFIED="1734388971845" TEXT="brauche Buffer">
|
||||||
<arrowlink COLOR="#bb4c6b" DESTINATION="ID_1319945622" ENDARROW="Default" ENDINCLINATION="-663;35;" ID="Arrow_ID_542692149" STARTARROW="None" STARTINCLINATION="745;112;"/>
|
<arrowlink COLOR="#bb4c6b" DESTINATION="ID_1319945622" ENDARROW="Default" ENDINCLINATION="-663;35;" ID="Arrow_ID_542692149" STARTARROW="None" STARTINCLINATION="745;112;"/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue