34 using ValueType = NumberType;
36 template <SomeCounterImpl ImplType = CounterImpl<ValueType>>
37 requires std::same_as<ValueType, typename std::remove_cvref_t<ImplType>::ValueType>
39 : pimpl_(std::make_unique<
Model<ImplType>>(std::forward<ImplType>(impl)))
47 virtual void add(ValueType) = 0;
49 virtual void set(ValueType) = 0;
55 template <SomeCounterImpl ImplType>
57 template <SomeCounterImpl SomeImplType>
58 requires std::same_as<ImplType, SomeImplType>
59 Model(SomeImplType&& impl) : impl(std::forward<SomeImplType>(impl))
64 add(ValueType value)
override
70 set(ValueType v)
override
76 value()
const override
84 std::unique_ptr<Concept> pimpl_;