即将发布的 GMP 0.3.0 是一次重大更新,包含许多新能力。其中,一个很有趣的特性——表情运算符,准确来说是叫 Named Operators,提前向大家展示一下。 来看例子:
#include <iostream> #include <gmp/gmp.hpp> int main(){ int a = 10; int b = 3; // "_" token auto _ = gmp::make_named_operator([](int x, int y) { return x + y; }); // "o" token auto o = gmp::make_named_operator([](int x, int y) { return x * y; }); auto r1 = a ^_^ b; auto r2 = a >_< b; auto r3 = a *_* b; auto r4 = a -_- b; auto r5 = a *_^ b; auto r6 = a ^o^ b; std::cout << "a ^_^ b = " << r1 << '\n'; std::cout << "a >_< b = " << r2 << '\n'; std::cout << "a *_* b = " << r3 << '\n'; std::cout << "a -_- b = " << r4 << '\n'; std::cout << "a *_^ b = " << r5 << '\n'; std::cout << "a ^o^ b = " << r6 << '\n'; }
编译运行,输出为:
a ^_^ b = 13 a >_< b = 13 a *_* b = 13 a -_- b = 13 a *_^ b = 13 a ^o^ b = 30