C++ 包装标准::忽略

C++ 包装标准::忽略,c++,c++11,stl,std,wrapper,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;

我在做一个定制图书馆。到目前为止,我已经将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上读到的只是如何使用它

在这里:

在这里:

在这里:

我试过使用

typedef std::ignore tilde

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

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

decltype(std::ignore) &tilde = std::ignore;
在命名空间范围内,应该执行您需要的操作


std::ignore
不保证是
DefaultConstructible
copysassignable
,因此它不能以可移植的方式构造或复制,但我们可以保存对它的引用。这个
tilde
的类型是
decltype(std::ignore)&
,但是由于
std::tie
需要引用,如果您不需要修改
std::ignore
,并且只想重命名它,那么它的功能应该与
std::ignore
相同

decltype(std::ignore) &tilde = std::ignore;
在命名空间范围内,应该执行您需要的操作


std::ignore
不保证是
DefaultConstructible
copysassignable
,因此它不能以可移植的方式构造或复制,但我们可以保存对它的引用。这个
tilde
的类型是
decltype(std::ignore)&
,但是由于
std::tie
需要引用,所以它的功能应该与
std::ignore
相同?一个类型还是一个对象?你为什么要包装这些东西!?
auto tilde=std::ignore是否存在问题?你认为
std::ignore
是什么?一个类型还是一个对象?你为什么要包装这些东西!?
auto tilde=std::ignore是否存在问题
decltype(std::ignore)&tilde=std::ignore
创建别名而不是另一个副本。以上假设
std::ignore
的类型可以由您构造。@Yakk很好,我编辑了我的答案。你可能想用这个更正来做一个答案。这只是对上述答案的改进。修好这个,我就不必了!或者
decltype(std::ignore)&tilde=std::ignore
创建别名而不是另一个副本。以上假设
std::ignore
的类型可以由您构造。@Yakk很好,我编辑了我的答案。你可能想用这个更正来做一个答案。这只是对上述答案的改进。修好这个,我就不必了!