如何理解&#34; MoveOnCopy(T&amp;&amp;) - &gt; MoveOnCopy <T>&#34;定义?

时间:2018-06-08 05:11:25

标签: c++

我遇到了关注C++ code

// Struct: MoveOnCopy
template <typename T>
struct MoveOnCopy {

  MoveOnCopy(T&& rhs) : object(std::move(rhs)) {}
  MoveOnCopy(const MoveOnCopy& other) : object(std::move(other.object)) {}

  T& get() { return object; }

  mutable T object; 
};

template <typename T>
MoveOnCopy(T&&) -> MoveOnCopy<T>;

我对以下声明感到有点困惑:

template <typename T>
MoveOnCopy(T&&) -> MoveOnCopy<T>;

只是猜测它的函数定义返回一个MoveOnCopy结构。我查看了C++11C++14C++17,但无法找到相似的示例。任何人都可以帮忙详细说明这个定义吗?

1 个答案:

答案 0 :(得分:1)

这是C ++ 17演绎指南。它告诉编译器如何从构造函数参数中推导出MoveOnCopy的模板参数。例如,在:

MoveOnCopy m(123);

将构建MoveOnCopy<int>类型的对象。

有关详细信息,请参阅here