【发布时间】:2018-08-06 21:20:59
【问题描述】:
查看我的代码:
#include <iostream>
#include <typeinfo>
int main() {
auto x = [](int a, int b) -> bool{return a<b;};
std::cout<<typeid(decltype(x)).name()<<std::endl;
}
这是打印Z4mainEUliiE_。谁能解释为什么? x的实际类型是什么??
【问题讨论】:
-
它正在打印类型...
-
它是
decltype(x)。为什么需要知道? -
请注意,如果您使用
(int,int)创建第二个 lambda,则其名称将为Z4mainEUliiE0_,无论返回类型或正文代码如何(假设 Linux/gcc)。同样,第三个将得到1而不是0,...
标签: c++ c++11 lambda c++14 decltype