cemplate

Simple C++ template engine
git clone git://git.dimitrijedobrota.com/cemplate.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

commitf63cf5a4a08eb6a1c9c106a0629d390d80ec5794
parentcbe018c7ee9d7f35785c76694c55cf47ac288011
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateTue, 11 Mar 2025 19:22:51 +0100

Force left to right order of evaluation

Diffstat:
Mexample/example.cpp|++--
Minclude/cemplate/cemplate.hpp|+++---

2 files changed, 5 insertions(+), 5 deletions(-)


diff --git a/example/example.cpp b/example/example.cpp

@@ -9,7 +9,7 @@ int main()

// clang-format off
// NOLINTBEGIN
program(std::cout,
program(std::cout, {
Pragma("once"),
empty(),
Include("format"),

@@ -38,7 +38,7 @@ int main()

Initlist({"val11", "val12", {"val21", "val22"}, "val13"}),
Namespace("cemplate")
);
});
// NOLINTEND
// clang-format on

diff --git a/include/cemplate/cemplate.hpp b/include/cemplate/cemplate.hpp

@@ -41,10 +41,10 @@ std::string join(InputIt first,

return res;
}
template<typename... Args>
void program(std::ostream& ost, const Args&... args)
inline void program(std::ostream& ost, std::initializer_list<std::string> args)
{
((ost << to_string()(args)), ...);
std::for_each(
std::begin(args), std::end(args), [&](const auto& val) { ost << val; });
}
inline const char* empty()