เป็นไปได้หรือไม่ที่จะดึงเทมเพลตที่ซ้อนกันประเภทชั้นในสุดประเภทเดียวกัน จากภายในเทมเพลต ฉันต้องการดึงข้อมูลประเภท double
ในตัวอย่างต่อไปนี้:
template<typename T>
struct is_a : std::false_type {};
template<typename T>
struct A
{
using type = std::conditional_t<
is_a<T>::value,
T::type, // if it's an A, go deeper
T>; // if not, we're done
};
template<typename T>
struct is_a<A<T>> : std::true_type {};
int main()
{
A<A<A<A<A<double>>>>>::type d = 3.0;
return 0;
}
คำถามได้รับแรงบันดาลใจจากคำถามนี้ นอกจากนี้ ฉันยังพบโพสต์นี้ ซึ่งบ่งชี้ว่าอาจมีบางอย่างเกี่ยวข้องกับการวางคำหลัก typename
หรือ template
แต่ฉันไม่สามารถทำงานด้วยตัวเองได้