专用对中的自定义访问者名称

时间:2013-10-18 04:59:54

标签: c++ visual-c++ c++11

我想使用等效的std::pair<bool, std::string>作为函数返回类型。在下游代码中,使用okmsg代替firstsecond访问器会更好,以避免不必要的API查找。我似乎无法使用继承正确编写它,因为std::pair可能在没有虚析构函数的情况下泄漏。希望避免我自己的结构作为Renamed std::pair members中的解决方案 - 重用现有的Move构造函数和其他管道。它有可能吗?

编辑:

在反馈似乎是建议的方式之后:

struct res {
    bool ok;
    std::string msg;
};

res fnk() { ...; return r };

我是否正确理解C ++ 11编译器是否希望生成移动构造函数以避免复制字符串?

1 个答案:

答案 0 :(得分:1)

  

希望避免我自己的struct作为Renamed std::pair members中的解决方案 - 重用现有的Move构造函数和其他管道。

我认为这是误解的根源:如果您为自己编写自己的结构the compiler will generate the move constructor和“其他管道”。

任何体面的编译器都应该能够copy elision,即构建结果;没有副本,没有移动。

使用命名内联访问器也是一种选择,特别是如果真的需要使用std::pair; Renamed std::pair members问题和in one of the answers中也详细说明了这一点。

在这种情况下做继承在我看来是错误的;我不会这样做。我没有看到任何好处,但我确实看到了它的问题。