gpt4 book ai didi

c++ - 在辅助方法中包装 std::get<>

转载 作者:行者123 更新时间:2023-11-30 02:34:12 27 4
gpt4 key购买 nike

我有这样一个类:

template<typename ...Els>
class Istr {
std::tuple<Els...> Vals
}

class Istr1 : public Istr<std::string> {
void Do() { std::get<0>(Vals) = "Meh."; }
}

有没有办法定义一个我可以像这样使用的函数模板?

Tok(0) = "Meh."
Istr i; i.Tok(0) = "Meh."

或者,如果不可能,像这样?

Tok<0>() = "Meh."

在我天真的方法中,我想出了一个错误的代码:

template<typename T>
T Tok(size_t i) { return std::get<i>(Vals); }

当我使用它隐式实例化模板时,编译器实际上无法推断出 T 的类型。

最佳答案

template<size_t i>
auto Tok() -> decltype( std::get<i>(Vals) ) {
return std::get<i>(Vals);
}

Live demo

关于c++ - 在辅助方法中包装 std::get<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com