以下代码在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)不完整的类型才可以。