Wie kann ich statisch behaupten, dass ein Ausdruck ein std::unique_ptr
ist, d. H. std::unique_ptr<T>
für einen beliebigen T
.static_assert für unique_ptr eines beliebigen Typs
static_assert (std::is_pointer<decltype(exp)>()), "not a smart pointer")
Oben funktioniert nicht. Wenn nichts direkt geht, interessiert mich nur, ob für den Typ bool()
Operator definiert ist.
Beachten Sie, dass die besten Antworten (im Moment) auf 'std :: true_type 'und so weiter basieren. Diese sind Teil der kommenden C++ 17, und Sie müssen möglicherweise die Lösung mit der derzeit verfügbaren 'std :: integral_constant 'umschreiben – StoryTeller
@StoryTeller Huh? 'std :: true_type' ist seit C++ 11 verfügbar. Sie haben es möglicherweise mit der Aliasvorlage 'std :: bool_constant' verwechselt. – cpplearner
@cpplearner, Sie scheinen richtig zu sein. Ich habe es fest im Kopf behalten, dass die drei Hand in Hand gehen. Naja. – StoryTeller