最佳答案
我可以从 std::initializer_list<T>
中移动元素吗?
#include <initializer_list>
#include <utility>
template<typename T>
void foo(std::initializer_list<T> list)
{
for (auto it = list.begin(); it != list.end(); ++it)
{
bar(std::move(*it)); // kosher?
}
}
由于 std::intializer_list<T>
需要特殊的编译器注意力,而且没有像普通的 C++标准程式库容器那样的值语义,所以我宁愿安全一点,也不要抱歉地问。