cpp-namedargs
は C++で名前付き引数を実現するためのライブラリです。文字列リテラルとして渡した名前付き引数をパースし、key-value リストを構築します。リストからクラスへの変換関数をカスタマイズすることで、任意のユーザー定義型に変換できます。
#include <iostream>
#include <namedargs/parser.hpp>
namespace na = namedargs;
struct params {
int num;
std::string_view str;
};
template <>
struct na::ArgParserTraits<params> {
static constexpr params convert(const na::ArgParser& p) {
params result{};
p.assign_or(result.num, "num", 0);
p.assign_or(result.str, "str", "");
return result;
}
};
int main() {
constexpr params p =
na::parse_args<params>("num = 42, str = 'Hello, world!'");
std::cout << "num: " << p.num << std::endl; // → num: 42
std::cout << "str: " << p.str << std::endl; // → str: Hello, world!
}
実装: parser.hpp
This library depends on no external libraries.