3
У меня есть этот пример кода:Действительно ли это код C++ в соответствии со стандартом?
struct A
{
bool test() const
{
return false;
}
};
template <typename T = A>
class Test
{
public:
Test(const T& t = T()) : t_(t){}
void f()
{
if(t_.test())
{
//Do something
}
}
private:
const T& t_;
};
int main()
{
Test<> a;
a.f();
}
В основном я беспокоюсь о конструкторе Test
где я храню константную ссылку на временную переменную и использовать его в methof f
. Будет ли ссылка на временный объект оставаться в силе внутри f
?
Я думаю - нет. Компилятор не может отслеживать (в общем случае), где идет ссылка, и если он хранится постоянно. Но проще всего написать пример приложения и посмотреть, что произойдет. – valdo 2010-12-09 09:21:40
Он работает на VS2008, но я не слишком убежден в его праве. – Naveen 2010-12-09 09:22:19