
Constantine
15.02.2018
15:53:05
при этом /EHsc является основной практической настройкой
в данном примере такое ощущение, будто компилятор опасается выброшенного исключения при {} - инициализации структуры с size_t

Aidar
15.02.2018
15:54:02
а математически можно заставить компиль распозновать удлинение времени жизни в сложных случаях?

Antony
15.02.2018
15:54:55

Google

Aidar
15.02.2018
15:55:18
на объекты бы повесить те же штуки что и на функции

Constantine
15.02.2018
15:55:40
в общем, категорически рекомендую добавлять /EHsc при проверке тех или иных решений для msvc
потому что может приводить к полному сбою всей оптимизации

Aidar
15.02.2018
15:55:55
слишком жирно

Antony
15.02.2018
15:57:21

Anatoly
15.02.2018
15:58:55

Berkus
15.02.2018
15:59:19
да ну его
го писать на го - тупо же звучит, поэтому и не пишет :D

Alex Фэils?︙
15.02.2018
15:59:42
ага, да и к тому же я ж уже так шутил)

Antony
15.02.2018
15:59:44

Anatoly
15.02.2018
16:01:06
интересно, какой смысл вкладывался. даже если предположить, что сигнатура была до появления std::string_view просто std::string.

Antony
15.02.2018
16:01:09

Google

Anatoly
15.02.2018
16:01:32
ok

Constantine
15.02.2018
16:03:29
нужно просто нормально написать для всяких std::vector::operator [] ref-quailifier

Aidar
15.02.2018
16:04:07
ну вон там стрингвью

Anatoly
15.02.2018
16:04:12
@antoshkka так, а прострел ноги в том, что ...? ну, передали в std::string_view временный объект, который будет жить до конца полного выражения. ну передали в функцию. функция же не дура сохранить где-то std::string_view и использовать после.

Constantine
15.02.2018
16:05:10
в string_view нужно запретить вообще временные объекты передавать)

Aidar
15.02.2018
16:05:25
просто какбы у stringview семантика ссылки неявная
и вроде хранить можно изза этого

Constantine
15.02.2018
16:06:02
я бы сказал, что в C++ есть чудесная проблема преобразования && в const&

Aidar
15.02.2018
16:06:22
даже 2 или 3

Constantine
15.02.2018
16:06:46
const& сигнатура аналогична const
operator string_view() noexcept & должно быть
string_view это принципиально & тип, насколько я понимаю, он не может захватить владение

Antony
15.02.2018
16:09:36

Constantine
15.02.2018
16:10:57
Т.е. если я создаю или присваиваю view-объект с нарушением правил жизни, я сам буратино
Хотя я предпочел бы иметь view-объекты немутабельными
Как &

Google

Berkus
15.02.2018
16:12:24
Enter Rust

Constantine
15.02.2018
16:13:09

Aidar
15.02.2018
16:13:34
ну там не нужна гарантия
давайте оставим как есть

Constantine
15.02.2018
16:14:31
Ну кроме того, что && конвертируемо языком в const& и это все ломает

Aidar
15.02.2018
16:19:04
ну раст +- говорят чекает хотя я не проверял
на явных штуках наверное

Constantine
15.02.2018
16:19:39
да раст небось заставит тебя доказывать что объект не сдохнет

Berkus
15.02.2018
16:22:25

Constantine
15.02.2018
16:22:44

Berkus
15.02.2018
16:22:50
удобно вот так хейтить то сразу, да?

Constantine
15.02.2018
16:23:20
я предполагаю ошибку вроде "I'm not sure this reference is not dead, gimme the prove"

Berkus
15.02.2018
16:24:54

Constantine
15.02.2018
16:25:37

Berkus
15.02.2018
16:29:20
ну в расте если функция консьюмит этот стринг вью, то bar(foo()) валиден - bar заберет ownership себе и спокойно внутри себя похоронит
если не консьюмит то тоже должно быть нормально, не могу сказать точно почему я так думаю сейчас правда

Google

Berkus
15.02.2018
16:30:29
а, ну собсно borrow будет на время вызова, а потом дропнется

Constantine
15.02.2018
16:30:59

Berkus
15.02.2018
16:31:36
если ты передаешь значение то оно консьюмится
let a = "foo";
g(&a); // g сжирает &a
f(a); // f сжирает а
h(a); // хуюшки
примерно так

Constantine
15.02.2018
16:33:06
т.е. g() по сигнатуре получает & и обязана не делать side effect
f(), h() по сигнатуре получает значение и его перемещают
правильно?

Admin
ERROR: S client not available

Berkus
15.02.2018
16:34:44
близко, но не совсем, в с++ нету lifetime annotations

Alex Фэils?︙
15.02.2018
16:34:56
{}

Constantine
15.02.2018
16:36:21
(под side effect подразумеваю что функция не имеет права присваивать ссылку кому-либо, кроме локальных переменных и возвращаемого view-значения)

Berkus
15.02.2018
16:39:05
в конвенции нет бороу чекера, так что это баловство в целом

Constantine
15.02.2018
16:39:26
компиль-тайм чекера нет, да
рантайм чекает в дебажке

Berkus
15.02.2018
16:40:44
ну хоть так

Constantine
15.02.2018
16:40:56
ну там в случае передачи ссылки с сохранением враппер передается
т.е. типа
0. По умолчанию ты не имеешь права считать, что ссылка живет дольше вызываемой функции (вызывающий гарантирует последнее)
1. Если 0 нарушается возвратом view-объекта, ты сам делаешь враппер и обзываешь функцию _view
2. Если 1 нарушается, то принимается сразу враппер

Berkus
15.02.2018
16:45:49
1 как нарушается?

Constantine
15.02.2018
16:50:46
Например, мне нужно передать std::function с биндом

Google

Constantine
15.02.2018
16:52:16
Лямбда должна враппер сразу захватывать
Или есть кнопки, которые хотят, чтобы был инициализирован глобальный TooltipController

Kitsu
15.02.2018
17:19:48
void f(const T t) { g(std::move(t)); }
Это же UB?

Constantine
15.02.2018
17:48:17

Kitsu
15.02.2018
17:48:54

Constantine
15.02.2018
17:49:33

Matwey
15.02.2018
19:52:39
Господа
А clang и gcc обучены ли PLD использовать на ARM-ах?
https://lwn.net/Articles/444336/
Вот вам. Тут любят такое.
> An additional complication comes from the fact that virtual memory systems can have more than one mapping for a given range of memory, and caching is a feature of the mapping, not the memory itself. So one might well wonder what happens if different mappings have different caching attributes. On recent ARM processor designs, what happens is officially undefined; in practice, it can mean problems like corrupted memory, machine checks, or simple hangs.

Arina
15.02.2018
20:16:11
Ребят, всем привет)
кто свободен и может помочь мне?

Anatoly
15.02.2018
20:17:00

Arina
15.02.2018
20:17:15
ахахх
нет
комп практикум в универ не могу сделать
массив у меня хватило ума сгенерировать
а сортировку не знаю как

Scarf
15.02.2018
20:18:20
@supapro

Arina
15.02.2018
20:19:46
?