假设我有这样的东西:
标题.h:
namespace detail {
template <typename T>
class HiddenClass {
/* Bunch of things... */
template <typename ...ArgList>
static HiddenClass<T> & function (const ArgList & ... argTail) {
// Do something...
}
}
}
我想打电话给detail::HiddenClass<T>::function(***);
但正如你所看到的,这很荒谬。更不用说此功能应该是用户干扰的一部分。我不能指望我的代码的"用户"在他\她想调用detail::HiddenClass<T>::function(***);
时写function(***);
我试过了:
template <typename T>
using detail::HiddenClass<T>::function;
还有其他类似的方法,但我惨败了......
任何人都可以以某种方式提供帮助?建议一些东西
你可以提供一个宏来缩短调用语法:
#define MY_FUNCTION(Type, Arg) detail::HiddenClass<Type>::function(Arg)
然后,它从全局命名空间的使用将短得多,并且不需要using
:
HiddenClass<SomeType>& rc = MY_FUNCTION(SomeType, argTail);