交换基本类型的值

use*_*108 -4 c++ swap

我想我们都知道如何交换值,但还有另一种方法:

constexpr auto assign(auto& ...a) noexcept
{
  return [&](auto const ...v) noexcept { ((a = v), ...); };
}
Run Code Online (Sandbox Code Playgroud)

要交换,我们需要调用assign(a, b)(b, a).

这是将值交换为基本类型的有效方法吗?它是否比通常的方式提供了更多的优化空间?

Cor*_*101 5

这不是交换值的好方法,即使对于基本类型也是如此。没有标准的“分配习惯用法”;这纯粹是你编造的东西。

即使它有效,也没有理由期望它会生成比 更快的代码std::swap,这一个标准的、众所周知的习惯用法。

我强烈建议您使用std::swap它,这样阅读您代码的人就会理解,而无需谷歌。

  • @user1095108 我不知道你是如何得出这个结论的。没有人试图“驳倒这个问题”,我们正在尝试并且已经成功地回答了它所陈述的问题。主持人试图将您的所有评论链接在一起(您已删除这些评论),试图澄清您的问题。即便如此,考虑到您的更改,问题已经得到解答。至此,我认为您的评论只不过是垃圾邮件。 (2认同)