为什么我总是可以在typedef中添加一对括号,它是什么意思?带括号的C++无功能typedef
#include <iostream>
#include <typeinfo>
int main() {
typedef int td;
std::cout << typeid(td).name() << std::endl;
std::cout << typeid(td()).name() << std::endl;
return 0;
}
输出:
i
FivE
所以在上面...它是td()或td()的返回值,看到作为具有FivE类型的“函数对象”?如果前者看起来很奇怪,它与'typeid(td())'中的td yield(i) – 2014-10-09 16:01:20
@ fast-reflex不完全相同,则将'td()'作为类型。就好像你声明了'int foo();'然后'typeid(foo)'。 – 2014-10-09 16:06:00
只是为了清晰的事情...一些函数重载了参数,指出它们用于何种类型(例如http://en.cppreference中的alg函数。com/w/cpp/iterator/iterator_tags),我假设我们不能为函数提供一个类型(作为一个参数),我们改为(在这个例子中)在类型之后使用(),而不是仅仅提供类型在这种情况下,该结构将被默认构造,并且该参数实际上是该类型的对象,而不仅仅是一种通用类型(不起作用),该类型正确吗? – 2014-10-09 16:19:09