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

时间:2018-12-06 12:36:44

标签: c++ std stdany

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

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

任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:3)

因为完全笼统(std::any所追求的),所以这些运算符没有任何意义。关于您的具体示例;

+:对于类似日期的对象毫无意义。

==:对于只写对象毫无意义。