Параметр шаблона по умолчанию со значением по умолчанию? - PullRequest
2 голосов
/ 06 августа 2020

У нас может быть следующее, и это действительно:

template<std::size_t Size = 10>
fn(){...}


template<typename Size = std::size_t>
fn() {...}

Но как это сделать?

template<typename Size = std::size_t=10>
fn() {...}

Ответы [ 2 ]

7 голосов
/ 06 августа 2020

Параметр шаблона - это либо тип, либо значение, но не оба сразу.

Вы можете сделать это с помощью двух параметров

template<typename Size = std::size_t, Size s = 10>
2 голосов
/ 06 августа 2020

Вы можете потребовать, чтобы ваш параметр был специализацией std :: integers_constant (или какого-либо другого типа, который предоставляет как члены типа, так и значения:

template<typename Arg = std::integral_constant<size_t, 10>>
struct foo
{ };

, но в целом я бы сказал, что предпочтительнее двухпараметрический метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...