std::uniform_real_distribution::operator()
является:Почему `std :: sample` принимает` UniformRandomBitGenerator` как &&?
template< class Generator >
result_type operator()(Generator& g);
в то время как std::sample
является:
template< class PopulationIterator, class SampleIterator,
class Distance, class UniformRandomBitGenerator >
SampleIterator sample(PopulationIterator first, PopulationIterator last,
SampleIterator out, Distance n,
UniformRandomBitGenerator&& g);
Я только ссылки uniform_real_distribution
здесь, потому что это еще одно место в стандарте, который принимает генератор и sample
и std::uniform_real_distribution::operator()
взять их в разные пути. Просто любопытно об этом.
на # 1: Я не пытался подразумевать какое-либо отношение между 'станд :: uniform_real_distribution :: оператор()' и 'sample' кроме них есть два места в стандартной библиотеке, которые принимают генератор, и они не делайте этого таким же образом. на # 2: я не согласен, так почему же 'std :: uniform_real_distribution :: operator()' также взять его на &&? – David
кажется, что есть только потенциал роста (большая гибкость), чтобы распределения принимали генераторы по &&, а также – David
@David: ответ обновлен. И согласился; тем не менее, изменение распределений требует работы, и никто не требует от упомянутых изменений, поэтому работа вряд ли считается достойной усилий. В конце концов, C++ - это добровольческая работа. ; -] – ildjarn