Le code à ce fichier GitHub utilise une syntaxe de "déclaration" de variable C++ que je ne connais pas :
std::unique_ptr<CRecentFileList> {m_pRecentFileList} = std::make_unique<CRecentFileList>(...
( m_pRecentFileList
est déclarée dans une superclasse).
Qu'est-ce que cela signifie lorsque vous enveloppez une variable déclaration dans un appareil dentaire ? (pas une liste d'initialisation)
J'ai extrait un cas de test minimal qui compile :
class foo {
int* p;
void f(){
std::unique_ptr<int> {p} = std::make_unique<int>(1);
}
};
Changer int* p
a std::unique_ptr<int> p
crée une erreur de compilation due à unique_ptr(const unique_ptr&) = delete;
Cela me fait penser que la déclaration entre accolades assigne à une variable externe du même nom. J'ai essayé de créer un programme de test, mais il ne parvient pas à compiler :
int main(){
int x;
int {x} = 1;
}
error: using temporary as lvalue [-fpermissive]