LINUX.ORG.RU

Функция-шаблон С++ в статической библиотеке?

 ,


0

3

Пишу под Debian, набросал библиотечку с набором функций. По ходу дела понадобилось в некоторых функциях работать с различными типами данных, описал как шаблоны. Теперь undefined reference при сборке проекта, который эту библиотеку подключает и вызывает функции-шаблоны. Можно ли это обойти? Или шаблоны только в рамках одного проекта могут быть используемы?


Ответ на: комментарий от Deleted

Что есть текст?

Текст есть последовательность литер.

Результатом подстановки макроса может являеться сущность любого типа

Приведи определение макроса, которое ты используешь.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Что есть текст?

Текст есть последовательность литер

Ну под литерой тоже многие вещи подразумевать можно. Нужно более подробно

Приведи определение макроса, которое ты используешь

Механизм сокращений/именования. Твоё оперделение уже было? Если нет - в студию

Deleted
()
Ответ на: комментарий от Deleted

Приведи определение макроса, которое ты используешь

Механизм сокращений/именования.

И пример языка с такими макросамми...

Твоё оперделение уже было? Если нет - в студию

У меня нет своих определений, я пользуюсь общепринятыми. Почитай Wikipedia.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Про литеру ответа не последовало. Это слив?

И пример языка с такими макросамми...

Сабжевый вполне подойдёт

У меня нет своих определений, я пользуюсь общепринятыми

Большинство делает точно так же. Но коль такие пляски, перефразирую: приведи определение макроса, которое ты используешь

Deleted
()
Ответ на: комментарий от Deleted

Что есть текст? Результатом подстановки макроса может являеться сущность любого типа

Результат работы макроса - это код на целевом языке. Запомни это уже наизусть. Никакие сущности макры не генерят.

azelipupenko
()
Ответ на: комментарий от Deleted

Вот затем чтоб их полгода не искать и прошу

Лол. Ты вроде бы на цепепе что-то там делаешь, да? Ну так посмотри что генерят макры хотя бы того же цепепе. Они генерят код на цепепе. Чтобы ты полгода не искал.

azelipupenko
()
Ответ на: комментарий от azelipupenko

посмотри что генерят макры хотя бы того же цепепе. Они генерят код на цепепе.

Вообще нет, они генерят любой текст. Правда, генерировать что-то, кроме кода на Си++, обычно бессмысленно.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Текст есть последовательность /чего угодно/

При таком определении, таки да - всегда будет текст. Только смысла в этом определении я не вижу

is a rule or pattern that specifies how a certain input sequence (often a sequence of characters) should be mapped to a replacement output sequence (also often a sequence of characters) according to a defined procedure

often != always, ну ты понял

Deleted
()
Ответ на: комментарий от azelipupenko

То, что в крестах(а точнее, в си) макросами назвали то, что назвали, ещё ничего не означает

Deleted
()
Ответ на: комментарий от tailgunner

Вообще нет, они генерят любой текст. Правда, генерировать что-то, кроме кода на Си++, обычно бессмысленно.

Потому что их выхлоп изначально предназначен для компилятора. Хотя, быть может, имеются применения цепепе-шного препроцессора для чего-то ещё. Но это уже не целевое использование.

azelipupenko
()
Ответ на: комментарий от Deleted

Текст есть последовательность /чего угодно/

Ну, если ты так считаешь, тогда макрос - это тоже что угодно. Например, твой желудочно-кишечный тракт.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от Deleted

То, что в крестах(а точнее, в си) макросами назвали то, что назвали, ещё ничего не означает

Везде это так. И в Лиспе, и в Расте, и Дилане - везде макры генерят код, а не сферические сущности в вакууме.

azelipupenko
()
Ответ на: комментарий от tailgunner

Результатом расширения макроса является текст

Речь была про результат. ЖКТ вполне может являться результатом подстановки макроса

Deleted
()
Ответ на: комментарий от tailgunner

если ты так считаешь

Кстати, заметь - это не я так считаю, а ты привёл такое определение

Deleted
()
Ответ на: комментарий от Deleted

Речь была про результат.

Речь была про твое определение текста как «последовательности /чего угодно/».

Кстати, заметь - это не я так считаю

Именно ты.

ЖКТ вполне может являться результатом подстановки макроса

Если пользоваться твоим определением - конечно.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от Deleted

Но цэпэпэ у нас особенный и там _шаблоны_ работают по принципам, близким к макросам

Шаблоны в цепепе - это шаблоны в цепепе. Они генерят только типы и функции. Но с их помощью нельзя расширить синтаксис языка. Нельзя написать нормальный for each, нельзя написать нормальный with, нельзя даже банальную строчку наглядно сгенерить. Вот это шаблоны в цепепе.

azelipupenko
()
Ответ на: комментарий от tailgunner

Речь была про твое определение текста

