FlatImage
A configurable Linux containerization system
Loading...
Searching...
No Matches
common.hpp
Go to the documentation of this file.
1
13
14#pragma once
15
16#include <format>
17#include <cstdlib>
18#include "std/string.hpp"
19
20namespace
21{
22
33template<typename... Args>
35{
42 std::tuple<decltype(ns_string::to_string(std::declval<Args>()))...> m_tuple_args;
43
50 format_args(Args&&... args)
51 : m_tuple_args(ns_string::to_string(std::forward<Args>(args))...)
52 {} // format_args
53
61 auto operator*()
62 {
63 return std::apply([](auto&&... e) { return std::make_format_args(e...); }, m_tuple_args);
64 } // operator*
65};
66
67} // namespace
68
78
92constexpr inline decltype(auto) operator ""_kib(unsigned long long value) noexcept
93{
94 return value * (1 << 10);
95}
96
109constexpr inline decltype(auto) operator ""_mib(unsigned long long value) noexcept
110{
111 return value * (1 << 20);
112}
113 // end of binary_literals group
115
116/* vim: set expandtab fdm=marker ts=2 sw=2 tw=100 et :*/
String manipulation and conversion utilities.
String helpers.
std::tuple< decltype(ns_string::to_string(std::declval< Args >()))... > m_tuple_args
Tuple storing string representations of all arguments.
Definition common.hpp:42
format_args(Args &&... args)
Constructs format_args by converting all arguments to strings.
Definition common.hpp:50
auto operator*()
Dereference operator to get format arguments.
Definition common.hpp:61