我想知道一个变量的类型

I want to know the type of a variable

本文关键字:一个 变量 类型 想知道      更新时间:2023-10-16

我在研究C++11库,我不擅长处理C++对象和模板,但我试图读取变量的类型并运行不同的代码,但这里有一个例子可以更好地解释:

if(is_scalar<typeid(list)>)
    cout << list << endl;
else
    for(...)
        cout << list[i] << endl;

我正在尝试做类似的事情,我认为函数is_scalar正是我所需要的,因为我需要将向量、数组和列表从int、double或float等中分离出来。很难想象在同一个程序中有不同类型的同一个变量,但我正在尝试在运行时更改它(仍然不起作用)或使用预处理器定义(这导致了我现在的问题)。

我解决了我的问题,我创建了这个代码,我必须修改一点

#include <iostream>
#include <vector>
using namespace std;
template< bool B > struct Algorithm {
    template<class T1> static int do_it (T1 & a) {
        for (int _n(((int)((a).size()))-1), i(0); i <= _n; i++)
            cout << *(next(a.begin(),i)) << endl;
        cout << endl; 
    }
};
template<> struct Algorithm<true> {
    template<class T1> static int do_it (T1 a)  { cout << a << endl; }
};
template<class T1>
int elaborate (T1 A)
{
    return Algorithm<std::is_scalar<T1>::value>::do_it( A ) ;
}
int main(){
    int a = 42;
    vector<int> b;
    b.push_back(1);
    b.push_back(2);
    elaborate(a);
    elaborate(b);
    return 0;
}

最后,decltype没有工作,因为编译器试图"读取"从未"使用"过的代码。

您尝试过使用decltype吗?这可能会对你有所帮助。

http://en.cppreference.com/w/cpp/language/decltype