当前位置: 首页 > 面试题库 >

使用C ++中的decltype(),auto或RTTI进行类型相等性测试?Boost对此有帮助吗?

方心思
2023-03-14
问题内容

我正在编写一些代码,将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;
};

那是否真的对您的程序有所帮​​助是另一个问题。我只是去寻找简单的函数重载解决方案。



 类似资料:
  • 我正在学习C 17非类型模板参数的新功能。我编写了一个简单的代码片段,如下所示: 据我所知,福 但是,语句使用clang、MSVC 19.27编译,但在GCC 10.2、MSVC 19.25编译时失败。 我的问题是:为什么编译器的行为不同?标准对此有何规定? 链接到编译器资源管理器: 叮当声https://godbolt.org/z/66M695 海湾合作委员会https://godbolt.or

  • 现在,我的助手类名为,它接受对象。代码是: 并且我为这个助手类编写了一些单元测试,如下所示: 因为我对单元测试和模拟库(如)非常陌生。现在我的问题是我的测试有什么好处吗?我想测试我的助手类的功能是否在做它应该做的事情(即,如果共享的pref有登录的用户,则获取登录的用户),我该如何做呢?

  • 本文向大家介绍C++11新特性中auto 和 decltype 区别和联系,包括了C++11新特性中auto 和 decltype 区别和联系的使用技巧和注意事项,需要的朋友参考一下 C++11新特性中auto 和 decltype 区别和联系 一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型。然而做到这一点并非那么容易(特别是模板中),有时候

  • 泛型lambda(generic lambdas)是C++14中最值得期待的特性之一——因为在lambda的参数中可以使用auto关键字。这个特性的实现是非常直截了当的:即在闭包类中的operator()函数是一个函数模版。例如存在这么一个lambda: auto f = [](auto x){ return func(normalize(x)); }; 对应的闭包类中的函数调用操作符看来就变

  • 作为一名开发者,最具能展现自我价值的事情就是在github上看讨论列表来帮助修复bug。我们通常在解决了bug之后再进行新功能的开发,因此解决bug将是一个非常有价值的事情。 即使你不是一个开发者,帮助测试bug的修复情况以及新功能还是非常有必要的。 这同样适用于测试新功能以及测试错误修正。 通常情况下,编码工作应当包含测试用例来保证编码的正确性,但这并不总能照顾到代码的方方面面,尤其在各平台下测

  • 本文向大家介绍winforms 使用帮助类显示帮助,包括了winforms 使用帮助类显示帮助的使用技巧和注意事项,需要的朋友参考一下