Предусматривает ли стандарт C++ порядок создания экземпляров шаблонов классов в единице перевода?C++

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

Сообщение Anonymous »

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

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

template 
struct A { static constexpr int id = N; };

template 
struct B { static constexpr int id = N; };

template 
void foo();

foo(); // Instantiation 1
foo(); // Instantiation 2

void func() {
struct C { static constexpr int id = unique_id(); }; // Instantiation 3
struct D { static constexpr int id = unique_id(); }; // Instantiation 4
}
Мой вопрос:

Гарантирует ли стандарт C++, что все вызовы unique_id() и связанные с ним экземпляры шаблонов в одной единице перевода происходят в конкретный, предсказуемый порядок?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ons-within
Ответить

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

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

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

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

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