Попробуйте снова запустить 'npm install'
Я надеюсь, что он подхватит
Проблема не состоит в том, пишете ли Вы 8u
или 8
. Проблема имеет отношение к типу шаблонного параметра Вашего шаблона функции. Его тип должен соответствовать тому, используемому в объявлении std::bitset
. Это size_t
согласно Стандарту (раздел 23.3.5
)
namespace std {
template<size_t N> class bitset {
public:
// bit reference:
...
Исключением являются измерения массива, для которых можно использовать любой целый тип (даже bool
- затем единственный размер, который может быть принят, 1
конечно):
// better size_t (non-negative), but other types work too
template<int N> void f(char(&)[N]);
Но в других случаях, типы должны соответствовать. Обратите внимание, что это только верно для автовыведенных аргументов шаблона, но не для явно заданных. Причина состоит в том, что для выведенных, компилятор пытается выяснить лучшее соответствие между фактическими аргументами шаблона и что это вывело от вызова до него. Много в других отношениях неявных преобразований запрещены затем. Вы имеете полный спектр в наличии преобразований при помещении явного аргумента (игнорирование решения использования size_t
теперь высказывать мое мнение)
template<int N> void foo(std::bitset<N> bs)
{ /* whatever */ }
int main() {
bitset<8> bar;
foo<8>(bar); // no deduction, but full range of conversions
}
Использовать size_t
. Так sayeth MSDN, по крайней мере.
числовой литерал должен быть интерпретирован как интервал, неважно, платформа