4#ifndef _Stroika_Foundation_Execution_Activity_h_
5#define _Stroika_Foundation_Execution_Activity_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
19 namespace Activities_ {
30 const StackElt_* fPrev{};
32 thread_local inline const StackElt_* sTop_{
nullptr};
54 template <convertible_to<Characters::String> STRINGISH_T = Characters::String>
60 constexpr Activity (
const STRINGISH_T& arg)
61 requires (is_array_v<STRINGISH_T>);
62 constexpr Activity (
const STRINGISH_T& arg)
63 requires (not is_array_v<STRINGISH_T>);
76 template <convertible_to<Characters::String> CTOR_ARG>
91 template <
typename CTOR_ARG>
95 requires (is_invocable_r_v<Characters::String, CTOR_ARG>);
152 template <
typename ACTIVITY>
178 Private_::Activities_::StackElt_ fNewTopOfStackElt_;
188#include "Activity.inl"
#define Stroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCFORCE
[[msvc::no_unique_address]] isn't always broken in MSVC. Annotate with this on things where its not b...
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Containers::Stack< Activity<> > CaptureCurrentActivities()
Returns a copyable preservable version of the current activities stack.
bool AnyCurrentActivities()
Checks if CaptureCurrentActivities() would produce a non-empty stack (but faster)