Size: a a a

2020 June 09

t

ttldtor in codingteam
бьёт по пальцам
источник

t

ttldtor in codingteam
тогда я не понимаю, почему это не сделать на концептах
источник

t

ttldtor in codingteam
точнее, тут ещё нужны метаклассы
источник

t

ttldtor in codingteam
саттеровские
источник

t

ttldtor in codingteam
одних концептов мало
источник

c

codingteam@cjr in codingteam
Minoru
когда я соглашался с insert_reference_here, я ещё не знал, что в компиляторе нет вообще никакой специальной поддержки
источник

c

codingteam@cjr in codingteam
Minoru
т.е. я знал, что Sync бесплатный и существует только в компайл-тайме, но думал, что компилятор знает про этот маркер и как-то его использует
источник

t

ttldtor in codingteam
ну по ошибке видно, что там просто требования
источник

t

ttldtor in codingteam
что-то там ожидает сущность с маркером Sync
источник

t

ttldtor in codingteam
и всё
источник

c

codingteam@cjr in codingteam
Minoru
а оказывается, что всё сделано силами системы типов, без дополнительной магии: если мы создаём замыкание, то мы берём ссылку; если мы передаём это замыкание в std::thread::spawn, то он требует от замыкания Send, а это требует Sync — а Sync для замыкания не выведется, если только все захваченные штуки не реализуют Sync. Вот Rc не реализует, поэтому замыкание не может быть передано в тред — имеем ошибку компиляции
источник

c

codingteam@cjr in codingteam
Minoru
да, просто требования
источник
2020 June 10

t

ttldtor in codingteam
голову мне морочили, господа...
источник

t

ttldtor in codingteam
я это припомню)
источник

c

codingteam@cjr in codingteam
Minoru
@ttldtor: т.е. «стратегия» — это такая обёртка, добавляющая типу новые свойства?
источник

c

codingteam@cjr in codingteam
Minoru
а, хм, погоди, а как ты с помощью концептов заставишь С++ выводить для лямбд типы, включающие Sync?
источник

t

ttldtor in codingteam
codingteam@cjr
Minoru
@ttldtor: т.е. «стратегия» — это такая обёртка, добавляющая типу новые свойства?
Забудь про стратегию. Стратегия - это я про стратегии из книжки Александреску. Когда т ыберёшь некий тег или параметр или атрибут и он вынуждает применить другой алгоритм. Такое было со стратегиями выделения памяти, например
источник

c

codingteam@cjr in codingteam
Minoru
(или не включающие, если захвачна ссылка на что-то, что не реализует Sync)
источник

t

ttldtor in codingteam
codingteam@cjr
Minoru
а, хм, погоди, а как ты с помощью концептов заставишь С++ выводить для лямбд типы, включающие Sync?
Я не могу получить типы захваченного?
источник

c

codingteam@cjr in codingteam
Minoru
а разве можешь?
источник