Хранение определений функций шаблона C ++ в файле .CPP

Это работает в CentOS / Redhat или других дистрибутивах без скрипта Perl rename:

for i in $( ls | grep [A-Z] ); do mv -i "$i" "`echo $i | tr 'A-Z' 'a-z'`"; done

Источник: https://linuxconfig.org/rename-all-files-from -uppercase-to-lowercase-characters

(в некоторых дистрибутивах команда по умолчанию rename поступает из util-linux, а это другой, несовместимый инструмент)

451
задан Leon Timmermans 29 September 2008 в 15:56
поделиться

6 ответов

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

я рекомендую читать следующие моменты из FAQ C++, Облегченный :

Они вдаются в большое количество подробностей о них (и другой) шаблонные проблемы.

203
ответ дан Qix 29 September 2008 в 15:56
поделиться

Этот код правильно построен. Только необходимо обратить внимание, что определение шаблона видимо при инстанцировании. Заключить стандарт в кавычки, В§ 14.7.2.4:

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

19
ответ дан Konrad Rudolph 29 September 2008 в 15:56
поделиться

Это должно хорошо работать везде, шаблоны поддерживаются. Явное шаблонное инстанцирование является частью стандарта C++.

11
ответ дан moonshadow 29 September 2008 в 15:56
поделиться

Да, это - стандартный способ сделать specializiation явное инстанцирование. Как Вы заявили, Вы не можете инстанцировать этого шаблона с другими типами.

Редактирование: исправленный на основе комментария.

3
ответ дан Lou Franco 29 September 2008 в 15:56
поделиться

Существует, в последнем стандарте, ключевое слово (export), которое помогло бы облегчить эту проблему, но это не реализовано ни в каком компиляторе, о котором я знаю кроме Comeau.

Посмотрите облегченный FAQ об этом.

4
ответ дан Ben Collins 29 September 2008 в 15:56
поделиться

Нет ничего неправильно с примером, который Вы дали. Но я должен сказать, что полагаю, что не эффективно сохранить функциональные определения в cpp файле. Я только понимаю потребность разделить объявление и определение функции.

, Когда используется вместе с явным инстанцированием класса, Библиотека проверки понятия повышения (BCCL) может помочь Вам генерировать шаблонный код функции в cpp файлах.

0
ответ дан Benoît 29 September 2008 в 15:56
поделиться
  • 1
    That' s не технически то же, но в зависимости от ситуации это могло бы сделать то, что хочет Ajay. – Imagist 26 August 2009 в 16:07
Другие вопросы по тегам:

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