Betrachten Sie den folgenden Code. Ist es sicher, std::get zweimal mit einem Rvalue-Verweis auf dasselbe Tupel aufzurufen?
Code: Select all
template
void func(Tuple && tuple) {
f1(std::get(std::forward(tuple));
f2(std::get(std::forward(tuple));
}
int main() {
func(std::make_tuple(std::string(), std::string()));
}
Code: Select all
template
void func(Optional && optional) {
if (optional.has_value()) {
f1(*std::forward(optional));//T && std::optional::operator*() &&
}
auto b = optional.has_value();//
Mobile version