Здравствуйте!
Я наткнулся на фрагмент в коде старом, как... впрочем, просто в старом коде, который не могу осмыслить. Здесь используется workaround для GCC опять-таки неизвестной версии. Собственно NDA-обфусцированный код (обратите внимание на прекрасный комментарий, заботливо оставленный автором кода):
struct A
{
int _a;
int _b;
A(int a, int b) : _a( a ), _b( b ) {}
};
vector<A> a_storage = fill_a_storage();
vector<size_t> a_index = get_a_index();
A get_a(size_t index)
{
#ifndef __GNUC__
return a_storage[ a_index[index] ];
#else // Workaround for the GCC compiler
volatile A tmp = a_storage[ a_index[index] ];
return A(tmp._a, tmp._b);
#endif
}
Буду бесконечно благодарен, если кто-то сможет объяснить суть этого workaround с временной volatile переменной:
#else // Workaround for the GCC compiler
volatile A tmp = a_storage[ a_index[index] ];
return A(tmp._a, tmp._b);
#endif