【发布时间】:2021-02-28 12:00:33
【问题描述】:
我正在尝试将模板化函数传递给另一个函数,如下所示:
template<typename T = bool>
void fun() {}
template<typename F>
void higher_order_fun( const F & f) {
f();
}
int main () {
//higher_order_fun(fun<>); //works
higher_order_fun(fun);
}
在gcc10.2 中,我能够以同样的方式传递fun(模板原型)
作为指定类型fun<>.
请注意,如果我没有默认模板参数 T=bool,这将不起作用。
在Clang11 这不起作用。
见https://godbolt.org/z/9WfMdc。
这是怎么回事?
【问题讨论】:
-
我会说 gcc 错误。
标签: c++ templates gcc compiler-errors clang