Как специализироваться на шаблоне функции локально на блок перевода?C++

Программы на C++. Форум разработчиков
Anonymous
Как специализироваться на шаблоне функции локально на блок перевода?

Сообщение Anonymous »

У меня есть шаблон inline , определенная в заголовке foo.hpp :

Код: Выделить всё

#include 
template< typename = void >
inline void foo() { std::cout 

Специализированная реализация

Специализированная реализация < /p>
< /blockquote>
и, если я перемещаю специализацию < /code> из bar.cpp < /code> to aby.c, и, если я перемещаю специализацию < /code> из bar.cpp < /code. становится: < /p>

Реализация по умолчанию

реализация по умолчанию < /p>
< /blockquote>
Я ожидал, что специализация будет локальной для его блока перевода (по крайней мере, когда функция шаблона будет внедрена), но это, похоже, неверно. Кроме того, я чрезвычайно смущен тем, что компилятор/линкер молча игнорирует одну из версий foo () , предположительно, в зависимости от порядка связывания.
Итак, мои вопросы: 

 

Подробнее здесь: [url]https://stackoverflow.com/questions/79769583/how-to-specialize-a-function-template-locally-to-a-translation-unit[/url]

Вернуться в «C++»