move std 函数 示例_std::enable_if
时间: 2023-06-29 07:20:15 浏览: 96
好的,这是一个关于 std::move 和 std::enable_if 的例子:
```c++
#include <iostream>
#include <type_traits>
template <typename T>
typename std::enable_if<std::is_trivially_copyable<T>::value, void>::type
swap(T& a, T& b)
{
std::cout << "using trivial swap\n";
T temp = std::move(a);
a = std::move(b);
b = std::move(temp);
}
template <typename T>
typename std::enable_if<!std::is_trivially_copyable<T>::value, void>::type
swap(T& a, T& b)
{
std::cout << "using non-trivial swap\n";
T temp(std::move(a));
a = std::move(b);
b = std::move(temp);
}
int main()
{
int a = 1, b = 2;
swap(a, b);
std::cout << "a: " << a << ", b: " << b << std::endl;
std::string s1 = "hello", s2 = "world";
swap(s1, s2);
std::cout << "s1: " << s1 << ", s2: " << s2 << std::endl;
return 0;
}
```
这是一个使用了 std::enable_if 的模板函数 swap,它可以根据模板参数的类型特性选择不同的实现。如果模板参数 T 是一个 trivially copyable 的类型,那么使用第一个实现;否则使用第二个实现。在其中,我们使用了 std::move 函数来实现对对象的移动操作,这可以避免不必要的拷贝操作,提高代码效率。
阅读全文