Size: a a a

2021 July 01

SA

Sergey Anisimov in supapro.cxx
Конкретно в данном случае - может быть. Но уже многократно я становился свидетелем ситуаций, когда вопрос человека более чем решался поиском по этому агрегатору. Пока что ссылки приходится кидать вручную, но программирование - оно ведь об автоматизации труда, не так ли?
источник

AB

Aleksei Budyakov in supapro.cxx
Sergey Кстати, можете ещё раз пояснить почему внутри класса создавать Алиас на указатель на данный класс - не хорошо ?
источник

K

Kelbon in supapro.cxx
ну это просто имеет мало смысла...
источник

SA

Sergey Anisimov in supapro.cxx
Ничего себе память, однако)
Да, почему нет. Элиас станет зависимым именем и потребует определения инкапсулирующего класса в местах, где понадобится его использование. А т.к. суть указателей в определенных контекстах как раз сводится к возможности forward declaration'ов - такой подход оказывается весьма противоречивым.
Edit: Иными словами, нижеследующий пример.
/* PtrTy.hpp */
template < typename Ty >
using Ptr = Ty*;

/* StructA.hpp */
struct StructA
{ typedef StructA* Ptr; };

/* Smthng.hpp */
#include <PtrTy.hpp>

/* fwd declaration */
struct StructA;

/* ok */
auto subA ( StructA* )
-> /* ... */;
/* ok */
auto subB ( Ptr<StructA> )
-> /* ... */;
/* ill-formed, definition of 'StructA' required */
auto subC ( StructA::Ptr )
-> /* ... */;
Как можно видеть, первым двум примерам достаточно forward declaration'а, что полностью соответствует концепции легковесных заголовков (второму при этом нужен еще и сам шаблон элиаса). А вот третий потребует подтянуть именно определение StructA, поскольку Ptr - nested identifier в нем.
В принципе, я бы вполне себе рекомендовал использование вербозных врапперов над указателями и ссылками в больших проектах, поскольку это позволит их произвольным пейлоадом обременить при желании (например в рамках какой-нибудь условной отладочной компиляции с кастомными санитайзерами какими-нибудь).
источник

CA

Cedo Alteram in supapro.cxx
Не существует способа более простого, чем
((double) 1) / ((double) 2) для деления двух целых с получением в итоге double?
Без перегрузки
источник

CA

Cedo Alteram in supapro.cxx
как в этом случае отработает auto?
источник

M

Mr.Mait in supapro.cxx
1. / 2.
источник

CA

Cedo Alteram in supapro.cxx
а если переменная?
источник

DP

Denis Paukaev in supapro.cxx
то нет
источник

VD

Vlad Doc in supapro.cxx
auto a = nondouble / (double)nondouble2;
источник

VD

Vlad Doc in supapro.cxx
Или не кастить, а умножить на 1.0
источник

АК

Александр Караев... in supapro.cxx
@H1LIASSS, с биткойнами в другой чат
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Затрудняюсь ответить, если честно.
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Но, не зря же его придумали и все чаще используют в ядре, как минимум
источник

D

Dmitriy in supapro.cxx
"Не зря" - не ответ :)
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Ну окей, залочить на уровне корня - это более затратно, чем создать окно для писателя относительно читателлей на уровне корня, разве нет?
источник

D

Dmitriy in supapro.cxx
Да, но писателю придется копировать всё дерево или по крайней мере поддерево, и это нехилый оверхед по сравнению с локом на вставку 1 указателя
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Лок на вставку указателя можно делать атомарно без лока в принципе
источник

D

Dmitriy in supapro.cxx
Лок на вставку указателя в мапу/список/вектор?))
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
Эээм
источник