Неявное преобразование для double
в std::array<double, 1>
невозможно.Для этого потребуется перегрузить оператор преобразования для double
, но этого нельзя сделать, поскольку вы не можете перегрузить операторы для встроенных типов.
Что вы можете сделать, это добавить
Foo(double);
конструктор, а затем используйте static_assert
подобно
static_assert(dimension == 1, "single double constructor only works if dimension == 1");
в теле конструктора, чтобы ограничить его работу только тогда, когда массив имеет размер 1
.(Мне нравится использовать static_assert
, когда я могу, потому что это позволяет вам написать хорошее, описательное сообщение об ошибке)
Вы должны рассмотреть вопрос о переименовании dimension
в size
, поскольку это то, что указано вмассив.