Можете ли вы написать конструктор копирования для объединения с членами const? - PullRequest
0 голосов
/ 12 февраля 2019

Предположим, у меня есть структура, которая содержит объединение с const членами, например:

struct S
{
  // Members

  const enum { NUM, STR } type;

  union
  {
    const int a;
    const std::string s;
  };

  // Constructors

  S(int t_a) : type(NUM), a(t_a);

  S(const std::string & t_s) : type(STR), s(t_s);

};

Пока все хорошо.Но теперь скажите, что я хочу написать конструктор копирования для этого типа.

Не похоже, что это включает в себя выполнение чего-то гнусного, но так как мне нужно инициализировать константные члены в инициализаторах членов, я не вижукак это сделать, основываясь на логике, которая зависит от члена type.

Вопросы:

  • Можно ли написать этот конструктор?

  • Если нет, то является ли это по сути синтаксическим упущением или есть какая-то фундаментальная причина, по которой язык не может поддерживать такую ​​вещь?

...