适用于头文件的函数别名

Function alias which is fine for header file

假设文件是​​这样的:

my_code.h:

namespace my {
    namespace _details{
        int ActionNoPrecision(int a);
        float ActionSinglePrecision(float a);
        double ActionDoublePrecision(double a);
    }

    auto& Action = my::_details::ActionSinglePrecision;
}

my_code.cpp - 实现这些功能

所以Action是函数的别名,意思是从用户代码调用。在我这边,我想控制这个别名的含义,而不触及用户的源代码(即用户仍然调用 Action,但 Action = ActionDoublePrecision)。但是使用当前代码我不能包含这个头文件,因为函数引用将被定义多次。

如何处理?我想出了创建带有这些别名的静态 class 的想法,但我从未在任何库中看到过这种方法(所以它们只有一个硬编码函数名称吗?)。

还有一个更深层次的问题。如果别名的含义发生变化(即函数别名、类型别名和其他),别名是否需要重新编译用户代码?我想不是,因为真正被调用的函数的位置改变了,所以需要重新链接

你快到了。只需使用这个:

constexpr auto* Action = my::_details::ActionSinglePrecision;

这可以毫无问题地包含到多个翻译单元中。