Забавно, но нет - не моё

Что есть текст?

Текст есть последовательность литер

А литера?

Считай это чем хочешь

То, что ты не удосужился сразу написать полное определение(и мне пришлось собирать его по частям) не делает это определение моим

Deleted
()
Ответ на: комментарий от azelipupenko

Они генерят только типы и функции

Но в первом приближении можно считать эту генерацию простой подстановкой - это главное

Deleted
()
Ответ на: комментарий от Deleted

Как трогательно, что ты коверкаешь цитаты. Вот правильная:

dllmain> Про литеру ответа не последовало. Это слив?

tailgunner> Считай это чем хочешь.

Если ты вынужден спрашивать о том, что такое литера - о чем ты вообще здесь споришь.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Неплохо, даже очень )

Если ты вынужден спрашивать о том, что такое литера - о чем ты вообще здесь споришь

А вот теперь уже ты не замечаешь деталей - я вынужден спрашивать у тебя, чтобы тебе труднее было потом сказать «я не это имел ввиду»

Deleted
()
Ответ на: комментарий от Deleted

я вынужден спрашивать у тебя, чтобы тебе труднее было потом сказать «я не это имел ввиду»

О чем ты, болезный? Я дал тебе ссылку на определение, которое я использую. И да, я всё еще жду объяснения, каким образом шаблоны Си++ отвечают этому определению.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Начнём с того, что слив по литерам всё-таки засчитан. То определение ссылку на которое ты дал, не утверждает, что результатом подстановки макроса является текст. Просто напомню, что исходная подтема была про это

каким образом шаблоны Си++ отвечают этому определению

Элементарно. Жду контраргументы и объяснение, с чего ты взял, что

Результатом расширения макроса является текст

Deleted
()
Ответ на: комментарий от Deleted

Начнём с того, что слив по литерам всё-таки засчитан.

Не вопрос. Можешь засчитывать что угодно.

То определение ссылку на которое ты дал, не утверждает, что результатом подстановки макроса является текст.

То определение - нет, конечно. Всего лишь «обычно это последовательность литер». Тебе же не составит трудности привести пример макросов, которые генерят не текст? Только общепринятый, а не ваши с i-rinat фантазии о шаблонах.

каким образом шаблоны Си++ отвечают этому определению

Элементарно.

Прекрасно. Покажи мне output sequence.

Жду контраргументы и объяснение, с чего ты взял, что результатом расширения макроса является текст

Вот с этого: PL/I, C, C++, Rust, CL, Scheme.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

На самом деле — AST. Которое может преобразовываться обратно в текст, а может и нет.

https://en.wikipedia.org/wiki/Macro_(computer_science)#Syntactic_macros

Miguel ★★★★★
()
Последнее исправление: Miguel (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Покажи мне output sequence

Я более чем уверен, что дизассемблером ты пользоваться умеешь. Лень хелворд писать

Вот с этого: PL/I, C, C++, Rust, CL, Scheme

Набор частных случаев всего лишь наблюдение, а не аксиома или теорема

Deleted
()
Ответ на: комментарий от Deleted

Покажи мне output sequence

Я более чем уверен, что дизассемблером ты пользоваться умеешь

То есть показать не можешь. Я так и думал.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

С макросов, расширяющихся только в текст, ты тоже съехал? ++sliv_counter

То есть показать не можешь

С чего ты взял?

Deleted
()
Ответ на: комментарий от Miguel

Результатом расширения макроса является текст.

На самом деле — AST. Которое может преобразовываться обратно в текст, а может и нет.

На самом деле, как минимум в Си++ (и PL/I) - не AST.

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

На чайник Рассела ссылку кинуть?

Просто для протокола: ты пытаешься доказать существование чайника Рассела. И доказательство твое сводится к «купи телескоп и посмотри».

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Язык ведёт себя так, как будто генерирует AST. Если реализация как-то оптимизирована — это её детали.

Про PL/I я знаю только название, так что не могу оценить эту часть утверждения.

Miguel ★★★★★
()
Ответ на: комментарий от tailgunner

Сейчас речь шла о том, могу я или нет запостить сюда результат подстановки. Поэтому, ты неверно сформулировал: ты посмотрел на небо, не увидел там сабжа и вынес закдючение о несуществовании

Deleted
()
Ответ на: комментарий от Deleted

Сейчас речь шла о том, могу я или нет запостить сюда результат подстановки

И ты не смог. Хотя он есть!!!111

ты посмотрел на небо, не увидел там сабжа и вынес закдючение о несуществовании

Не-а. Я посмотрел на результат твоих усилий, и сказал: «ты не можешь».

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от Deleted

Аналогично - продемонстрируй отсутствие output sequence

Я так понимаю, что твои попытки доказать, что шаблоны - это макросы, на этом закончились. Ожидаемый результат.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.