
reagentoo
01.06.2017
13:28:23
да все тайп трайтсы криво названы)

Дед Пегас
01.06.2017
13:28:28
Вангую ради лулзов.

Alex Фэils?︙
01.06.2017
13:28:53
У майерса было вроде б ппочему

Antony
01.06.2017
13:33:59

Google

Дед Пегас
01.06.2017
13:35:22
Расширениями вообще не стоит пользоваться.

Antony
01.06.2017
13:35:26
void foo(std::string&& s) {
std::string tmp = std::move(s); //не будет ли здесь оверхеда при создании новой строки?
std::cout << tmp << " 1\n";
}
Чтобы гарантированно без всякого overheada
void foo(std::string&& s) {
std::cout << s << " 1\n";
s.clear();
}

Дед Пегас
01.06.2017
13:35:30
Если не хаскель, конечно.

Antony
01.06.2017
13:36:47

Constantine
01.06.2017
13:43:06
если предполагается (конвенцией), что эта ссылка может быть сохранена, то такое преобразование - ошибка
я в свое время не придумал, как в стандарте C++98 не делать лишнюю перегрузку вызова с неконстантным функтором, поэтому пользовался ради параметра по умолчанию в таких случаях

Alex Фэils?︙
01.06.2017
13:47:18

Constantine
01.06.2017
13:48:25
на 2003 вижаке я не уверен, что это вообще работало :)
ему лучше было вопросы посложнее не задавать
в любом случае это сейчас не нужно, я могу лямбдой функторы писать и внутри ссылку ставить, так что просто всегда по значению такой функтор получаю

reagentoo
01.06.2017
13:52:38
...
а динамического полиморфизма на статике сейчас модного не завезли?

Google

Constantine
01.06.2017
13:53:14
что вы имеете в виду?

reagentoo
01.06.2017
13:53:51
вопрос на libastral рассчитан)
но это ладно

Alex Фэils?︙
01.06.2017
13:54:32
Динамический полиморфизм - это виртуальные функции
Статический - это цртп

reagentoo
01.06.2017
13:54:51
ага
всё так

Alex Фэils?︙
01.06.2017
13:55:25
шаблонные функции-члены класса не могут быть виртуальными, поэтому, думаю, что нет

reagentoo
01.06.2017
13:56:08
максимально приближенно и более менее юзабельно хотя бы

Constantine
01.06.2017
13:59:31
Я все еще не понимаю, что хотят. Аналог виртуальных шаблонных функций? Вроде, такого эффекта можно добиться, если из шаблонной функции возвращать интерфейс
грубо говоря, если мы хотим сделать
template <Interface> /*virtual*/ Interface* QueryInterface();
у некоторого класса, мы просто ровно так ее объявляем и не реализуем, а вопрос корректности вызова сваливаем на линковку
и дальше "виртуальные" QueryInterface определяются так, чтобы можно было в конструкторе потомка подменить возвращаемый интерфейс

reagentoo
01.06.2017
14:09:47

AlexanderV2
01.06.2017
14:22:27
/stat@combot

Combot
01.06.2017
14:22:27
combot.org/chat/-1001031904034

MrSmeet
01.06.2017
14:25:48
Нужна векторная эмблема на сумку

Aidar
01.06.2017
14:44:03

Azoyan
01.06.2017
14:45:24
Нет конечно. Это просто пример
С другой стороны после вывода, строка не нужна. Почему бы её не замувить?

Constantine
01.06.2017
14:57:35
вызывающий может ее просто деструктнуть тогда

Google

Aidar
01.06.2017
15:00:27
смысла нет
уменьшает область применения функции только

Vladislav
01.06.2017
15:04:23

Antony
01.06.2017
15:15:26

Vladislav
01.06.2017
15:27:15

Kotbegemot
01.06.2017
15:28:08

Aidar
01.06.2017
15:28:30
ахах

Surreal
01.06.2017
15:34:30
Если в классе хранится просто объект, то имеет ли смысл в конструктор принимать объект по значению и мувать из него просто?

Alexey
01.06.2017
15:34:31
статический полиморфизм - это перегруженные функции и шаблоны :)

Дед Пегас
01.06.2017
15:36:34
Любопытно https://www.nayuki.io/page/near-duplicate-features-of-cplusplus

