【发布时间】:2016-06-18 20:33:30
【问题描述】:
我在板上看到了一个我不明白的code snippet:
struct expression_sequence
{
template<typename... Ts>
expression_sequence(Ts&&... ts) { }
};
template<typename T, class Tuple = std::vector<T>>
class vector
{
public:
template<typename... Elements>
vector(Elements&&... elements)
{
m_elements.reserve(sizeof...(Elements));
expression_sequence{ (m_elements.push_back(std::forward<Elements>(elements)), 0)... };
}
private:
Tuple m_elements;
};
expression_sequence{ (m_elements.push_back(std::forward<Elements>(elements)), 0)... };究竟发生了什么,为什么它在工作?
我不明白为什么我们需要用( 和, 0) 包围m_elements.push_back(std::forward<Elements>(elements))。 (为什么是0,即为什么是int?)。还有(m_elements.push_back(std::forward<Elements>(elements)), 0)的类型是什么?
【问题讨论】:
标签: c++ templates c++14 variadic-templates