添加对std :: queue的引用是否会创建副本?

时间:2016-12-11 16:34:55

标签: c++ c++11 std

我有一堆不相关的结构,我想添加到std :: queue。我正在使用一个名为message的结构,我用它来封装不相关的结构,以便将它们存储在同一个队列中。

struct message {
    char *struct_pointer;
    size_t struct_size;
};

struct confirmer {
    int32_t hello;
    int32_t yellow;
    double jello;
}

在邮件中,我然后调用

confirmer *confirm = new confirmer();
confirmer->hello = 100;
confirmer->yellow = 000;
confirmer->jello = 123.324;

message my_message = {(char *)confirm, sizeof(struct confirmer)};       
other_namespace::do_things_to_message(my_message);

其中do_things_to_message接受对struct message的引用。

我的问题是在函数do_things_to_message内,如果我将参数curr_message(这是一个引用)添加到std::container,它是否会创建引用和存储的副本在容器中?即。

void do_things_to_message(struct message& curr_message) {
    my_queue.push(curr_message) //where my_queue is a std::queue my_queue<message>
    //do other things...
    }

那么my_queue实际存储的是什么?对象的副本?原始对象?还有别的吗?

0 个答案:

没有答案