Как скрыть шаблон помощника реализации?

Предположим, что у меня есть две функции шаблона, объявленные в файле заголовка:

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);
}

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

18
задан Jesper 3 May 2011 в 12:32
поделиться