c++11::decltype

 

 

decltype应用场景:decltype多应用在泛型编程之中
template<typename T> class
{
    typename T::iterator it;
    void func(T t)
    {
        it = t.begin();    //这里取它迭代器的首位置
    }
};

template<typename T> class
{
    typename T::const_iterator it;
    void func(T t)
    {
        it = t.begin();    //这里取它迭代器的首位置
    }
};

使用decltype,上面的代码可以写成
template<typename T> class
{
    decltype(T.begin()) it;
    void func(T t)
    {
        it = t.begin();    //这里取它迭代器的首位置
    }
};

实际上,标准库中有些类型都是通过decltype来定义的:
typedef decltype(nullptr) nullptr_t;
typedef decltype(sizeof(0)) size_t;

 

上一篇:c – __declspec(dllimport)如何加载库


下一篇:将C DLL后期绑定到C#-函数始终返回true