函数别名,适用于头文件

Function alias which is fine for header file

本文关键字:文件 适用于 别名 函数      更新时间:2023-10-16

假设文件是这样的:

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)。但是对于当前代码,我不能包含此头文件,因为函数引用将被多次定义。

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

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

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

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

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

相关文章: