Open apolukhin opened 3 years ago
Александр Коганов, 18 марта 2019, 12:01 Очень часто приходится копипастить название базового класса, который к тому же шаблон с несколькими параметрами, которые тоже шаблоны, чьи параметры зависят от параметров производного класса. И если где-то нужно что-то поменять, приходится делать это дважды. И каждый раз удивляюсь, почему нельзя было сделать в языке такой алиас
Antervis, 18 марта 2019, 13:48 Неплохая идея. Вот только ключевого слова as в языке нет, а оператор => для типов не очень уместен, лучше подойдут typedef или ->. Я бы предпочел typedef.
Sasha Sitnikov, 25 марта 2019, 15:05 Также можно использовать using, причем модификуатор доступа по умолчанию такой же (для struct - public, для class - private)
template<typename T1, typename T2, typename T3>
class Derived
: public using super = public Base<T1, T2>
, using help = public Policy<T3>
{/*...*/};
только хотел спросит а есть ли какой пропозл в комитете для этого... тоже надоело писать эти using алиясы
так что по итогу, двигается идея или заглохла ?
Перенос предложения: голоса +13, -1 Автор идеи: Даниил Милютин
При наследовании (особенно с шаблонами) возникает следующая ситуация
Приходится два раза вбивать ( = копипастить) имя класса, чтобы получить alias.
Предлагается сократить boilerplate следующим образом:
Предполагается, что alias находятся в той же области видимости и имеют те же модификаторы доступа.
Если очень хочется управлять областью видимости и модификаторами доступа alias, то можно предложить следующий синтаксис:
Хотя в этом случае мне видится разумным использовать старый синтаксис.
Символ "=>" мне пока что видится самым уместным. Его можно бы заменить на "=" или на "->" или на "typedef" или даже на ключевое слово as. (Последнее маловероятно.)