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

Dev*_*mex 5 c++ templates c++11

我无法理解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;
...
Run Code Online (Sandbox Code Playgroud)

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

Sto*_*ica 5

这是函数的类型。当你声明

bar function();
Run Code Online (Sandbox Code Playgroud)

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

using _T = bar();
Run Code Online (Sandbox Code Playgroud)

或者

typedef bar _T();
Run Code Online (Sandbox Code Playgroud)

这不是一种罕见的类型。例如,函数类型是std::function接受的。如何使用它取决于类模板的目的,以及它是如何潜在地专门化的。