只上代码了,尽在不言中吧:
#include <iostream>
#include <vector>
#include <map>
#include <typeinfo>
using namespace std;
template<typename T>
struct decltype_t
{
typedef T type;
};
#define DECLTYPE(expr) decltype_t<typeof(expr)>::type
int main()
{
std::map<int, int> m;
DECLTYPE(m) n;
DECLTYPE(m)::iterator it;
vector<int> intVtrA;
vector<DECLTYPE(intVtrA)::value_type> intVtrB;
cout<<typeid(intVtrA).name()<<endl;
cout<<typeid(intVtrB).name()<<endl;
return 1;
}
当然,最新的g++已经支持decltype的上述用法了。
本文探讨了现代C++中decltype关键字的使用方式,通过具体代码实例展示了其如何帮助理解类型转换和模板编程。文章深入解析了decltype在不同场景下的应用,如映射、向量和模板表达式的上下文,同时指出最新的g++版本已支持此类用法。
857

被折叠的 条评论
为什么被折叠?



