Size: a a a

cxx.Дискуссионная

2020 April 18

RM

Roy Mustang in cxx.Дискуссионная
аа все нормально
источник

RM

Roy Mustang in cxx.Дискуссионная
там Node принимает затем по ссылке
источник

RM

Roy Mustang in cxx.Дискуссионная
а затем снова move
источник

RM

Roy Mustang in cxx.Дискуссионная
так что правильное решение net_sv_msg_cb_map.emplace(msg_id, std::move(cb));
источник

.

.undefined in cxx.Дискуссионная
Тебе нормально самому с собой общаться?
источник

RM

Roy Mustang in cxx.Дискуссионная
.undefined
Тебе нормально самому с собой общаться?
Я вот жду, поправит меня кто-то или я прав
источник

RM

Roy Mustang in cxx.Дискуссионная
Должен ли я помечать функции использующие внутри себя семантику перемещений, как noexcept, если я уверен, что методы внутри функции не вызываются исключение? (Прочитал что от этого зависит оптимизация)
источник

RM

Roy Mustang in cxx.Дискуссионная
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Должен ли я помечать функции использующие внутри себя семантику перемещений, как noexcept, если я уверен, что методы внутри функции не вызываются исключение? (Прочитал что от этого зависит оптимизация)
1) А ты уверен, что они всегда будут noexcept?
2) А почему нет?
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
1) А ты уверен, что они всегда будут noexcept?
2) А почему нет?
Не совсем то что хотелось бы услышать
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
Проверь. Оно упадёт
источник

RM

Roy Mustang in cxx.Дискуссионная
В каком смысле не всегда будут noexcept ?
источник

RM

Roy Mustang in cxx.Дискуссионная
Если внутри вызывается что-то, что может бросать исключение?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Не совсем то что хотелось бы услышать
Это вопрос по С++ же, тут никогда в ответ не получаешь то, что хочешь...
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
И следом вопрос, что произойдет если помеченная как noexcept функция все же имеет внутри себя вызов какого нибудь new который может бросить исключение?
UB (обычно резолвер зовёт здесь std::terminate, но как повезёт)
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Это вопрос по С++ же, тут никогда в ответ не получаешь то, что хочешь...
Я хотел услышать что-то вроде:
1) Не обязательно, но так компилятор будет лучше оптимизировать код для семантики перемещения, однако, нужно учитывать что можно острелить себе ногу если забыть что функция помеченная, как noexcept внутри себя вызывает функции, которые могут бросить исключение
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
В каком смысле не всегда будут noexcept ?
Вот используется у тебя семантика перемещений и все конструкторы перемещения noexcept. А однажды ты решаешь реализовать в конструкторе перемещения одного из классов нетривиальную логику и позволяешь ему кидать исключения. Ты, конечно же, сразу вспомнишь все методы, полагающиеся на этот конструктор и пойдёшь с них снимать noexcept?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Я хотел услышать что-то вроде:
1) Не обязательно, но так компилятор будет лучше оптимизировать код для семантики перемещения, однако, нужно учитывать что можно острелить себе ногу если забыть что функция помеченная, как noexcept внутри себя вызывает функции, которые могут бросить исключение
Именно последнюю часть я тебе и рассказал с учётом потенциальных изменений в коде
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Roy Mustang
Должен ли я помечать функции использующие внутри себя семантику перемещений, как noexcept, если я уверен, что методы внутри функции не вызываются исключение? (Прочитал что от этого зависит оптимизация)
Что значит "должен"? Кому должен
источник

RM

Roy Mustang in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
UB (обычно резолвер зовёт здесь std::terminate, но как повезёт)
А почему бы не сделать так чтоб функция помеченная как noexcept компилятором автоматом отбрасывалась если эта функция вызывает функции, которые могут бросить исключение?
источник