Size: a a a

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

2020 April 18

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Все деструкторы — noexcept, такое ограничение языка
источник

O

Ofee in cxx.Дискуссионная
void foo() noexcept;
void bar() noexcept {
 foo(); // всё хорошо
}

Спустя пол года порефакторили и сделали
void foo();
Что стало с bar()?
источник

RM

Roy Mustang in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
И что значит "функция отбрасывалась"?
Имел в виду, чтоб noexcept отбрасывался
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
void foo() noexcept;
void bar() noexcept {
 foo(); // всё хорошо
}

Спустя пол года порефакторили и сделали
void foo();
Что стало с bar()?
уб?
источник

O

Ofee in cxx.Дискуссионная
Ofee
void foo() noexcept;
void bar() noexcept {
 foo(); // всё хорошо
}

Спустя пол года порефакторили и сделали
void foo();
Что стало с bar()?
В данном примере bar() — это, может, мув конструктор
источник

O

Ofee in cxx.Дискуссионная
Вот я точно не помню, УБ ли, но, вероятно, что так
источник

TS

Till Schneider in cxx.Дискуссионная
Нет
источник

TS

Till Schneider in cxx.Дискуссионная
Определённое поведение
источник

RM

Roy Mustang in cxx.Дискуссионная
А как noexcept оператор может вообще влиять уб или не уб? Если это лишь влияет на оптимизацию
источник

RM

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

TS

Till Schneider in cxx.Дискуссионная
Нет ub
источник

RM

Roy Mustang in cxx.Дискуссионная
А как же бросание исключения в конструкторе перемещения или копирования?
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Если это уб, то в чем оно выражается
В чём выражается x = 42/0?
источник

TS

Till Schneider in cxx.Дискуссионная
Roy Mustang
А как же бросание исключения в конструкторе перемещения или копирования?
Бросай
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
А как же бросание исключения в конструкторе перемещения или копирования?
Ну, бросай, кто мешает?
источник

RM

Roy Mustang in cxx.Дискуссионная
Нет, вы не поняли
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Till Schneider
Определённое поведение
Нет, уб, которое реализовано как std::terminate большинством компиляторов
источник

O

Ofee in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
UB (обычно резолвер зовёт здесь std::terminate, но как повезёт)
Точно UB? Вы расходитесь во мнении с @h4cktill. Я что-то тоже на cppreference не нашёл упоминания через ctrl+F
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Ofee
Точно UB? Вы расходитесь во мнении с @h4cktill. Я что-то тоже на cppreference не нашёл упоминания через ctrl+F
Точно уб
источник

RM

Roy Mustang in cxx.Дискуссионная
Я только что читал про rvalue, lvalue, reference forwarding, семантику перемещения
источник