abc(AB);
Это объявление переменной типа abc
с именем AB
, эквивалентной abc AB;
.Итак, конструктор без аргументов называется.Вы можете использовать этот синтаксис, если не хотите называть переменную:
abc{AB};
Это «работает», поскольку его нельзя проанализировать как объявление, в то время как ваша версия может.
Но этого недостаточно, вам нужно изменить конструктор так, чтобы он принимал const&
:
abc(std::function<void(void)> const& fb) : func(fb)
{
func(); // if you want AB to be called
}
(Неконстантная ссылка не будет привязана к временному.)