考虑以下代码:
template <class T>
class Bar {
int foobar;
using X = T();
friend X foo;
};
void foo() {
Bar<void> bar;
bar.foobar = 1;
static_cast<void>(bar);
}
int main() {}
在gcc和clang中编译都没问题。但是,看起来等效的代码:
template <class T>
class Bar {
int foobar;
friend T foo;
};
void foo() {
Bar<void()> bar;
bar.foobar = 1;
static_cast<void>(bar);
}
int main() {}
void
,而在另一个参数里发送了void()
。 - StoryTeller - Unslander Monica