@ProCxx

Страница 2178 из 2477
Azoyan
05.07.2018
09:41:00
Сейчас попробую ещё раз

Сергей
05.07.2018
09:43:00
@antoshkka в Parallelism 2, Reflection и Executors TS там описки: фицечки, type trits

Constantine
05.07.2018
09:43:16
Не нравится -- дело субъективное. А что значит НЕКОНСИСТЕНТНЫЕ?
Ну мне казалось, что nullable_reference_wrapper при учете nullable_reference ::= pointer надо называть pointer_wrapper...

Имена типов, выступающих в качестве не владеющего класса, формируются по разным правилам. Если бы имена были бы например string_view,atomic_view,array_view - было бы консистентно
array_view согласен, для atomic_reference я бы полностью назвал, если речь идет про обертку над атомарным указателем как reference_wrapper

Google
Constantine
05.07.2018
09:44:57
хотя в действительности я не понял, почему не std::atomic<T&>

Constantine
05.07.2018
09:45:37
хотя в действительности я не понял, почему не std::atomic<T&>
прямо таки чувствую atomic_reference (deprecated in C++23) (removed in C++26)

Azoyan
05.07.2018
09:47:49
Constantine
05.07.2018
09:48:32
Azoyan
05.07.2018
09:48:58
Хз, я люблю поупарываться)

В списках инициализации можно использовать тернарник если хочется и исключение выкинуть

Your welcome

Constantine
05.07.2018
09:50:10
Я не понял, как работает с пустым фрагментом в ? /*here*/ :

Azoyan
05.07.2018
09:50:47
Ох, я сам не понял. Опечатался

Constantine
05.07.2018
09:50:51
Я уж было решил что (int a = 0) ? : throw

Azoyan
05.07.2018
09:51:07
Только сейчас заметил

Constantine
05.07.2018
09:51:10
Но это не так работает

Google
Constantine
05.07.2018
09:51:43
Элвис оператор?
В плюсах его нет

Grigor
05.07.2018
09:51:53
В плюсах его нет
есть гнутые расширения же)

Azoyan
05.07.2018
09:51:56
Это баг?

Constantine
05.07.2018
09:52:00
окай

Azoyan
05.07.2018
09:54:08
Ilia
05.07.2018
09:54:52
Это где такое вылезает?
Если регатсья на https://stdcpp.ru через VK.com

Max
05.07.2018
10:01:17
как это вообще компилируется? О_О
А почему нет? С обеих сторон void .

Ilia
05.07.2018
10:01:48
А почему нет? С обеих сторон void .
Первое-то не void, его вообще нет..

Azoyan
05.07.2018
10:02:10
А почему нет? С обеих сторон void .
https://ideone.com/Eylkes теперь нет

Max
05.07.2018
10:03:24
Constantine
05.07.2018
10:05:22
А почему нет? С обеих сторон void .
Вы значение типа void создали?

Azoyan
05.07.2018
10:05:39
ЕЕЕЕ !

Constantine
05.07.2018
10:06:04
https://stdcpp.ru/proposals/eed5c3df-f062-4124-a5ed-3396a1480b95 а почему столько плюсов? это же вроде просто сокращающий буквы кода сахар

Grigor
05.07.2018
10:06:05
https://ideone.com/Eylkes теперь нет
а что не так-то с этим кодом?

Max
05.07.2018
10:06:45
вот это поворот.
а зачем его создавать? Достаточно того, что типы выражений совпадают. Но вот выше пишут, что такие рассуждения не работают)

Google
Ilia
05.07.2018
10:08:05
https://ideone.com/Eylkes теперь нет
Ну, это как раз допустимо, специальный случай где одно из выражений -- throw.

Azoyan
05.07.2018
10:08:13
ну окей

не пользуйтесь тернарниками, пожалуйста :)

Ilia
05.07.2018
10:09:08
Чёйта?

Constantine
05.07.2018
10:09:13
https://stdcpp.ru/proposals/431634d3-ce75-46de-9644-75ed4562747a @antoshkka а нельзя это разрулить на уровне контракта T для shared_ptr<T> ?

Ilia
05.07.2018
10:10:22
Это ты мне, старому Сшнику говоришь не пользоваться тернарником? ДА Я ТЕБЯ....

Azoyan
05.07.2018
10:11:27
во! спасибо

