从标准容器继承trait typedef

时间:2015-03-06 17:16:37

标签: c++

如果没有从vector继承,我如何得到它的所有typedef?

template <typename T>
class MyStack
{
public:
    typename std::vector<T>::reference top()
    {
        return storage.front();
    }
private:
    std::vector<T> storage;
};

std::vector<T>::reference输入太多了。我正在寻找类似迭代器类的东西,除了容器而不是迭代器。但我听说你不允许继承标准容器。

1 个答案:

答案 0 :(得分:0)

使用typedef缩短

typedef std::vector<T>::reference brief_t;

<强> EDITED 您可以从std::容器继承,但不会因https://stackoverflow.com/a/7110262/149818的原因而推荐它。只是为了让记录更短,选择其中一种方式:

  • 就像我上面那样;
  • 制作typedef std::vector<T> super_t并使用super_t::reference;
  • 如果您需要选择会员使用的具体结果decltypetypedef typename decltype( std::vector<T>().size() ) mysize_t;