Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why didn't C++11 incorporate all of Boost's type traits?

Tags:

c++

c++11

boost

As you know, Boost has a lot of type traits. C++11 brought some of them over to the standard, e.g. the is_pointer and is_base_of.

There are others like has_greater and has_greater_equal that C++11 did not incorporate. Why not? Are there any plans to include them in the next standards? Were there some papers by the standards-committe or Bjarne Stroustrup on this?

like image 642
roger.james Avatar asked Jun 26 '13 18:06

roger.james


2 Answers

C++11 was approved in August 2011. Operator detection was added to Boost Type Traits for 1.48.0, which came out in November 2011.

I do not believe anyone proposed them for C++14, and that is now frozen. IMNSHO it would be nice if someone proposes it for C++17.

like image 111
Nevin Avatar answered Oct 16 '22 21:10

Nevin


I don't know if this is in topic for S.O. (may be more in programmers?) Anyway, Boost and ISO are two very different things. The "standard" is what the language "IS", and contains what is required to characterize the language for ANY purpose. Boost is a library that "extends" functionality to specific problems.

Boost committee operate on "quality" of the code (not on its subject), the standard operates on the "spread" (assuming the quality is given). Not everything that is "good" is also "common". What boost does goes in the standard when it is found to be enough common. And does not go "the way boost did it". It goes in form of a specification that compiler distributor have to satisfy.

Boost is written in a way that many compiler can work with it. The standard library is written in a way the compiler it goes with (or the family of compilers it goes with) plays better with it (and there are virtually a number as the compiler family can be out there). The kind of optimization and eventual low level tweaking is different.

The fact that some boost libraries became part of the standard is not an automatic consequence. It's just a matter of coincidence of some "good ideas" that where found needed in virtually any code.

That said, your intent is not necessarily wrong: it may happen for the particular subject you asked. But there is no "migration progress" from boost to the standard and no standard prerequisite that requires to be before in boost.

like image 4
Emilio Garavaglia Avatar answered Oct 16 '22 22:10

Emilio Garavaglia