使用定义函数模板别名
define function template alias by using
我定义了一个函数模板别名:
template <typename T>
using Cb = typename std::add_pointer<void(bool, T)>::type;
但是得到这个错误:
错误:无法在赋值中将 'Log::operator(((Read&( [with T = int]::' 转换为 'Cb' {aka 'void (*((bool, int('}
template <typename T>
class Log : public Sink<T> {
public:
void
operator()(Read<T> &read) {
if (!more_) {
// error !!!
more_ = std::function<Cb<T>>([&](bool done, T val) {
if (!done) {
cout << val << endl;
this->operator()(read);
}
});
}
read(false, more_);
}
private:
Cb<T> more_ = nullptr;
};
主要功能:
int main() {
Log<int> logInt;
return 0;
}
谁来解决此语法错误?
代码示例
问题是
std::function<Cb<T>>
决心随心所欲地std::function<void (*)(bool, int)>
std::function<void (bool, int)>
.
因此,您可以将别名更改为
template <typename T>
using Cb = void(bool, T);
相关文章:
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 将重载的成员函数传递给函数模板
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 具有常量引用参数的函数模板专用化
- std::span<const T> 作为函数模板中的参数
- 如何编写一个完美的缩写函数模板?
- 仅在函数模板中为那些定义了函数的类型执行函数
- 如何在C++中伪造虚拟可变参数函数模板?
- 如何使用类型别名从模板化类中隐藏模板列表
- 以下代码中的函数模板有什么问题?
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 将显式实例化的函数模板与转换匹配
- 使用定义函数模板别名
- 函数模板返回类型
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 别名一个模板函数,该功能没有参数可更简洁
- 如何使用别名声明模板化函数类型定义
- 函数模板专用化的别名
- 具有已知类型的别名函数模板