Come posso affermare staticamente che un'espressione è un std::unique_ptr
, ad esempio std::unique_ptr<T>
per qualsiasi T
.static_assert per unique_ptr di qualsiasi tipo
static_assert (std::is_pointer<decltype(exp)>()), "not a smart pointer")
Sopra non funziona. Se nulla di diretto, sono interessato solo se l'operatore bool()
è definito per il tipo.
Si noti che le risposte migliori (al momento) si basano su 'std :: true_type' e così via. Quelli sono parte del prossimo C++ 17 e potresti dover riscrivere la soluzione usando lo 'std :: integral_constant' attualmente disponibile – StoryTeller
@StoryTeller Huh? 'std :: true_type' è disponibile da C++ 11. Potresti averlo confuso con il modello alias 'std :: bool_constant'. – cpplearner
@cpplearner, sembra che tu abbia ragione. Mi sono bloccato nella mia mente che i tre vanno di pari passo. Oh bene. – StoryTeller