为什么这不会创建悬空引用?

我认为 VS2019 建议会创建一个悬空的参考情况,但我对其进行了测试,它似乎有效。这里发生了什么?


    template<typename MessageType>
    class Queue {
      inline static std::vector<MessageType> messages;
    public:
      static bool isEmpty() {
        return messages.size() == 0;
      }

      template <typename... Args>
      static void emplace(Args&&... args) {
        messages.emplace_back(std::forward<Args>(args)...);
      }

      static MessageType pop() {
        auto const& val = messages.back();
        messages.pop_back();
        return val;
      }
    };

看起来最后一条消息存活的时间足够长,可以复制到返回值中。这是好的做法吗?

以上是为什么这不会创建悬空引用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>