Aidar
он в это и раскрывается
Aidar
правда еще задает семантику владения
Andrei
unique_ptr позволяет прозрачно передавать владение объектом. У него есть move-семантика!
Anonymous
Anonymous
логично
Anonymous
ну да, мы это уже выяснили =)
Anatoly
weak_ptr разделяет с shared_ptr один вспомогательный объект, в котором ведутся два счетчика use_count - количество shared_ptr ссылающихся на этот объект, и weak_count - количество слабых ссылок ссылающихся на этот объект. Когда use_count достигает 0, удаляется указатель на реальный объект, а когда weak_count достигает 0, удаляется вспомогательный объект
Anonymous
разделяемый объект?
Aidar
разделяемый объект?
Счётчик и опционально кусок памяти
Anatoly
разделяемый объект?
вспомогательная структура, содержащая счетчики и указатель на реальный объект
Anatoly
В любом случае это описание схематично, но дает понимание того, как это устроено.
Anonymous
а, вспомнил. shared_ptr инстанцирует два объекта: внутренний, для подсчета ссылок и т.п., и сам объект. Верно?
Anonymous
Спасибо, теперь я понял
Anonymous
а есть где-нибудь тесты raw ptr vs shared ptr? Все же, shared вынужден делать дополнительные операции
Aidar
и мы будем ее держать до последнего weak_ptr
Matwey
Господа, а в std::string нет какой-нибудь балалайки, чтобы безопасно заполнить строку из какой-нибудь сишной функции?
Matwey
char* log = new char[maxLength]; glGetShaderInfoLog(vertexshader, maxLength, &maxLength, log); delete[] log; Вот чтобы так не делать
Anonymous
так это
Anonymous
есть же .data()
Anonymous
он вернет указатель на первый символ
Matwey
Что std::copy?
Matwey
Он как поможет избежать выделения промежуточного буфера?
Matwey
Да, но я не хочу сам копировать.
Matwey
У меня уже одна функция, которой просто нужно указать место куда записать строку
Anonymous
string имеет конструктор, принимающий const char*
Anonymous
const char* c_str = "Test"; std::string str(c_str);
Anonymous
тогда &str[0]?
Anonymous
Вполне нормально, имхо
Anonymous
тогда строить string из сишной строки, иначе никак
Александр
Ну вообще-то недавно появилась его копия неконстантная
Anonymous
или враппер писать
Anonymous
и сделать void*-магию
Anonymous
))0
Александр
Так это было одним из первых нововведений C++17
Anonymous
ок, буду знать
Александр
Для передачи в WinAPI всякие, которые реально не модифицируют, но принимают char*
Александр
😊
Aidar
data не конст
Anonymous
data не конст
уже ж объяснили, что это в С++17 добавили другую версию data()
Aidar
она там всегда была
Anonymous
в стандарте языка?
Aidar
ну всегда = с с++11
Aidar
да
Anatoly
Для передачи в WinAPI всякие, которые реально не модифицируют, но принимают char*
в MFC специально закладывали в дизайн CString, чтобы можно сам объект передавать в WINAPI: CString caption(_T("hello")); SetWindowText(caption);
Anonymous
ну, у каждого компилятора есть расхождения со стандартом языка. Особенно у молокософтовского msbuild или как его там
Anonymous
да, я о том же
Anonymous
система сборки?
Anonymous
я блондинко
Anonymous
только не по лицу
Anonymous
Anatoly
система сборки?
да, а компилятор от MS хоть и отстает от CLang и GCC, но сдвинулся с мертвой точки и текущее его состояние производит хорошее впечатление.
Anonymous
отстает ровно на один стандарт
Anonymous
две абсолютно useless фичи из С++17 поддерживает и все
Anonymous
http://en.cppreference.com/w/cpp/compiler_support лол, видать я давненько не чекал. Уже побольше поддерживает, да
Anonymous
Буквально 1.5 месяца назад все было красное
Anonymous
Странно, мне вроде апдейт не прилетал.
Anonymous
"Template argument deduction for class templates" жалко, что этого ещё нет. Очень ждал
ep
http://en.cppreference.com/w/cpp/compiler_support лол, видать я давненько не чекал. Уже побольше поддерживает, да
Borland C++ builder, похоже всё, забросили после 11? Вообще адская табличка, хорошо видно, насколько язык сложен на самом деле.
Anonymous
gcc и clang ))
Matwey
А я помню, что когда в школе учился. У нас была какая-то олимпиада по программированию и мне там выдали какой-то Borland C++ древнейший, который еще был до C++98 и там было всё очень странно
Anatoly
gcc и clang ))
в visual studio благо появилась экспериментальная поддержка clang c ms кодогенератором
Aidar
в visual studio благо появилась экспериментальная поддержка clang c ms кодогенератором
почему бы просто не пропулреквестить в силенг, нет надо ж выпендриться и написать свою херню
Evgenii
дай бог
Berkus
почему бы просто не пропулреквестить в силенг, нет надо ж выпендриться и написать свою херню
многих людей придется пристроить в другие места тогда, например в Амазон.
Berkus
а так вроде и компиль правильный, и индусы при делах
Evgenii
а так вроде и компиль правильный, и индусы при делах
а почему бы индусам не поработать над шлангом
Berkus
не приведи господь такого ужаса
Evgenii
не приведи господь такого ужаса
ну совсем говно кодревью не пропустит
Ioann_
А бабки они за что будут получать ?
Ioann_
Вроде как MSVC стоит деньжат, немалых таких
Ioann_
Наверное, нельзя - только с ней