這看起來應該很簡單,但我一直在玩,並且還沒找到我正在尋找的解決方案,所以在這裏:C++`using`命令用於模板類別別名
我有以下結構(簡化當然說明目的):
template<typename T>
struct test
{
using L = std::list<T>;
L::iterator a;
};
現在,這將引發錯誤:
error: need 'typename' before 'test<T>::K::iterator' because 'test<T>::K' is a dependent scope
我已經找到固定的兩個方面,它至今都少比想法L:任何使用左旋之前
1)附加類型名稱:
template<typename T>
struct test
{
using L = std::list<T>;
typename L::iterator a;
};
我寧願避免這種可能的話額外的詳細程度。
2)添加其他using語句的目標直接迭代器:
template<typename T>
struct test
{
using L = std::list<T>;
using iter = typename L::iterator;
iter a;
};
但這需要不得不爲每個迭代器我想用做同樣的,如果我還希望訪問const_iterator
等等,我寧願不必定義一堆使用語句。
那麼,有沒有寫using語句的方式,然後讓我寫:
L::iterator a;
L::const_iterator b;
...
謝謝!
這比我的元方法+1更好! – Yakk
感謝您的回答!鑑於無法做到我喜歡的方式,這看起來是最乾淨的方式:) – jsdw
@lytnus:很高興它幫助:) –