Как я могу использовать numpy.correlate для выполнения автокорреляции?

Хорошо, выяснилось, что вы должны сказать nginx, что вы используете регулярное выражение для конкретной строки, вставив тильду в начале. ('^' - это якорь, говорящий ему о начале сопоставления):

~^/fauxnews(.*)  /topics/faux-news/;
8
задан Community 23 May 2017 в 12:22
поделиться

3 ответа

Следующее из стандарта.

14.3.2.1:

Аргумент шаблона для нетипа, нешаблонный шаблонный параметр должен быть одним из:

  • интегральное константное выражение интеграла или перечисляемого типа; или
  • название шаблонного параметра нетипа; или
  • адрес объекта или функции с внешней связью, включая шаблоны функций и идентификаторы шаблона функции, но, исключая нестатических участников класса, выраженных как и идентификационное выражение, где и является дополнительным, если имя относится к функции или массиву, или если соответствующий шаблонный параметр является ссылкой; или
  • указатель на участника выразил, как описано в 5.3.1.

5.19.1:

В нескольких местах C++ требует выражений, которые оценивают к интегралу или постоянному перечислению: как границы массива (8.3.4, 5.3.4), как case-выражения (6.4.2), как длины битового поля (9.6), как инициализаторы перечислителя (7.2), как статические членские инициализаторы (9.4.2), и поскольку интеграл или перечисление не вводят аргументы шаблона (14.3).

 constant-expression:
            conditional-expression

Интегральное константное выражение может включить только литералы (2.13), перечислители, переменные константы или статические элементы данных интеграла или перечисляемых типов, инициализированных с константными выражениями (8.5), не ввести шаблонные параметры интеграла или перечисляемых типов и sizeof выражений. Плавающие литералы (2.13.3) могут появиться, только если они брошены к интегралу или перечисляемым типам. Только преобразования типов к интегралу или enumera-tion типы могут использоваться. В частности, кроме sizeof выражений, функции, объекты класса, указатели или ссылки не должны использоваться, и присвоение, инкремент, декремент, вызов функции, или операторы запятой не должны использоваться.

Относительно Вашего предыдущего сообщения я верю сущности в части "переменные константы... инициализированные с..." (и я не думаю инициализированный, внешне рассчитывает).

13
ответ дан 5 December 2019 в 08:26
поделиться

Это должно быть интегральное константное выражение. Это объяснено Стандартным документом в 5.19:

Интегральное константное выражение может включить только литералы (2.13), перечислители, переменные константы или статические элементы данных интеграла или перечисляемых типов, инициализированных с константными выражениями (8.5), не ввести шаблонные параметры интеграла или перечисляемых типов и sizeof выражений. Плавающие литералы (2.13.3) могут появиться, только если они брошены к интегралу или перечисляемым типам. Только преобразования типов к интегралу или перечисляемым типам могут использоваться.

Обратите внимание, что "интеграл" является другим термином для "целого числа", но не является тем же, как "интервал" "символ", например, имеет целое число/целочисленный тип, но не является международным типом, очевидно. Так конкретно следующее позволяется

  • 10 or 10L or anything like that
  • enum { THIS, OR, THAT };
  • int const this_one = 10;
  • sizeof(char)
  • конечно, любой другой шаблонный параметр, как детализировано выше

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

Таким образом по тем правилам, если Вы имеете

extern const int SomeName;

И это не видит определение, которое инициализирует ту константу с интегральным константным выражением, это не может использоваться в качестве аргумента шаблона. Но это может использоваться в качестве аргумента функции, конечно. Это не должно быть известно во время компиляции, потому что это не часть типа. Момент, который Вы называете шаблонной специализацией, аргументы, которые Вы использовали, становится частью типа:

MyGreatStack<int, 4> // 4 is now part of the type MyGreatStack<int, 4>!

Обратите внимание, что существуют другие способы передать SomeName как аргумент. Однако, все из которых не могут быть приняты целочисленным шаблонным параметром. Можно принять вышеупомянутое параметром ссылки, например

template<const int& V> struct NowItWorks { };

И это приняло бы SomeName из вышеупомянутых. Теперь, а не значение, конкретное местоположение, которое уникально через целую программу (поскольку переменная имеет extern связь), был выбран.

4
ответ дан 5 December 2019 в 08:26
поделиться

Всегда имеет место, что значение интервала необходимо во время компиляции.

Так как каждое шаблонное инстанцирование является отдельной частью скомпилированного кода (даже для целочисленных шаблонных параматерей), что целое число должно быть доступным при компиляции (и это, как должны гарантировать, никогда не изменится).

Это также, почему это - хорошая идея не использовать целочисленные шаблонные параметры, когда Вы собираетесь быть использованием большого количества уникальных значений - можно быстро закончить с огромным исполняемым файлом.

3
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: