#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]
У меня есть шаблон [b] inline [/b], определенная в заголовке foo.hpp : [code]#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 () , предположительно, в зависимости от порядка связывания. Итак, мои вопросы: