invariant, and throw if it cannot
но тот же std::string не выбрасывает искл. в случае nullptr аргумента, это типа можно отсупать от правил ради перфа?
UB тоже можно, но не рекомендуется
в стандарте пишут (в 17-ом): 24.3.2.2 basic_string constructors and assignment operators basic_string(const charT* s, const Allocator& a = Allocator()); Requires: s points to an array of at least traits::length(s) + 1 elements of charT.
недостаточно проверить nullptr
смысл E.5 скорее всего про то, что если std::string не сможет память выделить, то он бросает bad_alloc
ну, я предложил поступить так: либо писать как в std::string доку в хедере (раз отсылка на этот пример стандартной строки), либо gsl::not_null, ну либо бросить таки. в итоге пришло всё к: бросить эксепшин.
а почему к gsl::not_null не сошлись?
там дока в хедере правильный ответ, да
меня устроил и эксепшин, там просто в том коде gsl как-то слабо используется, будет выделятся другой подход
Обсуждают сегодня