Azoyan
01.06.2017
15:37:37
Если мы в передаем в функцию что-то например: void foo(string& str) { std::cout << str; }, то на самом деле компилятор это перепишет в это void foo(string* str) { std::cout << *str; } разве нет?
далее, если у нас какие-либо действия со строкой, то мы каждый раз тратим время на разыменовыание указателя

Surreal
01.06.2017
15:38:20
Да, ссылки через указатели внутри реализованы.

Azoyan
01.06.2017
15:38:53
поэтому, я хотел бы замувить, чисто для скорости.

Дед Пегас
01.06.2017
15:38:57

Azoyan
01.06.2017
15:40:05
А после использования строка нам не нужна. Вот пусть она внутри функции и умрёт

Surreal
01.06.2017
15:42:17
поэтому, я хотел бы замувить, чисто для скорости.
На самом деле очень спорный вопрос, надо бенчить и смотреть в асм. И это даст прирос только в случае, когда у вас функция вызывается ощутимо много раз и в качестве аргументов передаются каждый раз разные строки.

Igor
01.06.2017
15:43:03

Azoyan
01.06.2017
15:43:55
А как замувить const char* ?

Surreal
01.06.2017
15:45:00
Никак, это литерал.

Google

Constantine
01.06.2017
15:45:20
в смысле? просто берем и мувим

Azoyan
01.06.2017
15:45:23
можно ли мувить массивы в Си-стиле?

Constantine
01.06.2017
15:45:47
const char *s = "Hello, world!"
foo(std::move(s));

Surreal
01.06.2017
15:45:55
Зачем их мувить? Они итак только указателем представлены.

Constantine
01.06.2017
15:45:59
правда, делает совсем не то, о чем вы подумали

Surreal
01.06.2017
15:46:11

Constantine
01.06.2017
15:46:31
это компилируется
я уверен

Admin
ERROR: S client not available

Igor
01.06.2017
15:46:35

Constantine
01.06.2017
15:47:07
правда, пользы в этом столько же, сколько в
int x = 0;
foo(std::move(x));
ну если сигнатура foo будет void foo(string), <s>я даже сомневаюсь</s> работает
если void foo(const char*), то точно скомпилируется и сработает

Aidar
01.06.2017
15:51:37
#supapro

Group Butler [beta]
01.06.2017
15:51:38
#supapro
Чат supapro.cxx: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w

Aidar
01.06.2017
15:52:16

Vladislav
01.06.2017
17:23:05

Дед Пегас
01.06.2017
17:23:31

Antony
01.06.2017
17:31:54
Любопытно https://www.nayuki.io/page/near-duplicate-features-of-cplusplus
В начале список, в котором говорится что С++ скопировал фишки из С, а внизу обяъснение что фишки то разные...
Напоминает дипломную работу нерадивого студента: "Слон и черепаха - одно и то же, у обоих есть 4 лапы и хвост <50 страницами ниже> Как мы видим черепаха вообще не похожа на слона, т.к. у слона есть хобот!"

Google

Alex Фэils?︙
01.06.2017
17:52:47
Kotbegemot го завтра в кафе

reagentoo
01.06.2017
18:10:24
с Пензы есть кто?)

Alex Фэils?︙
01.06.2017
18:13:30
Вроде был

Antony
01.06.2017
18:24:29
Я завтра в Казани

Alex Фэils?︙
01.06.2017
18:32:27
А. Точно. Блин, я не смогу туда( надо запилить будет потом заметочку по той встрече

Александр
01.06.2017
18:34:15
А о чём вообще болтают на встречах?)
Ну то есть в чатике еще можно обсудить всякие проблемы, поотвечать на вопросы
Я про встречи в антикафе

Aidar
01.06.2017
18:34:58

Alex Фэils?︙
01.06.2017
18:35:45

Aidar
01.06.2017
18:36:08
понятно что явное лучше неявного но лямбды же для сокращения придумали

Constantine
01.06.2017
18:37:51
а как парсить (x(y))?

Aldar
01.06.2017
18:37:52

Alex Фэils?︙
01.06.2017
18:38:13
там лулзный был. Про ит в целом

Aidar
01.06.2017
18:38:15
как x.operator()(y)
а как парсить (x(y))?

Constantine
01.06.2017
18:38:36
auto f = [](x(y)){} и неявное auto

Aidar
01.06.2017
18:38:49
эмм