我不明白爲什麼這個代碼使用g ++ 4.7.2扼流圈:兩個time_point實例之間的差異不是持續時間?
#include <chrono>
main()
{
std::chrono::system_clock::time_point t1, t2 ;
std::chrono::seconds delay ;
t1 = std::chrono::system_clock::time_point::max() ;
t2 = std::chrono::system_clock::now() ;
delay = t1 - t2 ;
// t1 = t2 + delay ;
// t1 = t2 - delay ;
}
與錯誤:
test.cc: In function ‘int main()’:
test.cc:10:18: error: no match for ‘operator=’ in ‘delay = std::chrono::operator,<std::chrono::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000l> >, std::chrono::duration<long int, std::ratio<1l, 1000000l> > >((*(const std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000l> > >*)(& t1)), (*(const std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000l> > >*)(& t2)))’
這在我看來, 「time_point - time_point」 提供了一個 「持續時間」 。
噢,是的,對,C++編譯器**仍**吸吮錯誤信息。 – 2013-04-25 17:45:17
@KonradRudolph庫作者可以使用更自由的'static_assert'用法大大改善它們,我不知道他們爲什麼不這樣做。 – 2013-04-25 17:49:57
@DavidBrown:您不能使用'static_assert'來報告是否存在合適的函數/運算符過載。概念可能有所幫助,但它們還不存在。 – 2013-04-25 17:54:34