对于所有未使用的静态const变量

时间:2017-07-31 16:26:03

标签: c++ unused-variables

你能帮助我理解为什么我得到未使用的变量警告而不是所有未使用的静态const变量? 我准备了一个简单的代码。这是2个文件main.cpp和incl.h。

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

的main.cpp

#include "incl.h"

int main ()
{
    return 0;
}

我预计将会有2个未使用变量警告(对于a和b fariables),但实际上警告只有一个用于变量 b

$ 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 不会导致相同的警告?

1 个答案:

答案 0 :(得分:1)

对于变量a,单例实例通过赋值复制到变量中,因此您可以认为它正在被使用。