我有這樣的東西 (C 11)
std:: tuple<const MyType&, bool> func()
{
return std::make_tuple(some_internal_reference, true)。
}
問題是,在呼叫者中,我不能宣告:
。const MyType& obj; // This does not compile of course
bool b;
std::tie(obj, b) = func()。
一個想法是將布林值作為一個輸出引數回傳,并放棄元組,但是否有更好的解決方案?
uj5u.com熱心網友回復:
使用std::get。它回傳對存盤元素的參考。
#include <iostream>
#include <tuple>
using MyType = int;
MyType some_internal_reference = 42;
std::tuple<const MyType&, bool> func()
{
return { some_internal_reference, true };
}
int main()
{
auto ret = func()。
const MyType& obj = std::get<0>(ret)。
std::cout <<"改變之前。" << obj << '
'。
some_internal_reference = 7;
std::cout << "更改后。" << obj << '
'。
}
它列印出來了
before change: 42
改變后。7
注意,根據@StoryTeller-UnslanderMonica的評論,在這種情況下不要使用std::make_tuple。它存盤了一個腐朽的(裸體型別)副本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/314168.html
標籤:
上一篇:使一個物體的向量相互獨立
