Вопросы по теме 'explicit-instantiation'

Как правильно явно создать экземпляр класса шаблона с полностью специализированными членами?
Допустим, у нас есть следующие файлы: foo.h namespace ns { template <typename T> class Foo { public: Foo(); ~Foo(); void DoIt(); }; } foo.cpp #include "foo.h" #include...
1912 просмотров

Путаница вокруг явного создания экземпляра шаблона
Что ж, я думаю, что меня очень смущает явное создание экземпляра шаблона ~> _ ‹~ Может ли явное объявление создания экземпляра использовать неявное определение экземпляра? Что, если в программе существуют как явные, так и неявные определения...
693 просмотров

Когда явное определение экземпляра шаблона предшествует явному объявлению, GCC и clang расходятся во мнениях.
См. следующий код: #include <vector> template class std::vector<int>; extern template class std::vector<int>; int main() {} В то время как GCC 5.2 компилируется нормально, clang 3.6 выдает следующее сообщение об ошибке:...
723 просмотров

Как экспортировать класс, полученный из явно созданного шаблона в Visual Studio?
В моей DLL у меня есть шаблон класса и второй класс, полученный из экземпляра этого шаблона. Оба класса должны быть экспортированы и использоваться в других DLL. Компилятором является Visual Studio 2013. Я хочу, чтобы код шаблона создавался ровно в...
1954 просмотров

Могу ли я использовать decltype(), чтобы избежать дублирования кода при явном создании экземпляров шаблона?
У меня есть длинное объявление функции шаблона: template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop); без перегрузок. и я хочу явно создать его экземпляр. Я могу написать...
116 просмотров

Объявления явного создания экземпляров шаблона C++: лучшие практики
Мой вопрос заключается в том, как мы должны правильно использовать явные объявления экземпляров шаблона ? Предположим, у нас есть некоторый шаблонный класс template<class T> Foo . Вот мой разум, как справиться с этой функцией:...
1010 просмотров

Явное создание экземпляра вариационного конструктора: идентификатор шаблона не соответствует ни одному объявлению шаблона.
Я пытаюсь явно создать экземпляр variadic конструктор. Этот минимальный пример для распечатать все arguments вызывает ту же ошибку, которую я вижу на MinGW-w64 на 64-битной Win 7 с GCC 5.3. struct stf { template<typename... Args>...
301 просмотров

Явное создание экземпляра шаблона и ссылки на пересылку
Недавно я обсуждал со студентами возможности ограничения типов для шаблонов , использующих ссылки для переадресации . Я знал о сравнении типов по is_same вместе с static_assert или enable_if , но мы также говорили о явном создании экземпляров...
317 просмотров

MSVC не удается скомпилировать явное создание экземпляра шаблона с закрытым типом в качестве аргумента.
Рассмотрим следующий пример, состоящий из 4 файлов. Внешний.h #pragma once #include "genericAlgorithm.h" class Outer { private: struct Inner {}; // Note that Inner is private const Inner inner; public: Outer() : inner()...
331 просмотров

Как я могу сжато написать множество явных экземпляров шаблонов функций?
Я пишу библиотеку C++, содержащую множество шаблонов функций, которые я хочу явно создать и экспортировать для нескольких параметров типа. В моем конкретном случае у меня есть много шаблонов числовых функций, которые я хочу отдельно создать и...
371 просмотров

Создание экземпляров шаблонов функций-членов для нескольких типов
У меня есть несколько классов с шаблонными функциями-членами и предопределенный список типов, с которыми они будут использоваться ( Wandbox link : // main.cpp: #include "class.h" int main(int argc, char** argv) { A a; a.foo(5);...
1235 просмотров

Почему явное создание экземпляра шаблона не нарушает ODR?
Этот вопрос возник в контексте этого ответа . Как и следовало ожидать, эта единица перевода не компилируется: template <int Num> int getNum() { return Num; } template int getNum<0>(); template int getNum<0>(); // error:...
366 просмотров

Когда шаблоны функций создаются в шаблоне класса?
В какой момент создаются экземпляры шаблонов функций в следующем шаблоне класса? // a.h #pragma once template <typename T> class A { public: template <typename T2> void func1(T2 t); void func2(T t); T func3(); void...
51 просмотров
schedule 04.08.2022

Как работает явное создание экземпляра шаблона?
Я изо всех сил пытаюсь понять явное создание шаблона с использованием спецификатора extern . Вот мой пример // power.h template <typename T> class Power { public: T operator()(T const& x) {return x * x;} }; // power.cpp...
36 просмотров
schedule 03.05.2024

Автоматизация явного создания экземпляра шаблона
Чтобы сократить время компиляции в проекте с большим количеством шаблонов, я пытаюсь явно создавать экземпляры многих шаблонов в отдельной единице компиляции. Поскольку эти шаблоны зависят от enum class элементов, я могу перечислить все возможные...
96 просмотров

Когда происходит создание экземпляра для явного создания экземпляра шаблона функции
Здравствуйте, я пытаюсь узнать о явном создании экземпляров . И поэтому читая разные примеры, но в одном примере есть некоторые сомнения. Пример приведен ниже, и у меня есть 2 сомнения в этом конкретном примере. Файл Application.cc содержит:...
53 просмотров