Oh well. This kept me busy a whole day long -- and someone less stubborn like myself would probably supect a "compiler bug" or put the blame on the language C++ So to stress this point: the compiler behaved CORRECT Just SFINAE is dangerous stuff: the metafunction I concieved yesterday requires a complete type, yet, under rather specific circumstances, when instantiating mutually dependent templates (in our case lib::diff::Record<GenNode> is a recursive type), the distinction between "complete" and "incomplete" becomes blurry, and depends on the processing order. Which gave the misleading impression as if there was a side-effect where the presence of one definition changes the meaning of another one used in the same program. What happened in fact was just that the evaluation order was changed, causing the metafunction to fail silently, thus picking another specialisation. |
||
|---|---|---|
| .. | ||
| draw | ||
| DIR_INFO | ||
| empty.html | ||
| InterfaceConcept_Varga.mm | ||
| renderengine.html | ||
| thinkPad.ichthyo.mm | ||
| uml | ||
| workflow.mm | ||