Ich bin mit dem folgenden Problem konfrontiert. Betrachten Sie die folgende Klasse:Nicht zulassen, Zeiger/Verweis auf Const zu einem temporären Objekt in C++ (keine C++ 0X)
//Will be similar to bost::reference_wrapper
template<class T>
class Ref {
public:
explicit Ref(T& t) : m_ptr(&t) {}
private:
T* m_ptr;
};
und diese Funktion eine doppelte
double fun() {return 1.0;}
Rückkehr Wenn wir jetzt
double x = 1.0;
const double xc = 1.0;
Ref<double> ref1(x); //OK
Ref<const double> refc1(cx); //OK
gut so weit haben, aber:
//Ref<double> ref2(fun()); //Fails as I want it to
Ref<const double> refc2(fun()); //Works but I would like it not to
Ist Es gibt eine Möglichkeit, Ref zu ändern (die Art und Weise, wie Sie bevorzugen) aber nicht die Funktion Spaß, so dass die letzte Zeile einen Kompilierungsfehler zurückgibt? Bitte beachten Sie, dass Sie die Konstruktorsignatur ändern können (solange ich die Referenz wie vorgesehen initialisieren kann).
Dies ist (für mich) das am nächsten zu dem angegebenen Problem (mit auch interessanten Überlegungen, besonders dem letzten), Danke für Ihre Hilfe! – stepelu