Сообщение Re[6]: сопоставление сигнатур от 02.11.2017 15:36
Изменено 02.11.2017 22:48 niXman
Re[6]: сопоставление сигнатур
остается делать специализации для фундаментальных и стандартных типов, и для юзерских...
думаю сделать так:
макросы все упрощают...
вопрос в том, как мне суммировать id`ы, полученные при хешировании?
т.е. предполагаю что-то вроде:
увеличит ли простое суммирование вероятность коллизий?
думаю сделать так:
template<typename>
struct my_typeid;
template<>
struct my_typeid<bool> {
enum: std::uint32_t { id = fnvia("bool") };
};
template<>
struct my_typeid<std::int8_t> {
enum: std::uint32_t { id = fnvia("std::int8_t") };
};
макросы все упрощают...
вопрос в том, как мне суммировать id`ы, полученные при хешировании?
т.е. предполагаю что-то вроде:
constexpr std::uint32_t sig_id() { return 0; }
template<typename Arg0, typename... Args>
constexpr std::uint32_t sig_id(const Arg0&, const Args&... args) {
constexpr std::uint32_t id = my_typeid<Arg0>::id + sig_id(args...);
}
увеличит ли простое суммирование вероятность коллизий?
Re[6]: сопоставление сигнатур
остается делать специализации для фундаментальных и стандартных типов, и для юзерских...
думаю сделать так:
макросы все упрощают...
вопрос в том, как мне суммировать id`ы, полученные при хешировании?
т.е. предполагаю что-то вроде:
увеличит ли простое суммирование вероятность коллизий?
думаю сделать так:
template<typename>
struct my_typeid;
template<>
struct my_typeid<bool> {
enum: std::uint32_t { id = fnv1a("bool") };
};
template<>
struct my_typeid<std::int8_t> {
enum: std::uint32_t { id = fnv1a("std::int8_t") };
};
макросы все упрощают...
вопрос в том, как мне суммировать id`ы, полученные при хешировании?
т.е. предполагаю что-то вроде:
constexpr std::uint32_t sig_id() { return 0; }
template<typename Arg0, typename... Args>
constexpr std::uint32_t sig_id(const Arg0&, const Args&... args) {
constexpr std::uint32_t id = my_typeid<Arg0>::id + sig_id(args...);
}
увеличит ли простое суммирование вероятность коллизий?