Windows CE向けにコンパイラオプションを指定せずにコンパイルすると呼び出し規約がstdcallになります*1。そのことを忘れていて、
std::vector<VARIANT> l; ... std::for_each(l.begin(),l.end(), boost::bind(&::VariantClear, boost::bind(&boost::addressof<VARIANT>, _1)));
のようなコードをコンパイルするために、BOOST_BIND_ENABLE_STDCALLを定義したら、Windows CE向けにコンパイルできなくなってちょっと焦りました。
ところで、boost::addressofのようにトリッキーなことをしなくていいので、単に&を取ってくれる関数アダプタはboostにはないのでしょうか。こんなやつです。
template<typename T> T* addressof(T t) { return &t; }
*1 可変長引数を取る関数は自動的にcdeclになるようです