boost.uuids.uuidはPOD条件を満たす。

アバター
tk-xleader
記事: 158
登録日時: 14年前
連絡を取る:

boost.uuids.uuidはPOD条件を満たす。

投稿記事 by tk-xleader » 14年前

ということは、boostで生成したuuidをSDKのIID型やCLSID型に変換したいのならば

CODE:

boost::uuids::uuid bid;
/*... 何らかのコード ...*/
::IID iid;
std::memcpy(&iid,&bid,sizeof(iid));
と書ける。逆も当然OK。[/s](ちなみに、IID型とCLSID型はGUID構造体のtypedefなので実体は同じものになる。)

だからどうしたといえばそれまでですけれども…

<追記>
この記事は完全に誤りです。GUID構造体は…

CODE:

struct GUID{
	DWORD t1;
	WORD t2;
	WORD t3;
	BYTE t4[8];
};
こんな定義になっているので、先頭8バイトはリトルエンディアンとなっちゃうわけです。
で、boost.uuids.uuid は boost.uint8_t[16]で保持するので、ビッグエンディアンになってしまうわけです。
最後に編集したユーザー tk-xleader on 2011年4月26日(火) 16:24 [ 編集 2 回目 ]

アバター
tk-xleader
記事: 158
登録日時: 14年前
連絡を取る:

Re: boost.uuids.uuidはPOD条件を満たす。

投稿記事 by tk-xleader » 14年前

とんでもない大嘘記事です。 確かにboost.uuids.uuidはPOD条件は満たすのですが、GUIDとはメモリレイアウトの互換性はゼロです。