Код: Выделить всё
// libc++ http://llvm.org/svn/llvm-project/libcxx/trunk/include/memory
namespace __has_pointer_type_imp
{
template static __two __test(...);
template static char __test(typename _Up::pointer* = 0);
}
template
struct __has_pointer_type
: public integral_constant
{
};
14.8.2 >
В определенных моментах процесса вывода аргументов шаблона необходимо взять тип функции, который использует параметры шаблона, и заменить их шаблоном. параметры с соответствующими аргументами шаблона. Это делается в начале вывода аргументов шаблона, когда любые явно указанные аргументы шаблона подставляются в тип функции, и снова в конце вывода аргументов шаблона, когда подставляются любые аргументы шаблона, которые были выведены или получены из аргументов по умолчанию.
Последнее слово, касающееся моего вопроса
и еще раз в конце вывода аргументов шаблона, когда подставляются любые аргументы шаблона, которые были выведены или получены из аргументов по умолчанию.
Однако это звучит как противоположность оптимизации, если ей приходится выполнять больше работы. Есть ли у кого-нибудь какие-либо аргументы, почему здесь должен быть 0, он работает и без него, но каждый пример SFINAE в libc++, по крайней мере, кажется, явно помещает туда 0, хотя они никогда не вызывают функцию без аргументов.
Подробнее здесь: https://stackoverflow.com/questions/264 ... ae-testers