the template lib::PolymorphicValue seemingly picked the wrong implementation strategy for "virtual copy support": In fact it is possible to use the optimal strategy here, since our interface inherits from CloneSupport, yet the metaprogramming logic picked the mix-in-adapter (which requires one additional "slot" of storage plus a dynamic_cast at runtime). The reason for this malfunction was the fact that we used META_DETECT_FUNCTION to detect the presence of a clone-support-function. This is not correct, since it can only detect a function in the *same* class, not an inherited function. Thus, switching to META_DETECT_FUNCTION_NAME solves this problem Well, this solution has some downsides, but since I intend to rewrite the whole virtual copy support (#1197) anyway, I'll deem this acceptable for now TODO / WIP: still some diagnostics code to clean up, plus a better solution for the EmptyBase |
||
|---|---|---|
| .. | ||
| draw | ||
| DIR_INFO | ||
| empty.html | ||
| InterfaceConcept_Varga.mm | ||
| renderengine.html | ||
| thinkPad.ichthyo.mm | ||
| uml | ||
| workflow.mm | ||