相关疑难解决方法(0)

内联变量是否跨越边界是唯一的?

这是对这个问题的跟进.
如答案评论中所述:

内联变量具有以下属性: - 在每个转换单元中具有相同的地址.[...]通常您通过在cpp文件中定义变量来实现这一点,但是使用内联说明符,您只需在头文件中声明/定义变量,并且使用此内联变量的每个转换单元都使用完全相同的对象.

而且,从答案本身来说:

虽然该语言不保证(甚至提及)在跨共享库边界使用此新功能时会发生什么,但它确实可以在我的计算机上运行.

换句话说,当涉及共享库时,不清楚内联变量是否保证跨边界是唯一的.有人在经验证明它可以在某些平台上运行,但它不是一个正确的答案,它可能只是破坏其他平台上的一切.

内联变量在跨越边界使用时是否有任何保证,或者它只是一个我不应该依赖的实现细节?

c++ shared-libraries language-lawyer c++17 inline-variable

19
推荐指数
2
解决办法
724
查看次数

独特的类类型ID,它是安全的并且跨库边界

我很感激任何帮助,因为C++不是我的主要语言.

我有一个在多个库中派生的模板类.我试图找出一种方法来唯一地为每个派生类分配一个id int.我需要能够通过静态方法来实现,即.


template < class DERIVED >
class Foo
{
public:
    static int s_id()
    {
        // return id unique for DERIVED
    }
    // ...
};
谢谢!

c++ templates class unique

11
推荐指数
3
解决办法
2万
查看次数