В следующем коде pS
и s.pS
гарантированно будут равны в последней строке? Другими словами, в выражении S s = S();
можно ли быть уверенным, что временная S
не будет построена?
#include <iostream>
using namespace std;
struct S
{
S() { pS = this; }
S* pS;
};
int main()
{
S s = S();
S* pS = &s;
cout << pS << " " << s.pS << endl;
}
В каждом компиляторе я тестировал это в pS == s.pS
, но я недостаточно знаком со стандартом, чтобы убедиться, что это гарантировано.