使用移动语义正确返回std :: string

时间:2019-07-16 19:44:50

标签: c++ c++11 move-semantics

考虑一个返回大字符串的函数:

std::string build_huge_string(unsigned long size)
{
    std::string result;
    result.reserve(size);

    for (unsigned long i = 0; i < size; ++i)
        result.push_back(i % 256);

    return result;
}

它可能用在std::string huge_string = build_huge_string(65536);这样的地方 有没有一种方法可以确保将result的内容移入huge_string而不复制价值64KB的内容?

默认情况下是这样吗? build_huge_string是否应返回std::string&&?应将return result;替换为return std::move(result);

0 个答案:

没有答案