Considérons le fragment de code suivant pour tester la prochaine C++17 fonction de la décomposition des déclarations (anciennement connu sous le structurée liaisons)
#include <cassert>
#include <utility>
constexpr auto divmod(int n, int d)
{
return std::make_pair(n / d, n % d); // in g++7, also just std::pair{n/d, n%d}
}
int main()
{
constexpr auto [q, r] = divmod(10, 3);
static_assert(q == 3 && r ==1);
}
Cette échoue sur les deux g++7-SVN et clang-4.0-SVN avec le message:
la décomposition de cette déclaration ne peut être déclaré constexpr'
- Déposer l' constexpr
définition et le passage à un régulière assert()
fonctionne sur les deux compilateurs.
Aucun des WG21 documents sur cette fonctionnalité mentionner l' constexpr
mot-clé, ni en positif, ni négatif.
Question: pourquoi ne sont pas de décomposition déclarations d'être autorisés à l' constexpr
? (en dehors de "parce que la Norme dit").