2017-03-19 15 views
0

の内のtypedefからテンプレートパラメータの型を取得するには:は、どのように私は、次のしているオブジェクト

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; 

それらのどれも動作しません...

答えて

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>&であるため、最初に参照を削除する必要があります(w hichは基本的な型を得るためにdecayが行うことの一部です)。

+0

'' 'foo &a = b;' '' - リファレンスを意味するものは何ですか? – onqtam

+1

@onqtam:次に別の質問をします:-) –

+0

私は現在のものを編集すべきですか? – onqtam

関連する問題