这个警告是什么意思?
这里是 mcve。
template<class K> class TTT{
public: alignas(alignof(K))
union{
char raw[sizeof(K)];
K rawK;
}; //<-- error at this line
};
如果我在 Visual Studio 2015 中使用
ctrl+F7
编译这个单个文件,我将收到此警告。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 它应该放在 struct
或 union
关键字和结构/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/