Tag: CONSTEXPR
Puedo decir fácilmente que al declarar una función como constexpr, la evaluamos durante el tiempo de compilación y esto ahorra tiempo durante el tiempo de ejecución, ya que el resultado ya fue producido. Por otro lado, las funciones virtuales necesitan ser resueltas durante el tiempo de ejecución. Por lo tanto, . . . Read more
Toma el siguiente código: template <typename t,=”” typename=”” u=””> constexpr bool can_represent(U&& w) noexcept { return [] (auto&& x) { try { return T(std::forward<u>(x)) == std::forward<u>(x); } catch(…) { return false; } } (std::forward<u>(w)); } Estoy usando esta función en una expresión constante (plantilla). gcc lo compila sin problemas. clang . . . Read more
#include <array> template<typename f=””> constexpr auto call(const F& visitor) { return visitor(); } int main() { constexpr int x = 10; constexpr std::array<int, 3=””> y = { 1, 2, 3}; static_assert(call([]{ return x + 10; }) == 20); static_assert(call([&]{ return y[0] + 10; }) == 11); } El siguiente código . . . Read more
¡Tengo algunas preguntas! Estoy confundido con los conceptos de plantillas (template) y constexpr y cuál es la diferencia. Sé que las plantillas se instancian en tiempo de compilación, pero ¿se ejecutan también en tiempo de compilación o sólo en tiempo de ejecución? ¿Existe algún ejemplo donde pueda utilizarlos juntos para . . . Read more
Al contenido interno de un opcional, ¿no se requiere el uso de “placement new” para reconstruir el almacenamiento interno en su lugar o en la unión? ¿Existe alguna característica nueva como “placement new” en C++ 20 que permita la asignación constexpr de std::optional? cpp template<class u=”T”> optional& operator=( U&& value . . . Read more