Ну да. Про сообщение Андрея я только сейчас вспомнил, но бумагу что-то не могу найти на эту тему. Вероятно до 20-го стандарта там действительно не было специфицировано
Ну да. Про сообщение Андрея я только сейчас вспомнил, но бумагу что-то не могу найти на эту тему. Вероятно до 20-го стандарта там действительно не было специфицировано
До 20-го было специфицировано, что нужно сделать конструктор deleted, но тут http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1286r2.html#existing-approach-is-bad-for-compilers объясняется, почему это невозможно заиплементить в компиляторах. Если переключить на gcc trunk твой пример, то даже в C++17 он будет вести себя так же как clang, любое другое поведение, приведет к внутренним противоречиям (и, как следствие, ICE).
До 20-го было специфицировано, что нужно сделать конструктор deleted, но тут http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1286r2.html#existing-approach-is-bad-for-compilers объясняется, почему это невозможно заиплементить в компиляторах. Если переключить на gcc trunk твой пример, то даже в C++17 он будет вести себя так же как clang, любое другое поведение, приведет к внутренним противоречиям (и, как следствие, ICE).
Спасибо. Бумагу приняли? Внутренние противоречия из-за примера с Inner() noexcept(Outer::value)?