Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Debunking C++ Myths
Debunking C++ Myths

Debunking C++ Myths: Embark on an insightful journey to uncover the truths behind popular C++ myths and misconceptions

Arrow left icon
Profile Icon Alexandru Bolboacă Profile Icon Ferenc-Lajos Deák
Arrow right icon
Coming Soon Coming Soon Publishing in Dec 2024
€18.99 per month
eBook Dec 2024 226 pages 1st Edition
Subscription
Free Trial
Renews at €18.99p/m
Arrow left icon
Profile Icon Alexandru Bolboacă Profile Icon Ferenc-Lajos Deák
Arrow right icon
Coming Soon Coming Soon Publishing in Dec 2024
€18.99 per month
eBook Dec 2024 226 pages 1st Edition
Subscription
Free Trial
Renews at €18.99p/m
Subscription
Free Trial
Renews at €18.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Info icon
You can access this book only when it is published in Dec 2024
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Debunking C++ Myths

Every C++ Program Is Standard-Compliant

Except when they are not

In the world of C++ programming, the concept of standard compliance is often held in high regard, with the latest iteration of the C++ standard perceived as the definitive guide for writing correct and efficient code. The C++ standard, meticulously crafted and periodically updated by the C++ committee and the International Organization for Standardization (ISO), serves as the ultimate guide for developers, providing a comprehensive set of rules and best practices to ensure code quality and interoperability. However, the reality of software development is more nuanced and complex than this ideal suggests.

In this chapter, we will delve into the myriad challenges faced by developers who, due to various constraints, cannot always adhere to these standards and carefully balance on the sharp, thin edge between ideal standards and the practical demands of their work. These constraints can include limitations in their...

Technical requirements

We have to admit that reading this chapter will not be a straightforward process, but we will try to make it as easy as possible. Our minds will wander between platforms, compilers, and different dialects of the C++ language. However, at some point, we must draw the line and conclude that we should be able to transform all this theoretical transfer of information into the practicalities of life and produce some C++ code out of it. So, we kindly ask that at this stage of the book, you have access to the almighty internet, and the go-to place for experimental C++: Matt Godbolt’s site:

https://gcc.godbolt.org/

That place should keep you covered since almost all the compilers we will discuss in this chapter are to be found there.

There is nothing else required for now. That’s because at this stage, we have not produced enough valuable code to be able to put anything meaningful into the GitHub repository of the book, and the code that we have...

Somewhere in Ghana, far, far away

When Richard Appiah Akoto posted a few images of himself drawing the user interface of Microsoft Word on a blackboard at his school in Ghana, he instantly became a social media phenomenon overnight1. His school was poor and they had no working computers, just a standard blackboard from the turn of the century, but this did not stop him from performing his duties as a teacher. In a very creative manner, he did his best to convey life-altering knowledge to his pupils, hoping that one day, it would be useful for them in their quest for a better life. The rest is history, but the real question is: was this the standard way of teaching Microsoft Word?

Let’s not diverge too much from our initial objective. We want to find out about the standard compliance of C++ programs. For...

Microsoft’s tiny, squishy C++

That’s enough staring backward for now. Let’s look, for a moment, in a different direction and consider a compiler that once was the king of C++, but with time, its shine faded. OpenWatcom is an open source integrated development environment and suite of compilers for C and C++ (and Fortran too, but that language is not in focus in this book), originally developed by Watcom International Corporation and released as open source by Sybase in 2003.

It supports multiple operating systems, including DOS, Windows, OS/2, and also Linux, and is the de-facto compiler for programmers who have an interest in creating fun, free-time projects for retro platforms.

Not necessarily for the money, but instead for that joyful feeling of sweet nostalgia shivering through one’s spine when they are in front of an 80x25 screen. Maybe that’s the reason most senior programmers today use a grid of VI editors running in a terminal tiled...

The realm of free compilers

Two of the three major compilers today are developed and maintained in an open-source manner. This means that, in theory, anyone can contribute and provide useful new features to their compiler of choice. However, in practice, it means that there is a tiny core of professional programmers who have the necessary knowledge and dedication, and also the backing of a large corporation benefiting from the development of the aforementioned compiler working on it.

In no particular order, GCC and Clang (and MSVC, which we discussed in the previous section) are the most standard-compliant compilers as of 2024. This standard compliance, however, does not mean that these compilers don’t come with their own perks that a developer once thought would be a great idea to incorporate.

Let’s take, for example, the computed goto feature of GCC (and Clang too, of course; those two tend to go hand in hand). We all have learned in school that goto is just plain...

When the header is not even C++

The long list of standard-non-compliant-but-still-working-and-useful features does not end with the preceding examples. However, if we had only focused our attention on those, we could still have filled several books with them. Sadly, for the moment, we have only dedicated one chapter to this topic, so let’s move our attention to somewhat more exotic features.

Qt has been the de-facto cross-platform programming framework for GUI applications (but not only) for quite some time. Throughout its fateful history, while exchanging owners several times since its inception in 1994, the Qt framework has evolved significantly, with each release giving a new set of features to the C++ (but not only) programming community. However, one feature has remained more or less the same: the signal/slot implementation and the Meta Object Compiler (MOC). The pillar of the framework, the MOC makes it possible to connect events from components (i.e., signals) to receivers...

The curious case of C++ locked in a box

Up until now, we have observed cases where the standard compliance was at the developers’ own discretion. They had the option to choose their platform, use the extensions provided by their favorite compiler, or go for pure standard C++. However, out there in the wild wide world, there are certain circumstances wherein we cannot fully comply with the standard due to some restrictions imposed upon us by the environment that disallows the usage of certain features found in the C++ standard.

