Здравствуйте, Sinclair, Вы писали:
S>Это какой язык? Сходу непонятно.
Какой-нить ML-семейства с возможностью определения операторов.
S>Тут-то речь идёт о C++ и его волшебной const-магии.
Чёт уже в голос...
Сколько я с тобой обсуждал этот несчастный const — ты его то недооцениваешь, то переоцениваешь.
Ключевое слово const — оно не само в себе весчь, в разных синтаксических конструкциях имеет разную семантику.
Соотв., обсуждать можно только конкретные синтаксические конструкции, где допустимо это ключевое слово.
Предлагаю впредь поступать именно так, дабы не испытывать терпение коллег-читателей.
S>Когда у вас в язык встроен иммутабельный список с заранее оптимизированными add, то вопросов нет. Интересно становится, когда он не встроен.
В примере акцент не на списке (и откуда ты взял про "эффективность?"), а на внешний вид выражений.
В плюсах тоже можно описать некий operator|(Set, Set), чтобы выглядело примерно так:
auto newSet = set1 | set2 | value3 | value4;
В дотнете, кстате, тоже.
Я бы еще определил для множеств операторы &, -, ^ (исключающее ИЛИ, симметричная разность), \ (дополнение), * (декартово произведение), <, >, ==, !=, <=, >=.
======================
Ну и, согласно семантики, для multiset я бы выбрал operator+(Set, Set) для выражения операции объединения мн-в вместо логического оператора |.