This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Strange warning in C++11 range based for loop


On 30 August 2011 17:46, Pavel Dzhioev wrote:
> I have changed my opinion, after reading standart draft. It says:
>> The range-based for statement
>> ? ? for ( for-range-declaration : expression ) statement
>> is equivalent to
>> {
>> ? ?auto && __range = ( expression );
>> ? ?for ( auto __begin = begin-expr, __end = end-expr; __begin != __end; ++__begin )
>> ? ?{
>> ? ? ? ? ?for-range-declaration = *__begin;
>> ? ? ? ? ?statement
>> ? ?}
>>}
> So formally `i' is unused variable in my case.

Formally, yes, but the grammar does not allow you to omit the name, as in:

  for (auto : range(N))

or even
  for (: range(N))

and your example is reasonable, so I can see an argument for disabling
the warning.

On the other hand, it could be useful sometimes:

for (auto i : get_range())
{
    for (auto j : get_range2(i))
    {
        frobnicate(i);   // OOPS should be frobnicate(j)
    }
}

Here it might be useful to be warned that 'j' is unused


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]