std::any - 为什么它缺少这么多运算符?

std::any - why does it lack so many operators?

我正在考虑使用 std::any 作为我正在构建的接口的一部分进行类型擦除,但我想知道为什么它缺少这么多运算符,例如“+”、“==”。我对 Coliru here 进行了修补,我将 std::any 扩展为可求和并可打印到 ostream 中。这仅适用于现在持有 double 的 anys,但这个概念有效,它只是需要完成的实现以支持所有基本数字数据类型(只要 lhs 和 rhs 的操作数类型相同)。

考虑到我能够在这么短的时间内扩展任何类似的东西,为什么 stl 实现在操作数方面如此有限?

如有任何想法,我们将不胜感激。

因为完全通用(这是 std::any 所追求的)这些运算符没有意义。关于你的具体例子;

+: 对类似日期的对象没有意义。

==:对 只写 对象没有意义。