Здравствуйте, ArtDenis, Вы писали:
AD>Для этого больше подходит препроцессор (например BOOST_PP_ENUM_PARAMS), а не шаблоны
AD>Хотя... с std::index_sequence, предложенный выше, вполне себе вариант
Я еще могу согласиться с тем, что этот способ более привычен (и то с натяжкой). Но вот насчет того, что он лучше — никак. Судите сами, нам так или иначе придется определить макрос содержащий в себе болванку базового класса. Потом нам нужно будет как-то это определение растиражировать — либо вручную, либо при помощи все того же препроцессора (BOOST_PP_REPEAT_). Причем, отдельно для каждого типа параметра в отдельности (не забываем, что среди параметров шаблона Foo, помимо "size_t N", есть еще "typename Arg") — так что по-любому без ручной копипасты не обойтись. В результате вместо шаблона мы получаем то же самое определение, только помещенное внутрь монстровидного макроса, с BOOST_PP_ENUM_PARAMS и кучей слешей. Плюс фиксированное количество воплощений, которое практически наверняка будет и избыточным и недостаточным одновременно (избыточным по поддерживаемому числу параметров и потенциально недостаточным по типу аргумента). Ну и плюс сам факт использования макросов. Так чем же это лучше?