Это работает в 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, а это другой, несовместимый инструмент)
Проблема, которую Вы описываете, может быть решена путем определения шаблона в заголовке, или через подход Вы описываете выше.
я рекомендую читать следующие моменты из FAQ C++, Облегченный :
Они вдаются в большое количество подробностей о них (и другой) шаблонные проблемы.
Этот код правильно построен. Только необходимо обратить внимание, что определение шаблона видимо при инстанцировании. Заключить стандарт в кавычки, В§ 14.7.2.4:
определение неэкспортируемого шаблона функции, неэкспортируемого шаблона функции членства, или неэкспортируемой функции членства или статического элемента данных шаблона класса должно присутствовать в каждой единице перевода, в которой это явно инстанцируют.
Это должно хорошо работать везде, шаблоны поддерживаются. Явное шаблонное инстанцирование является частью стандарта C++.
Да, это - стандартный способ сделать specializiation явное инстанцирование. Как Вы заявили, Вы не можете инстанцировать этого шаблона с другими типами.
Редактирование: исправленный на основе комментария.
Существует, в последнем стандарте, ключевое слово (export
), которое помогло бы облегчить эту проблему, но это не реализовано ни в каком компиляторе, о котором я знаю кроме Comeau.
Посмотрите облегченный FAQ об этом.
Нет ничего неправильно с примером, который Вы дали. Но я должен сказать, что полагаю, что не эффективно сохранить функциональные определения в cpp файле. Я только понимаю потребность разделить объявление и определение функции.
, Когда используется вместе с явным инстанцированием класса, Библиотека проверки понятия повышения (BCCL) может помочь Вам генерировать шаблонный код функции в cpp файлах.