Aidar
он в это и раскрывается
Andrei
Aidar
правда еще задает семантику владения
Andrei
unique_ptr позволяет прозрачно передавать владение объектом. У него есть move-семантика!
Anonymous
Anonymous
логично
Matwey
Anonymous
ну да, мы это уже выяснили =)
Anatoly
weak_ptr разделяет с shared_ptr один вспомогательный объект, в котором ведутся два счетчика use_count - количество shared_ptr ссылающихся на этот объект, и weak_count - количество слабых ссылок ссылающихся на этот объект. Когда use_count достигает 0, удаляется указатель на реальный объект, а когда weak_count достигает 0, удаляется вспомогательный объект
Anonymous
разделяемый объект?
Anatoly
разделяемый объект?
вспомогательная структура, содержащая счетчики и указатель на реальный объект
Aidar
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
Anonymous
Александр
Так это было одним из первых нововведений C++17
Anonymous
ок, буду знать
Александр
Для передачи в WinAPI всякие, которые реально не модифицируют, но принимают char*
Александр
😊
Aidar
data не конст
Anonymous
data не конст
уже ж объяснили, что это в С++17 добавили другую версию data()
Aidar
она там всегда была
Anonymous
в стандарте языка?
Aidar
ну всегда = с с++11
Aidar
да
Anonymous
ну, у каждого компилятора есть расхождения со стандартом языка. Особенно у молокософтовского msbuild или как его там
Anonymous
да, я о том же
Anatoly
Anonymous
система сборки?
Anonymous
я блондинко
Anonymous
только не по лицу
Anonymous
Anatoly
система сборки?
да, а компилятор от MS хоть и отстает от CLang и GCC, но сдвинулся с мертвой точки и текущее его состояние производит хорошее впечатление.
Anonymous
отстает ровно на один стандарт
Anonymous
две абсолютно useless фичи из С++17 поддерживает и все
Anatoly
Anonymous
http://en.cppreference.com/w/cpp/compiler_support
лол, видать я давненько не чекал. Уже побольше поддерживает, да
Anonymous
Буквально 1.5 месяца назад все было красное
Anonymous
Странно, мне вроде апдейт не прилетал.
Anonymous
"Template argument deduction for class templates" жалко, что этого ещё нет. Очень ждал
Berkus
Anatoly
Anonymous
gcc и clang ))
Matwey
А я помню, что когда в школе учился. У нас была какая-то олимпиада по программированию и мне там выдали какой-то Borland C++ древнейший, который еще был до C++98 и там было всё очень странно
Anatoly
gcc и clang ))
в visual studio благо появилась экспериментальная поддержка clang c ms кодогенератором
Evgenii
дай бог
Berkus
Berkus
а так вроде и компиль правильный, и индусы при делах
Evgenii
Berkus
не приведи господь такого ужаса
Anonymous
Ioann_
А бабки они за что будут получать ?
Ioann_
Вроде как MSVC стоит деньжат, немалых таких
Ioann_
Наверное, нельзя - только с ней