Size: a a a

2021 June 30

IZ

Ilia Zviagin in supapro.cxx
Ну это ладно уже, это уведёт его вообще в другую сторону.
источник

t

treg in supapro.cxx
NRVO, тут будет на усмотрение компилятора, может вызвать конструктор может не вызывать
источник

IZ

Ilia Zviagin in supapro.cxx
Это же core feature , как ты его сделать умудрился?
источник

DS

David Suchet in supapro.cxx
спасибо!
источник

K

Kelbon in supapro.cxx
ну ладно, можно ещё простой способ - специализацию матрицы для случая 2 на2. С одной стороны и часть шаблонного класса, с другой тот же самый код чуток отредактированный. Слишком много упрощается в 2 на 2 случае, чтобы не написать специализацию
источник

N2

N 2 in supapro.cxx
ошибка была в том, что поле canvas было задекларировано выше bitmap, и поэтому сначала инициализировался canvas который получал мусор и сегфолтил
источник

K

Kelbon in supapro.cxx
да врде там довольно просто всё, если правило схлопывания ссылок реализовано в компиляторе, то работает
источник

d

d7d1cd in supapro.cxx
Так все, что для него надо, компилятор поддерживает. Просто в стд не подвезли.
источник

IZ

Ilia Zviagin in supapro.cxx
У тебя есть универсальные ссылки в компиляторе?
источник

K

Kelbon in supapro.cxx
сделай функцию, которая возвращает decltype(auto) и передавай туда аргументы созданные прямо там или lvalue(идентификаторы), наводи на вызов функции и в vs тебе будет подсказывать какой тип возвращает функция, так поймешь
источник

d

d7d1cd in supapro.cxx
Друг, какой VS? 🤣 У меня дичайший легаси IBM i.
источник

K

Kelbon in supapro.cxx
ну и другой вариант удалить конструктор класса и вызывать его для твой форвард(что то), компилятор выдаст тип
источник

d

d7d1cd in supapro.cxx
Сделал шаблон функции-обертки с универсальными ссылками. Компилируется, запускается.
источник

K

Kelbon in supapro.cxx
class S{ template<typename T> S(T) = delete; }
main{
S v(myforward(5))
источник

C

CodeDetector in supapro.cxx
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

VS

Vlad Serebrennikov in supapro.cxx
не лень же кому-то было подготовить формулировки для VLA в С++. интересно, какая история стоит за этим TS
https://wg21.link/n3820
источник

D

Dmitriy in supapro.cxx
Чего?
источник

D

Dmitriy in supapro.cxx
Это функция библиотеки, которая руками спокойно пишется
источник

d

d7d1cd in supapro.cxx
И что я тут должен увидеть?
источник

C

Chuvi in supapro.cxx
Ситуация:
в одном потоке: (почти псевдокод)
if(CondMx.try_lock()){sleep_1_seconds();print_note_we_were_there(); CondMx.unlock();}else{print_not_locked()};sleep_for(1 мкс);
- это в цикле

в другом потоке:
pLog->info("std::unique_lock<std::mutex>");
                   std::unique_lock<std::mutex> lk(CondMx);
                   pLog->info("std::unique_lock<std::mutex>:DONE");
//далее не интересно, там потом есть unlock
Собственно, иногда проскакивают ситуации, когда после вызова std::unique_lock цикл потока успевает несколько раз(точно больше одного) пройтись через try_lock->unlock

В логах это выглядит так: T:11332 - это 1-й поток, в котором try_lock. T:10184 - соответственно другой поток
[14:14:27:852503][T:11332][CVTest:T] Locked. Sleeping //try_lock успешен. Спим 1 секуну
[14:14:28:180536][T:10184][CVTest:I] std::unique_lock<std::mutex> //пробуем заблокировать мьютекс через unique_lock
[14:14:28:853603][T:11332][CVTest:T] Wake!  -проснулись
[14:14:28:854603][T:11332][CVTest:T] UNlock - разблокировались
[14:14:28:855603][T:11332][CVTest:T] Locked. Sleeping - вот тут ожидалось увидеть  std::unique_lock<std::mutex>:DONE от потока 10184
[14:14:29:856703][T:11332][CVTest:T] Wake!
[14:14:29:857704][T:11332][CVTest:T] UNlock
[14:14:29:858704][T:11332][CVTest:W] BAD_LOCK // а здесь уже try_lock не сработал.
[14:14:29:858704][T:10184][CVTest:I] std::unique_lock<std::mutex>:DONE

В общем, вопрос: кккакого чёрта?
источник