我在代码中输入以下内容
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这样的函数,对此我感到有些惊讶
答案 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();
}