关于decltype的应用多出现在泛型编程中,比如我们编写一个类模板,在里面添加遍历容器的函数,操作如下:
代码如下:
#include <iostream>
#include <list>using namespace std;template<typename T>
class Container
{
public:void printElem(T & t){for (m_it = t.begin(); m_it != t.end(); m_it++){cout << "value = " << *m_it << endl;}}private://T::iterator m_it;//error 定义变量要具体类型,这些写不行decltype(T().begin()) m_it;
};int main()
{list<int>ls{ 1,2,3,4,5,6 };Container<list<int>>c;c.printElem(ls);return 0;
}
测试结果: