From 18506673d5e67f7fbf6e6c9550110f2e813f2ea2 Mon Sep 17 00:00:00 2001 From: seleznevae Date: Sun, 8 Apr 2018 16:56:43 +0300 Subject: [PATCH] [A] Added support for c++ compilers without variadic templates --- include/fort.hpp | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/include/fort.hpp b/include/fort.hpp index 7ce757f..5ad8e20 100644 --- a/include/fort.hpp +++ b/include/fort.hpp @@ -93,6 +93,7 @@ public: return write_ln(str.c_str()); } +#ifdef __cpp_variadic_templates template bool write(const T &arg, const Ts &...args) { @@ -106,6 +107,94 @@ public: return write_ln(arg); return write(arg) && write_ln(args...); } +#else /* __cpp_variadic_templates */ + + template + bool write(const T_0 &arg_0, const T_1 &arg_1) + { + return write(arg_0) && write(arg_1); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2) + { + return write(arg_0) && write(arg_1, arg_2); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3) + { + return write(arg_0) && write(arg_1, arg_2, arg_3); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4) + { + return write(arg_0) && write(arg_1, arg_2, arg_3, arg_4); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5) + { + return write(arg_0) && write(arg_1, arg_2, arg_3, arg_4, arg_5); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5, const T_6 &arg_6) + { + return write(arg_0) && write(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6); + } + + template + bool write(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5, const T_6 &arg_6, const T_7 &arg_7) + { + return write(arg_0) && write(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7); + } + + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1) + { + return write(arg_0) && write_ln(arg_1); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2) + { + return write(arg_0) && write_ln(arg_1, arg_2); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3) + { + return write(arg_0) && write_ln(arg_1, arg_2, arg_3); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4) + { + return write(arg_0) && write_ln(arg_1, arg_2, arg_3, arg_4); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5) + { + return write(arg_0) && write_ln(arg_1, arg_2, arg_3, arg_4, arg_5); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5, const T_6 &arg_6) + { + return write(arg_0) && write_ln(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6); + } + + template + bool write_ln(const T_0 &arg_0, const T_1 &arg_1, const T_2 &arg_2, const T_3 &arg_3, const T_4 &arg_4, const T_5 &arg_5, const T_6 &arg_6, const T_7 &arg_7) + { + return write(arg_0) && write_ln(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7); + } + +#endif /* __cpp_variadic_templates */ private: