【发布时间】:2021-03-16 21:09:32
【问题描述】:
我正在编写一个轻量级解析器组合库(类似于 Boost::Spirit)作为爱好项目。
我想做的一件事是能够自动将Result<std::tuple<char>>、Result<std::tuple<char, char>> 等转换为std::string。
同样,如果有例如Result<std::tuple<int, int>> 我希望能够将其转换为 Result<std::vector<int>> 或更一般地用于任何包含零个或多个相同类型元素的元组T 我希望能够将其自动转换为Result<Container<T>>.
如何处理这样的事情?例如,我尝试过:
template<typename Container>
Result<decltype(std::make_from_tuple<Container>(std::declval<T>()))> () const {
Result{Container{std::make_from_tuple<std::initializer_list<typename std::tuple_element<0, T>::type>> (std::get<T>(*this))}};
}
但这不起作用,因为事实证明不可能像这样以编程方式创建初始化列表。
【问题讨论】:
标签: c++ c++17 template-meta-programming stdtuple conversion-operator