| 3939 | |
| 3940 | template <typename T> |
| 3941 | class GeneratorWrapper final { |
| 3942 | std::unique_ptr<IGenerator<T>> m_generator; |
| 3943 | public: |
| 3944 | GeneratorWrapper(std::unique_ptr<IGenerator<T>> generator): |
| 3945 | m_generator(std::move(generator)) |
| 3946 | {} |
| 3947 | T const& get() const { |
| 3948 | return m_generator->get(); |
| 3949 | } |
| 3950 | bool next() { |
| 3951 | return m_generator->next(); |
| 3952 | } |
| 3953 | }; |
| 3954 | |
| 3955 | template <typename T> |
| 3956 | GeneratorWrapper<T> value(T&& value) { |