@ProCxx

Страница 2452 из 2477
Dmitry
19.10.2018
18:11:34
тут же будет будет lifetime extension
Да, помнится в до-auto времена на этом можно было всякие удобные scope-exit функторы городить.

Dmitry
19.10.2018
18:14:09
как и сейчас)
Ну там без выведения типа можно было вроде свести всё к простой ссылке на базу с виртуальным деструктором, сейчас с auto виртуал побоку.

Anatoly
19.10.2018
18:15:26
Ну там без выведения типа можно было вроде свести всё к простой ссылке на базу с виртуальным деструктором, сейчас с auto виртуал побоку.
для этого не надо добавлять virtual destructor: class base { public: ~base() {std::cout << "base::dtor";} }; class der: public base { public: ~der() {std::cout << "der::dtor";} }; ... const base& b = der();

Google
Anatoly
19.10.2018
18:16:11
прекрасно вызывается деструктор der-a

Sergey
19.10.2018
18:16:24
Хм, а Address Sanitizer ругается на это
скорее всего он ругается потому что ты _можешь_ выстрелить себе в ногу что ты дальше делаешь со ссылкой?

olologin
19.10.2018
18:16:53
да ничего, только локально юзаю

мне кажется это из-за инлайна

в сигнатуре функции которая отдаёт временный обьект есть инлайн

Sergey
19.10.2018
18:19:17
у на coverity на такое ругается часто и пару раз это даже почти выстрелило. но я не помню что там и как :-/

Spoonson
19.10.2018
18:25:57
для этого не надо добавлять virtual destructor: class base { public: ~base() {std::cout << "base::dtor";} }; class der: public base { public: ~der() {std::cout << "der::dtor";} }; ... const base& b = der();
а почему der то вызывается? ссылка то на базовый обьект, компилятор конечно все наверное может понять, но это по стандарту так прописано?

Anatoly
19.10.2018
18:27:12
а почему der то вызывается? ссылка то на базовый обьект, компилятор конечно все наверное может понять, но это по стандарту так прописано?
в виду того, что здесь происходит продление времени жизни временного объекта, компилятор вызовет правильный деструктор вне зависимости от наличия или отсутствия виртульного деструктора

Dmitry
19.10.2018
18:33:11
Идея сегодня пришла, dictionary_string. Этакий string_view по всем показателям за исключением конструктора. Который строки складывает в глобальный singleton dictionary. Даже сделал, словарь как разбитый на сегменты массив самопальных хэш таблиц поверх pmr monotonic_buffer_resource. Закрыл сверху spinlock-shared-mutex'ами, но чувствую надо в сторону lock-free смотреть, для задач словаря atomic increment на каждую операцию чтения дороговато.

Таблицы самопальные потому что там ни итерируемость не нужна, ни удаление. Только рехэш разве что. Думаю попробовать что-то сваять на split ordered списках, да, при росте оно память будет поджирать немного. Зато lockfree. Типа динамических литералов. Например имена http заголовков, справочные названия или типа того, что-то, что имеет большую склонность к дублированию.

Matwey
19.10.2018
19:05:03
Посмотри как в eixx реализованы атомы

Ты изобрел тоже самое

Dmitry
19.10.2018
19:10:36
Гугл на eixx выдает какие то странные видео с азиатками...

Google
Matwey
19.10.2018
19:13:45
https://github.com/saleyn/eixx

Dmitry
19.10.2018
19:15:55
Эх, ещё и в Симпсонах уже наверняка было :(

Хотя не... lock_guard<Mutex> guard(m_lock); n = find_value(bucket, a_name.c_str());

Я думаю можно оптимальнее.

Без Mutex и без c_str.

Ilia
19.10.2018
19:42:09
Alexen
20.10.2018
07:00:06
@AlexFails я вчера попробовал с репы собрать кепку и оно не собралось причём там что-то дофига ошибок вывалило

Alexen
20.10.2018
07:17:40
а куда?

Pavel
20.10.2018
08:15:21
а куда?
https://github.com/procxx/kepka/issues Label question

Simon
20.10.2018
08:15:37
был же еще чат

olologin
20.10.2018
17:32:42
https://www.youtube.com/watch?v=0DDrseUomfU

Годная презентация про дебаггеры

Constantine
20.10.2018
22:07:23
кто-нибудь знает С++? void f(int (*x)[]) {} как вызвать эту функцию? :)

Igor
20.10.2018
22:11:48
кто-нибудь знает С++? void f(int (*x)[]) {} как вызвать эту функцию? :)
Аргумент - массив указателей на функции? Или хз)

Connor41
20.10.2018
22:12:55
f(**x) попробуй так

Constantine
20.10.2018
22:15:41
Google
Constantine
20.10.2018
22:18:50
/* void try1() { int (*a[])() = { &sample, &sample }; a[2](); f(a); //NO } */ /* void try2() { int* a[] = { nullptr }; f(a); //NO } */ какие еще варианты? :)

Connor41
20.10.2018
22:19:58
тебе надо передать в функцию массив массивов?

Constantine
20.10.2018
22:20:32
мне надо узнать, что вообще означает это имя типа

потому как я не могу придумать для него корректного значения

кроме nullptr

Constantine
20.10.2018
22:26:09
f(*(*(*(*(*)*)*)*)*)*); И иди спать
да я только проснулся! и все равно не придумывается

Андрей
20.10.2018
22:31:09
кто-нибудь знает С++? void f(int (*x)[]) {} как вызвать эту функцию? :)
int main() { int a[5]; f(&a); } Это работает, если в функции указать размер

Constantine
20.10.2018
22:34:38
int main() { int a[5]; f(&a); } Это работает, если в функции указать размер
void try3() { f(nullptr); //OK } /* void try4(int x[]) { f(&x); //NO } */ /* void try5() { int a[5]; f(&a); //NO } */

Андрей
20.10.2018
22:41:48
а если int написать, то вызовется и с 1 ;)
можно через c-style cast, int main() { int a[3]; f((int (*)[])a); } ```

Connor41
20.10.2018
22:43:09
можно через c-style cast, int main() { int a[3]; f((int (*)[])a); } ```
ох блед. как мне нравится синтаксим с указателями)

можно всякое с ними увидеть

Аттрибутивно-ассоциативный ряд
20.10.2018
22:44:45
Как можно вывести текущее время с долями секунды используя std::chrono и С++2a?

Igor
20.10.2018
23:21:13
https://en.cppreference.com/w/cpp/language/array - читай про arrays of unknown bound

Nikita
20.10.2018
23:47:11
это чтобы доли секунды вытащить

Constantine
21.10.2018
03:07:10
void f(int (*x)[]) {} void bar() { extern int x[]; f(&x); }
А как теперь закрыть extern?

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