15 template<
typename L,
typename R>
16 concept Concatable =
requires (L&& l, R&& r) { std::forward<L> (l) + std::forward<R> (r); };
22 template<
typename... Args>
23 requires std::constructible_from<QString, Args&&...>
25 : String_ { std::forward<Args> (args)... }
36 return String_.toHtmlEscaped ();
46 return String_.isEmpty ();
49 template<
typename... Args>
50 requires (std::is_same_v<TaintedString, std::decay_t<Args>>&& ...)
53 return TaintedString { pattern.arg (std::forward_like<Args> (args.String_)...) };
QString UnsafeGetRaw() const
friend TaintedString Format(const QString &pattern, Args &&... args)
TaintedString(Args &&... args)
TaintedString(TaintedString &&)=default
TaintedString & operator=(const TaintedString &)=default
friend TaintedString operator+(const TaintedString &l, const TaintedString &r)
TaintedString(const TaintedString &)=default
QString ToHtmlEscaped() const