以下代码在gcc 7.2.0和clang 6.0.0下都能正常编译。
#include <iostream>
struct stru;
void func(stru& s) {
std::cout << &s << std::endl;
}
int main() {
}
我想知道这是怎么回事。如果stru
超载了operator&()
怎么办?编译器不应该仅仅通过像struct stru
. 在我看来,只有std::addressof(s)
不完整的类型才可以。
以下代码在gcc 7.2.0和clang 6.0.0下都能正常编译。
#include <iostream>
struct stru;
void func(stru& s) {
std::cout << &s << std::endl;
}
int main() {
}
我想知道这是怎么回事。如果stru
超载了operator&()
怎么办?编译器不应该仅仅通过像struct stru
. 在我看来,只有std::addressof(s)
不完整的类型才可以。