【发布时间】:2014-12-10 19:07:51
【问题描述】:
当返回类型是类时,GCC 4.9.1 似乎不喜欢带有属性的尾随返回类型的函数声明。
考虑以下简单的测试用例:
struct bar
{
int a;
bar (int a) : a(a) {}
};
auto foo() -> bar __attribute__((unused));
auto foo() -> bar { return bar(5); }
int main()
{
return 0;
}
GCC 打印一个关于属性的奇怪警告:
argh.cpp:2:41: warning: ignoring attributes applied to class type ‘bar’ outside of definition [-Wattributes]
auto foo() -> bar __attribute__((unused)) {return bar(5);}
将声明与定义合并不会使警告静音,并且仅当返回类型是类类型时才会发生这种情况,它适用于int。到底是怎么回事?为什么 GCC 不喜欢这个特定的函数声明?
【问题讨论】: