Я использую подходы на основе SFINAE в течение довольно долгого времени, особенно для включения/отключения специализированных специализированных шаблонов классов через std::enable_if
.
Я был, таким образом, озадачен, прочитав статью, описывающую предложенную идиому псевдонима /t 21:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf
Раздел 4 посвящен обсуждению действительности идиомы и относится к обсуждению, в котором две стороны спорят о применимости SFINAE в частных специализированных шаблонах классов (с Ричардом Смитом, указывая, что в стандарте отсутствует формулировка о Эта тема). В конце раздела упоминается следующая проблема CWG
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#2054
Здесь снова указано, что стандарт явно не разрешает пример, воспроизведенный в выпуске.
Я немного озадачен, потому что мне кажется, что, например, использование enable_if
в частичной специализации уже довольно давно является стандартной практикой (см., например, документацию Boost, в которой явно упоминаются частичные специализации).
Неужели я неправильно понимаю пункты в вышеприведенных документах или это действительно серая область?