我有一個模板類,其型別由另一個子模板建構式確定。
template <typename V, typename I>
class Text{
public:
template <typename Container, typename V = typename Container::value_type, typename I = typename Container::size_type>
Text(Container& c) {}
};
所以用法會是這樣的:
std::vector<int> v;
Text(v) //Deduces to Text<int, std::size_t>
不幸的是,我收到一個錯誤,表明 V 和我被遮蔽了。這是因為它試圖創建一個新的 V 和 I。
我已經看到了一個解決方案,using V = typename Container::value_type;但它給出了同樣的錯誤。
uj5u.com熱心網友回復:
您可能想撰寫自己的演繹指南:
template <typename Container>
Text(Container&) -> Text<typename Container::value_type,
typename Container::size_type>;
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/421207.html
標籤:
