首页 > 解决方案 > 具有模板非类型参数的成员变量没有模板类?

问题描述

我正在尝试实现一个具有 linear_congruential_engine 成员的类。我不想强制实现,但我不确定这是否可行,因为 linear_congruential_engine 是作为具有非类型参数的模板实现的。

我想要实现的示例:

template <class T> MyClass {
protected:
    template<T a, T c, T m>
    std::linear_congruential_engine<T, a, c, m> randEngine;
public:
    template<T a, T c, T m>
    MyClass(std::linear_congruential_engine<T, a, c, m> randEngine) {
        this->randEngine = randEngine;
    }
}

允许:

int main() {
    MyClass<uint32_t> ex1(std::minstd_rand0());
    MyClass<uint32_t> ex2(std::minstd_rand());
}

这可能吗?我的直觉说不,但希望更熟悉模板的人可以告诉我其他情况或建议一个聪明的解决方法。

标签: c++classtemplatesmembernon-type

解决方案


推荐阅读