我正在尝试实现一个具有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());
}
这可能吗?我的直觉说不,但是希望有人对模板更熟悉可以告诉我其他方式,或者建议一个聪明的解决方法。