Вопросы с тегом «templates»

Тег templates используется в нескольких контекстах: общее программирование (особенно C ++) и генерация данных / документов с использованием шаблонизаторов. При использовании этого тега в сложных вопросах реализации - пометьте язык кода, на котором написана реализация.

5
Как проверить, существует ли переменная в шаблоне FreeMarker?
У меня есть шаблон Freemarker, который содержит кучу заполнителей, для которых предоставляются значения при обработке шаблона. Я хочу условно включить часть шаблона, если указана переменная userName, что-то вроде: [#if_exists userName] Hi ${userName}, How are you? [/#if_exists] Тем не менее, руководство FreeMarker, по-видимому, указывает, что if_exists устарело, но я не могу …

3
Почему я должен избегать std :: enable_if в сигнатурах функций
Скотт Мейерс опубликовал содержание и статус своей следующей книги EC ++ 11. Он написал, что один пункт в книге может быть «Избегайте std::enable_ifподписей функций» . std::enable_if может использоваться в качестве аргумента функции, в качестве возвращаемого типа или в качестве шаблона класса или параметра шаблона функции для условного удаления функций или …

13
Как отлаживать переменные в Smarty как в PHP var_dump ()
У меня есть некоторые переменные внутри шаблона, и я не знаю, где я их назначил. Мне нужно знать, что находится внутри конкретной переменной; например, скажем, у меня есть переменная в Smarty называется member. Я пытался, {debug}но это не сработало, и всплывающее окно не отображалось. Как вывести / отладить переменные smarty, …

7
std :: function против шаблона
Благодаря C ++ 11 мы получили std::functionсемейство упаковщиков функторов. К сожалению, я продолжаю слышать только плохие вещи об этих новых дополнениях. Наиболее популярным является то, что они ужасно медленные. Я проверил это, и они действительно сосут по сравнению с шаблонами. #include <iostream> #include <functional> #include <string> #include <chrono> template <typename …

14
Шаблоны C ++, которые принимают только определенные типы
В Java вы можете определить универсальный класс, который принимает только те типы, которые расширяют класс по вашему выбору, например: public class ObservableList<T extends List> { ... } Это делается с помощью ключевого слова "extends". Есть ли какой-нибудь простой эквивалент этого ключевого слова в C ++?
159 c++  templates 

7
std :: enable_if для условной компиляции функции-члена
Я пытаюсь получить простой пример для работы, чтобы понять, как использовать std::enable_if. Прочитав этот ответ , я подумал, что не должно быть слишком сложно привести простой пример. Я хочу использовать std::enable_ifдля выбора между двумя функциями-членами и разрешить использовать только одну из них. К сожалению, следующее не компилируется с gcc 4.7 …
156 c++  templates  g++  c++11 

3
Когда использовать std :: forward для пересылки аргументов?
C ++ 0x показывает пример использования std::forward: template<class T> void foo(T&& arg) { bar(std::forward<T>(arg)); } Когда выгодно использовать std::forwardвсегда? Кроме того, он требует использования &&в декларации параметров, действительно ли это во всех случаях? Я думал, что вам нужно передать временные функции в функцию, если она была объявлена &&в ней, так …



4
Аргументы шаблона по умолчанию
Если мне разрешено делать следующее: template <typename T = int> class Foo{ }; Почему мне не разрешено делать следующее в основном? Foo me; Но я должен указать следующее: Foo<int> me; C ++ 11 представил аргументы шаблона по умолчанию, и сейчас они не совсем понятны.
151 c++  templates 

2
Как работает `void_t`
Я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов ( часть I , часть II ), где он представил свою void_tтехнику SFINAE. Пример: дан простой шаблон переменной, который оценивает, правильно voidли сформированы все аргументы шаблона: template< class ... > using void_t = void; и следующая черта, которая проверяет …
149 c++  templates  c++14  sfinae 

3
Инициализация статического члена в шаблоне класса
Я хотел бы сделать это: template <typename T> struct S { ... static double something_relevant = 1.5; }; но я не могу, потому что something_relevantэто не цельный тип. Это не зависит от T, но существующий код зависит от того, является ли он статическим членом S. Поскольку S является шаблоном, я …
148 c++  templates  static 

4
Как создать шаблонную функцию в классе? (C ++)
Я знаю, что можно сделать функцию шаблона: template<typename T> void DoSomeThing(T x){} и можно сделать шаблон класса: template<typename T> class Object { public: int x; }; но возможно ли сделать класс не в шаблоне, а затем сделать функцию в этом классе шаблоном? То есть: //I have no idea if this …
144 c++  templates  function  class 

10
Как эмулировать поведение инициализации массива C «int arr [] = {e1, e2, e3,…}» с помощью std :: array?
(Примечание: этот вопрос касается того, что не нужно указывать количество элементов и по-прежнему разрешать непосредственную инициализацию вложенных типов.) В этом вопросе обсуждаются варианты использования, оставленные для массива C, например int arr[20];. В своем ответе @James Kanze показывает один из последних оплотов массивов C, его уникальные характеристики инициализации: int arr[] = …

16
Проверьте, имеет ли класс функцию-член заданной подписи
Я прошу уловку с шаблоном, чтобы определить, есть ли у класса конкретная функция-член данной подписи. Проблема похожа на проблему, указанную здесь http://www.gotw.ca/gotw/071.htm, но не то же самое: в пункте книги Саттера он ответил на вопрос, что класс C ДОЛЖЕН ПРЕДОСТАВЛЯТЬ функцию-член с конкретная подпись, иначе программа не скомпилируется. В моей …
135 c++  c++11  templates  sfinae 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.