如何根据另一个模板类型推断模板类型
How to deduce template type based on another template type
我有一个模板化的 class,其类型由另一个子模板化构造函数确定。
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 和 I 被隐藏的错误。这是因为它正在尝试创建一个新的 V 和 I。
我见过 using V = typename Container::value_type;
的解决方案,但它给出了同样的错误。
您可能想编写自己的推导指南:
template <typename Container>
Text(Container&) -> Text<typename Container::value_type,
typename Container::size_type>;
我有一个模板化的 class,其类型由另一个子模板化构造函数确定。
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 和 I 被隐藏的错误。这是因为它正在尝试创建一个新的 V 和 I。
我见过 using V = typename Container::value_type;
的解决方案,但它给出了同样的错误。
您可能想编写自己的推导指南:
template <typename Container>
Text(Container&) -> Text<typename Container::value_type,
typename Container::size_type>;