Описание тега explicit-instantiation
Explicit instantiation lets you create an instantiation of a C++ templated class or function without actually using it in your code.
1
ответ
С ++: что такое явная реализация
Я читаю книгу C++ primer 5th edition, и я получил это: Тот факт, что экземпляры создаются при использовании шаблона (§ 16.1.1, стр. 656), означает, что один и тот же экземпляр может появляться в нескольких объектных файлах. Когда два или более отдел…
18 май '16 в 17:27
0
ответов
Объявления явного создания экземпляра шаблона C++: лучшие практики
Мой вопрос заключается в том, как мы должны правильно использовать объявления явных экземпляров шаблона? Предположим, у нас есть некоторый шаблонный класс template<class T> Foo, Вот мой разум, как бороться с этой функцией: Мы помещаем шаблон о…
28 ноя '16 в 09:22
1
ответ
Когда нам нужно явно создать экземпляр функции-шаблона?
Допустим, у нас есть шаблонная функция: template <class T> T max(T a, T b) { return a > b ? a : b; } Поскольку компилятор не выполняет никакого неявного преобразования типов во время вывода аргументов шаблона, мы можем вызвать max(2, 5.5) э…
26 сен '17 в 07:40
3
ответа
Считается ли динамическое создание шаблона класса явным или неявным?
Если у меня есть шаблон класса, и я использую умный указатель на динамически размещенный экземпляр специализированного экземпляра, это заставляет компилятор определять весь шаблон класса или он также будет ждать вызова функции-члена из указателя до …
06 ноя '13 в 19:36
3
ответа
Запретить все экземпляры класса шаблона, включая поддерживаемые типы
Если у меня есть шаблон класса MyClass<T> и если я явно для int а также float (в cpp файл) тогда я могу использовать extern template class MyClass<int> а также extern template class MyClass<float> чтобы не допустить, чтобы любой мо…
26 окт '14 в 13:02
1
ответ
Внешний шаблонный класс vector<unique_ptr <... >> альтернатива
Это началось с вопроса: "Почему невозможно явно создать экземпляр std::vector из std::unique_ptr?" как в: template class std::vector<std::unique_ptr<int>>; хотя следующие явные экземпляры и переменные хороши: template class std::vector&l…
29 дек '17 в 15:52
1
ответ
Тип сгруппированный Явное создание шаблонов
Если у меня есть шаблон класса с перегруженными функциями-членами шаблона (с использованием SFINAE), например: template <typename T> struct Foo{ Foo(T elem); template <typename U = T> auto get() -> std::enable_if_t<std::is_same_v&l…
20 янв '19 в 07:39
0
ответов
Шаблоны с фиктивной функцией C++
У меня следующая дилемма: someotherlib.h: struct Other { //... template < typename T > void foo(const T& t){ //.. something } }; mylib.cpp: #include <someotherlib.h> int needsFoo() { //... MyType myObj = //.. Other o = //.. o.foo( my…
05 фев '19 в 17:00
1
ответ
Шаблон функции-члена шаблона класса не может найти определение, несмотря на явное наличие экземпляра. Не связывает
Редактировать: это не дубликат связанного вопроса, так как я использую явное создание экземпляров, и только определенный тип функций-членов не связывается (другие делают). Следующий код компилируется, но не связывается, и я не понимаю, почему. Это я…
07 янв '19 в 20:36
1
ответ
Виртуальное наследование, явная реализация - возвращение ссылки / указателя на производный класс (ковариантные типы)
.hpp template <typename T> struct A { virtual A& modify() = 0; }; template <typename T> struct B : virtual A<T> {}; template <typename T> struct C : B<T> { C& modify() final; }; .cpp template <typename T> …
13 авг '16 в 18:03
1
ответ
Явная реализация шаблона функции с целыми числами в качестве параметров шаблона
Я пытаюсь явно создать экземпляр шаблона функции. Пожалуйста, посмотрите фрагмент кода main.cpp: void func(int * ); int main() { int m = 3, n = 5; int *ptr; ptr = &m; func(ptr); //function call <do-Something> ..... ..... } Функция func() н…
08 июн '15 в 06:49
1
ответ
Как экспортировать класс, полученный из явно созданного шаблона в Visual Studio?
В моей DLL у меня есть шаблон класса и второй класс, полученный из экземпляра этого шаблона. Оба класса должны быть экспортированы и использованы в других DLL. Компилятор - Visual Studio 2013. Я хочу, чтобы код шаблона создавался ровно в одной едини…
04 ноя '15 в 09:19
1
ответ
Использование функционально-шаблонного кода через границу g++-nvcc (включая ядра)
Предположим, я скомпилировал следующее с помощью nvcc компилятора NVIDIA CUDA: template<typename T, typename Operator> __global__ void fooKernel(T t1, T t2) { Operator op; doSomethingWith(t1, t2); } template<typename T> __device__ __host…
09 фев '15 в 12:54
1
ответ
Как вы заставляете шаблонизацию соответствовать базовому классу?
У меня есть функция шаблона, который явно создан для Base класс, но не для Derived учебный класс. Как я могу заставить использования, которые передают Derived класс (или другие производные классы) для сопоставления с Base учебный класс? Заголовочный…
30 янв '13 в 19:47
0
ответов
Явный шаблонный экземпляр и SFINAE
Я получаю ошибку компиляции так ясно, что я делаю что-то не так, но я не уверен, как это исправить, и нет ли возможности иметь явное создание экземпляра и SFINAE. Воспроизводимый пример минимален, поэтому он может не иметь полного смысла, но, по сут…
21 окт '16 в 18:45
2
ответа
Несколько экземпляров специализированных шаблонов
У меня есть явно экземпляр класса шаблона со специализациями: // a.hh #pragma once template<int N> struct A { int foo(); }; // a.in #include "a.hh" template<> int A<1>::foo() { return 1; } // specialization for N=1 template<>…
10 июл '15 в 14:18
1
ответ
Внешние шаблоны C++11: где они на самом деле нужны?
В C++03 у нас есть явные определения экземпляра шаблона (template class Foo<int>) которые вызывают создание экземпляра класса шаблона. В C++11 у нас есть явные объявления экземпляра шаблона (extern template class Foo<int>), который долже…
27 окт '16 в 09:37
6
ответов
Как явно создать экземпляр шаблона для всех членов вектора MPL в C++?
Рассмотрим следующий заголовочный файл: // Foo.h class Foo { public: template <typename T> void read(T& value); }; Я хочу явно создать экземпляр Foo::read шаблон функции-члена в исходном файле для всех типов, включенных в boost::mpl::vecto…
19 апр '11 в 11:24
1
ответ
Как создать базовые шаблоны классов явно?
Этот вопрос рассматривает явное воплощение шаблонных классов. Рассмотрим шаблонный класс B<T> производный от другого шаблона класса A<T>, Я хочу явно создать экземпляр B<T> потому что его методы должны вызываться из динамического с…
19 май '14 в 13:58
3
ответа
Время компоновки / компиляции относительно статических библиотек шаблонов
Кажется, существует общее соглашение не использовать исходные файлы для шаблонных классов (STL и boost), а также помещать реализацию в заголовок. Я предполагаю, что это значительно увеличит время, необходимое для компиляции исходных файлов, которые …
16 окт '12 в 15:17