Помогите разобраться, не могу понять или нагуглить.
C++11. g++5.1
#include <vector>
struct A{
int a;
bool b;
int c;
};
std::vector<A> v;
int main(int argc, const char * argv[])
{
// v.emplace_back(1,true,3); // не работает
// v.emplace_back({1,true,3}); // не работает
v.emplace_back(A{1,true,3});
}
Работает.
Добавляю значения по умолчанию:
#include <vector>
struct A{
int a {1};
bool b {true};
int c{};
};
std::vector<A> v;
int main(int argc, const char * argv[])
{
v.emplace_back(A{1,true,3});
}
error: no matching function for call to 'A::A(<brace-enclosed initializer list>)'
Как добавить в вектор с помощью emplace_back структуру, у которой имеются значения полей по умолчанию, не добавляя к структуре конструктор, который принимает все члены?