Соответствует ли этот код стандарту ?
#include <stdio.h>
#include <cstdio>
int main() {
FILE *f1 = 0;
std::FILE *f2 = f1;
}
Пояснение:В стандарте указано [заголовки] :
[...] содержимое каждого заголовка
cname
должно быть таким же, как и у соответствующего заголовкаname.h
[...] как бы путем включения. Однако в стандартной библиотеке C++ объявления [...] находятся в пределах пространства имен (3.3.6 )пространства именstd
. Не указано, объявляются ли эти имена сначала в рамках глобального пространства имен, а затем внедряются в пространство именstd
явным образом с использованием -объявлений(7.3.3 ).
Таким образом, если они не вводятся явным образом с использованием объявления -, могут ли они быть другого типа? Я не думаю, что фраза «как бы путем включения» является решающей, поскольку другая половина текста явно противоречит этому требованию, требуя, чтобы имена находились в пространстве имен std
.