Перегрузка и нестабильностьC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Перегрузка и нестабильность

Сообщение Anonymous »

Как это будет работать?

Код: Выделить всё

struct S {};

void foo(volatile S&);
void foo(S);

int main() {
volatile S v;
foo(v);
}
Компиляторы расходятся во мнениях: MSVC принимает код, а Clang и GCC говорят, что вызов неоднозначен (демо).
Мы можем доказать это только 1-й кандидат может принять v, если мы закомментируем одного из кандидатов (и в этом случае составители согласятся):
  • Если мы сохраним только 1-й, код компилируется.
  • Если оставить только 2-й, то получим ошибку ( не имеет копировщика. из изменчивого S&).
EDIT: поскольку вопрос был опубликован, люди придумали более простой пример. без энергозависимости.

Подробнее здесь: https://stackoverflow.com/questions/785 ... d-volatile
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»