この問題は不思議そうです。いくつかのプラットフォームでビルドする必要があるコードがいくつかあるが、いくつかのプラットフォームではthread_localをサポートしていないため、boost :: thread_specific_ptrを代わりに使用したいと思っている。しかし、すべてのプラットフォーム(x86/x64/arm、debug/release、os、too many)に対してバイナリを作成するのは不愉快です。私ができるboost :: thread_specific_ptrをthread_local経由で実装することは可能ですか?
#if HAS_THREAD_LOCAL
class thread_specific_ptr
{
... // use thread_local to implement
};
#else
using boost::thread_specific_ptr
#endif
:それは私たちがよりエレガントクライアントコードを保つことができるようにthread_local経由thread_specific_ptrのIMPすることができます場合、私はのように私は、ヘッダファイルを持ちたい
(#ifdefのを避けるため)不思議
方法を見つけられないかもしれません、おそらくあなたができる、ありがとう。
IMHOの最善の方法は「boost :: thread_specific_ptr」boost :: thread_specific_ptrはBoost.Threadでサポートされているすべてのコンパイラで動作する移植可能なメカニズムを提供しています。あなたがコピーを作成したくない場合は、ブーストコードをコピーしてください(痛いです!) –