【发布时间】:2010-12-11 14:38:47
【问题描述】:
根据 C++ 标准,函数参数的名称由 declarator-id 解析,declarator-id 也可以是限定名称。这意味着,以下代码完全有效(如果我正确理解了标准中的相关部分):
template<class T>
struct Sample
{
int fun(int T::count); //T::count is qualified variable name
};
我的问题基本上是,为什么有人会编写这样的代码?在什么情况下,使用限定名(在函数参数列表中)可能是有利的?
编辑:
似乎我对这些部分的理解有误。除了上面的代码,我们可能还可以编写下面的代码(按照 C++ 标准):
template<class T>
struct sample
{
void fun(int arr[T::count]);
};
gcc-4.3.4 compiles 完美。但是,我并不完全满意,因为 T::count 不再是参数(我猜)。
【问题讨论】:
-
那么现在的问题是什么?您是否仍然有兴趣找出为什么有人愿意这样做?
-
@Martin :如果您指的是我帖子的编辑部分,那么是的,我想听听您和其他人的意见,尤其是为什么有人会使用
arr[T::count]?
标签: c++ templates parameters qualified-name