хочуфичу - функции-конструкторы
От: Кодт Россия  
Дата: 27.12.23 17:46
Оценка:
Распространённая идиома на плюсах (на сях она вынужденная) — это мейкфункция: декоратор конструктора.
class Foo {
public:
  Foo(Bar);
  Foo(Buz, Xyz);
  ...
};

// руками написать
Foo make_foo(auto&&... args) { return Foo(std::forward<decltype(args)>(args)...); }

// стандартными воспользоваться
std::optional<Foo> o(std::in_place, .....);
auto u = std::make_unique<Foo>(.....);
auto s = std::make_shared<Foo>(.....);


Которая плоха тем, что при несоответствии типов аргументов формирует громоздкие ошибки.

Вот было бы здорово как-то говорить компилятору "этот набор аргументов — такой же, как для вот такого семейства функций"
template<class T, class... Args> shared_ptr<T> make_shared(Args&&... args) [[signature_like ( T::T(Args&&...) ) ]]

чтобы потом компилятор говорил это юзеру.


Может, у кого-нибудь ещё есть схожие хотелки вокруг этого? Чтоб помечтать к следующему стандарту?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.