проблемка при построении компилятором std::tuple
От: _niko_ Россия  
Дата: 12.11.15 07:41
Оценка:
Подскажите как в приведенном ниже коде (он же на ideone) правильно объяснить компилятору что тип элемента находится в Table::Meta::type?

#include <list>
#include <tuple>

struct RawTable { };

struct Table
{
    template<class Type>
    struct Meta
    {
        Meta(const char * columnName) : columnName(columnName) { }

        using type = Type;
        const char * const columnName;
        // . . .
    };

    template<class... MetaArgs>
    auto parse(RawTable&&, MetaArgs&&...) -> std::list<std::tuple<typename MetaArgs::type...>>
    {
        return std::list<std::tuple<typename MetaArgs::type...>>();
    }
};

int main()
{
    for (std::tuple<bool,int> & tuple : Table::parse(RawTable(), 
                                                     Table::Meta<bool>("field1"),
                                                     Table::Meta<int>("field2")))
    {
        (void)tuple;
        //TODO
    }

    return 0;
}
Re: проблемка при построении компилятором std::tuple
От: VTT http://vtt.to
Дата: 12.11.15 07:49
Оценка:
Вам же компилятор прямо говорит, что метод parse нельзя так вызывать, так как он не статический.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: проблемка при построении компилятором std::tuple
От: _niko_ Россия  
Дата: 12.11.15 08:08
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>Вам же компилятор прямо говорит, что метод parse нельзя так вызывать, так как он не статический.


упс

Под msvc2013 собираю, там компилятор ругается на то что не может раскрыть "пакет параметров", до проблемы с отсутствием статики он там еще не дошел )
Закинул код на ideone — тоже не собрался, а что ему там уже не понравилось не обратил внимания.

Добавил статику — на ideone собралось, а с msvc2013 походу проблемка получается
Re[3]: проблемка при построении компилятором std::tuple
От: VTT http://vtt.to
Дата: 12.11.15 08:32
Оценка:
Я не уверен, что синтаксис MetaArgs::type на самом деле работает.
Тут наверное надо сделать tuple-враппер, который бы делал tuple последовательно извлекая Meta::type из каждого параметра.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.