saide_a Ответов: 3

Заголовок для использования int_ в классе шаблонов


Я получаю синтаксическую ошибку C2061: идентификатор 'int_' при его использовании.
есть ли заголовок или я могу написать какую-то структуру, чтобы справиться с этим?
в чем разница между int x и int_<x>?

Что я уже пробовал:

Я использую int x но у меня появилась какая то ошибка которая означала не использовать это в шаблоне класса

3 Ответов

Рейтинг:
24

Jochen Arndt

Похоже, вы использовали код из github.com/motonacciu/meta-serialization/blob/master/include/serialize.h[^].

Если вы посмотрите поверх этого файла, вы найдете

namespace detail {

	template<std::size_t> struct int_{};

} // end detail namespace 
Это шаблон, аналогичный тем, которые используются Boost (см. ссылку из решения 1) для реализации Интегральная Константа (видеть Справочное руководство MPL: интегральная Константа - 1.47.0[^]).

Если вы используете немодифицированный файл, он должен компилироваться с последними компиляторами (я не могу протестировать его с VS 2015 и 2017, потому что на самом деле у меня нет доступа к ним).


saide_a

большое спасибо

Рейтинг:
0

CPallini

Вы должны знать, то есть: зачем вам это нужно? Какой библиотекой вы пользуетесь? Например, если вы используете boost MPL чем является соответствующий заголовок boost/mpl/int.hpp, как указано в документации: Справочное руководство MPL: int_ - 1.47.0[^].


saide_a

Я хочу его без использования boost

Рейтинг:
0

Richard MacCutchan

Вы не можете использовать его с int, так как это встроенный тип, а не шаблон. Чего именно вы пытаетесь достичь?


saide_a

Я нашел источник, который для сериализации с помощью c++11 при компиляции выдает эту ошибку.
часть кода, которая получает ошибку:
шаблон <класс tuple_type, size_t pos>
встроенные типы size_t get_tuple_size(tuple_type как const&амп; объект, int_&ЛТ;пос&ГТ;)
{
реализация таких индекса IDx = с std::tuple_size&ЛТ;tuple_type&ГТ;::значение - пос - 1;
реализация акк = get_size(СТД::показать&ЛТ;индекс&ГТ;(объект));
return acc + get_tuple_size(obj, int_<pos - 1>());
}

Richard MacCutchan

Какая ошибка?

saide_a

синтаксическая ошибка C2061: идентификатор 'int_'

Richard MacCutchan

В C++такого типа нет.