Size: a a a

2021 June 30

d

d7d1cd in supapro.cxx
Но ведь при вот таком вызове foo будет копирования указателя на функцию. Не хочу ненужного копирования.

template <typename Foo, typename... Args>
void CallFoo(Foo foo, Args&&... args) {
 foo(std::forward<Args>(args)...);
}
источник

K

Kelbon in supapro.cxx
1. можно не убирать, просто никогда не будет инстанцироваться шаблон от &&(если не передавать туда rvalue)
2. можно написать не универсальную ссылку(раз она всегда такая)
источник

d

d7d1cd in supapro.cxx
Мое рассуждение такое:
1. Если функция передается по значению, то это ненужное копирование указателя. Неприемлемо.
2. Если передавать функцию по обычной ссылке, то копирования не будет. Хорошо.
3. Если передавать по универсальной ссылке, то при передаче lvalue получим обычную ссылку, а это п. 2. Если же прилетит rvalue, то получим rvalue и тоже нет копирования.

Вывод: функцию передавать надо по универсальной ссылке, но форвардить не нужно ибо некуда.
источник

K

Kelbon in supapro.cxx
ты же сказал что не будешь передавать rvalue, если будешь то конечно универсальная
источник

d

d7d1cd in supapro.cxx
А вдруг потом когда-то надо будет. Ведь я ничего не теряю, если сразу сделаю ссылку на функцию универсальной.
источник

K

Kelbon in supapro.cxx
да
источник

DS

David Suchet in supapro.cxx
если, к примеру, операция вычитания числа из объекта Obj моего класса переопределяется через MyClass operator-(int value), то как переопределить операцию вычитания объекта моего класса из числа?
источник

K

Kelbon in supapro.cxx
через friend функцию вне класса
источник

K

Kelbon in supapro.cxx
не для всех операторов можно объявлять их вне класса, но для этого можно
источник

DS

David Suchet in supapro.cxx
а можете привести пример, пожалуйста?
источник

DS

David Suchet in supapro.cxx
заголовка функции
источник

K

Kelbon in supapro.cxx
friend myClass operator-(const myClass& value, int x)
источник

K

Kelbon in supapro.cxx
надеюсь ниче не перепутал
источник

K

Kelbon in supapro.cxx
а то бывают глупые ошибки где угодно
источник

D

Deathwish in supapro.cxx
Перепутал, а действительно ли нужно через friend делать?
источник

D

Deathwish in supapro.cxx
Если можно и без него
источник

DS

David Suchet in supapro.cxx
порядок аргументов не играет роли? это не переопределит компонентную функцию MyClass operator-(int x)?
источник

K

Kelbon in supapro.cxx
попробуй и попереставляй аргументы, это просто
источник

D

Deathwish in supapro.cxx
А так вроде ошибок нету
источник

D

Deathwish in supapro.cxx
Всё чики-пуки
источник