少しまえから、オブジェクトからハッシュ値の計算を自動的に行いたい、という話がでていました。C++1z時点ではそのサポートは入りませんが、前準備として、自動的にハッシュ値を求められる型かを判別するためのhas_unique_object_representations
という型特性が入ります。
この型特性は、パディングビットを持たないtrivially copyableな型(memcpyできる型)や、その配列に対して真を返します。
宣言
// <type_traits> namespace std { template <class T> struct has_unique_object_representations : bool_constant<…> {}; }
2016年9月段階では、変数テンプレート版は予定されていません。
参照
- N3333 Hashing User-Defined Types in C++1y
- P0029R0 A Unified Proposal for Composable Hashing
- P0258R0
is_contiguous_layout
- P0258R1
is_contiguous_layout
- P0258R2
has_unique_object_representations
- wording
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。