Срабатывает конструктор для initializer_list, а надо для int

У меня есть класс, содержащий в том числе 2 конструктора:

#include <initializer_list>
#include <iostream>

struct A {
  A(int) { std::cout << "1"; }
  A(std::initializer_list<int>) { std::cout << "2"; }
};

int main() {
  A a1{1};
  A a2{1, 2};
}

Как сделать так, чтобы оба конструктора поддерживались, но объявление a1 вызывало первый конструктор, а a2 — второй?

Объявления должны остаться такими же простыми, а вот конструкторы можно менять.


Ответы (2 шт):

Автор решения: DDD

вызови этот констрактор напрямую

A a1(1);
→ Ссылка
Автор решения: AR Hovsepyan

Если бы знать зачем вам это... Вместо std::initializer_list можно передать какую то другую последовательность(например std::vector), а можно, например, так:

A(std::initializer_list<int> a) 
{
    if (a.size() == 1)
        A(*a.begin());
    else
        std::cout << "2";
}
→ Ссылка