我正在开发一个自定义库。到目前为止,我已将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
但这并不成功。任何帮助,将不胜感激。这个问题对于试图包装对象的其他人都很有用。
答案 0 :(得分:5)
如果您不需要修改std::ignore
,只想重命名,那么
decltype(std::ignore) &tilde = std::ignore;
在命名空间范围内的应该做你需要的。
std::ignore
不能保证为DefaultConstructible
或CopyAssignable
,因此无法进行可移植构建或复制,但我们可以保存对其的引用。此tilde
的类型为decltype(std::ignore) &
,但由于std::tie
需要引用,因此其功能应与std::ignore
相同。