Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何在c++0x中访问lambda的类型? 如何访问C++中lambda函数的参数类型?以下操作不起作用: template <class T> struct capture_lambda { }; template <class R, class T> struct capture_lambda<R(T)> { static void exec() { } }; template <class T> void test(T t) { capture_lambda<T>::exec(); } int main() { test([](int i)->int{ return 0; }); }_Templates_Lambda_C++11_Variadic - Fatal编程技术网

Templates 如何在c++0x中访问lambda的类型? 如何访问C++中lambda函数的参数类型?以下操作不起作用: template <class T> struct capture_lambda { }; template <class R, class T> struct capture_lambda<R(T)> { static void exec() { } }; template <class T> void test(T t) { capture_lambda<T>::exec(); } int main() { test([](int i)->int{ return 0; }); }

Templates 如何在c++0x中访问lambda的类型? 如何访问C++中lambda函数的参数类型?以下操作不起作用: template <class T> struct capture_lambda { }; template <class R, class T> struct capture_lambda<R(T)> { static void exec() { } }; template <class T> void test(T t) { capture_lambda<T>::exec(); } int main() { test([](int i)->int{ return 0; }); },templates,lambda,c++11,variadic,Templates,Lambda,C++11,Variadic,这是不可能的,lambda函数是用于创建函数对象而不是实际函数的语法糖。这意味着模板正在接受一个类,而类没有参数类型的概念 还要记住,一个通用函数对象可以有任意数量的重载运算符。我想问一个更广泛的问题:使用exec函数,您想解决什么问题?听起来有点难看。我正在尝试创建一个代数并集类型。对任意函数对象类型的重载解析。。。我想不出一个办法。如果他们想导出他们的参数类型,这是可以做到的。否则,我不知道。谢谢你的回复。 template <class T, class ...F> void

这是不可能的,lambda函数是用于创建函数对象而不是实际函数的语法糖。这意味着模板正在接受一个类,而类没有参数类型的概念


还要记住,一个通用函数对象可以有任意数量的重载运算符。

我想问一个更广泛的问题:使用exec函数,您想解决什么问题?听起来有点难看。我正在尝试创建一个代数并集类型。对任意函数对象类型的重载解析。。。我想不出一个办法。如果他们想导出他们的参数类型,这是可以做到的。否则,我不知道。谢谢你的回复。
template <class T, class ...F> void exec(T t, F... f...) {
    //select the appropriate function from 'F' to invoke, based on match with T.
}
exec(1, [](char c){ printf("Error"); }, [](int i){ printf("Ok"); });