summaryrefslogtreecommitdiffhomepage
path: root/compat/format.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-11-10 13:08:28 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-11-10 13:08:39 +0100
commita60021403a35802d3e0a404ffea969f1492f91b2 (patch)
tree868e2c987e22255976990cbbbe3c11869f5f9fd3 /compat/format.hpp
parent4e22a206f3106ef0ff7cc518d7ee2933481e125a (diff)
add a working fmtlib operator""_cf()
Diffstat (limited to 'compat/format.hpp')
-rw-r--r--compat/format.hpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/compat/format.hpp b/compat/format.hpp
index d3b06521..0ebb3e18 100644
--- a/compat/format.hpp
+++ b/compat/format.hpp
@@ -2,8 +2,30 @@
#include <fmt/core.h>
#include <fmt/compile.h>
+namespace floormat::detail::fmt {
+
+template<std::size_t N>
+struct fmt_string final {
+ static constexpr std::size_t size = N;
+ char data[N];
+
+ template <std::size_t... Is>
+ consteval fmt_string(const char (&arr)[N]) noexcept {
+ for (std::size_t i = 0; i < N; i++)
+ data[i] = arr[i];
+ }
+};
+
+} // namespace floormat::detail::fmt
+
namespace floormat {
+template<detail::fmt::fmt_string s>
+consteval auto operator""_cf() noexcept
+{
+ return FMT_COMPILE(s.data);
+}
+
template<std::size_t N, typename Fmt, typename... Xs>
std::size_t snformat(char(&buf)[N], Fmt&& fmt, Xs&&... args)
{