История изменений
Исправление dimgel, (текущая версия) :
Про кодогенерацию – понятно. Если передавать по значению, то специализации неизбежны, тут без вариантов. Хотя в твоём примере оно наверное не нужно (где параметр по ссылке, а результат вроде бы на куче).
Я тут попробовал и удивился: оказывается, gcc не ругается когда я в плюсах возвращаю по значению подкласс из функции, тип возврата которой – суперкласс: https://gcc.godbolt.org/z/nrenozYE3 Была уверенность, что уж такую-то дичь, когда sizeof(B) > sizeof(A), должен ловить.
// Это я пытался прикинуть, настолько ли нужно явно указывать: не может ли компилятор автоматом из возврата по значению вывести impl, и т.п.
Исправление dimgel, :
Про кодогенерацию – понятно. Если передавать по значению, то специализации неизбежны, тут без вариантов. Хотя в твоём примере оно наверное не нужно (где параметр по ссылке, а результат вроде бы на куче).
Я тут попробовал и удивился: оказывается, gcc не ругается когда я в плюсах возвращаю по значению подкласс из функции, тип возврата которой – суперкласс: https://gcc.godbolt.org/z/nrenozYE3 Была уверенность, что уж такую-то дичь, когда sizeof(B) > sizeof(A), должен ловить.
Исходная версия dimgel, :
Про кодогенерацию – понятно. Если передавать по значению, то специализации неизбежны, тут без вариантов. Хотя в твоём примере оно наверное не нужно (где параметр по ссылке, а результат вроде бы на куче).
Я тут попробовал и удивился: оказывается, gcc не ругается когда я в плюсах возвращаю по значению подкласс из функции, тип возврата которой – суперкласс: https://gcc.godbolt.org/ Была уверенность, что уж такую-то дичь, когда sizeof(B) > sizeof(A), должен ловить.