Const référence en tant que membre de la classe

Même si le sujet a été discuté de nombreuses fois ici, je ne peux pas trouver une explication concluante quant à mon cas particulier. Va const prolonger la durée de vie de la RefTest temporaire? Est l'exemple ci-dessous légal?

#include <iostream>

class RefTest
{
public:
    RefTest(const std::string &input) : str(input) {}
    ~RefTest () {std::cout << "RefTest" << std::endl;}
private:
    std::string str;
};

class Child
{
public:
    Child (const RefTest &ref) : ref_m(ref) {}
    ~Child () {std::cout << "Test" << std::endl;}
private:
    const RefTest &ref_m;
};

class Test
{
public:
    Test () : child(RefTest("child")) {}//Will the temporary get destroyed here?
    ~Test () {std::cout << "Test" << std::endl;}
private:
    const Child child;
};

int main ()
{
   Test test;
}
Cette dernière ligne n'est pas la création d'un objet. C'est la déclaration d'une fonction. Voir en.wikipedia.org/wiki/Most_vexing_parse.
Ah, zut. J'avais peur que l'exemple est stupide 🙁 Merci de voir mes mises à jour, qui devrait être un peu plus près de ma situation de vie réelle. Cette fois, je ne pense pas qu'il devrait y avoir quelque délicate à analyser les problèmes.
qui test2? J'ai dû réécrire mon premier exemple, parce que je n'ai pas mis assez de la pensée en elle.
double possible de Ne const référence prolonger la durée de vie d'un temporaire?
Oui, Haroogan déjà lié. Merci.

OriginalL'auteur Mihai Todor | 2013-03-20