2016-06-28 8 views
1

にエイリアステンプレートを宣言転送する方法:どのように私は、次のエイリアステンプレートを持っているC++

#include <vector> 

template <typename T> 
using MyVector = std::vector <T>; 

どのように私は前方MyVectorを宣言することができますか?

template <typename T> 
class MyVector; 

は私にとっては機能しません。

+2

なぜ型エイリアスを宣言したいのですか? – user2296177

+1

できません。どのようにそれを使いたいですか? –

+0

タイプ名をクラスに変更してください: 'テンプレート class MyVector' –

答えて

1

使用宣言を宣言することはできません。
とにかく、あなたは形質の並べ替えを前方宣言することができそれは次のように:

#include <type_traits> 
#include <vector> 

template<typename> 
struct MyStuff; 

template<typename T> 
auto f() { return typename MyStuff<T>::MyVector{}; } 

template<typename T> 
struct MyStuff { 
    using MyVector = std::vector<T>; 
}; 

int main() { 
    static_assert(std::is_same<decltype(f<int>()), std::vector<int>>::value, "!"); 
} 
1

をあなたはそれあなたが転送-宣言をすることができますタイプ、作って逃げることができるかもしれません。

template <typename T> 
struct MyVector: std::vector<T> {}; 
関連する問題