C ++ 2017 Ссылка на std :: vector & lt; std :: variable & gt;

Я пытаюсь сохранить ссылку на std::vector состоящий из std::variant,
Я могу создать const std::variant<T>& к элементу vectorНо я изо всех сил стараюсь сохранить ссылку на весь вектор. Я думаю, что ответ связан с этим постом c ++ вариант класса члена хранится по ссылке но я не могу применить это к моей ситуации.

#include <vector>
#include <variant>

using MType = std::variant<int, double>;
int main()
{
std::vector<int> intVec{ 1,2,3,4 };
std::vector<double> dlVec{ 1.1,2.2,3.3,4.4 };

const MType& refVar = intVec[0];
// const std::vector<MType>& refVec = intVec; // compiler error: not suitable construction
}

-1

Решение

Вы можете назначить int к variant<int, double>и вы можете назначить double к variant<int, double>, но ни является variant<int, double> и vector<variant<int, double>> это не vector<int> или vector<double>,

Вы просто не можете этого сделать.

Возможно ли, что вы имели в виду variant<vector<int>, vector<double>>?

4

Другие решения

Я могу создать const std::variant& к элементу вектора,

С

const MType& refVar = intVec[0];

Вы не создаете ссылку на элемент intVec но создать временную (с продлением времени жизни).

Так это в основном:

const std::variant<int, double> var = intVec[0];

но я изо всех сил, чтобы сохранить ссылку на весь вектор

Точно так же с std::vector, вы можете создать std::vector<std::variant<int, double>>:

std::vector<std::variant<int, double>> varVec(intVec.begin(), intVec.end());
0

По вопросам рекламы [email protected]