Sleipnir C++ API
Loading...
Searching...
No Matches
print.hpp
1// Copyright (c) Sleipnir contributors
2
3#pragma once
4
5#ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
6#include <cstdio>
7#include <format>
8#include <print>
9#include <system_error>
10#include <utility>
11#endif
12
13namespace slp {
14
15#ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
16
18template <typename... T>
19void print(std::format_string<T...> fmt, T&&... args) {
20 try {
21 std::print(fmt, std::forward<T>(args)...);
22 } catch (const std::system_error&) {
23 }
24}
25
27template <typename... T>
28void print(std::FILE* f, std::format_string<T...> fmt, T&&... args) {
29 try {
30 std::print(f, fmt, std::forward<T>(args)...);
31 } catch (const std::system_error&) {
32 }
33}
34
36template <typename... T>
37void println(std::format_string<T...> fmt, T&&... args) {
38 try {
39 std::println(fmt, std::forward<T>(args)...);
40 } catch (const std::system_error&) {
41 }
42}
43
45template <typename... T>
46void println(std::FILE* f, std::format_string<T...> fmt, T&&... args) {
47 try {
48 std::println(f, fmt, std::forward<T>(args)...);
49 } catch (const std::system_error&) {
50 }
51}
52
53#else
54
55template <typename... Args>
56void print([[maybe_unused]] Args&&... args) {}
57
58template <typename... Args>
59void println([[maybe_unused]] Args&&... args) {}
60
61#endif
62
63} // namespace slp