This is a compiler bug: it sometimes creates an illegal temporary object. + The following code illustrates the bug:
++ #include <cassert> + const int global_i = 0; + + struct TestingReferenceBinding + { + TestingReferenceBinding(const int& ii) + { + assert(&ii == &global_i); + } + }; + + int main() + { + TestingReferenceBinding ttt = global_i; + } ++