default_random_engine是否有类型?

时间:2016-04-11 16:11:54

标签: c++

假设我在C ++中有一个default_random_engine,他生成的值是否有一个类型?如果有,可以做类似的事情     sum = sum + generator; 并假设sum具有预定义类型

1 个答案:

答案 0 :(得分:1)

  

default_random_engine是否有类型?

是。它是其他引擎之一的typedef。

§26.5.5

  

备注:此typedef命名的引擎类型的选择是实现定义的。 [注意:   实现可以基于性能,大小,质量或任何组合来选择这种类型   这些因素,以便为相对随意,不熟练和/或提供至少可接受的发动机行为   轻量级使用。因为不同的实现可以选择不同的底层引擎类型,代码   使用此typedef不需要跨实现生成相同的序列。 - 结束说明]

所有随机引擎都会导出类型Engine::result_type,这是Engine::result_type Engine::operator()的返回类型。

result_typeUIntType的typedef,它是第一个模板参数。

e.g:

std::mersenne_twister_engine<std::uint_fast32_t, 
                         32, 624, 397, 31, 
                         0x9908b0df, 11, 
                         0xffffffff, 7, 
                         0x9d2c5680, 15, 
                         0xefc60000, 18, 1812433253>

operator()的返回类型为std::uint_fast32_t