15 using ValueType = NumberType;
17 template <SomeCounterImpl ImplType = CounterImpl<ValueType>>
18 requires std::same_as<ValueType, typename std::remove_cvref_t<ImplType>::ValueType>
19 AnyCounterBase(ImplType&& impl = ImplType{})
20 : pimpl_(std::make_unique<
Model<ImplType>>(std::forward<ImplType>(impl)))
28 virtual void add(ValueType) = 0;
30 virtual void set(ValueType) = 0;
36 template <SomeCounterImpl ImplType>
38 template <SomeCounterImpl SomeImplType>
39 requires std::same_as<ImplType, SomeImplType>
40 Model(SomeImplType&& impl) : impl(std::forward<SomeImplType>(impl))
45 add(ValueType value)
override
51 set(ValueType v)
override
57 value()
const override
65 std::unique_ptr<Concept> pimpl_;