【问题标题】:What is "template<class T> using owner = T;"?什么是“template<class T> using owner = T;”?
【发布时间】:2016-07-19 03:58:40
【问题描述】:

以下内容摘自微软gsl 库中的gsl.h (https://github.com/microsoft/gsl):

namespace gsl
{
    //
    // GSL.owner: ownership pointers 
    //
    using std::unique_ptr;
    using std::shared_ptr;

    template<class T>
    using owner = T;
    ...
};

我无法理解以下别名模板的含义:

template<class T>
using owner = T;

有什么解释吗?

【问题讨论】:

标签: c++ c++11 templates alias ms-gsl


【解决方案1】:

这意味着对于每个Towner&lt;T&gt;T 的别名。

【讨论】:

  • 不是说owner是T的别名吗。不是owner
  • @West,不,owner 是一个模板。 T 是一种类型。
  • 是的,我错了。对于像我这样的每个人都可以编译。 static_assert(is_same>(),"hello");
【解决方案2】:

它可以用作注释来显示哪些指针是“所有者”即:

Example of non owning raw pointer

template<typename T>
class X2 {
    // ...
public:
    owner<T*> p;  // OK: p is owning
    T* q;         // OK: q is not owning
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多