C++にはクラス内で自分の型を取得する直接的な方法がないという問題があり、そのためにtypedef X this_type;のようなことが行われていました。 C++11にはdecltypeがあるので、decltype(*this);で自分の型を取得できます。 ただし、decltype(*this)で導出される型はXではなくX&のため、std::remove_referenceしないといけないのであまり便利ではないのでした。 #include <iostream> #include <type_traits> struct X { void foo() { // decltype(*this)::bar(); // エラー!X&::bar()はできない std::remove_reference<decltype(*this)>::type::bar(); } static void bar