Различные экземпляры шаблонов в нескольких файлах cppC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Различные экземпляры шаблонов в нескольких файлах cpp

Сообщение Anonymous »

Недавно я наткнулся на любопытную архитектуру шаблона cpp. Объявление класса шаблона находилось в заголовочном файле, а определение — в файле cpp с некоторыми явными экземплярами. Не так часто, как полное определение шаблона в заголовке, но все же не так уж и удивительно. Но на самом деле существовало несколько файлов cpp с разными объявлениями для одного и того же класса шаблона, но с разными явными экземплярами.
Небольшой воспроизводимый пример мог бы выглядеть так:

Код: Выделить всё

// header.hpp
template 
struct Foo {
T foo(T t);
};

// impl1.cpp
#include "header.hpp"

template 
T Foo::foo(T t) {
return t + 1;
}
template struct Foo;
template struct Foo;

// impl2.cpp
#include "header.hpp"

template 
T Foo::foo(T t) {
return t + 0.1;
}
template struct Foo;
template struct Foo;

// main.cpp
#include "header.hpp"
#include 

int main() {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78473986/different-template-instantiations-in-multiple-cpp-files[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»