#include <iostream>
#include <memory>
#include <vector>
template<typename T>
class Nodes {
private:
unsigned m_numParams;
std::vector<std::shared_ptr<T>> m_vNodes;
public:
Nodes() : m_numParams(0), m_vNodes{nullptr} {}
template <typename ... Ts>
explicit Nodes( Ts&&...ts) :
m_numParams(sizeof...(Ts)),
m_vNodes{std::make_shared<T>(std::forward<Ts>(ts))...}
{}
explicit Nodes(std::initializer_list<T> ini) :
m_numParams(ini.size())
{
std::cout << "initalizer_list" << std::endl;
for (auto&& e : ini) {
m_vNodes.push_back(std::make_shared<T>(e));
}
}
};
int main()
{
Nodes<int> n{3, 4, 5};
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dmVjdG9yPgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgTm9kZXMgewpwcml2YXRlOgogICAgdW5zaWduZWQgbV9udW1QYXJhbXM7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8VD4+IG1fdk5vZGVzOwoKcHVibGljOgogICAgTm9kZXMoKSA6IG1fbnVtUGFyYW1zKDApLCBtX3ZOb2Rlc3tudWxscHRyfSB7fQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi4gVHM+CiAgICBleHBsaWNpdCBOb2RlcyggVHMmJi4uLnRzKSA6CiAgICAgICAgbV9udW1QYXJhbXMoc2l6ZW9mLi4uKFRzKSksCiAgICAgICAgbV92Tm9kZXN7c3RkOjptYWtlX3NoYXJlZDxUPihzdGQ6OmZvcndhcmQ8VHM+KHRzKSkuLi59CiAgICB7fQogICAgCiAgICBleHBsaWNpdCBOb2RlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pKSA6CiAgICBtX251bVBhcmFtcyhpbmkuc2l6ZSgpKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiaW5pdGFsaXplcl9saXN0IiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgZm9yIChhdXRvJiYgZSA6IGluaSkgewogICAgICAgICAgICBtX3ZOb2Rlcy5wdXNoX2JhY2soc3RkOjptYWtlX3NoYXJlZDxUPihlKSk7CiAgICAgICAgfQogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBOb2RlczxpbnQ+IG57MywgNCwgNX07CiAgICAKfQo=