diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-11-21 11:15:08 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-11-21 11:41:50 +1100 |
| commit | 91550639bbbd20c92957b83abfbb3ec4c43b3ab4 (patch) | |
| tree | 6559c52e84e7e1abef540cf0636f322c1e5acbea /src/command_manager.cc | |
| parent | cd2172eed6dd7aca7c24972e4dac0258e19c070b (diff) | |
More C++20 refactorings
Use CTAD instead of make functions, requires instead of enable_if
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index 2c067978..a8212d06 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -297,14 +297,15 @@ Token parse_percent_token(ParseState& state, bool throw_on_unterminated) } } -template<typename Target, typename = std::enable_if_t<std::is_same_v<Target, Vector<String>> or std::is_same_v<Target, String>>> +template<typename Target> + requires (std::is_same_v<Target, Vector<String>> or std::is_same_v<Target, String>) void expand_token(Token&& token, const Context& context, const ShellContext& shell_context, Target& target) { constexpr bool single = std::is_same_v<Target, String>; auto set_target = [&](auto&& s) { if constexpr (single) target = std::move(s); - else if constexpr (std::is_same_v<std::decay_t<decltype(s)>, String>) + else if constexpr (std::is_same_v<std::remove_cvref_t<decltype(s)>, String>) target.push_back(std::move(s)); else if constexpr (std::is_same_v<decltype(s), Vector<String>&&>) target.insert(target.end(), std::make_move_iterator(s.begin()), std::make_move_iterator(s.end())); |
