Смешивание обычных и шаблонных аргументов функций
От: x-code  
Дата: 07.07.18 09:35
Оценка:
Во всех известных мне языках программирования с шаблонами шаблонные параметры функции передаются одним списком, а параметры времени выполнения — другим
foo<int,MyClass1,100>(200, 3.14, "hello");


Представьте, что есть язык в котором такого разделения нет и можно передавать все параметры в одном списке. То есть для программиста нет разницы, передается ли этот параметр во время компиляции или во время выполнения. Если требуется, можно предусмотреть специальный синтаксис для явного указания что данный аргумент (например int) — шаблонный, например какой нибудь символ '#' перед аргументом и/или в сигнатуре функции.

Можно подумать о плюсах и минусах такой организации.
Плюсы: код становится более "абстрактным", у компилятора появляется возможность оптимизации — выбора какие аргументы как передавать, если явный способ передачи не указан;
Минусы: теряется видимое разграничение между кодом времени компиляции и кодом времени выполнения; это все-же слишком разные миры чтобы их смешивать.

А какие преимущества и недостатки обоих подходов видите вы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.