gpt4 book ai didi

c++ - 仿函数/函数对象的 is_function 类型特征

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:41 26 4
gpt4 key购买 nike

考虑以下代码:

struct Bar { 
void operator()() {}
};

int main() {
std::cout << std::boolalpha << std::is_function<Bar>::value <<
}

输出为false

这里并不奇怪,因为仿函数 Bar 不符合函数类型 §8.3.5 Functions [dcl.fct]

现在考虑以下代码:

struct Bar { 
void operator()() {}
};

int main() {
std::cout << std::boolalpha << std::is_function<Bar()>::value << std::endl;
^^
}

请注意 Bar 之后的括号。输出为 true

Bar() 是如何限定为函数类型的?

我的猜测是这是一个最令人烦恼的解析案例,但它在模板参数列表中怎么可能呢?

最佳答案

嗯,我不认为它是 MVP,它只是返回 Bar 的函数类型并且不接受任何参数。

就是这个函数

Bar foo();

类型为 Bar() .

很自然地,std::is_function<Bar()>::valuetrue .

这将是相同的:

typedef Bar F();
std::cout << std::is_function<F>::value << std::endl;

关于c++ - 仿函数/函数对象的 is_function 类型特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com