我应该使用boost :: variant吗?

liz*_*isk 2 c++ boost boost-variant

我的虚函数可以返回单个Tstd::vector<T>.boost::variant<T, std::vector<T>>在这种情况下返回是一个好主意还是总是返回std::vector<T>?哪个看起来更好,性能开销最小?返回单个值时使用变量会更快吗?

Fab*_*ssi 5

抛开性能问题,这取决于函数的语义,或者更确切地说取决于返回值.

您是否经常需要在只T返回一个的情况和多值情况之间区分(代码路径)?或者,for(auto t : create_T_orTs()) { ... }在任何一种情况下都可以做一件简单的事情吗?

我的直觉是,前者比后者更不可能,并且因为variant<>有一个语法"价格",我会使用KISS并使用a std::vector<T>,除非有一个强大的语义理由来区分一个和多个值的案例.