Собственно, код (https://gcc.godbolt.org/z/TWW7M9z48):
#include <vector>
#include <string>
struct Foo
{
std::string s;
size_t b,e;
};
template<class... T>
auto Baz(struct Foo&& foo, T&&... t)
{
return std::vector<struct Foo>({std::move(foo),std::move(t)...});
}
int main()
{
//Baz({"q",10,20},{"g",11,50});
Baz({"q",10,20});
return 0;
}
Закоментированная строка не работает, компилятор ругается на невозможность вывода T. Звучит логично, но хотелось бы иметь возможность передавать структуры в функцию именно в виде списка инициализации. Как вариант, сработало бы
auto Baz(std::vector<struct Foo>&& foo);
Baz({{"q",10,20},{"g",11,50}});
но неохота ещё пару скобок писать.