Potrzebuję std::chrono::high_resolution_clock::time_point
pola, które chcę napisać z jednego wątku i czytać z innego wątku. Jeśli deklaruję to tak, jak mój kod kompiluje się bez żadnych błędów.std :: atomowy <std :: chrono :: high_resolution_clock :: time_point> nie można skompilować
Ale aby moje pole widoczne w innym wątku, że otaczają go std::atomic
jak ta std::atomic<std::chrono::high_resolution_clock::time_point>
a teraz mam następujący błąd kompilacji:
/usr/include/c++/4.8/atomic:167:7: error: function ‘std::atomic<_Tp>::atomic() [with _Tp = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > >]’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘constexpr std::atomic<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > > >::atomic()’
atomic() noexcept = default;
Jak należy zadeklarować std::chrono::high_resolution_clock::time_point
pole, które piszę od jednego wątku i czytać z innego (aby upewnić się, że "wątek do czytania" widzi ostatnią wartość)?
'atomowy' może być używany tylko z trywialnie kopiowanymi typami, i o ile mogę powiedzieć, nie ma gwarancji, że' time_point' jest trywialnie kopiowalny. –
T.C. mówi, że ma rację. I możesz użyć [std :: is_trivial lub innego] (http://en.cppreference.com/w/cpp/types/is_trivial) przetestuj to ... –