Функция перегрузки для ссылок rvalue и lvalueC++

Программы на C++. Форум разработчиков
Anonymous
Функция перегрузки для ссылок rvalue и lvalue

Сообщение Anonymous »

Предположим, у меня есть шаблонный класс

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

template 
struct Dummy {
// ...
};
И я хочу перегрузить функцию 'foo' так, чтобы она принимала ссылку на нее lvalue
или rvalue. Я могу сделать это, используя некоторую черту IsDummy
следующим образом:

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

template 
std::enable_if
foo(A &&dummy)
{
// ....
}
IIRC в некоторых проектах C++11 было законным

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

template 
foo(Dummy &&dummy)
{
// ....
}
принимает как ссылки lvalue, так и value-.
Теперь мои вопросы:
  • a) Верно ли, что это было разрешено в каком-то проекте?
  • b) Почему эта функция/ ошибка удалена? Кажется, я где-то читал, что это произошло из-за конфликта с "понятиями".
Однако не могу найти соответствующие ссылки для этого больше. У кого-нибудь лучшая память или закладки?

Подробнее здесь: https://stackoverflow.com/questions/126 ... references

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