我正在尝试编写这样的模板。
template <char c,typename Options,
basic_string<class,class,class> Options::* member>
struct option_string;
但是我不断收到编译错误。我想知道如何编写一个包含三个选项的模板:a char
、任何类和指向该类成员的指针,该成员必须是basic_string
特化的。我想避免为basic_string
.
我的目标是创建一个通用的命令行选项库。以下是我想如何使用它。
class Options : public Command_Line_Options_Parser<Options> {
public:
int integer = 0;
float real_number = 0.0;
bool boolean = false;
bool make_true = false;
bool make_false = true;
std::string string;
typedef Options O;
typedef Command_Line_Options<
option_int<'i',&O::integer>,
option_float<'f',&O::real_number>,
option_bool<'b',&O::boolean>,
option_true<'t',&O::make_true>,
option_false<'t',&O::make_true>,
option_string<'s',&O::string>
>
option_list;
};
int main(int argc,char**argv ) {
Options options;
options.parse(argc,argv);
std::cout << "integer : " << options.integer <<endl;
std::cout << "real_number : " << options.real_number <<endl;
std::cout << "boolean : " << options.boolean <<endl;
std::cout << "make_true : " << options.make_true <<endl;
std::cout << "make_false : " << options.make_false <<endl;
std::cout << "string : " << options.string <<endl;
};
我宁愿option_string
接受所有专业basic_string
而不是仅仅接受std::string
.