предупреждение о неиспользованной переменной возникает не для всех неиспользуемых статических константных переменных

Не могли бы вы помочь мне понять, почему я получаю предупреждение о неиспользуемых переменных не для всех неиспользуемых статических константных переменных?
Я подготовил простой код. Вот 2 файла main.cpp и incl.h.

#ifndef INCL_H
#define INCL_H

struct A
{
static A& instance()
{
static A a;
return a;
}
};

static const A a = A::instance();
static const A& b = A::instance();

#endif
#include "incl.h"
int main ()
{
return 0;
}

Я ожидаю, что будет 2 предупреждения о неиспользованных переменных (для a и b fariables), но на самом деле предупреждение только одно для переменных б.

$ g++ -std=c++11 -Wall -Wextra -O2 -c main.cpp
In file included from main.cpp:1:0:
incl.h:14:17: warning: ‘b’ defined but not used [-Wunused-variable]
static const A& b = A::instance();

Почему не переменная вызвать такое же предупреждение?

1

Решение

Для переменной a экземпляр singleton копируется в переменную по присваиванию, поэтому можно утверждать, что он используется.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]