Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, reversecode, Вы писали:
R>>>>все бы ничего, но я не вижу где используется функция overloaded(Ts...) что бы по не что то выводить
R>>>>в std::visitor передается сама структура overloaded с инициализацией лямбд
NB>>>это не функция.
NB>>>подробнее здесь. Explicitly specified Deduction Guide.
R>>ну теперь если правильно понял это конструктор, а "->" не возвращаемое значение а правило для вывода типа в конструкторе
NB>это правило. но конструктора нет.
NB>после того как получен тип, скорее всего, просто работает aggregate initialization.
R>>если так, то странно почему вообще не упростили без второй строчки, если вариадики есть уже в шаблоне типа, то само собой должен автоматом быть и конструктор для такого
NB>наличие вариадика в шаблоне не означает существования конструктора для него.
NB>собственно в примере этого конструктора и нет.
NB>ну, по крайней мере я так думаю
по примеру я как раз таки и решил что это конструтор
[Example:
template<class T> struct container {
container(T t) {}
template<class Iter> container(Iter beg, Iter end);
};
template<class Iter>
container(Iter b, Iter e) -> container<typename std::iterator_traits<Iter>::value_type>;
std::vector<double> v = { /* ... */};
container c(7); // OK. Deduces int for T
auto d = container(v.begin(), v.end()); // OK. Deduces double for T
container e{5, 6}; // Ill-formed. int is not an iterator
— end example]
судя по этому примеру как раз для конструктора container(Iter beg, Iter end)
и выводят тип, точнее по конструктору выводят Т
уточнив специализацию шаблоном
template<class Iter>
container(Iter b, Iter e) -> container<typename std::iterator_traits<Iter>::value_type>;
а в примере std::visit как раз через вариадик конструктор набиваются ламбды
и что бы этот вариадик конструктор сработал и уточняют правилом вывода
вот как я это понял теперь для себя
может к с++20 додумаются что имея вариадик шаблон, само собой может быть и вариадик конструктор и второе правило вывода если тип шаблона не задан для конструктора отдельно, можно будет опускать