我有以下内容:
template<typename T>
struct foo {
typedef T type;
};
foo<int> real;
foo<int>& a = real;
我希望从a
中获取模板类型 - 这可能吗?我尝试了以下内容:
a.type b;
decltype(a.type) c;
a::type c;
decltype(a::type) d;
但它们都不起作用......
答案 0 :(得分:8)
对于您想要的foo<int> a
:decltype(a)::type e;
编辑后,您需要foo<int>& a
:
#include <type_traits>
std::decay<decltype(a)>::type::type e;
这是因为在后一种情况下,decltype(a)
是foo<int>&
,因此您首先需要删除引用(这是decay
所做的一部分)以获取基础类型。