В окончательном проекте комитета предстоящего стандарта C ++ 0x говорится:
Every C заголовок, каждый из которых имеет имя формы name.h ведет себя так, как если бы каждое имя помещено в стандарт пространство имен библиотеки соответствующими Заголовок cname помещается в область глобального пространства имен. это не указано, являются ли эти имена впервые объявлен или определен в область пространства имен (3.3.6) пространство имен std, а затем вводятся в область глобального пространства имен com / KrS3W
Из этого теста C ++
math.h
действует как C, а не как C ++cmath
.Но в Visual C ++ 2010 используется C ++
math. h
действует как C ++cmath
.И канарейка времени компиляции для использования с Comeau try-it-out :
#include
#include #include template struct typecheck {}; template<> struct typecheck { enum { value = 1 }; }; template typecheck f(const T& t) { return typecheck (); } int main(void) { double arg = -2.5; auto result = abs(arg) / 3; printf("%d\n", f(result).value); return 0; } Результат:
Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2 Copyright 1988-2008 Comeau Computing. All rights reserved. MODE:strict errors C++ C++0x_extensions "ComeauTest.c", line 15: error: class "typecheck
" has no member "value" printf("%d\n", f(result).value); ^ 1 error detected in the compilation of "ComeauTest.c". Комо соглашается с Visual C ++.