Вызов функции-члена, перегруженной ref-квалификаторами, неоднозначенC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Вызов функции-члена, перегруженной ref-квалификаторами, неоднозначен

Сообщение Гость »


Я обнаружил странное поведение при компиляции моего кода с помощью G++ (gcc 4.8.1 и MinGW 4.8.2 с -std=gnu++1y флаг). В духе SSCCE я выделил следующий фрагмент:

структура C { шаблон авто f(X &&) const & { ; } шаблон авто f(X &&) & { ; } шаблон авто f(X &&) && { ; } }; интервал основной() { интервал я {}; #если 1 C{}.f(я); #endif #если 1 С с {}; ср. (я); #endif вернуть 0; } Выдает ошибку:

main.cpp: В функции int main(): main.cpp:29:10: ошибка: вызов перегруженного 'f(int&)' неоднозначен ср. (я); ^ main.cpp:29:10: примечание: кандидаты: main.cpp:6:5: примечание: auto C::f(X&&) const & [с X = int&] f(X &&) const & ^ main.cpp:11:5: примечание: auto C::f(X&&) & [с X = int&] f(X &&) & ^ main.cpp:16:5: примечание: auto C::f(X&&) && [с X = int&] f(X &&) && ^ Но в случае #if 1 и #if 0 или #if 0 и #if 1 > компилируется нормально. Кроме того, если я заменю все auto на void, то все также успешно скомпилируется.

Это ошибка или я просто ввожу в заблуждение?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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