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はそれを完全にコンパイルします。しかし、私は完全に満足していません.T::countはもはやパラメータではありません.