Size: a a a

cxx.Дискуссионная

2020 February 26

d

disba1ancer in cxx.Дискуссионная
Neargye
да и получится свой мув :D
Ну или хотя бы статик ассерт
источник

N

Neargye in cxx.Дискуссионная
disba1ancer
Ну или хотя бы статик ассерт
template <typename T>
constexpr auto move(T&& x) noexcept -> std::enable_if_t<!std::is_const_v<std::remove_reference_t<T>>, std::remove_reference_t<T>&&> {
 return static_cast<std::remove_reference_t<T>&&>(x);
}
классика
источник

d

disba1ancer in cxx.Дискуссионная
Александр Вольнов
Кстати, у меня очень эффективный SSO. sizeof(String) == 3*sizeof(void*) и может хранить без аллокации до 3*sizeof(void*)-1 символов + нулевой терминатор.
Это не возможно
источник

N

Neargye in cxx.Дискуссионная
disba1ancer
Это не возможно
эт СТЛ2
источник

N

Neargye in cxx.Дискуссионная
там можно хардкор оптимизации
источник

d

disba1ancer in cxx.Дискуссионная
Neargye
там можно хардкор оптимизации
А как отличить маленькую строку от большой?
источник

N

Neargye in cxx.Дискуссионная
disba1ancer
А как отличить маленькую строку от большой?
да я хз
источник

N

Neargye in cxx.Дискуссионная
там в чудо либе есть наверное
источник

N

Neargye in cxx.Дискуссионная
мне вообще от стд нужны array да byte
источник

N

Neargye in cxx.Дискуссионная
они уж то норм оптимизированы
источник

d

disba1ancer in cxx.Дискуссионная
Neargye
да я хз
Хотя бы один из 3ёх членов не должен использоваться как хранилище
источник

N

Neargye in cxx.Дискуссионная
disba1ancer
Хотя бы один из 3ёх членов не должен использоваться как хранилище
ну у тебя есть 1 байт, мож его как бул юзать
тру большая
файл маленькая
источник

АК

Александр Караев in cxx.Дискуссионная
Александр Вольнов
Кстати, у меня очень эффективный SSO. sizeof(String) == 3*sizeof(void*) и может хранить без аллокации до 3*sizeof(void*)-1 символов + нулевой терминатор.
и строка не длиннее 2^63-1, да?
источник

АК

Александр Караев in cxx.Дискуссионная
источник

d

disba1ancer in cxx.Дискуссионная
Neargye
ну у тебя есть 1 байт, мож его как бул юзать
тру большая
файл маленькая
Тоже не пропрёт ты не можешь отличит бул от куска указателя без внешнего члена
источник

N

Neargye in cxx.Дискуссионная
какой-то дристринг там непонятный (DString )
источник

АК

Александр Караев in cxx.Дискуссионная
Neargye
какой-то дристринг там непонятный (DString )
это аналог std::basic_string<char32_t>
источник

N

Neargye in cxx.Дискуссионная
Александр Караев
это аналог std::basic_string<char32_t>
мне название понравилось дристринг
источник

АВ

Александр Вольнов in cxx.Дискуссионная
disba1ancer
Хотя бы один из 3ёх членов не должен использоваться как хранилище
Старший бит последнего байта указывает на то, аллокация в куче или нет. А в SSO последний байт хранит обратную длину, которая не больше 23 и обращается в 0, когда SSO заполнен. Это и даёт нулевой символ.
источник

АК

Александр Караев in cxx.Дискуссионная
forceinline DStringView DStringOf(const dchar* value) {return DStringView(value);}
очень логично, что возвращается view
источник