Это ты мне, старому Сшнику говоришь не пользоваться тернарником? ДА Я ТЕБЯ....
это в холивар надо идти, а я не хочу. Вкратце, это плохо влияет на других, которые начинают злоупотреблять ими до трех-четырех этажей...

Constantine
05.07.2018
10:16:14
это в холивар надо идти, а я не хочу. Вкратце, это плохо влияет на других, которые начинают злоупотреблять ими до трех-четырех этажей...
брат жив std::shared_ptr<const image_type> blendable_cached_base::image3_get(resources::loader::image3_ptr const& image_value) const { auto image3 = image_value->get(); return !utils::is_null(state.enabled_value) && !state.enabled_value->get() ? image3->disabled() : !utils::is_null(state.highlighted_value) && state.highlighted_value->get() ? image3->highlighted() : image3->normal(); }

Antony
05.07.2018
10:16:33
Если регатсья на https://stdcpp.ru через VK.com
Завёл тикет, должны поправить

Constantine
05.07.2018
10:17:08
Antony
05.07.2018
10:17:45
https://stdcpp.ru/proposals/eed5c3df-f062-4124-a5ed-3396a1480b95 а почему столько плюсов? это же вроде просто сокращающий буквы кода сахар
Наверное эта проблема многих раздражает. Отсюда и джелание её починить => обилие плюсов

Constantine
05.07.2018
10:18:18
Наверное эта проблема многих раздражает. Отсюда и джелание её починить => обилие плюсов
Ну... вот вас лично раздражает? (Поясню мысль: есть 3872 вещи, раздражающие меня в плюсах, и вроде никогда это не избыточность синтаксиса, в котором просто невозможно ошибиться )

вот такой код отлаживать тяжело, точку останова ставишь, а значения не видишь.
учитывая два прозрачных вызова в фрагменте отлаживать от тернарки сложнее не станет)

Antony
05.07.2018
10:28:52
https://stdcpp.ru/proposals/431634d3-ce75-46de-9644-75ed4562747a @antoshkka а нельзя это разрулить на уровне контракта T для shared_ptr<T> ?
Не, не очень получится. Представьте, что у вас есть объект, внутри которого уже есть подсчёт ссылок (нвапример объект из v8, или из другого языка со сборщиком мусора, или вы сами сделали такой объект и покомпактнее расположили там счётчики ссылок). Если вы указатель на подобный объек скормите shared_ptr, то shared_ptr проаллоцирует вспомогательную структуру, в которой будет хранить счетчики ссылок. Вам же хочется, чтобы shared_ptr использовал именно ваши счётчики, и ничего лишнего не аллоцировал

Google
Ilia
05.07.2018
10:29:36
Наверное эта проблема многих раздражает. Отсюда и джелание её починить => обилие плюсов
Мне как-то не понравилось. Мотивировать не могу. Поэтому не голосовал. Сразу ясно только, что с модулями это должно перекликаться как-то.

Nikita
05.07.2018
10:30:20
А почему статья Антона на хабре ещё не в закрепе?))

Ilia
05.07.2018
10:30:51
вот такой код отлаживать тяжело, точку останова ставишь, а значения не видишь.
Это отговорки для слабаков... ЗАЧЕМ писать тернарный оператор там, где надо будет отлаживать? ОК, написал сдуру -- зайди внутрь, потом выскочи наружу -- результат будет виден.

Ilia
05.07.2018
10:32:51
)) не хочу спорить) Обычно, отлаживают другие люди, нежели кто пишет )
Ну Костя вот дал пример как раз, где с тернаркой перебор показан...

Nikita
05.07.2018
10:33:52
лайков мало )
Блин название статьи такое волнующее чтоли Раньше думал мол "блин как же медленно развиваются плюсы" А сейчас: ещё не успел толком потрогать C++17, а уже "C++20 на подходе"

Azoyan
05.07.2018
10:34:23
Ну Костя вот дал пример как раз, где с тернаркой перебор показан...
ну, я про это и говорю. Ты же не будешь ругаться с людьми из-за этого? Придётся объяснять разумную грань... Плюс ещё надо, чтобы люди понимали, приоритет операций... Проще как с телеграмом - запретить и всё = )

