Шаблоны и вывод типа
От: SaZ  
Дата: 04.04.21 20:41
Оценка:
Всем доброго времени суток.

Есть примерно такой код (навеяно библиотекой sqlite_orm) на С++17:

#include <tuple>
#include <type_traits>

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

//------
template<auto (*T)()> // ??? template<typename T = ...>
struct storage
{
    using storage_t = std::invoke_result_t<decltype(T)>;
    storage_t _data;

    storage();
};

template<auto (*T)()>
storage<T>::storage()
    : _data{(*T)()}
{
}

//------
struct object_storage
    : storage<make_object>
{};


int main()
{
    object_storage st;
    return 0;
}


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

Меня несколько напрягает такой вывод типа. CLion начинает плющить, он не справляется с парсингом и кодогенерацией. Да и хочется синтаксически более читаемой конструкции.
Отредактировано 04.04.2021 20:42 SaZ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.