да. самое простое решение это сделать функцию шаблонной и использовать auto ref void myFunction()(auto ref const(MyValue) myValue); // Пустые скобки делают функцию шаблонной, но без аргументов времени компиляции - мы просто перекладываем на компилятор решение задачи тогда компилятор автоматом передаст по ссылке если lvalue и по значению, если rvalue. Если аргументов немного это работает отлично. Если много аргументов может быть большое количество комбинаций аргументов и код будет раздут.
и в чем тут костыль?
делать функцию шаблонной
а костыль то в чем?
Ну, в шаблонную же можно подставить аргумент другого типа, нет?
какого другого? у тебя нет никаких других типов, в сигнатуре прописан конкретный тип. какой другой тип ты подставишь?
Всё, дошло. Спасибо
да не за что. так то решение не идеальное, конечно. там человек один известный в дишных кругах протаскивает полноценное решение, вроде как вот-вот оно уже будет в языке, но деталей не помню.
вообще в Ди const транзитивно, так что тут тебя ждет еще больше сюрпризов)
Обсуждают сегодня