config/Block: allow moving name and value

This commit is contained in:
Max Kellermann
2018-07-17 20:16:12 +02:00
parent e9a4570891
commit af33a9f4b8
3 changed files with 13 additions and 9 deletions
+9 -5
View File
@@ -40,9 +40,11 @@ struct BlockParam {
*/
mutable bool used = false;
template<typename N, typename V>
gcc_nonnull_all
BlockParam(const char *_name, const char *_value, int _line=-1)
:name(_name), value(_value), line(_line) {}
BlockParam(N &&_name, V &&_value, int _line=-1) noexcept
:name(std::forward<N>(_name)), value(std::forward<V>(_value)),
line(_line) {}
int GetIntValue() const;
@@ -92,10 +94,12 @@ struct ConfigBlock {
return block_params.empty();
}
template<typename N, typename V>
gcc_nonnull_all
void AddBlockParam(const char *_name, const char *_value,
int _line=-1) {
block_params.emplace_back(_name, _value, _line);
void AddBlockParam(N &&_name, V &&_value, int _line=-1) noexcept {
block_params.emplace_back(std::forward<N>(_name),
std::forward<V>(_value),
_line);
}
gcc_nonnull_all gcc_pure