C++ 使用另一个命名空间C++;
我想在我自己的命名空间中为一些Range-V3函数/函子创建别名。对于像begin、end这样的functor,它只是执行C++ 使用另一个命名空间C++;,c++,C++,我想在我自己的命名空间中为一些Range-V3函数/函子创建别名。对于像begin、end这样的functor,它只是执行auto-constexpr-begin=::ranges::begin。然而,对于像copy这样的函数,我不确定如何继续。我尝试了使用::ranges::copy()和使用::ranges::copy但两者都不起作用 任何帮助都将不胜感激!我正在做的一个小例子: namespace example::ranges { auto constexpr begin = ::
auto-constexpr-begin=::ranges::begin
。然而,对于像copy这样的函数,我不确定如何继续。我尝试了使用::ranges::copy()代码>和使用::ranges::copy代码>但两者都不起作用
任何帮助都将不胜感激!我正在做的一个小例子:
namespace example::ranges
{
auto constexpr begin = ::ranges::begin;
auto constexpr end = ::ranges::end;
auto constexpr size = ::ranges::size;
using ::ranges::copy(); // Doesn't work
}
不幸的是,没有简单的方法来为C++中的函数创建别名(但是)。您最好的选择是创建一个完美的转发包装器:
namespace example::ranges
{
template <typename... Ts>
auto begin(Ts&&... xs)
noexcept(noexcept(::ranges::begin(std::forward<Ts>(xs)...)))
-> decltype(::ranges::begin(std::forward<Ts>(xs)...)) {
return ::ranges::begin(std::forward<Ts>(xs)...);
}
}
名称空间示例::范围
{
模板
自动开始(Ts&…xs)
noexcept(noexcept(::范围::开始(std::转发(xs)…))
->decltype(::范围::开始(标准::转发(xs)…){
return::ranges::begin(std::forward(xs)…);
}
}
这将在行为上尽可能接近原始函数,保留其无异常性、SFINAE友好性和重载行为。三重化可以用宏来简化。< p>不幸的是,没有简单的方法来为C++中的函数创建别名(但是)。您最好的选择是创建一个完美的转发包装器:
namespace example::ranges
{
template <typename... Ts>
auto begin(Ts&&... xs)
noexcept(noexcept(::ranges::begin(std::forward<Ts>(xs)...)))
-> decltype(::ranges::begin(std::forward<Ts>(xs)...)) {
return ::ranges::begin(std::forward<Ts>(xs)...);
}
}
名称空间示例::范围
{
模板
自动开始(Ts&…xs)
noexcept(noexcept(::范围::开始(std::转发(xs)…))
->decltype(::范围::开始(标准::转发(xs)…){
return::ranges::begin(std::forward(xs)…);
}
}
这将在行为上尽可能接近原始函数,保留其无异常性、SFINAE友好性和重载行为。可以使用宏简化三元组。什么是::ranges::copy
?一个函数,一个类,一个类型定义?可能已经有了一个使用
的?您只想创建“几个”别名有什么原因吗?否则它将像名称空间示例{namespace ranges=::ranges;}
使用::ranges::copy代码>不起作用?真的吗?什么是::ranges::copy
?一个函数,一个类,一个类型定义?可能已经有了一个使用
的?您只想创建“几个”别名有什么原因吗?否则它将像名称空间示例{namespace ranges=::ranges;}
使用::ranges::copy代码>不起作用?真的吗?啊,我希望不是这样。你说的“还”是什么意思?是否计划用于C++20?@brrr语言学家:在Rapperswil中讨论过,但没有达成一致意见。我认为noexcept
说明符应该出现在尾部返回类型之前。你能修好吗?啊,我希望不会是这样。你说的“还”是什么意思?是否计划用于C++20?@brrr语言学家:在Rapperswil中讨论过,但没有达成一致意见。我认为noexcept
说明符应该出现在尾部返回类型之前。你能修一下吗?