hash_combine, hash_range, and hash_value can be constexpr
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza con include/boost/container_hash/hash.hpp e inspecciona hash_combine, hash_range, hash_value, sus variantes y la ruta BOOST_FUNCTIONAL_HASH_ROTL32. Compara las restricciones de C++14–17 y C++20+ descritas en el issue; se considera terminado cuando las funciones aplicables admitan constexpr sin romper las rutas existentes de las versiones del estándar.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
https://github.com/boostorg/container_hash/blob/develop/include/boost/container_hash/hash.hpp
Since most part of internal calculations are based on integer arithmetic and bitwise operations, I believe those three functions and all their variants can be marked constexpr today. Can someone please enlighten me, why the standard std::hash<T>::operator() and proposed std::hash_combine() in P0814R2 is not constexpr? (backward-compatibility, or other reasons?)
If we are to provide constexpr-ness, there are two cases of implementations:
- When user is using standard later or equal to C++20
- In this case, non-constexpr intrinsic like
_rotl(defined forBOOST_FUNCTIONAL_HASH_ROTL32) can be replaced withstd::rotl
- In this case, non-constexpr intrinsic like
- When user is using C++14 to C++17 and one prefers constexpr
- The library can fallback to bitwise implementation (which is always
constexpr) - Currently Boost.ContainerHash provides no option for this case. I think new macro like
BOOST_FUNCTIONAL_HASH_USE_CONSTEXPRis needed.
- The library can fallback to bitwise implementation (which is always
refs: cplusplus/papers#253
- Lenguaje dominante
- C++
- Estrellas
- 40
- Forks
- 61
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de boostorg/container_hash
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
boostorg/container_hash#35 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
boostorg/container_hash#33 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
boostorg/container_hash#31 · 6 comentarios ·
-
Compatibility with std::hashAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
boostorg/container_hash#4 · 1 comentario ·
Todos los issues de boostorg/container_hash
Issues similares
-
Remove source files from packaging for deb, zip, etcPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
OpenSpace/OpenSpace#4353 · 1 comentario ·
Los mantenedores suelen responder en 5 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
justcallmekoko/ESP32Marauder#1656 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Decompiler: convertCharRef() in xml.y overflows its int4 accumulator on long character referencesPosiblemente ocupada @kaayzouee la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
NationalSecurityAgency/ghidra#10009 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
mutationpp/Mutationpp#337 ·