diff options
Diffstat (limited to 'src/ctor.h')
| -rw-r--r-- | src/ctor.h | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -269,6 +269,41 @@ using asm_flags = std::vector<ctor::asm_flag>; struct flags { + template <class ... Args> + requires (( + std::is_same_v<Args, ctor::c_flags> || + std::is_same_v<Args, ctor::cxx_flags> || + std::is_same_v<Args, ctor::ld_flags> || + std::is_same_v<Args, ctor::ar_flags> || + std::is_same_v<Args, ctor::asm_flags> + ) && ...) + constexpr flags(Args && ... arg) + { + ([&] + { + if constexpr(std::is_same_v<Args, ctor::c_flags>) + { + cflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::cxx_flags>) + { + cxxflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::ld_flags>) + { + ldflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::ar_flags>) + { + arflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::asm_flags>) + { + asmflags = arg; + } + }(), ...); + } + ctor::c_flags cflags; // flags for c compiler ctor::cxx_flags cxxflags; // flags for c++ compiler ctor::ld_flags ldflags; // flags for linker |
