12 template <convertible_to<Characters::String> STRINGISH_T>
14 requires (is_array_v<STRINGISH_T>)
16 Assert (size (arg) == size (fArg_));
17 for (
size_t i = 0; i < size (arg); ++i) {
21 template <convertible_to<Characters::String> STRINGISH_T>
23 requires (not is_array_v<STRINGISH_T>)
27 template <convertible_to<Characters::String> CTOR_ARG>
38 template <
typename CTOR_ARG>
39 constexpr LazyEvalActivity<CTOR_ARG>::LazyEvalActivity (
const CTOR_ARG& arg)
40 requires (is_invocable_r_v<Characters::String, CTOR_ARG>)
44 template <
typename CTOR_ARG>
45 Characters::String LazyEvalActivity<CTOR_ARG>::AsString ()
const
55 template <
typename ACTIVITY>
57 : fNewTopOfStackElt_{activity, Private_::Activities_::sTop_}
60 if (activity !=
nullptr) {
61 Private_::Activities_::sTop_ = &fNewTopOfStackElt_;
64 template <
typename ACTIVITY>
65 inline DeclareActivity<ACTIVITY>::~DeclareActivity ()
67 if (fNewTopOfStackElt_.fActivity !=
nullptr) {
69 Assert (Private_::Activities_::sTop_ == &fNewTopOfStackElt_);
70 Private_::Activities_::sTop_ = Private_::Activities_::sTop_->fPrev;
String is like std::u32string, except it is much easier to use, often much more space efficient,...
constexpr Activity(const STRINGISH_T &arg)