Tôi không hiểu tại sao mã này cuộn cảm với g ++ 4.7.2:Sự khác nhau giữa hai cá thể time_point không phải là thời lượng?
#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 ;
}
với lỗi:
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)))’
Dường như với tôi rằng "time_point - time_point" đưa ra một "duration" .
Ồ đúng rồi, trình biên dịch C++ ** vẫn ** hút tại thông báo lỗi. –
@KonradRudolph tác giả thư viện rất có thể cải thiện chúng với cách sử dụng 'static_assert' tự do hơn, tôi không chắc tại sao chúng lại không. –
@DavidBrown: Bạn không thể sử dụng 'static_assert' để báo cáo liệu có tồn tại quá tải chức năng/toán tử thích hợp hay không. Các khái niệm có thể hữu ích, nhưng chúng vẫn chưa tồn tại. –