Tatsächlich ist Ihre Erkennung möglicherweise fehlerhaft.
Das Problem ist, dass Sie nur feststellen, dass C
ein Mitglied size
:
Wenn Sie die Erkennung härten möchten, sollten Sie versuchen, nur das Recht size
(für welches Recht auch immer) zu erkennen. Hier ist eine solche verhärtete Erkennung .
Bearbeiten: mit Überladungen .
Der Trick, mit falschen size
-Mitgliedern umzugehen, ist die really_has
-Struktur. Ich mache keinen Vorwand, dass es perfekt ist, obwohl ...
In C ++ 11 sind Dinge einfacher (obwohl nicht weniger ausführlich), weil Sie Dinge erkennen können, indem Sie verwenden direkt. Das äquivalente Merkmal ist somit:
%Vor% Die empfohlene Methode in C ++ ist jedoch, Eigenschaften nicht zu verwenden , wenn Sie können; In Funktionen können Sie zum Beispiel decltype
rechts in der Typ-Signatur verwenden.