Упреждающее объявление std::hash, чтобы избежать включения тяжелого стандартного заголовка [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Упреждающее объявление std::hash, чтобы избежать включения тяжелого стандартного заголовка [дубликат]

Сообщение Anonymous »

ПРИМЕЧАНИЕ. Нет, этот вопрос не является дубликатом предложенного. Мой вопрос не о том, как специализировать std::hash, а о том, разрешено ли предварительное объявление std::hash, чтобы избежать включения заголовка библиотеки.
Представьте, что у вас есть простой файл типа (в C++17):
#include

class C { /* definition */ };

namespace std {
template
struct hash {
std::size_t operator()(C const& c) const noexcept { return /* whatever */; }
};
}

Единственная причина, по которой мне нужно включить сюда , — это объявление std::hash, чтобы я мог написать свою собственную специализацию, но — это один из тех тяжелых заголовков, который добавляет около 200 мс времени компиляции вашего файла, просто включив его. Все остальные заголовки, которые также определяют std::hash для поддержки хеширования, например , или , основаны на шаблонах и тоже довольно тяжело.
Я знаю, что, как правило, вам не разрешено пересылать определения объявлений из стандартной библиотеки или писать собственные специализации, но поскольку std::hash по замыслу разрешено быть специализированным, могу ли я вместо этого переслать объявление, чтобы написать это?
class C { /* definition */ };

namespace std {
template hash;

template
struct hash {
std::size_t operator()(C const& c) const noexcept { return /* whatever */; }
};
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ard-header
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Специализирование std :: hash для std :: pare
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Twilio – как воспроизводить музыку между завершением сбора и завершением действия сбора – ожидание запуска тяжелого API?
    Anonymous » » в форуме Php
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • HTML Drag and Drop API Bad Performance, тестирование тяжелого хита
    Anonymous » » в форуме Html
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • HTML Drag and Drop API Bad Performance, тестирование тяжелого хита
    Anonymous » » в форуме Javascript
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • HTML Drag and Drop API Bad Performance, тестирование тяжелого хита
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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