Нюанс в том, что незивестен точный тип лямбды, они приходят из пользовательского кода, следовательно мне неизвестны типы и количество аргументов, которые функтор ожидает, т.е. я не могу использовать invoke_result<>. Нужно заглянуть в класс, схватить любой оператор() и вернуть тип возврата. Получилось такое:
template <typename T>
struct Return_type;
template <typename R, typename... Args>
struct Return_type<R(Args...)> {using type = R;};
template <typename R, typename Q, typename... Args>
struct Return_type<R (Q::*)(Args...)const> {using type = R;};
template <typename R, typename Q, typename... Args>
struct Return_type<R (Q::*)(Args...)> {using type = R;};
struct A{
struct V {
double operator()(int t)const {return 5;}
};
};
int main() {
auto l = [](double a, int e)mutable{return 2;};
auto l2 = [](int a){;return 2;};
Return_type<decltype(&decltype(l)::operator())>::type a;
Return_type<decltype(&decltype(l2)::operator())>::type a2;
Return_type<decltype(&A::V::operator())>::type a3;
auto l3 = [](auto b){;return 2;};
Return_type<decltype(&decltype(l3)::operator())>::type a4;
return 0;
}
И в принципе свою задачу я решил, мне этого хватит, но не знаю как (и возможно ли вообще) получить тип от лямбды, внутри которой шаблонный оператор() (тот, что auto l3). Решаема ли задача в случае с l3?
Добрый день. Помогите понят почему такой глюк. Пишу программу на QT для работы с сокетами, написал клинскую часть на на QT для Orange PI, всё собралось и работает как часы. Начал писать серверную часть пишу windows, поставил компилятор под x64 всё собирается нормально запускается но при этом программа глючит, подключаюсь к сокету и больше не чего не работает. Удалил компилятор под x64 поставил под 32 бита проблема исчезла. Написал серверную часть программы. Начал собирать под linux x64(debian), и проблема повторилась, собралось, но также работает не корректно. Помогите понять иза чего? Собираю вот так, через консоль.
qmake -project "CONFIG+=QT" "QT+=network"
qmake server.pro
make
Как такие классы-синглтоны правильнее создавать? Просто надо наследоваться от вышеуказанного CMySingleton, или надо напрямую привести хидер обычного класса к такому же состоянию и прописать реализацию метода Instance()?