内核优化
This commit is contained in:
@@ -81,3 +81,20 @@ TEST(observer_state_test, serializes_time_source_access) {
|
||||
EXPECT_FALSE(data->overlap.load(std::memory_order_acquire));
|
||||
EXPECT_EQ(data->value, 8);
|
||||
}
|
||||
struct Observer_Test_Throwing_Move_Time_Source {
|
||||
Observer_Test_Throwing_Move_Time_Source() = default;
|
||||
Observer_Test_Throwing_Move_Time_Source(Observer_Test_Throwing_Move_Time_Source&&) {
|
||||
throw std::runtime_error("time source move failed");
|
||||
}
|
||||
Observer_Test_Throwing_Move_Time_Source& operator=(Observer_Test_Throwing_Move_Time_Source&&) = delete;
|
||||
std::uint64_t now_ns() const noexcept {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
TEST(observer_state_test, move_constructor_propagates_throwing_time_source_move) {
|
||||
using State = Observer_State<Disabled_Observer, Observer_Test_Throwing_Move_Time_Source>;
|
||||
static_assert(std::move_constructible<Observer_Test_Throwing_Move_Time_Source>);
|
||||
static_assert(!std::is_nothrow_move_constructible_v<State>);
|
||||
State source;
|
||||
EXPECT_THROW(State(std::move(source)), std::runtime_error);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user