Я пытаюсь написать библиотеку, в которой у меня есть некоторые шаблонные функции, некоторые из которых являются вспомогательными функциями, поэтому я не хочу, чтобы мои пользователи имели к ним доступ.Некоторый базовый код может быть
//mylib.h
namespace myfuncs
{
template<class T>
void helper (T input, int extrainformation)
{
//do some usefull things
}
template<class T>
void dostuff(T input)
{
int someinfo=4;
helper(input, someinfo);
}
}
Можно ли как-то скрыть вспомогательную функцию, чтобы пользователи библиотеки не могли вызывать ее напрямую?Я думал, что безымянное пространство имен может сделать эту работу, но поскольку я использую шаблоны, я не могу разделить объявление функции и тело между заголовком и файлом реализации.Помещение безымянного пространства имен в заголовочный файл бесполезно и плохой стиль.Единственное, что я могу сделать, - это создать класс mylib
и инкапсулировать функции как частные / общедоступные статические функции.
Любые лучшие решения будут высоко оценены.