Tag: LANGUAGE-LAWYER
Suponga el siguiente código: struct a { unsigned cntr; }; void boo(struct a *v) { v->cntr++; while(v->cntr > 1); } Me pregunto si el compilador puede omitir el bucle while dentro de boo() debido a la siguiente declaración en el estándar C11: Una declaración de iteración cuya expresión de control . . . Read more
Considere el siguiente código (https://godbolt.org/z/s17aoczj6): template<class T> class Wrapper { public: explicit Wrapper(T t): _value(t) {} template<class S = T> operator T() { return _value; } private: T _value; }; auto main() -> int { auto i = int{0}; auto x = Wrapper<int>(i); return x + i; } Compila con . . . Read more
El siguiente programa template<class T> consteval auto foo(const T&) { return 0; } <p>template<class T> consteval auto bar(const T& t) { auto n = foo(t); return n; }</p> <p>int main() { static<em>assert(foo(“abc”) == 0); static</em>assert(bar(“abc”) == 0); } <code> se compila bien en GCC, pero Clang lo rechaza con los . . . Read more
¿Hay algo en el estándar de C que me impida hacer lo siguiente? // main.c #define DECORATE(x) <strong><em>x</em></strong> #include “call_macro.h” this is the text I want decorated // call_macro.h DECORATE( When running it though `gcc -E main.c`, I expected to get ) <strong>* this is the text I want decorated*</strong> . . . Read more
Estoy creando una implementación de std::optional en C++14. Sin embargo, estoy un poco confundido con respecto a cómo se especifica el constructor de movimiento. Esto es a lo que me refiero (énfasis mío): La expresión dentro de noexcept es equivalente a is_nothrow_move_constructible_v<T>. Este constructor no deberá participar en la resolución . . . Read more