Jak pokazano here, std::unique_ptr
ma dwa constexpr
konstruktorów dla zerowych wskaźników:std :: unique_ptr constexpr konstruktorzy
constexpr unique_ptr();
constexpr unique_ptr(nullptr_t);
Mam dwa pytania dotyczące tych dwóch konstruktorów:
Dlaczego potrzebne są dwa ? Nie możemy po prostu zadeklarować jeden jako:
constexpr unique_ptr(nullptr_t = nullptr);
Czy
constexpr
naprawdę przydatne? Próbowałem to zrobić w moim kodu, ale nie skompilować (g ++ 6.1.0,-std=c++14
):constexpr std::unique_ptr<int> p; // error: the type 'const std::unique_ptr<int>' of constexpr variable 'p' // is not literal because 'std::unique_ptr<int>' has a non-trivial destructor
Który łączy z powrotem do tego samego pytania – Dutow
@Dutow Hahahaha –
Błąd kopiowania/wklejania LOL. Ale odpowiedź oldrinba łączy się z tą, którą miałem zamiar połączyć. –