#include <type_traits>
#include <iostream>
#include <vector>
#include <array>
template <class Tv, class T, size_t cn>
void push_back(std::vector<Tv> & v, std::array<T, cn> const & el)
{
for (int i = 0; i < cn; ++i) {
v.push_back(el[i]);
}
}
template <class Tv, class T,
typename std::enable_if<std::is_assignable<Tv&, T>::value, bool>::type = 0>
void push_back(std::vector<Tv> & v, T el)
{
v.push_back(el);
}
int main()
{
std::array<float, 5> a{1, 2, 3, 4, 5};
std::vector<double> v;
push_back(v, a);
push_back(v, 27);
for (double el : v) {
std::cout << el << "\t";
}
return 0;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhcnJheT4KCnRlbXBsYXRlIDxjbGFzcyBUdiwgY2xhc3MgVCwgc2l6ZV90IGNuPgp2b2lkIHB1c2hfYmFjayhzdGQ6OnZlY3RvcjxUdj4gJiB2LCBzdGQ6OmFycmF5PFQsIGNuPiBjb25zdCAmIGVsKQp7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBjbjsgKytpKSB7CiAgICB2LnB1c2hfYmFjayhlbFtpXSk7CiAgfQp9CgoKdGVtcGxhdGUgPGNsYXNzIFR2LCBjbGFzcyBULAogICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Fzc2lnbmFibGU8VHYmLCBUPjo6dmFsdWUsIGJvb2w+Ojp0eXBlID0gMD4Kdm9pZCBwdXNoX2JhY2soc3RkOjp2ZWN0b3I8VHY+ICYgdiwgVCBlbCkKewogIHYucHVzaF9iYWNrKGVsKTsKfQoKCmludCBtYWluKCkKewoJc3RkOjphcnJheTxmbG9hdCwgNT4gYXsxLCAyLCAzLCA0LCA1fTsKCXN0ZDo6dmVjdG9yPGRvdWJsZT4gdjsKCXB1c2hfYmFjayh2LCBhKTsKCXB1c2hfYmFjayh2LCAyNyk7Cglmb3IgKGRvdWJsZSBlbCA6IHYpIHsKCQlzdGQ6OmNvdXQgPDwgZWwgPDwgIlx0IjsKCX0KCXJldHVybiAwOwp9