basic_string( const CharT* s, size_type count,
const Allocator& alloc = Allocator() );
(6) (constexpr, начиная с C++20)
Я прочитал другие вопросы и вижу, что есть потенциально некоторые сложности с распределением при использовании constexpr и std::string (например, https://stackoverflow.com/questions/694 ... ot-working). Однако этот пример компилируется в последних версиях gcc и clang (и с небольшой оптимизацией строк я не думаю, что в этом случае в любом случае потребуется какое-либо выделение):
Код: Выделить всё
#include
int main() {
static constexpr std::string s ("abc");
static_assert(s == "abc");
}
Однако это не компилируется с clang (но работает с gcc):
Код: Выделить всё
#include
int main() {
static constexpr std::string s ("abc", 1);
static_assert(s == "a");
}
Я делаю что-то неправильно, или это ошибка в реализации clang constexpr std::string (в частности, перегрузка конструктора (6))?
Подробнее здесь: https://stackoverflow.com/questions/798 ... with-count
Мобильная версия