Информация об изменениях

Сообщение Re[3]: Предпочтительный способ вычислений во времени компиля от 13.09.2019 11:21

Изменено 13.09.2019 14:28 rg45

Re[3]: Предпочтительный способ вычислений во времени компиля
Здравствуйте, sergii.p, Вы писали:

R>>Ничего не имею против функций, но вариант реализации на шаблонах структур тоже имеет право на жизнь, я считаю.


SP>почему? Какие ваши аргументы?


Исходя из презумпции права на жизнь. Это право существует до тех пор, пока не обосновано обратное. В данном конкретном примере
Автор: rg45
Дата: 13.09.19
нет последовательного инстанцирования шаблонов, о котором ты говоришь выше. Сложность реализации соизмерима с "функциональным" вариантом. Так почему, спрашивается, нужно отказать этому варианту в праве на жизнь?

SP>ну вот я приводил пример реализации вычисления НОД в stl. Выражения свёртки тут не помогут. К тому же это С++17. Поиграться конечно можно. Но ни одного реального проекта в своём кругу знакомых пока не знаю.


Возможно, это тот случай, когда использование шаблонов классов менее оправдано, чем использование constexpr функций. В то же время, найдутся и другие задачи, которые наоборот, будет более рационально решать при помощи шаблонов классов. Например, такие задачи, при прешении которых востребованы частичная специализация и активное использование SFINAE. Конечно, большинство задач можно решить и тем, и другим способом — благодаря тому, что отсутствие частичной специализации для шаблонов функций почти всегда можно компенсировать возможностью перегузок. Просто на шаблонах классах такие задачи может оказаться решать банально проще и нагляднее.

Я бы сказал так, когда мы стакливаемся с необходимостью шаблонной рекурсии, при этом существует равноценный вариант решения на constexpr функциях, то, наверное, стоит отдавать предпочтение ему. А вообще, на мой взгляд, поиски УНВЕРСАЛЬНОГО предпочтительного решения несколько наивны.
Re[3]: Предпочтительный способ вычислений во времени компиля
Здравствуйте, sergii.p, Вы писали:

R>>Ничего не имею против функций, но вариант реализации на шаблонах структур тоже имеет право на жизнь, я считаю.


SP>почему? Какие ваши аргументы?


Исходя из презумпции права на жизнь. Это право существует до тех пор, пока не обосновано обратное. В данном конкретном примере
Автор: rg45
Дата: 13.09.19
нет последовательного инстанцирования шаблонов, о котором ты говоришь выше. Сложность реализации соизмерима с "функциональным" вариантом. Так почему, спрашивается, нужно отказать этому варианту в праве на жизнь?

SP>ну вот я приводил пример реализации вычисления НОД в stl. Выражения свёртки тут не помогут. К тому же это С++17. Поиграться конечно можно. Но ни одного реального проекта в своём кругу знакомых пока не знаю.


Возможно, это тот случай, когда использование шаблонов классов менее оправдано, чем использование constexpr функций. В то же время, найдутся и другие задачи, которые наоборот, будет более рационально решать при помощи шаблонов классов. Например, такие задачи, при прешении которых востребованы частичная специализация и активное использование SFINAE. Конечно, большинство задач можно решить и тем, и другим способом — благодаря тому, что отсутствие частичной специализации для шаблонов функций почти всегда можно компенсировать возможностью перегузок. Просто на шаблонах классов такие задачи может оказаться решать банально проще и нагляднее.

Я бы сказал так, когда мы стакливаемся с необходимостью шаблонной рекурсии, при этом существует равноценный вариант решения на constexpr функциях, то, наверное, стоит отдавать предпочтение ему. А вообще, на мой взгляд, поиски УНВЕРСАЛЬНОГО предпочтительного решения несколько наивны.