gpt4 book ai didi

c++ - Clang 为使用的类型别名发出 "unused type alias"警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:18 25 4
gpt4 key购买 nike

我有一些代码,Clang 正在为其生成警告。这是对实际代码的简化,但精神是一样的。本地类中的this_t 用于实例化其他一些模板类。

template<class T>
struct value_holder
{
T value;
};

template<class T>
int get_value()
{
struct value_t
{
using this_t = value_t;
// ^ here
static value_holder<this_t> val()
{
return value_holder<this_t>();
}

operator int()
{ return 0; }
};
return value_t::val().value;
}

int main(int argc, char** argv) {
return get_value<void>();
}

当使用 -std=c++1z -Wall 编译时,Clang 会警告未使用的类型别名:

main.cpp:14:15: warning: unused type alias 'this_t' [-Wunused-local-typedef]
using this_t = value_t;
^
1 warning generated.

您可以在 godbolt(6.0trunk)上看到错误,而我在本地使用的是 Clang 7,它报告了同样的事情。

只有当本地类嵌套在模板类的模板函数或方法中时才会出现此警告。当类嵌套在具体类或函数中时,没有警告。

Clang 在这里发出此警告是否正确? this_t 类型用于 value_t::val() 的返回类型。

最佳答案

它看起来像是 Clang 中的一个错误(2488333298),2015 年针对 Clang 3.7 首次报告。我在 godbolt 中尝试过,它似乎可以追溯到 3.6。

关于c++ - Clang 为使用的类型别名发出 "unused type alias"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com