无法将较短的名称分配给 C++ 函数模板

Unable to assign shorter names to C++ function templates

为了提高代码的可读性,我正在尝试为函数模板分配更短的名称,如下例所示:

#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>;
           ^

在不依赖预处理器定义的情况下,将较短的名称分配给函数模板的公认方法是什么?

使用引入类型。函数模板及其实例不是类型。

auto 替换 using 将使您的代码编译并执行您可能想要的操作。许多 cpmpilers 擅长内联简单的函数指针情况,因此在生产中它可能对性能影响为零。