после прочтения этого. У меня возникла идея. Что, если я сделаю g_map константной ссылкой, которая должна продлить срок службы временного объекта. Чтобы она могла быть действительна до завершения основной функции. Но, похоже, это не так. Я что-то пропустил?
PS: Я знаю, что этот код — плохая практика. Просто для эксперимента, чтобы он скомпилировался.
#include
#include
template< typename T, typename U >
class Map
{
public:
Map(const T& t, const U& u) { map_[t] = u; }
const Map< T, U >& operator() (const T& t, const U& u) const
{
map_[t] = u;
return *this;
}
const U& operator[] (const T& t) const { return map_[t]; }
private:
mutable std::map< T, U > map_;
};
const Map< int, std::string >& g_map = Map< int, std::string>(1, "lorem")
(3, "ipsum")
(5, "dolor");
int main(int argc, char* argv[])
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/797 ... -temporary