Я не понимаю, почему этот код задыхается от g ++ 4.7.2:
#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» дает «продолжительность».
static_assert
использования, я не уверен, почему они этого не делают. - person David Brown   schedule 25.04.2013static_assert
, чтобы сообщить, существует ли подходящая перегрузка функции / оператора. Концепции могут помочь, но их пока нет. - person Mike Seymour   schedule 25.04.2013