构造函数的属性说明符的正确位置是什么?该标准似乎没有以任何特殊方式区分构造函数,但正常位置导致GCC和Clang发出警告。
struct test {
[[gnu::nonnull]] test (char * arg); // gcc-6.3 ok, clang error.
test [[gnu::nonnull]] (signed * arg); // gcc/clang error
test (unsigned * arg) [[gnu::nonnull]]; // gcc warning, clang error.
};
我将第二个用于其他功能而没有任何问题。
这是gcc和clang中的错误吗?