Как упомянуто в связанном вопросе-дубликате (оригинал), нет способа заставить разрешение в пользу перегрузки, принимая std::initializer_list
.
Исходные подписи (для упрощения используйте int
):
void func(const std::vector<int> &a);
void func(const int &a);
Поскольку я сталкивался с этим много раз, я обычно делаю это:
func(std::vector<int>{10});
Я не знаю ни одного более короткого способа сделать это, потому что использование фактического типа std::initializer_list
, который бысделать то же самое еще более многословно.Но, с другой стороны, это, по крайней мере, делает то, что вы делаете, совершенно ясно, поскольку {10}
действительно неоднозначно, если не сопровождается типом.