Closed apolukhin closed 2 years ago
Igor Baidiuk, 28 декабря 2018, 15:27 Однозначно лишнее. Синглтонов и так чем меньше, тем лучше. Плюс, шаблонный "синглетонофикатор" написать не составляет труда.
yndx-antoshkka, 28 декабря 2018, 15:36 К ~С++26 можно будет реализовать этот функционал через метаклассы, на уровне стандартной библиотеки. Думаю что до тех пор в комитете идея не пройдёт.
Игорь Шаповал, 31 декабря 2018, 13:05 Было бы классно. Метаклассы поскорее.
NeoProgramming, 1 января 2019, 17:55 Предлагаю просто разрешить ключевое слово static перед описанием класса. Такие статические классы будут сразу объектами.
static class Foo {
int x, y;
public:
void foo() { /*....*/ };
};
// вызов
Foo.foo();
// или
Foo::foo();
Александр Коновалов, 11 марта 2019, 22:53 NeoProgramming, такой синтаксис я бы сказал чужд для C++ во многих отношениях. От static ожидаешь именно статической переменной, поэтому если такой класс будет вложен в другой, да ещё и будет объявлена после переменная (а что нам может запретить это сделать?), я скорее предположу, что статическая переменная. Далее Foo.foo(); и Foo::foo(); с точки зрения языка совершенно не одно и то же. Вот пусть в Foo::foo() будет доступ к какому-то не статическому члену класса Foo. Тогда вызов Foo::foo() явно будет выглядеть как ошибка.
Закрываю, как непопулярную идею. Голосование в международном комитете не пройдёт.
Перенос предложения: голоса +2, -15 Автор идеи: Игорь Шаповал
Почти в каждой программе нужно создавать классы, которые имеют один единственный объект. Для этого используется паттерн Одиночка.
При этом мы пишем много лишнего кода. В языках Kotlin, Scala можно создавать одиночку проще и легко. Мы описывает класс и создаем один класс.
Было классно если можно было бы в С++ писать подобным образом.