我有很长的模板函数声明:我可以使用decltype()来避免显式模板实例中的代码重复吗?
template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
,没有超载。我想明确地实例化它。我可以写(说了T
= int
):
template void foo<int>(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
但我真的不希望复制长的声明。我本来喜欢能够这样说:
template <typename T> using bar = decltype(foo<T>);
然后:
template bar<int>;
现在,第一行编译(GCC 4.9.3),但第二行没有按”吨。我可以让它工作吗?或者我可以使用decltype()
其他方式避免复制实例的声明?
注意:我使用了一个例子,在这个例子中,你不能只从参数中推断出类型,因为我想要任何解决方案来支持这种情况。
我在编辑这个问题,以确保你不能推导出函数参数的模板参数,这正是我真正感兴趣的。我只是撒了一个T t来衡量好,并不意味着为你使用它...如果你的答案仍然相关,那么很好。 – einpoklum
@einpoklum这个问题并不是很清楚,你为什么认为我的答案不相关? – Barry
我没有说这是无关紧要的,我只是有一种感觉(在你最后一次编辑之前),你可能比你更依赖它。 – einpoklum