类名后跟括号的类型是什么

What is the type of a class name follow by parenthesis

本文关键字:类型 是什么      更新时间:2023-10-16

我无法理解 https://github.com/hmenke/boost_matheval/blob/master/src/qi/parser.hpp#L43 这样的语法

struct bar {
bar() {}
};
template<typename _T>
class foo {
public:
foo() {}
};
...
foo<bar()> fb;
...

模板foo专业化的_T类型是什么?如何在foo中使用_T?

它是函数的类型。当您声明时

bar function();

即,一个不带参数并返回bar的函数,那么function有一个类型,它是bar()_T代表它。好像你有一个别名

using _T = bar();

typedef bar _T();

这种类型并不少见。例如,函数类型是std::function接受的。如何使用它取决于类模板的用途,以及它的潜在专用化方式。