作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们通常做的是这样的:
template<class Callback>
void some_func(Callback const& callback){
....
}
template<class void Callback(int)> //<---
void some_func(Callback const& callback){// not valid
....
}
std::function
传递,我们可以指定类型,但是它会禁止内联。
最佳答案
如果您拥有C++ 20,那么这正是这些概念的所在
#include <concepts>
template<typename T>
concept Callback = requires(T a) {
{ a(int()) } -> std::same_as<void>;
};
template<Callback T>
void some_func(T const& callback){
// ....
}
int a(int) {
return 0;
}
void b(int) {}
int main() {
// below does not compile
// some_func(a);
some_func(b);
}
关于c++ - C++模板函数,在仍允许内联的同时指定回调仿函数/lambda的参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932900/
我是一名优秀的程序员,十分优秀!