Size: a a a

cxx.Дискуссионная

2020 February 27

RM

Roy Mustang in cxx.Дискуссионная
Она как бы умеет принимать просто функции и члены классов
источник

RM

Roy Mustang in cxx.Дискуссионная
то есть, функции из классов тоже умеет принимать, за счет той перегрузки с functor
источник

RM

Roy Mustang in cxx.Дискуссионная
в .hpp все правильно, я передаю функтор через std::move в RegMsgCallback, а она принимает её как &&
источник

RM

Roy Mustang in cxx.Дискуссионная
Это означает что я должен внутри RegMsgCallback использовать std::forward, разве нет?
источник

RM

Roy Mustang in cxx.Дискуссионная
а у меня там
net_cl_msg_cb_map.insert(std::make_pair(msg_id, std::move(cb)));
источник

RM

Roy Mustang in cxx.Дискуссионная
using NET_MSG_FUNCTOR = std::function<bool (CNetMsg&)>;
using NET_MSG_MAP = std::unordered_map<uint32_t, const NET_MSG_FUNCTOR>;
источник

RM

Roy Mustang in cxx.Дискуссионная
Это вот using'и
источник

RM

Roy Mustang in cxx.Дискуссионная
и там даже не insert а emplace + std::forward должен быть, нет?
источник

AB

Artöm Bakri Al-Sarmini in cxx.Дискуссионная
Roy Mustang
@h4cktill подскажи пожалуйста, если я принимаю std::functuin как &&, должен ли я выполнить std::move или там std::forward ?
Мув
источник

AB

Artöm Bakri Al-Sarmini in cxx.Дискуссионная
Roy Mustang
Обычно std::forward для && используется
Только если имеет место вывод типа
источник

RM

Roy Mustang in cxx.Дискуссионная
То есть, там все правильно у меня?
источник

RM

Roy Mustang in cxx.Дискуссионная
А что означает "имеет место вывод типа"?
источник

AB

Artöm Bakri Al-Sarmini in cxx.Дискуссионная
В void f(Window&& w) никакого вывода типа нет и форвард не нужен
источник

RM

Roy Mustang in cxx.Дискуссионная
то есть, если нет lvalue?
источник

RM

Roy Mustang in cxx.Дискуссионная
std::function же rvalue получается?
источник

0

0xFF in cxx.Дискуссионная
Егор
что за String?
CLI кажись
источник

RM

Roy Mustang in cxx.Дискуссионная
Я никак не разберусь в rvalue и lvalue, я понимаю, что rvalue - это все что не lvalue, а std::function по сути может быть lvalue, когда мы в него пихаем функцию?
источник

RM

Roy Mustang in cxx.Дискуссионная
Сложно что-то
источник

0

0xFF in cxx.Дискуссионная
Саси
источник

AB

Artöm Bakri Al-Sarmini in cxx.Дискуссионная
0xFF
CLI кажись
Не похоже
источник