É possível inferir parâmetros de modelo da tupla a partir da inicialização do tipo de chave?

Neste exemplo, é possível permitir a dedução do tipo de parâmetros do modelo dotuple?

#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)
}

Eu adicionei o segundo argumentoother evitar soluções envolvendo argumentos variadicos ao nível da funçãofun. Além disso, estou tentando evitar o uso demake_tuple, pelo menos a partir do código de usuário (ou seja, emmain()). Na verdade, não precisa ser otuple digite o que estiver envolvido, desde que a "sintaxe desejada" seja permitida e, de alguma forma, seus tipos de elementos possam ser deduzidos em um estágio posterior.

(Além disso, embora semelhante, isso não tem nada a ver cominitializer_list desde que não funciona de todo tendo elementos diferentes nas chaves)

Ele falha pelo menos comclang 3.2 egcc 4.7.2. Existe alguma esperança de que funcionaria com o padrão atual ou futuro próximo? (por exemplo, um futuro (?)initializer_tuple.)

(Isso pode ser muito útil para adicionar expressividade às chamadas de função, agregando subelementos, mas isso pode ser discutido)

Nota: Para o código de exemplo, parece questd::forward_as_tuple é mais apropriado do questd::make_tuple então os argumentos não são necessariamente copiados:http://en.cppreference.com/w/cpp/utility/tuple/forward_as_tuple . Ainda não é tão bom como se houvesse um recurso de linguagem embutido para listas de inicializadores heterogêneos.

questionAnswers(1)

yourAnswerToTheQuestion