我想我们都知道如何交换值,但还有另一种方法:
constexpr auto assign(auto& ...a) noexcept
{
return [&](auto const ...v) noexcept { ((a = v), ...); };
}
Run Code Online (Sandbox Code Playgroud)
要交换,我们需要调用assign(a, b)(b, a).
这是将值交换为基本类型的有效方法吗?它是否比通常的方式提供了更多的优化空间?
这不是交换值的好方法,即使对于基本类型也是如此。没有标准的“分配习惯用法”;这纯粹是你编造的东西。
即使它有效,也没有理由期望它会生成比 更快的代码std::swap,这是一个标准的、众所周知的习惯用法。
我强烈建议您使用std::swap它,这样阅读您代码的人就会理解,而无需谷歌。