¿Es posible inferir los parámetros de la plantilla de la tupla a partir de la inicialización de tipo llave?

En este ejemplo, es posible permitir la deducción del tipo de parámetros de la plantilla deltuple?

#include<tuple>
#include<string>

template<class T1, class T2>
void fun(std::tuple<T1, T2> t, std::string other){}

int main(){
    fun(std::tuple<double, int>(2.,3), std::string("other")); // ok
    fun(std::make_tuple(2.,3), std::string("other")); // ok, but trying to avoid `make_tuple`
    fun({2.,3},std::string("other")); // desired syntax but
    // giving compilation error: candidate template ignored: couldn't infer template argument 'T1' void fun(std::tuple<T1, T2> t)
}

Agregué el segundo argumento.other Evitar soluciones que involucren argumentos variad al nivel de la función.fun. Además, estoy tratando de evitar el uso demake_tuple, al menos a partir del código de usuario (es decir, enmain()). De hecho no necesita ser eltuple escriba el involucrado siempre que la "sintaxis deseada" esté permitida y de alguna manera sus tipos de elementos puedan deducirse en una etapa posterior.

(Además, aunque similar, esto no tiene nada que ver coninitializer_list ya que no funciona en absoluto teniendo elementos disímiles en las llaves)

Falla al menos conclang 3.2 ygcc 4.7.2. ¿Hay alguna esperanza de que funcione con el estándar actual o futuro? (por ejemplo, un futuro (?)initializer_tuple.)

(Esto puede ser muy útil para agregar expresividad a las llamadas de función, agregando subelementos, pero se puede argumentar sobre)

Nota: Para el código de ejemplo parece questd::forward_as_tuple es mas apropiado questd::make_tuple por lo que los argumentos no son necesariamente copiados:http://en.cppreference.com/w/cpp/utility/tuple/forward_as_tuple . Todavía no es tan bueno como si hubiera una función de lenguaje incorporada para listas de inicialización heterogéneas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta