🦥Alex Fails
шаблонные функции-члены класса не могут быть виртуальными, поэтому, думаю, что нет
Dmitry
максимально приближенно и более менее юзабельно хотя бы
Constantine
Я все еще не понимаю, что хотят. Аналог виртуальных шаблонных функций? Вроде, такого эффекта можно добиться, если из шаблонной функции возвращать интерфейс
Constantine
грубо говоря, если мы хотим сделать
template <Interface> /*virtual*/ Interface* QueryInterface();
у некоторого класса, мы просто ровно так ее объявляем и не реализуем, а вопрос корректности вызова сваливаем на линковку
Constantine
и дальше "виртуальные" QueryInterface определяются так, чтобы можно было в конструкторе потомка подменить возвращаемый интерфейс
Dmitry
интересно, это кто первым такое нарисовал
𝐀𝐥𝐞𝐱𝐚𝐧𝐝𝐞𝐫
/stat@combot
MrSmith
Aidar
Ivan
Нет конечно. Это просто пример
Ivan
С другой стороны после вывода, строка не нужна. Почему бы её не замувить?
Constantine
вызывающий может ее просто деструктнуть тогда
Aidar
смысла нет
Aidar
уменьшает область применения функции только
Vladislav
Vladislav
Aleksandr
Aidar
ахах
Surreal
Если в классе хранится просто объект, то имеет ли смысл в конструктор принимать объект по значению и мувать из него просто?
Alexey
статический полиморфизм - это перегруженные функции и шаблоны :)
Крылатый
Любопытно https://www.nayuki.io/page/near-duplicate-features-of-cplusplus
Ivan
Если мы в передаем в функцию что-то например: void foo(string& str) { std::cout << str; }, то на самом деле компилятор это перепишет в это void foo(string* str) { std::cout << *str; } разве нет?
Ivan
далее, если у нас какие-либо действия со строкой, то мы каждый раз тратим время на разыменовыание указателя
Surreal
Да, ссылки через указатели внутри реализованы.
Ivan
поэтому, я хотел бы замувить, чисто для скорости.
Крылатый
Ivan
А после использования строка нам не нужна. Вот пусть она внутри функции и умрёт
Surreal
поэтому, я хотел бы замувить, чисто для скорости.
На самом деле очень спорный вопрос, надо бенчить и смотреть в асм. И это даст прирос только в случае, когда у вас функция вызывается ощутимо много раз и в качестве аргументов передаются каждый раз разные строки.
Ivan
А как замувить const char* ?
Surreal
Никак, это литерал.
Constantine
в смысле? просто берем и мувим
Ivan
можно ли мувить массивы в Си-стиле?
Constantine
const char *s = "Hello, world!"
foo(std::move(s));
Surreal
Зачем их мувить? Они итак только указателем представлены.
Constantine
правда, делает совсем не то, о чем вы подумали
Surreal
Constantine
это компилируется
Constantine
я уверен
Igor
Constantine
правда, пользы в этом столько же, сколько в
int x = 0;
foo(std::move(x));
Constantine
ну если сигнатура foo будет void foo(string), <s>я даже сомневаюсь</s> работает
Constantine
если void foo(const char*), то точно скомпилируется и сработает
Aidar
#supapro
Aidar
Vladislav
Vladislav
Крылатый
🐙 Antony
Любопытно https://www.nayuki.io/page/near-duplicate-features-of-cplusplus
В начале список, в котором говорится что С++ скопировал фишки из С, а внизу обяъснение что фишки то разные...
Напоминает дипломную работу нерадивого студента: "Слон и черепаха - одно и то же, у обоих есть 4 лапы и хвост <50 страницами ниже> Как мы видим черепаха вообще не похожа на слона, т.к. у слона есть хобот!"
🦥Alex Fails
Крылатый
🦥Alex Fails
Kotbegemot го завтра в кафе
Dmitry
с Пензы есть кто?)
🦥Alex Fails
Вроде был
🐙 Antony
Я завтра в Казани
🦥Alex Fails
А. Точно. Блин, я не смогу туда( надо запилить будет потом заметочку по той встрече
Александр
А о чём вообще болтают на встречах?)
Александр
Ну то есть в чатике еще можно обсудить всякие проблемы, поотвечать на вопросы
Александр
Я про встречи в антикафе
Aidar
Aidar
понятно что явное лучше неявного но лямбды же для сокращения придумали
Constantine
Алдар
🦥Alex Fails
там лулзный был. Про ит в целом
Aidar
как x.operator()(y)
Aidar
а как парсить (x(y))?
Constantine
auto f = [](x(y)){} и неявное auto
Aidar
эмм
🦥Alex Fails
Мини-отчет напишу в канал и друга попрошу в контакт запелить
Aidar
так нельзя писать же
Constantine
ну например auto f = [](int(y)){}
Constantine
это разрешенный сейчас синтаксис
Aidar
ничеси
Aidar
зачем
Constantine
auto f = [](int){}
Aidar
этож объявление