LINUX.ORG.RU

[libsigc++] Два вопроса


0

0

1. Возможно ли сделать что-то вроде такого без явного указания типа при вызове f?

#include <cstdio>
#include <sigc++/sigc++.h>

int f(sigc::slot<void>){ return 1; }
int f(sigc::slot<bool>){ return 1; }

void g(void) {}
bool h(void) {}

int main(int argc, char **argv){
  std::printf("%d\n", f(sigc::ptr_fun(g)));
  return 0;
}
Сейчас - «error: call of overloaded ‘f(sigc::pointer_functor0<void>)’ is ambiguous». Именно по возвращаемому значению (как в примере) сделать довольно просто, а про параметры слота - не знаю.

2. Как сделать что-то вроде такого:

sigc::bind_return(sigc::retype_return<SomeType>(slot), var);
(где var - переменная типа SomeType) но чтобы работало даже когда тип возвращаемого значения slot - void?


В первом вопросе реализации f разные; то что в примере в обеих return 1 - не важно.

opkdx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.