emplace_backの「悪い」使用のために次のコードがコンパイルされないのはなぜわかりません。あなたは何が間違っているのか、どのような回避策をとることができるのか教えてください。stplace :: vectorのemplace_back
#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(試験(5、 {3,4}));テストオブジェクトをベクトルに追加するには – berendeanicolae
[OT]:イニシャライザのリストが常に2のサイズであると仮定されている場合は、 'std :: array'を使用するか、2つのパラメータで置き換えます。 –
@piotr:このコードは明らかに実際のコードです。私はそれをそれよりも簡単にしました、そして、私はそれがそのように馬鹿に見えることに同意します。 – InsideLoop