170 похожих чатов

Привет. Я немного не понимаю, как работает инстанцирование шаблонов при

использовании модулей. Вот у меня есть модуль, в котором экспортируется шаблонный класс. Я его прекомпилирую в pcm. В другом модуле импортирую 1й и инстанцирую класс для какого-то типа. Где будет создана инстанцированная версия класса? Во втором модуле? В каком виде тогда шаблонный класс хранится в pcm первого модуля? Читал, что pcm -- аналог для объектных файлов в текущей модели сборки, но видимо они оч сильно отличаются.

10 ответов

2 просмотра

ну видимо какое то представление шаблона в первом и какой то конкретный тип во втором

Я очень не знаю модули, но что мешает шаблонам там хотя бы работать так же как и без модулей? (как пример)

Vanya-Khodor Автор вопроса
Ilya Zviagin
Я очень не знаю модули, но что мешает шаблонам там...

Обычно все шаблоны в итоге оставались в одном tu, который компилировался весь сразу. А тут прекомпиляция модуля ломает ментальную модель.

Vanya-Khodor Автор вопроса
Kelbon
ну видимо какое то представление шаблона в первом...

А есть мб что-то конкретное почитать? Как-то не оч гуглится (именно как это технически, желательно не лезть в исходники компилятора).

Vanya Khodor
А есть мб что-то конкретное почитать? Как-то не оч...

Технически, собранный модуль (с шаблоном внутри, например) - это не объектный файл, а тот же исходник, но в удобной для компилятора форме. Сравнимо с precompiled headers.

Vanya-Khodor Автор вопроса

У Rainer Grimm где-то читал недавно что у модулей внутреннее представление AST и оно и будет использоваться в момент инстанцирования шаблона. Так что видимо в первом модуле будет абстрактное представление шаблона в АСТ, во втором возможно будет уже описание с каким типом его нужно инстанцировать. Новая тема эти модули, ещё вопрос насколько сильно отличаются реализации MSVC, GCC и Clang ... Надеюсь что формат представления хотя бы как-то стандартизован, хотя не факт)

есть вполне конкретные предложения на этот счет https://www.youtube.com/watch?v=39wlNRk-nAg&t=6s

Vlad
есть вполне конкретные предложения на этот счет ht...

Звучит здорово. И правда очень крутая возможность для разнообразного тулинга. Да и удобно было бы модули распространять одним куском а не наборами под каждый компилятор...

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта