我想做的是这样的:
template <class DataType>
DataType myFunc(DataType in)
{
...
}
typedef myFunc<int> myFunc_i;
myFunc_i(37);
...但是,typedef 不能用于 C++ 中的此类函数。我想知道的是......在这种情况下人们首选的替代方案是什么?我唯一能想到的是:
1) 处理就好,并且始终使用 myFunc 语法
2)手动创建包装函数,即
inline int myFunc_i(int in)
{
return myFunc<int>(in);
}
这可以工作,但会有需要额外维护的缺点,并且可能会不同步(即,如果您更改 myFunc 的函数签名)。
想法?
尝试这个:
typedef int (*myFunc_i_type)(int);
myFunc_i_type const myFunc_i = &myFunc<int>;
如果签名如下,这将触发编译器错误myFunc
永远改变。进行中const
也禁止重新分配。函数指针也可以像任何普通函数一样调用:myFunc_i(5)
.
如果您不希望出现编译器错误而是希望其自行更新,请使用auto
(再次与const
):
auto const myFunc_i = &myFunc<int>;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)