0

为类 int 类型实现 NaN 算术的 C++17 惯用方法是什么?特别是,当任一参数为 NaN 时,加(或减)应准确得出 NaN。(该标准明确地将 int 从这种默认行为中排除。甚至quiet_NaN返回,对于日常使用来说太危险了。)

我的出发点是一个对我的应用程序来说足够超出范围的值,

constexpr int my_NaN = std::numeric_limits<int>::max();

在 C 中,您可以将每个替换x + ymy_add(x, y)针对 my_NaN 测试 x 和 y 的 a。丑陋的。在 Ruby 中,您可以像往常一样愉快地
使用 对 Integer 类进行猴子补丁。 C++17 能否接近 Ruby 让您保留传统中缀表示法的方式?def +(other) self==my_NaN ? my_NaN : ...x + y


除了一个简单的 int 之外,我还希望为 std::chrono::duration<int64_t, std::micro>相应的time_point. 我对覆盖所有可以添加和减去的不同方式感到不寒而栗。

4

0 回答 0