我遇到了关注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++11,C++14和C++17,但无法找到相似的示例。任何人都可以帮忙详细说明这个定义吗?
答案 0 :(得分:1)
这是C ++ 17演绎指南。它告诉编译器如何从构造函数参数中推导出MoveOnCopy
的模板参数。例如,在:
MoveOnCopy m(123);
将构建MoveOnCopy<int>
类型的对象。
有关详细信息,请参阅here。