Not considering obscene scenarios, when we must maintain decades-old legacy code written in the golden age of C++ (i.e., before the standardization committee took over and ruined all the fun by demanding standard compliance, in order to avert the uncontrollable spread of C++ dialects as happened with BASIC), there are situations outside of our control that make the usage of the full C++ standard features impossible. For example, there might be certain...

Past days of future C++

The last scenario that we will explore concerning the standard compliance of the code you write relates to the most fundamental item in the C++ ecosystem: the compiler itself.

You see, compilers are also programs, consisting of millions and millions of lines of code. There are several contributors spread out on the globe working on them, adding new features, fixing bugs, making them more standard compliant, releasing the latest versions, and generally making sure that your compiler just works.

These compilers also have a development timeline. The implementation of features does not happen overnight, and there simply might be situations wherein, at a certain point in time, some compiler does not support some feature of the standard because there was not enough manpower to implement it.

There is a very handy document available at the source of all C++ knowledge8, which details the support of various C++ standard features and which compilers have support...

Summary

As this chapter has demonstrated, writing standard C++ ensures code portability, compatibility, and maintainability across different platforms and compilers. We learned that by adhering to the ISO/IEC C++ standard, we can create code that behaves predictably and is less prone to bugs and platform-specific issues. Standard-compliant C++ code also benefits from generic compiler optimizations and future language enhancements, while ensuring long-term relevance and performance, as we learned in this chapter.

On the other hand, using C++ compiler-specific extensions can provide performance optimizations specific to a platform and compiler, access to advanced features that are not yet standardized, and integration with vendor-specific tools. However, the extension may introduce portability issues, dependencies on specific compiler versions, as well as divergence from standard C++ practices, which can impact code maintenance and interoperability across different platforms and compilers...

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Trace the origins of C++ misconceptions and understand why they persist
  • Learn to avoid pitfalls caused by misunderstood C++ standards
  • Leverage the lesser-known features of the C++ programming language
  • Purchase of the print or Kindle book includes a free PDF eBook

Description

Think you know C++? Think again. For decades, C++ has been clouded by myths and misunderstandings—from its early design decisions to misconceptions that still linger today. Claims like "C++ is too hard to learn" or "C++ is obsolete" are often rooted in some truth, but they are outdated and fail to capture the language’s ongoing evolution and modern capabilities. Written by industry veterans with over 40 years of combined experience, this book uncovers the myths, exploring their origins and relevance in the context of today’s C++ landscape. It equips you with a deeper understanding of advanced features and best practices to elevate your projects. Each chapter tackles a specific misconception, shedding light on C++'s modern features, such as smart pointers, lambdas, and concurrency. You’ll learn practical strategies to navigate common challenges like code portability and compiler compatibility, as well as how to incorporate modern best practices into your C++ codebase to optimize performance and future-proof your projects. By the end of this book, you’ll have a comprehensive understanding of C++'s evolution, equipping you to make informed decisions and harness its powerful features to enhance your skills, coding practices, and projects.

Who is this book for?

This book is for intermediate-to-advanced C++ developers looking to deepen their understanding of the language’s complexities. It is perfect for coders eager to avoid common mistakes, hackers, scholars with a sense of humor, or anyone with an interest in C++. Programmers who want to expand their knowledge, refine existing skills, explore new paradigms, or dive into the nuances of C++, will find valuable insights. Technical leads and software engineering managers adopting new technologies or navigating the C++ ecosystem will also benefit from this book.

What you will learn

  • Comprehend the history of C++ and the design decisions that shape modern challenges
  • Master program flow and its underlying principles to resolve issues effectively
  • Tackle incompatibility across compilers and platforms with ease
  • Identify issues and avoid writing code that may lead to undefined behavior
  • Explore advanced C++ features not typically covered in academia
  • Address concerns about compiler code generation and optimizations
  • Understand why undefined behavior remains intentionally undefined

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Dec 30, 2024
Length: 226 pages
Edition : 1st
Language : English
ISBN-13 : 9781835884799
Category :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Info icon
You can access this book only when it is published in Dec 2024
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : Dec 30, 2024
Length: 226 pages
Edition : 1st
Language : English
ISBN-13 : 9781835884799
Category :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
Banner background image

Table of Contents

14 Chapters
Chapter 1: C++ Is Very Difficult to Learn Chevron down icon Chevron up icon
Chapter 2: Every C++ Program Is Standard-Compliant Chevron down icon Chevron up icon
Chapter 3: There’s a Single C++, and It Is Object-Oriented Chevron down icon Chevron up icon
Chapter 4: The Main() Function is the Entry Point to Your Application Chevron down icon Chevron up icon
Chapter 5: In a C++ Class, Order Must There Be Chevron down icon Chevron up icon
Chapter 6: C++ Is Not Memory-Safe Chevron down icon Chevron up icon
Chapter 7: There’s No Simple Way to Do Parallelism and Concurrency in C++ Chevron down icon Chevron up icon
Chapter 8: The Fastest C++ Code is Inline Assembly Chevron down icon Chevron up icon
Chapter 9: C++ Is Beautiful Chevron down icon Chevron up icon
Chapter 10: There Are No Libraries For Modern Programming in C++ Chevron down icon Chevron up icon
Chapter 11: C++ Is Backward Compatible ...Even with C Chevron down icon Chevron up icon
Chapter 12: Rust Will Replace C++ Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.