Guía de deducción definida por el usuario para tipos estándar

Aug 15 2020

Por alguna razón, todavía falta el CTAD esperado para std::initializer_listin clang :

std::initializer_list l{1,2,3}; // error in clang

Agregar una guía definida por el usuario como la siguiente puede solucionar el problema :

namespace std {
    template<class T> 
    initializer_list(const initializer_list<T>&) -> initializer_list<T>; 
} 

Pero, ¿está permitido agregar una guía definida por el usuario para CTAD para std::tipos?

Respuestas

5 Oliv Aug 15 2020 at 17:17

Agregar una guía de deducción a un tipo de biblioteca estándar es UB [namespace std]§4.4 :

El comportamiento de un programa C++ no está definido si declara: [...]

  • una guía de deducción para cualquier plantilla de clase de biblioteca estándar.