Не могли бы вы помочь мне понять, почему я получаю предупреждение о неиспользуемых переменных не для всех неиспользуемых статических константных переменных?
Я подготовил простой код. Вот 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();
Почему не переменная вызвать такое же предупреждение?
Для переменной a экземпляр singleton копируется в переменную по присваиванию, поэтому можно утверждать, что он используется.
Других решений пока нет …