Предположим, что у меня есть две функции шаблона, объявленные в файле заголовка:
template <typename T> void func1(const T& value);
template <typename T> void func2(const T& value);
И предположим, что реализация этих функций (также в файле заголовка, а не в исходном файле, поскольку они являются шаблонами) использует некоторая вспомогательная функция реализации, которая также является шаблоном:
template <typename T> void helper(const T& value) {
// ...
}
template <typename T> void func1(const T& value) {
// ...
helper(value);
}
template <typename T> void func2(const T& value) {
// ...
helper(value);
}
В любом исходном файле, в который я включаю файл заголовка, вспомогательная функция будет видна. Я не хочу этого, потому что вспомогательная функция - это просто деталь реализации. Есть ли способ скрыть вспомогательную функцию?