Azoyan
05.07.2018
10:35:16
Max
05.07.2018
10:38:07
Наверное эта проблема многих раздражает. Отсюда и джелание её починить => обилие плюсов
Я бы отдельно проголосовал за часть последнего коммента, про ключевое слово with, типа struct MyStruct { int field1, field2, field3 }; MyStruct s; with (s) { field1 = 1; field2 = 2; field3 = 3; } А сам пропосал — по-моему дичь какая-то.

Artem
05.07.2018
10:41:55
А это всё не выражается в рамках metaclasses proposal?

Antony
05.07.2018
10:51:35
Я имею в виду, что instrusive_ptr будет по сути shared_ptr<T> с каким-то условием на T (например, если T наследует enable_intrusive_from_this<typename Deleter>)
хм... Звучит интересно, но кажется что это ломает бинарную совместимость и старый код с shared_ptr не сможет работать с новыми shared_ptr Но ваша идея хороша - мы будем иметь один тип для совместного владения. Писать функциb будет намного проще - надо будет написать одну функцию, вместо 2х

Constantine
05.07.2018
10:54:01
хм... Звучит интересно, но кажется что это ломает бинарную совместимость и старый код с shared_ptr не сможет работать с новыми shared_ptr Но ваша идея хороша - мы будем иметь один тип для совместного владения. Писать функциb будет намного проще - надо будет написать одну функцию, вместо 2х
Я исхожу из посылки, что речь идет исключительно о способе хранения счетчика ссылок. В этой логике мне непонятно, как сломается старый код с shared_ptr (потому что intrusive в действительности единственное, что не поддерживает - это weak_ptr)

Constantine
05.07.2018
11:00:46
Переслал ваши слова автору предложения. Он сказал что попробует это реализовать в ближайшее время
Здесь самое сложное это определить критерии. У меня в проекте со времен С++03 есть велосипед с базовым классом для аналога intrusive_ptr, вот непонятно, разрешить ли мне использовать его (т.е. делать trait-ы / проверку концепта на T) Кроме того, видимо, сломается pointer_cast, если T уходит к предку, который еще не поддерживает внутренний счетчик ссылок Мой личный опыт использования intrusive не встречал этих проблем. Intrusive использовался в основном ради идеального shared_from_this И да, вопрос в тему, имеет перспективу? namespace std { template <typename T> std::shared_ptr<T> shared_from(T& t) { return static_pointer_cast<T>(t.shared_from_this()): } }

Dmitry
05.07.2018
11:11:03
Я имею в виду, что instrusive_ptr будет по сути shared_ptr<T> с каким-то условием на T (например, если T наследует enable_intrusive_from_this<typename Deleter>)
intrusive_ptr можно использовать для неполного типа если через adl находятся соответствующие addref/release функции.

Google
Nikita
05.07.2018
11:12:52
О_о а как это вообще будет работать? struct X { // ... std::strong_equality operator<=>(const X&, const X&) = default; // ... }; ... template <X x> struct x_as_template_param { // ... };

Dmitry
05.07.2018
11:13:41
это точно безопасно? звучит страшновато
Ну а почему нет, тот же pimpl, только с shared состоянием например.

Nikita
05.07.2018
11:13:56
типо инстанс класса это же объект времени выполнения, как он будет разруливаться в шаблонном параметре?

Constantine
05.07.2018
11:14:34
Nikita
05.07.2018
11:15:21
значение переменной типа int тоже объект времени выполнения
а т.е. operator<=> в constexpr контексте будет работать?

А ещё, как такой шаблон специализировать (если это вообще можно будет)

Constantine
05.07.2018
11:17:44
intrusive_ptr можно использовать для неполного типа если через adl находятся соответствующие addref/release функции.
вроде как в этом случае нельзя писать универсальную реализацию для внутреннего счетчика ссылок, и все ок

но без универсальной реализации это другой intrusive_ptr, т.е. вопрос о usecase

и да, эту проблему можно разрулить на trait-ах для shared_ptr

правда, здесь trait по incomplete type и это опасно, но это такое

Dmitry
05.07.2018
11:24:02
Т.е. что то вроде if intrusive counted<T> using shared_ptr = intrusive_ptr

Constantine
05.07.2018
11:25:04
На самом деле внутри shared_ptr просто идет перегрузка ref/unref по трейту T

И касты проверяются на совместимость

Dmitry
05.07.2018
11:25:39
Но счётчик одного типа.

Страница 2178 из 2477