基本的に、次のようなことを行うマクロを作成できるように、現在のクラスを知る必要があります。
typedef boost::shared_ptr<MyClass> sptr;
typedef boost::shared_ptr<const MyClass> csptr;
//etc
MyClass をパラメーターとしてマクロに配置する必要はありません。私はあらゆる種類のばかげたことを試しました:
typedef decltype(*this) this_type;
もちろん、それらは機能しません。これを回避できるものは何もありませんか? C++11 が何か一緒にハックする方法を私たちに与えてくれることを願っていました。