2024-08-23 17:23:28 +08:00
|
|
|
# include <biu.hpp>
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
using namespace biu::literals;
|
|
|
|
biu::Atomic<std::string> a("hello");
|
|
|
|
a = "world";
|
|
|
|
a.apply([](auto& value) { value += "!"; });
|
|
|
|
auto b = a.get();
|
2024-08-24 14:10:55 +08:00
|
|
|
auto lock = a.lock();
|
2024-08-23 17:23:28 +08:00
|
|
|
*lock = "!";
|
2024-08-24 14:10:55 +08:00
|
|
|
static_assert(std::same_as<decltype(a.apply([](auto& value) { value += "!"; })), biu::Atomic<std::string>&>);
|
|
|
|
static_assert(std::same_as<decltype(a.apply([](auto&) { return 3; })), int>);
|
|
|
|
static_assert(std::same_as<decltype(a.apply([](auto&) {}, [](auto&){ return true; }, 1s)), bool>);
|
|
|
|
static_assert
|
|
|
|
(std::same_as<decltype(a.apply([](auto&) { return 3; }, [](auto&){ return true; }, 1s)), std::optional<int>>);
|
2024-08-23 17:23:28 +08:00
|
|
|
}
|