VS
> * Creation of an array of char, unsigned char, or std::byte implicitly creates objects within that array.
Таки должно работать с обычными массивами. Если что это из [P0593R6].
Size: a a a
VS
С
ПК
ПК
O
foo1
и foo2
являются пользовательскими функциями, а всё остальное — библиотечное. Сейчас код не компилируется из-за того, что пользователь написал sfinae-unfriendly foo1
Способы заставить код компилироваться:VS
foo1
и foo2
являются пользовательскими функциями, а всё остальное — библиотечное. Сейчас код не компилируется из-за того, что пользователь написал sfinae-unfriendly foo1
Способы заставить код компилироваться:foo1
вызывается не потому, что bar_impl(double)
выбран, а как часть процесса разрешения перегрузки/инстанциации шаблона?O
foo1
вызывается не потому, что bar_impl(double)
выбран, а как часть процесса разрешения перегрузки/инстанциации шаблона?VS
foo1
и foo2
являются пользовательскими функциями, а всё остальное — библиотечное. Сейчас код не компилируется из-за того, что пользователь написал sfinae-unfriendly foo1
Способы заставить код компилироваться:noexcept
это плохой вариант, потому что не могу придумать случай, когда такой контракт будет разуменVS
O
noexcept
это плохой вариант, потому что не могу придумать случай, когда такой контракт будет разуменnoexcept
, а в том, что он написал функцию, которая вне sfinae-контекста делает что-то с заранее неизвестным типом, и это стреляет в ногу таким странным образом.foo1
ill-formed в sfinae-контексте (например, взять второй мой вариант решения или повесить концепт на Fn
). Т.е. правильным контрактом было бы требовать от пользователя предоставлять sfinae-friendly реализации функцииfoo
, имеющая две перегрузки с разными тегами и весь набор шаблонной магии, включая очень глубокие рекурсииO
foo2
* foo1
нигде не должна вызыватьсяfoo1
будет лежать мёртвым, невалидным грузом в кодовой базеVS
foo2
* foo1
нигде не должна вызыватьсяfoo1
будет лежать мёртвым, невалидным грузом в кодовой базеVS
foo2
* foo1
нигде не должна вызыватьсяfoo1
будет лежать мёртвым, невалидным грузом в кодовой базеO
m
foo1
и foo2
являются пользовательскими функциями, а всё остальное — библиотечное. Сейчас код не компилируется из-за того, что пользователь написал sfinae-unfriendly foo1
Способы заставить код компилироваться:bar_impl
? Если использовать просто вывод типа через auto оно собирается.