我在尝试创建以下 lambda 函数时遇到问题:
const auto var x = [&y]() -> /*???*/ {
if (y == type1) {
return some_type_1;
} else if (y == type2) {
return some_type_2;
} else // ...
我知道我不能使用 auto 作为返回类型。但我怎么能以另一种方式做到这一点?
谢谢!
如果some_type_1
和some_type_2
有一个共同的类型,写:
const auto var x = [&y]() -> typename std::common_type<
decltype(some_type_1),
decltype(some_type_2)>::type {
if (y == type1) {
return some_type_1;
} else if (y == type2) {
return some_type_2;
} else // ...
等效地,您可以使用三元表达式:
const auto var x = [&y]() {
(y == type1) ? some_type_1 :
(y == type2) ? some_type_2 :
...;
}