我正在编写一些代码,将C ++类型转换为适合SQL DB的类型。我想确定类型,然后根据其类型生成适当的SQL代码。我不确定使用RTTI,auto或decltype在这方面可以做什么。我有一些想法,但不确定是否可行。
例如(我知道以下内容可能不是有效的C ++,我只是想将其理解):
if (decltype(some_var) == int) { do_stuff(); }
或者
if (decltype(some_var) == decltype(1) { do_stuff(); }
switch(decltype(some_var)) { case int: do_int_stuff(); break; case string; do_string_stuff(); break; case bool; do_bool_stuff(); break; }
string get_func_y(int var) { ... return my_string; } string get_func_y(string var) { ... return my_string; } string get_func_y(bool var) { ... return my_string; } ... string SQL = get_func_y(some_var);
这看起来像是可行的,还是有人对如何解决这个问题有任何建议?提前感谢您可能提供的任何输入。
您可以使用简单的元编程函数来确定(在编译时)两种类型是否相同:
template <typename T, typename U> struct same_type { static const bool value = false; }; template <typename T> struct same_type< T, T > { static const bool value = true; };
那是否真的对您的程序有所帮助是另一个问题。我只是去寻找简单的函数重载解决方案。