2010-01-23 14 views

Antwort

15

Sie können dies über Typ Züge nicht lösen, weil Sie, wenn für jeden möglichen Namen definieren müssten.

Here sind die gebräuchlichen Lösungen aufgelistet, die jedoch ein Problem haben: Viele STL-Implementierungen setzen gemeinsamen Code in Basisklassen und diese Methode prüft nicht auf geerbte Namen.

Wenn Sie auch für geerbten Mitglieder zu überprüfen, sehen here. Die Antwort bietet eine Lösung, die überprüft, ob die fragliche Klasse ein Mitglied dieses Namens hat und auch auf Const-Zahl und Argumentanzahl prüfen kann. Es ist jedoch nicht möglich, nach der vollständigen Signatur einschließlich der Argumente und Rückgabetypen zu suchen, und die Sichtbarkeit der Elemente macht keinen Unterschied. Sie sollten in der Lage sein, das teilweise zu lösen, indem Sie das verbundene is_call_possible<> verwenden (haben Sie noch Zeit nicht gehabt, es auch zu betrachten).

+4

Jedes Mal, wenn ich sehe, dass 'is_call_possible' Faden, ein bisschen von mir Angst bekommt. – GManNickG

+0

mein Russisch zahlt sich aus, dank – Anycorn

+0

@GMan: Ich werde Herz und Angriff, der im nächsten Monat nehmen;) –

Verwandte Themen