我正在编写一个C ++库,并且有这样的想法[[amazing]],即尽可能多地使用C ++ 2a / C ++ 20。因此,我正在使用标准库概念并创建自己的库概念。但是,函数返回std::vector<X>
的想法对我来说似乎不够C ++ 20,因此我在概念中声明了匹配std::ranges::view<X>
的返回类型。然后,我实现了一些满足此概念的类。但是,当我想设计一个多态包装器类时,问题就出现了。因此,假设概念是C
,并且我有三个实现类C1
,C2
和C3
(但允许更多类)。现在,我想创建一个类C_virtual
和一个派生自其的模板C_virtual_impl<C c>
,这将使我能够多态地引用所有实现C
的类。但是,要使其正常工作,我需要一个多态的std::ranges::view
包装器,其本质与C_virtual
相似。
我在标题和C ++参考中都没有看到这样的类。而且,当我自己开始实现它时,由于对迭代器的某些要求,特别是默认的可构造性,可交换性等,我很快发现自己无法做到。
标准库中有没有明显的解决方案或成语?如果没有,我该如何处理?可能需要更改设计。我当然不希望返回std::vector<X>
或返回V<X>
,其中V
将是C
的类型参数。我该怎么做?
我正在编写一个C ++库,并且有一个令人惊奇的想法,即尽可能多地使用C ++ 2a / C ++ 20。因此,我正在使用标准库概念并创建自己的库概念。但是,函数的概念...
vector<BaseClass>
并不是特别有用。