环绕 std::ignore

Wrapping std::ignore

我正在开发自定义库。到目前为止,我已经将 std::tuple 和 std::tie 包装到我自己的 myOwn::Tuple 和 myOwn::tie 中。它们的功能与 std::tuple 和 std::tie 相同。我想用 std::ignore.

做类似的事情

到目前为止,我已经写了以下内容:

namespace myOwn
{
     auto
     tilde()
     -> decltype(std::ignore)
     {
         return std::ignore;
     }
}

我唯一的问题是我现在必须使用带括号的 myOwn::tilde()。我希望能够将其用作 myOwn::tilde。到目前为止,我在 std::ignore 上读到的只是如何使用它,

此处:

此处:Requirements for std::ignore

这里:C++: Return type of std::tie with std::ignore

我试过使用

typedef std::ignore tilde

但这并不成功。任何帮助,将不胜感激。这个问题对其他任何试图包装对象的人都有用。

如果不需要修改std::ignore,只是想重命名,那么

decltype(std::ignore) &tilde = std::ignore;

在命名空间范围内应该可以满足您的需求。

std::ignore 不保证是 DefaultConstructibleCopyAssignable,因此它不能被移植构造或复制,但我们可以保存对它的引用。 tilde 的类型是 decltype(std::ignore) &,但是由于 std::tie 需要引用,所以它的功能应该与 std::ignore.

相同