使用C 中的decltype(),auto或RTTI类型相等性测试?Boost对此有帮助吗
技术问答
104 人阅读
|
0 人回复
|
2023-09-13
|
我正在编写一些代码,我C 类型转换适合SQL
" Z5 ~+ z( J* J' G, {DB类型。我想确定类型,然后根据类型生成合适的类型SQL我不确定使用代码RTTI,auto或decltype这方面能做什么?我有一些想法,但不确定是否可行。
7 |+ y ]2 y7 [+ [例如(我知道以下内容可能不有效C ,我只想理解):
8 T7 Q" F9 B+ r( ^, H7 q+ Dif (decltype(some_var) == int) { do_stuff(); }或者" }- s7 ~6 l+ `2 C
if (decltype(some_var) == decltype(1) { do_stuff(); }或者
' X* \$ W# _- ]switch(decltype(some_var)) case int: do_int_stuff();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;break; case string; do_string_stuff();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;break; case bool; do_bool_stuff();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;break;}或者: v: f0 f: f0 v, E4 L5 {6 t
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);这看似可行,还是有人对如何解决这个问题有任何建议?感谢您提前提供的任何输入。
) I7 ~- M0 T5 e: W 3 `: N" W6 Q4 o* A& V
解决方案: 0 V/ e3 V. X0 k
您可以使用简单的元编程函数来确定两种类型是否相同:+ R; z! ^6 m9 I0 S: _9 T! X6 i* w
template struct same_type { static const bool value = false;};template struct same_type{ static const bool value = true;};另一个问题是它是否真的对你的程序有帮助。我只是想找到一个简单的函数重载解决方案。 |
|
|
|
|
|