GCC et Clang rejettent tous deux le style C cast dans le code suivant.
http://coliru.stacked-crooked.com/a/c6fb8797d9d96a27
struct S {
typedef const int* P;
operator P() { return nullptr; }
};
int main() {
int* p1 = const_cast<int*>(static_cast<const int*>(S{}));
int* p2 = (int*)(S{});
}
main.cpp: In function 'int main()': principal.rpc:7:25: erreur: invalid distribution de type 'S' de type 'int*' int* p2 = (int*)(S{}); principal.rpc:7:15: erreur: impossible de distribution de type " S " de pointeur de type 'int *' int* p2 = (int*)(S{}); ^~~~~~~~~~~
Toutefois, selon la norme, un style C cast pouvez effectuer les conversions réalisées par un static_cast
suivie par un const_cast
. Est-ce code bien formé? Si non, pourquoi pas?