Usando cadeias de caracteres em instruções switch - onde estamos no C ++ 17?

Todos nós (provavelmente) tivemos o sonho de escrever:

switch(my_std_string) {
case "foo":  do_stuff(); break;
case "bar":  do_other_stuff(); break;
default:     just_give_up();
}

mas isso não é possível, como é explicado nas respostas a essa pergunta dos velhos tempos (2009):

Por que a instrução switch não pode ser aplicada em strings?

Desde então, vimos o advento do C ++ 11, que nos permite ir até:

switch (my_hash::hash(my_std_string)) {
case "foo"_hash:  do_stuff(); break;
case "bar"_hash:  do_other_stuff(); break;
default:          just_give_up();
}

conforme descrito em umresponda paraCompilar hash de cadeia de tempo - o que não é tão ruim, embora não faça exatamente o que queríamos - há uma chance de colisão.

Minha pergunta é: O desenvolvimento da linguagem desde então (principalmente C ++ 14, suponho) afetou a maneira como alguém escreveria uma declaração de caso de tipo de string? Ou simplificou as porcas e parafusos para alcançar o que foi dito acima?

Especificamente, com a conclusão doPadrão C ++ 17 servirando a esquina - Estou interessado na resposta, considerando o que podemos assumir que o padrão conterá.

Nota: Esta não é uma discussão sobre o mérito de usar instruções switch, nem um tópico sobre meta. Estou fazendo uma pergunta informativa, então responda / suba / vote com base nisso.

questionAnswers(7)

yourAnswerToTheQuestion