gpt4 book ai didi

c++ - "C4649: attributes are ignored in this context"是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 20:35:11 25 4
gpt4 key购买 nike

这个警告是什么意思?

这是 mcve。

template<class K> class TTT{
public: alignas(alignof(K))
union{
char raw[sizeof(K)];
K rawK;
}; //<-- error at this line
};

如果我用 ctrl+F7 编译这个单个文件在 Visual Studio 2015 中,我会收到此警告。

warning C4649: attributes are ignored in this context
note: see reference to class template instantiation 'TTT<K>' being compiled

我出现在我的电脑里,但是http://rextester.com虽然无法重现此警告。

其他信息:-

  • 注意 TTT<K>从未真正实例化。
  • 如果我删除了 alignas(alignof(K)) 这个词,警告将消失。
  • 通过一些测试用例,这个类实际上是可用的。

我真的找不到任何网站对它有一些有用的描述。

有人遇到过吗?

最佳答案

阅读this alignas reference它应该放在 structunion 关键字和 structure/union 标签之间。

所以应该是这样的

template<class K> struct TTT{
union alignas(alignof(K)) {
// ^^^^^^^^^^^^^^^^^^^
// Note placement
char raw[sizeof(K)];
K rawK;
};
};

关于c++ - "C4649: attributes are ignored in this context"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44134633/

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