是否有内置函数来增强boost :: numeric :: interval的长度

时间:2019-05-07 12:44:22

标签: c++ boost interval-arithmetic

我在代码中输入以下内容

boost::numeric::interval<double> foo = ...;
double length = std::abs(foo.upper() - foo.lower());

令我惊讶的是,我无法在boost::numeric::interval中找到一个简单的实用工具来计算长度。我希望有一个长度函数,以便我可以做

boost::numeric::interval<double> foo = ...;
double length = length(foo);

  • 缺少图书馆监督
  • 由于不符合概念而有充分的理由缺少图书馆
  • 但有一个我看不见的名字

很明显,我可以编写一个简单的内联函数来执行此操作,但是我不得不看到像min和max这样的函数,对此我感到有些惊讶

1 个答案:

答案 0 :(得分:3)

发布问题后我才发现它

答案是“宽度”

#include <iostream>
#include <chrono>
#include <thread>
using namespace std::chrono_literals;

template<typename T>
auto TimeIt(T callable){
    return [=](auto&&... args){
        auto start = std::chrono::system_clock::now();
        callable(args...);
        auto end = std::chrono::system_clock::now();
        std::chrono::duration<double> diff = end-start;
        std::cout << diff.count() << "s\n";
    };
}

void my_function(){
    // function code
    std::this_thread::sleep_for(0.5s);
}

auto my_function_2 = TimeIt(my_function); //you cannot reuse the name, though

int main(){
    my_function_2();
}