Ich habe den folgenden Code:alias für verschachtelten Vorlagentyp
template <template <typename, typename...> typename trait_t, typename arg_t>
struct BindFirst
{
template <typename... arg_ts>
using result_t = trait_t<arg_t, arg_ts...>;
};
#define BIND_FIRST(trait_t, arg_t) BindFirst<trait_t, arg_t>::template result_t
Sie es verwenden können das erste Argument eines Merkmals wie folgt zu binden:
BIND_FIRST(std::is_same, double)
Das Ergebnis entspricht:
template <typename T>
struct IsInt : std::is_same<double, T> { };
Der Unterschied ist, dass Sie es inline verwenden können. Zum Beispiel so:
using result_t = find_t<type_list, BIND_FIRST(std::is_same, double)>;
Dies funktioniert, aber ich mag es, die Definition zu vermeiden. Ich habe versucht, einen Alias zu verwenden. Aber ich habe keine Ahnung, wie ich es anwenden soll. Gibt es eine Möglichkeit, die Definition zu ersetzen?
entscheiden wollen, wie Sie beabsichtigen das Makro/alias zu benutzen? ein kleines Beispiel für seine Verwendung wäre nett – vu1p3n0x
Ich habe ein Beispiel –