在某些平台上使用静态局部变量和静态函数的缺点

Quote from: https://skypjack.github.io/2019-02-14-ecs-baf-part-1/

class family {
static std::size_t identifier() noexcept {
    static std::size_t value = 0;
    return value++;
}

public:
    template<typename>
    static std::size_t type() noexcept {
        static const std::size_t value = identifier();
        return value;
    }
};
这是生成给定类型的标识符所需的代码   需要的时候:
const auto id = family::type<my_type>();
此实现的缺点是它使用静态   局部变量和静态函数。因此,它不起作用   在某些平台上跨越边界。在另一边   简单明了,易于使用和理解。

我不知道为什么它不能在某些平台上正常工作?

“跨越边界”是什么意思?

评论
  • tqui
    tqui 回复

    如果您有一个静态的ID,而第3方库也有一个静态的ID,则它们将相互冲突。因此,最好在可行范围内尽可能严格地限制事物的范围,并使其保持在名称空间的范围之内。