テンプレート クラス A には、テンプレート クラスの静的関数を呼び出す関数が含まれています。
template <typename T>
void A<T>::fun() {
T obj = T::create();
....
}
T = B* のときにこのコードを機能させたい場合、これをどのように変更すればよいですか? (*T)::create() を実行できないことはわかっていますが、概念的には、それが私が望んでいることです。
std::remove_pointer
型特性を使用できます:
#include <type_traits>
template <typename T>
void A<T>::fun() {
T obj = std::remove_pointer<T>::type::create();
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ...
}
両方std::remove_pointer<U*>::type
とstd::remove_pointer<U>::type
与えU
ます。