Сообщение Re: Шаблоны и вывод типа от 04.04.2021 22:05
Изменено 04.04.2021 22:47 rg45
Re: Шаблоны и вывод типа
Здравствуйте, SaZ, Вы писали:
SaZ>Вопрос: как ещё можно положить результат вызова make_object() в поле класса?
"Лобовой" вариант, который первым приходит в голову — использование частичной специализации:
http://coliru.stacked-crooked.com/a/b339dd1e1fc1a139
SaZ>Вопрос: как ещё можно положить результат вызова make_object() в поле класса?
"Лобовой" вариант, который первым приходит в голову — использование частичной специализации:
http://coliru.stacked-crooked.com/a/b339dd1e1fc1a139
#include <tuple>
#include <type_traits>
//------
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()};
};
//------
struct object_storage
: storage<make_object>
{};
int main()
{
object_storage st;
}
Re: Шаблоны и вывод типа
Здравствуйте, SaZ, Вы писали:
SaZ>Вопрос: как ещё можно положить результат вызова make_object() в поле класса?
"Лобовой" вариант, который первым приходит в голову — использование частичной специализации:
http://coliru.stacked-crooked.com/a/b339dd1e1fc1a139
SaZ>Вопрос: как ещё можно положить результат вызова make_object() в поле класса?
"Лобовой" вариант, который первым приходит в голову — использование частичной специализации:
http://coliru.stacked-crooked.com/a/b339dd1e1fc1a139
#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()};
};
//------
struct object_storage
: storage<make_object>
{};
int main()
{
object_storage st;
}