为了提高代码的可读性,我试图为函数模板指定更短的名称,如下面的示例所示:
#include <iostream>
template<typename T>
T func(T a, T b)
{
return a + b;
}
int main()
{
using fi = func<int>;
using fd = func<double>;
std::cout << fi(1, 1) << std::endl;
std::cout << fd(1.0, 1.0) << std::endl;
return 0;
}
但是在试图编译时,我会得到一个错误。
$ g++ func.cpp -o func
func.cpp: In function ‘int main()’:
func.cpp:11:11: error: expected nested-name-specifier before ‘fi’
using fi = func<int>;
^
在不依赖于预处理器定义的情况下,为函数模板分配较短名称的公认方法是什么?
发布于 2016-04-23 09:10:11
使用引入一种类型。函数模板及其实例不是类型。
auto
取代using
将使您的代码编译并执行您可能想做的事情。许多cpmpilers对于内联简单函数指针的情况都很好,所以在prod中它可能没有任何性能影响。
https://stackoverflow.com/questions/36813883
复制