Как использовать построенный объект в качестве параметра в C ++ 20?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать построенный объект в качестве параметра в C ++ 20?

Сообщение Anonymous »

Я только что переключил свою версию C ++ на C ++ 20 в Visual Studio и получил ошибки на расстоянии.

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

class Foo {
int value;
public:
Foo(int v) : value(v) {}
};

// A function that does something with a Foo
void bar(Foo& f)
{
// ...whatever
}

// This gives an error in C++20 but not in C++17
// The message is something like "cannot convert from Foo to T&"
bar(Foo(3));
< /code>
Какова причина? Есть ли улов для исправления этого кода? Есть  сотни < /strong> из них. < /P>

Дополнение: Код выше немного бесполезен, потому что я думал только о синтаксисе, когда я напечатал его.class DataSource;   // Abstract source of data

// Can read ASCII/UTF8/Unicode from a DataSource
class TextReader {
DataSource& source;
public:
TextReader(DataSource& s) : source(s) {}
};

// Read some text
void readText(TextReader& r)
{
}

void main()
{
FileDataSource d("file.text");
readText(TextSource(d));    // Neat!
}
Способность передавать ссылки на временные районы может быть хорошей вещью, поэтому я не понимаю, почему они удаляют его и сломали много кода в процессе.

Подробнее здесь: https://stackoverflow.com/questions/795 ... ter-in-c20
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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