gpt4 book ai didi

c++ - 使用升压范围实现 LINQ 选择

转载 作者:行者123 更新时间:2023-11-28 08:00:42 25 4
gpt4 key购买 nike

我正在尝试围绕 boost::range 实现 LINQ 包装器。

但是,我对选择出现“编译器中发生内部错误”的地方感到震惊。

template<typename R>
class linq_range
{
R range;
public:

linq_range(R range)
: range(std::move(range))
{
}

template<typename F>
auto select(const F& f) const -> linq_range<decltype(std::declval<R>() | boost::adaptors::transformed(f))>
{
return linq_range<decltype(std::declval<R>() | boost::adaptors::transformed(f))>(this->range | boost::adaptors::transformed(f));
}
};

template<typename R>
auto from(R& r) -> linq_range<boost::iterator_range<decltype(std::begin(r))>>
{
return from(std::begin(r), std::end(r));
}

template<typename I>
linq_range<boost::iterator_range<I>> from(I b, I e)
{
return linq_range<boost::iterator_range<I>>(boost::iterator_range<I>(b, e));
}

有什么办法可以解决这个问题吗?

最佳答案

我通过定义解决了它:

BOOST_RESULT_OF_USE_DECLTYPE

关于c++ - 使用升压范围实现 LINQ 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com