Я не понимаю, почему следующий код не компилируется из-за «плохого» использования emplace_back. Не могли бы вы рассказать мне, что с ним не так, и какое обходное решение я мог бы использовать?emplace_back on std :: vector
#include <vector>
class Test {
private:
std::size_t n_;
std::vector<double> a_;
std::vector<double> b_;
public:
Test(std::size_t n, std::initializer_list<std::size_t> list)
: n_(n), a_(list.begin()[0]), b_(list.begin()[1]){};
};
int main() {
Test t{5, {3, 4}};
std::vector<Test> v;
v.emplace_back(5, {3, 4});
return 0;
}
использовать v.emplace_back (Test (5, {3, 4})); для добавления объекта Test к вектору – berendeanicolae
[OT]: если список инициализаторов должен быть всегда размером 2, рассмотрите возможность использования 'std :: array' или замените на два параметра: –
@piotr: этот код, очевидно, является реальным кодом. Я сделал это проще, чем это было, и я согласен, что это выглядит глупо. – InsideLoop