我喜欢跨度,所以我gsl::span
在这里和那里使用。但是 - 在 C++20 中,它将std::span
改为*。我使用std::optional
,但对于 C++14 代码,它需要是std::experimental::optional
. 等等。
在这些变体(有时可能超过两个)之间进行编译时选择的惯用且面向未来的方法是什么,以便我的实际代码可以只使用一个标记序列,该标记序列编译为正确选择跨度,或可选,或其他类似的构造?
注意:我想避免污染全局命名空间。
* 好吧,从技术上讲,我也可以gsl::span
稍后使用,但这个问题的想法是在标准可用时使用标准中的内容,并在此之前使用最接近的替代方案。