神人 initializer_list

没错,std::initializer_list 竟然沟槽的强制 copy

只能 move 的类型只能 get out of the way

解决办法

函数 + 模板,做类似 make_xxx

1
2
3
4
5
template<typename... Ts>
auto foo(Ts&&... ts) {
	sizeof...(Ts);                      // ~ initializer_list.size()
	((bar(std::forward<Ts>(ts))), ...); // ~ for ... in initializer_list
}

美中不足就是没法 trailing comma,希望 C++26 静态反射之后可以改善 🙏🙏🙏