Closed
Description
| Bugzilla Link | 48534 |
| Version | unspecified |
| OS | All |
| CC | @devincoughlin,@haoNoQ |
Extended Description
// https://godbolt.org/z/1oze6v
struct IrBuilder;
struct Kernel;
class Passkey {
friend struct IrBuilder;
explicit Passkey(Kernel* kernel) : kernel(kernel) {}
public:
Kernel* const kernel = nullptr;
};
struct Kernel {
void foo() const;
};
struct Node {
// incorrect note: Called C++ object pointer is null
explicit Node(Passkey passkey) { passkey.kernel->foo(); }
};
// enabling the following piece of code (normally in a different translation unit)
// demonstrates that the diagnostic is incorrect
#if 0
struct IrBuilder {
Node* create() {
const Passkey passkey(kernel_);
return new Node(passkey);
}
Kernel* kernel_ = nullptr;
};
Node* test(IrBuilder* ir_builder) {
return ir_builder->create();
}
#endif
Activity