c++ - Does include ? -



c++ - Does <algorithm> include <cmath>? -

the next programme compiles correctly:

#include <algorithm> int main(int argc, char *argv[]) { homecoming int(log(23.f)); }

(under g++ 4.9.2 flag -std=c++11)

the code uses function log, defined on <cmath>. however, not include header <cmath>, header <algorithm>. why g++ doesn't give warnings, , compiles code correctly?

in c++11 standard, [res.on.headers]/1 states that

a c++ header may include other c++ headers. c++ header shall provide declarations , definitions appear in synopsis. a c++ header shown in synopsis including other c++ headers shall provide declarations , definitions appear in synopses of other headers.

now consider [algorithms.general]/2:

header <algorithm> synopsis #include <initializer_list> namespace std { // ......

<cmath> isn't listed , not included in <initializer_list>. programme not guaranteed compile on standard-conforming implementation. 1 should never rely on "implicit inclusion" - general guideline include every header entity used. exceptions e.g. <iostream> including <ostream>, guaranteed since c++11.

c++ c++11 standards c++-standard-library

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -