Re: Шаблоны и вывод типа
От: rg45 СССР  
Дата: 04.04.21 22:05
Оценка: 2 (1)
Здравствуйте, SaZ, Вы писали:


SaZ>Вопрос: как ещё можно положить результат вызова make_object() в поле класса?


"Лобовой" вариант, который первым приходит в голову — использование частичной специализации:

http://coliru.stacked-crooked.com/a/ecccd0e27f6939e9

#include <tuple>

//------
auto make_object()
{
    return std::make_tuple(1, 2.0, "3"); // Тут возвращается достаточно сложный тип, основанный на вариадиках, не суть
}

//------
template<auto>
struct storage;

template<typename R, R(*F)()>
struct storage<F>
{
    R _data{F()}; // Здесь default member initializer вместо определения default constructor
};

//------
// Здесь простой using-declaration вместо определения нового класса с наследованием
using object_storage = storage<make_object>;

int main()
{
    object_storage st;
}
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 05.04.2021 8:28 rg45 . Предыдущая версия . Еще …
Отредактировано 05.04.2021 7:46 rg45 . Предыдущая версия .
Отредактировано 04.04.2021 22:48 rg45 . Предыдущая версия .
Отредактировано 04.04.2021 22:47 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.