Запретить многократную компиляцию кодов шаблонов C++.C++

Программы на C++. Форум разработчиков
Anonymous
Запретить многократную компиляцию кодов шаблонов C++.

Сообщение Anonymous »

Я написал шаблон очереди сообщений на C++ и хочу использовать его во многих разных проектах, чтобы поместить его в пространство имен, например my_lib.
Чтобы предотвратить повторную компиляцию кодов, я использовал отдельный транс-модуль для явного создания его экземпляра (и получения только одного obj-файла) и просто включал его заголовок везде, где он задействован.
Но там, где он используется, это другое пространство имен, например business.
Скелет моего кода выглядит следующим образом:
mq-template.hpp:

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

#pragma once
namespace my_lib {
template
class GenericMQ_t {
struct Node_t {
SIZE_TYPE _head;
SIZE_TYPE _tail;
T         _data;
};
SIZE_TYPE _size {};
Node_t*   _buff {};
public:
void send( const T& );
};
}; // namespace my_lib
mq-template.tpp (обратите внимание на суффикс):

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

#include "mq-template.hpp"
namespace my_lib {
template
void GenericMQ_t::send( const T& ) {
// just for example
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78086497/prevent-c-template-codes-from-being-compiled-for-many-times[/url]

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