我正在考虑使用std :: any进行类型擦除,作为我正在构建的接口的一部分,但我想知道为什么它缺少这么多的运算符,例如“ +”,“ ==”。我在Coliru here上进行了修改,在其中我将std :: any扩展为可累加并可打印到ostream中。这仅适用于目前持有double的任何人,但是该概念有效,仅需要实现即可支持所有基本数字数据类型(只要lhs和rhs是相同的操作数类型)即可。
考虑到我能够在很短的时间内扩展任何此类内容,为什么在操作数方面stl实现如此有限?
任何想法都值得赞赏。
答案 0 :(得分:3)
因为完全笼统(std::any
所追求的),所以这些运算符没有任何意义。关于您的具体示例;
+
:对于类似日期的对象毫无意义。
==
:对于只写对象毫无意义。