Order of parameter pack expansion

后端 未结 2 1517
眼角桃花
眼角桃花 2021-01-05 16:11

I have 2 functions to read binary file.

1st function reads sizeof(T) bytes from file:

template
T read() { ... some IO          


        
2条回答
  •  萌比男神i
    2021-01-05 16:22

    C++ does not specify the order in which a function's arguments are evaluated. If the expressions to a function all consume data from a stream, you can get behavior where objects are read in the wrong order.

    Braced initializer lists are evaluated from left to right, however, so you should get better results if you try something like:

    template
    std::tuple read_all() {
        return std::tuple{read()...};
    }
    

提交回复
热议问题