【发布时间】:2017-01-16 16:36:07
【问题描述】:
命名模板静态方法的特定实例的正确语法是什么?
以下所有attempts 似乎都是错误的:
struct S
{
template<int x> static int f() { return x; }
using g1 = f<1>;
template using g2 = f<1>;
template<> using g3 = f<1>;
};
【问题讨论】:
-
using命名一个类型。函数不是类型。f<1>是一个函数。你能解释一下你想要这个命名做什么,以及你想如何使用它吗?假设您有static int f_1() { return 1; },请说明您想用它而不是f<1>做什么以及如何做。 -
@Yakk 我感兴趣的不是命名类型,而是用某个名称(比如 g)命名 f,以便稍后我可以调用 g() 而不是 f ,目的是 DRY,以防对函数模板的这个特定实例化有很多调用。有可能(合理的,按照你写的) using 不是这个工具;我该怎么做?
-
如果你想要一个 变量 可以保存 value
f<1>,只需使用 auto:auto g = f<1> -
@Caleth 是的,这行得通。虽然必须在结构定义之外。 melpon.org/wandbox/permlink/LZ15s9WTlPEEKexL欢迎您将其发布为答案。
-
@Caleth 不过,如果能够命名特定的实例而不实际将其分配给变量,那就太好了。