C++C++14C++17C++20Learn C++

What Are The C++14 Features Removed From C++17?

What Are The C++14 Features Removed From C++17

Modern C++ has a lot of useful new classes, methods, templates, and keywords introduced with the new C++ standards. Mostly they are new or enhanced versions of previous ones. Because of new modern technologies and software requirements, some of these features are being deprecated and some are being removed. In this post, we will list C++14 features removed from C++17 and beyond.

What are the C++ 11 features removed from C++ 14?

Before we look at C++17, let’s remember that the gets function was removed from C++14.

Why was the gets function removed from C++?

In C++11 and before, we were able to use the gets function. The std::gets function was first defined in the C language and was available in C++11 and earlier. The gets function reads inputs into a given char string. When a char string has a newline character, it is considered the end of input, and an end-of-file condition occurs. The return value is captured on success, or a null pointer on failure. The gets function was deprecated in C++11 and removed in C++14. https://learncplusplus.org/why-was-the-gets-function-removed-in-c14/

What C++ 14 features were removed from C++ 17?

Now, let’s see C++14 features that were removed from C++17.

Trigraph sequences were removed from C++ 17

Trigraphs are sequences of three characters (such as “??=” , “??(” , “??)”, ….) used for the corresponding punctuation characters where the the compiler replaces with them. Trigraph sequences are used to be in the ISO (International Standards Organization) Invariant Code Set that was designed for the C programs. Implementations may offer trigraph-like features as part of their input encoding and trigraph sequences are removed in C++17. N4086

The register keyword was removed from C++ 17

The register keyword remains reserved in C++17, but it no longer has any semantics. P0001R1

The Increment ++ for bool types was removed from C++ 17

Increment (++) prefix and postfix expressions (b++, ++b) are no longer valid for operands of bool types of C++17 and beyond. P0002R1

The throw method throw(A, B, C) was removed from C++ 17

In C++17 and beyond, Dynamic exception specifications of the form throw(A, B, C) are no longer valid. Only throw() remains as a synonym for noexcept(true). Note the change in termination semantics. P0003R5

auto_ptr, random_shuffle(), and old <functional> stuff were removed from C++ 17

Features that have been deprecated since C++11 and replaced with superior components are no longer included. Their names remain reserved, and implementations may choose to continue to ship the features. N4190

iostream aliases were removed from C++ 17

The deprecated iostream aliases  (depr.ios.members) in C++14 are removed in C++17. iostream features that have been deprecated since C++11 and are no longer included. P0004R1

The allocator support from function was removed from C++ 17

Allocator support for type-erasing, copyable types was difficult, and it was not implementable efficiently. Thus, the polymorphic function wrapper function no longer has constructors that accept an allocator. P0302R1

What Are The C++14 Features Removed From C++17C++ logo

C++ Builder is the easiest and fastest C and C++ compiler and IDE for building simple or professional applications on the Windows operating system. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for UIs.

There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise versions of C++ Builder and there is a trial version you can download from here.

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial

Free C++Builder Community Edition

About author

Dr. Yilmaz Yoru has 35+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux, and some other operating systems. He graduated and received his MSc and PhD degrees from the Department of Mechanical Engineering of Eskisehir Osmangazi University. He is the founder and CEO of ESENJA LLC Company. His interests are Programming, Thermodynamics, Fluid Mechanics, Artificial Intelligence, 2D & 3D Designs, and high-end innovations.
Related posts
C++C++17Code SnippetGame DevelopmentLanguage FeatureLearn C++

What Is Skia In Modern C++?

C++C++17Learn C++

How To Use Skia in C++ Builder 12?

C++C++17C++20Introduction to C++Language FeatureLearn C++Syntax

Learn How To Use Clamp (std::clamp) In Modern C++ 17 and Beyond

C++C++11C++14C++17C++20Learn C++

What Is The Priority Queue (std::priority_queue) In Modern C++?