Сообщение Re[3]: Аналог "discarding _" для С++ от 30.06.2025 6:27
Изменено 30.06.2025 6:29 rg45
Re[3]: Аналог "discarding _" для С++
Здравствуйте, Went, Вы писали:
W>Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие
W>
W>Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.
Да я понял, что тебе нужно. Просто идеального дискардинга, как в C# не получается. Например, приведенный тобой вариант будет требовать возможности дефолтного конструирования. Мой вариант просто позволяет сконструировать налету временный объект и передать его в функцию по lvalue ссылке. Синтаксического сахара, конечно, меньше, чем в C#. Зато получается настоящий временный объект, который умрет в конце полного выражения или инициализатора.
W>Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие
W>
W>foo(discard<int>())
W>W>Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.
Да я понял, что тебе нужно. Просто идеального дискардинга, как в C# не получается. Например, приведенный тобой вариант будет требовать возможности дефолтного конструирования. Мой вариант просто позволяет сконструировать налету временный объект и передать его в функцию по lvalue ссылке. Синтаксического сахара, конечно, меньше, чем в C#. Зато получается настоящий временный объект, который умрет в конце полного выражения или инициализатора.
Re[3]: Аналог "discarding _" для С++
Здравствуйте, Went, Вы писали:
W>Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие
W>
W>Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.
Да я понял, что тебе нужно. Просто идеального дискардинга, как в C# не получается. Например, приведенный тобой вариант будет требовать возможности дефолтного конструирования. Мой вариант просто позволяет сконструировать налету временный объект и передать его в функцию по lvalue ссылке. Синтаксического сахара, конечно, меньше, чем в C#. Зато получается настоящий временный объект, который умрет в конце полного выражения или инициализатора. Также охватываются типы, для которых отсутсвует возможность конструирования по дефолту.
W>Ничего не понял. У меня задача не получить lvalue из чего угодно, а сгенерировать временный lvalue-объект, уникальный для каждого вызова. То есть, чтобы было что-то наподобие
W>
W>foo(discard<int>())
W>W>Но в идеале без <int> (хотя это вряд ли достижимо без граблей) и с минимальным оверхедом по синтаксису и производительности.
Да я понял, что тебе нужно. Просто идеального дискардинга, как в C# не получается. Например, приведенный тобой вариант будет требовать возможности дефолтного конструирования. Мой вариант просто позволяет сконструировать налету временный объект и передать его в функцию по lvalue ссылке. Синтаксического сахара, конечно, меньше, чем в C#. Зато получается настоящий временный объект, который умрет в конце полного выражения или инициализатора. Также охватываются типы, для которых отсутсвует возможность конструирования по дефолту.