是否可以找出lambda的参数类型和返回类型?(Is it possible to figure out the parameter type and return type of a lambda?)
给定一个lambda,是否可以找出它的参数类型和返回类型? 如果是,怎么样?
基本上,我想要使用以下方式的
lambda_traits
:auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long
动机背后的是我想在函数模板中使用
lambda_traits
,它接受一个lambda作为参数,我需要知道它是函数中的参数类型和返回类型:template<typename TLambda> void f(TLambda lambda) { typedef typename lambda_traits<TLambda>::param_type P; typedef typename lambda_traits<TLambda>::return_type R; std::function<R(P)> fun = lambda; //I want to do this! //... }
目前我们可以假设lambda只有一个参数。
最初,我试图使用
std::function
作为:template<typename T> A<T> f(std::function<bool(T)> fun) { return A<T>(fun); } f([](int){return true;}); //error
但这显然会给出错误( ideone )。 所以我把它改成了
TLambda
版本的函数模板,并想在std::function
内部构造std::function
对象(如上图所示)。Given a lambda, is it possible to figure out it's parameter type and return type? If yes, how?
Basically, I want
lambda_traits
which can be used in following ways:auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long
The motivation behind is that I want to use
lambda_traits
in a function template which accepts a lambda as argument, and I need to know it's parameter type and return type inside the function:template<typename TLambda> void f(TLambda lambda) { typedef typename lambda_traits<TLambda>::param_type P; typedef typename lambda_traits<TLambda>::return_type R; std::function<R(P)> fun = lambda; //I want to do this! //... }
For the time being, we can assume that the lambda takes exactly one argument.
Initially, I tried to work with
std::function
as:template<typename T> A<T> f(std::function<bool(T)> fun) { return A<T>(fun); } f([](int){return true;}); //error
But it obviously would give error. So I changed it to
TLambda
version of the function template and want to construct thestd::function
object inside the function (as shown above).
原文:https://stackoverflow.com/questions/7943525
最满意答案
你可以这样做:
/* Clearfix for the menu */ .ui-menu:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; }
并设置:
.ui-menu .ui-menu-item { display: inline-block; float: left; margin: 0; padding: 0; width: auto; }
You can do this:
/* Clearfix for the menu */ .ui-menu:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; }
and also set:
.ui-menu .ui-menu-item { display: inline-block; float: left; margin: 0; padding: 0; width: auto; }
相关问答
更多-
你可以这样做: /* Clearfix for the menu */ .ui-menu:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } 并设置: .ui-menu .ui-menu-item { display: inline-block; float: left; margin: ...
-
这是解决方案: http : //jsfiddle.net/surendraVsingh/GDABm/1/ CSS更改: .ui-tabs{ zoom: 1; text-align:center; /* Add This */ } .ui-tabs .ui-tabs-nav{ list-style: none; position: relative; overflow: hidden; z-index: 1000; display:inline-block; / ...
-
修正了它: http : //jsfiddle.net/RXFn6/3/ 以下是解决此问题的步骤: 将滑块包裹在div中 从.ui-widget-content删除背景和边框 将(2)中的背景和边框添加到(1)中创建的包装div中, 如有必要,在包装上设置border-radius 增加包装上的padding-right ,直到滑块不再看起来像它离开轨道 Fixed it: http://jsfiddle.net/RXFn6/3/ Here are the steps for resolving this ...
-
通过使用data-address属性,以及一些玩弄代码,我想出了这个解决方案 HTML
- Blah
- Blah
-
如果我正确地理解你,你可以使用伪类,例如:hover , :active等,这是一个小例子 ul li{ display:inline; color:yellow; } ul li:hover{ color:blue; text-decoration:underline; } ul li:active{ color:red; } http://jsfiddle.net/ebdkodLL/ 希望这可以帮助 If im understanding you properl ...
-
JQuery UI:水平菜单(JQuery UI: Horizontal Menu)[2021-07-15]
工作示例http://jsfiddle.net/5a75Z/1/ .ui-menu li { float: left; padding: 0 6px; list-style: none; } 我删除了你所有的CSS样式,然后只添加了上面的3个样式,它现在只使用float: left水平工作,我只是因为添加了padding和list样式。 编辑: 然后让子菜单垂直显示只需添加此项 ul ul { width: 100px; position: relative; ... -
简单!! 只需将您的CSS更改为: .ui-menu { width: 150px; z-index: 2; } 请在此处查看演示 。 请记住,当您处理相对,绝对或固定的定位元素时,您可以使用z-index来改变堆叠顺序。 Easy!! Just change your CSS to: .ui-menu { width: 150px; z-index: 2; } See the demo here. Remember when you deal with po ...
-
$(document).ready(function() { $("#second").hide(); $("#toSecond").on('click', function() { $("#first").hide("slide", { direction: "left" }, 1000); $("#second").show("slide", { direction: "right" }, 1000); }); ...
-
你想要停止哪个元素? 改为使用它: $("#nav li").hover(function () { $(this).children("ul").stop(true, true).fadeIn("slow"); }, function(){ $(this).children("ul").stop(true, true).fadeOut("slow"); }); 的jsfiddle Which element do you want to be stopped? Use t ...
-
如何在bootstrap侧面导航上显示jQuery-ui自动完成?(How To Display jQuery-ui Auto Complete on top of bootstrap side nav?)[2023-04-25]
增加ui-autocomplete类的z-index。 Increase z-index of ui-autocomplete class.
相关文章
更多- ServletOutputStream cannot be resolved to a type
- HTTP Content-Type 内容类型详解
- Becoming a data scientist
- 深入浅出dwr系列教程之2传参数及处理各种类型的返回值
- Solr: a custom Search RequestHandler
- java lambda表达式-JAVA8新特性
- maven项目使用SOLR时报 previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest" 错的解决方法
- 微信公众号接口添加菜单时错误(errcode":40017 invalid button type)
- 按钮样式
- Spring Data: a new perspective of data operations
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)