バイナリファイルを読む2つの関数があります。パラメータパック展開の順番
第一の機能は、ファイルからsizeof(T)
バイトを読み取ります
template<typename T>
T read() { ... some IO operations ... };
第二の機能は、各テンプレートパラメータで最初のものを複数回呼び出します。
template<typename... Ts>
std::tuple<Ts...> read_all() {
return std::make_tuple(read<Ts>()...);
};
すべてが第一の関数呼び出しのためのを除いて正常に動作します。何か
uint32_t a;
uint8_t b;
std::tie(a, b) = read_all<uint32_t, uint8_t>();
などのために最初は
read<uint8_t>()
と呼ばれ、テンプレートパラメータを渡すの順序を逆にして、ファイル内のバイトの順序を台無しもの
read<uint32>()
後になります。
確かに、私はread_all
をテンプレート引数の逆順に呼び出して、最後に正しい順序を得ることができますが、もっと明確な方法がありますか?
を、ありがとう –