代码之家  ›  专栏  ›  技术社区  ›  skypjack

使类模板的静态内联变量模板跨边界工作

  •  0
  • skypjack  · 技术社区  · 5 年前

    我有个问题 this
    它是一个公开静态内联变量模板的类模板。

    要缩小问题的范围并清除库中的特定内容,请考虑以下示例:

    template<typename...>
    class family {
        inline static int identifier{};
    
        template<typename...>
        inline static const int inner = identifier++;
    
    public:
        template<typename... Type>
        inline static const int type = inner<std::decay_t<Type>...>;
    };
    
    struct foo {
        using bar = family<foo>;
    
        template<typename T>
        void quux() {
            const auto id = bar::type<T>;
            // do something with id
        }
    };
    

    隐藏的

    正如您所猜测的,类的目标是为类型生成连续的数字标识符。

    我在努力寻找 正确的 让它工作的方法 .

    我很确定我遗漏了一些明显的东西,但我看不出是什么。任何帮助都可以 真正地 感谢。

    0 回复  |  直到 5 年前