包装std :: ignore

时间:2015-12-01 17:03:28

标签: c++ c++11 stl std wrapper

我正在开发一个自定义库。到目前为止,我已将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上读到的只是如何使用它,

此处:Possible implementations of std::ignore

此处:Requirements for std::ignore

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

我尝试过使用

typedef std::ignore tilde

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

1 个答案:

答案 0 :(得分:5)

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

decltype(std::ignore) &tilde = std::ignore;
在命名空间范围内的

应该做你需要的。

std::ignore不能保证为DefaultConstructibleCopyAssignable,因此无法进行可移植构建或复制,但我们可以保存对其的引用。此tilde的类型为decltype(std::ignore) &,但由于std::tie需要引用,因此其功能应与std::ignore相同。