
Роман
19.05.2018
17:35:53
Товарищи, а что комитет думает по поводу нечленовых operator += например?
И нечленовых operator=

Alexander
19.05.2018
17:37:45
извини, каких?
это что за звери такие?

Google

Роман
19.05.2018
17:38:48
ну non-member перегрузки операторов
например, чтобы можно было делать так:
string& operator=(string &, const MyClass &);
string str;
str = MyClass();

Sergey
19.05.2018
17:40:05
это что за звери такие?
он например про переопределение operator<< для cout
(который можно объявить только в виде свободной функции)

Aidar
19.05.2018
18:02:03

Роман
19.05.2018
18:04:09
юзкейс?
Вот есть класс стандартной библиотеки, например, строка. Есть свой класс, который можно представить в виде строки. Почему бы не разрешить сделать внешний оператор, который бы позволил простым и понятным синтаксисом сделать то, что нужно?
Чтобы стреляли исключительно в свою ногу, сделать правило. что это работает только в неймспейсе, где оператор объявлен, как в Rust. А когда это в C++ оберегали от прострела своей ноги?

Sergey
19.05.2018
18:05:27

Роман
19.05.2018
18:05:41

Sergey
19.05.2018
18:05:45
operator<< для всяких потоков точно разрешён

Роман
19.05.2018
18:06:10

Aidar
19.05.2018
18:06:49
но лучше так не делать очевидно

Google

Роман
19.05.2018
18:08:27
Там же временная строка создаётся. А если есть возможность не делать временной строки?

Scarf
19.05.2018
18:09:50

Роман
19.05.2018
18:10:29
Строка это просто самый понятный пример, оно более пригодно, если у нас будет какой-нибудь std::variant, и не хочется плодить к нему ещё один вариант, проще свести к имеющемуся.

Scarf
19.05.2018
18:12:50

Роман
19.05.2018
18:13:57

Ulan
19.05.2018
18:15:19
Здравствуйте

Aidar
19.05.2018
18:15:40

Ulan
19.05.2018
18:15:58
Можете подсказать

Роман
19.05.2018
18:16:15

Scarf
19.05.2018
18:16:16

Ulan
19.05.2018
18:16:39
Почему если я написал алгоритм в dev cpp ide и все корректно работает

Scarf
19.05.2018
18:16:53

Ulan
19.05.2018
18:17:01
Если пишу алгоритм в visual c++
То не работает?

Aidar
19.05.2018
18:17:23

Scarf
19.05.2018
18:17:25

Ulan
19.05.2018
18:17:27
Не компилируется

Sergey
19.05.2018
18:17:48

Роман
19.05.2018
18:17:54

Google

Ulan
19.05.2018
18:18:01
Console application

Aidar
19.05.2018
18:18:14

Sergey
19.05.2018
18:18:16

Aidar
19.05.2018
18:18:24
А не += к строке

Ulan
19.05.2018
18:18:25
Ммм
Я начинающий программист
Компилятор дев с++

Aidar
19.05.2018
18:19:07

Ulan
19.05.2018
18:19:15
Спс

Роман
19.05.2018
18:19:34
А не += к строке
Да я же не принципиально об этом примере. Я вообще о концепции. Для других типов это может быть не семантически вывод в поток
если у меня std::variant<Type1, Type2>, а я хочу туда зафигачить Type3, котрый может быть оптимально приведён к Type1 без временного объекта

Aidar
19.05.2018
18:20:10
Явное лучше неявного

Aidar
19.05.2018
18:21:31

Роман
19.05.2018
18:21:52

Admin
ERROR: S client not available

Aidar
19.05.2018
18:24:13
Я примерно понял что вы хотите
Вам короче лень оборачивать в свой класс

Роман
19.05.2018
18:24:37

Aidar
19.05.2018
18:25:17
Ну потенциально это может развиться в больше чем полторы

Роман
19.05.2018
18:25:38
Это всегда баланс и рефакторинг, так и работаем. Невозможно же всё запланировать.

Google

Aidar
19.05.2018
18:25:53
А можно было сразу написать нормально
Обернуть вариант в класс

Роман
19.05.2018
18:26:44
Обернуть вариант в класс
Ключевой момент изначально в том, что код с variant может быть не мой. да и вообще это пложение лишних сущностей в проекте.
Я понимаю, почему раньше эти операторы не сделали свободными, но сейчас то язык немного другой. Раст вот, например, имеет такие возможности.

Aidar
19.05.2018
18:28:11
Но присваивание перегружать вне класса это дичь
Я бы сказал противопоказано

Роман
19.05.2018
18:32:15
Так я и предлагаю разрешить их, но не доаавлять к ADL. Только свой неймспейс.

Aidar
19.05.2018
18:32:40
не надо так
какието эвристики для частных случаев

Роман
19.05.2018
18:33:01
А сейчас для них не иф чтоль?

Aidar
19.05.2018
18:33:11
нет
я конечно понимаю что раст построен на эвристиках

Роман
19.05.2018
18:33:44
То есть, это всё должно работать на весь массив присваиваний, новых ифов это не создаст

Dead
19.05.2018
18:34:04
Кто то писал алгоритм ,обойти конем шахматную доску ?

Aidar
19.05.2018
18:34:13
вангую что это выльется в квалификатор недобавлятькadl аkа explicit на все функции

Роман
19.05.2018
18:37:04
Кстати, было же какое-то предложение к стандарту, которое позволяло вызывать size(const T &t) как t.size(), или я путаю?