C++中用户定义的运算符

And*_*hko 4 c++ operators

您如何看待在C++中指定用户定义的运算符的想象力?

这样的用户定义的运算符可以通过运算符名称(允许的字符的任意序列?),它的优先级,关联性和arity(其他东西?)来定义.

它们可用于多种用途:帮助构建基于C++的"微小"DSL,用于列表理解等.

这个功能不会扩展语言的可能用途吗?什么是允许用户定义的运营商的其他语言?Lisp浮现在脑海中,还有什么?有关该主题的任何链接?

Chr*_*ung 7

嗯,你知道,Bjarne Stroustrup确实提出了这样的建议...... 概括了C++ 2000的重载.:-P :-P :-P


Mac*_*cke 5

好吧,Haskell具有可设置优先级和左右绑定的自定义运算符。所以,它可以工作。但是,Haskell 是最前沿的并且几乎不可读,尽管它主要被一些相当聪明的人使用。(Haskell 吓跑了所有新手,我认为..)

对于C++,我认为有:

  • 解析问题(考虑std::vector<std::list<int>>错误,其中>>被解析为右移运算符).. C++ 的语法已经足够难了。
  • 向后兼容性问题(引入旧的组合的新运算符,例如 !-- 可能会导致问题)
  • 清晰度问题(人们正在使用常规运算符做足够奇怪的事情,使程序的行为难以按原样进行判断。)

后一个是交易破坏者,IMO。

尽管如此,没有什么能阻止你编写一个 c++ 预处理器/解析器,用真正的函数调用替换你自己定义的运算符,然后使用普通的 c++ 编译器(就像 c++ 以前是如何在 C 上构建的)。如果你能保持足够的理智来发货,那将是一个很好的实验。;-)