# from **Modern** to
					# ***Unbelievably Modern***
					# **C++**
					## Coral Kashri, Solidus &
					## Daisy Hollman, Google
					### CoreC++ 2023-06-06
				
				
					Why would YOU want to be here?
					
						- 
							Currently working with C++11/14/17 and unaware of newer standard abilities.
						
- 
							Learn about the abilities you might be unaware of (yet)
						
- 
							Upgrading is easier when performed step by step
						
Why would you NOT want to be here?
					
						- 
							You don't care about bugs in your codebase
						
- 
							You don't care about long development times
						
- 
							You don't want to use the most modern optimizations
						
- 
							You believe in complicated solutions, even when easier ones available
						
 
					 
				
				
					What will we talk about?
					
						- 
							
								Code written in C++11/14 vs. C++17
							
						
- 
							
								Code written in C++11/14/17 vs. C++20
							
						
- 
							
								How to prepare to and eventually migrate forward? (S~C~A~R~Y but E-A-S-Y!)
							
						
- 
							
								[Bonus] Interesting C++23 features
							
						
Extracting Values From Pair / Tuple (C++11 / 14)
					
				
				
					Structured Binding (C++17)
					
					
				
				
				
					If statements (C++11 / 14)
                    
				
				
					If & Switch statements with initializer (C++17)
					
					
				
				
				
					If statements on compile time information (C++11 / 14)
                    
					
					
				
				
				
				
					Unions (C++11 / 14)
                    
					
					
                    
				
				
				
					std::variant & std::visit (C++17)
					
				
				
				
					There is a Return Value! (C++11 / 14)
					
				
				
				
				
					std::string substr (C++11 / 14)
                    
					
				
				
				
				
					
					Variadic Templates (C++11 / 14)
                        
						
						
					
					
						Variadic Templates - Solution Issue
						
						
					
				
				
					
					
						Fold-Expressions (C++17) - Solution Issue
						
						
						
					
				
                
				
					C++17 Features - So Far
					
						- 
							Structure Binding (auto [&a, &b] = ...)
						
- 
							If with initializer
						
- 
							If constexpr
						
- 
							std::variant & std::visit
						
- 
							[[nodiscard]]
						
- 
							std::string_view
						
- 
							fold-expressions
						
More C++17 Features
                    
                        - 
                            Guaranteed copy elision
                        
- 
                            Class template argument deduction
                        
- 
                            Non-type template parameters declared with auto
                        
- 
                            Simplified nested namespaces
                        
- 
							And more!
						
What will we talk about?
					
						- 
							
								Code written in C++11/14 vs. C++17
							
						
- 
							
								Code written in C++11/14/17 vs. C++20
							
						
- 
							
								How to prepare to and eventually migrate forward? (S~C~A~R~Y but E-A-S-Y!)
							
						
- 
							
								[Bonus] Interesting C++23 features
							
						
Sub-Array (C++11 / 14 / 17)
					
					
					
				
				
				
				
					std::size (C++11 / 14 / 17)
					
					
					
				
				
					std::ssize - signed size (C++20)
					
				
				
				
					
						Concat Strings (C++11 / 14 / 17)
						
						
					
					
						External Library: fmt::format
						
					
				
				
				
				
				
					nodiscard("description") (C++20)
					
				
				
				
				
					Concepts & Requires (C++20)
					
					
				
				
				
					Interfaces (C++11 / 14 / 17)
					
					
				
				
					Concepts as Interfaces (C++20)
					
					
				
				
				
					C++20 Features - So Far
					
						- 
							std::span
						
- 
							std::ssize
						
- 
							std::format / ranges 3rd party adoption
						
- 
							[[nodiscard("Description")]]
						
- 
							Concepts as named constraints
						
- 
							Concepts as interface
						
More C++20 Features
					
						- 
							Consteval
						
- 
							Designated initializers
						
- 
							[[likely]] & [[unlikely]]
						
- 
							[[no_unique_address]]
						
- 
							Modules
						
- 
							Coroutines
						
- 
							Three-way comparison operator <=>
						
- 
							And more!
						
What will we talk about?
                    
                        - 
							
								Code written in C++11/14 vs. C++17
							
                        
- 
							
								Code written in C++11/14/17 vs. C++20
							
                        
- 
							
								How to prepare to and eventually migrate forward? (S~C~A~R~Y but E-A-S-Y!)
							
                        
- 
							
								[Bonus] Interesting C++23 features
							
                        
Migrating Forward
					
					
                    	New Compilers - New Optimizations
					
					
                    	When don't you want to move forward?
						
							
						
					
                
                
                
                    What will we talk about?
                    
                        - 
							
								Code written in C++11/14 vs. C++17
							
                        
- 
							
								Code written in C++11/14/17 vs. C++20
							
                        
- 
							
								How to prepare to and eventually migrate forward? (S~C~A~R~Y but E-A-S-Y!)
							
                        
- 
							
								[Bonus] Interesting C++23 features
							
                        
subscript operator -  operator[]
					
					
					
				
                
                    operator[] with multiple parameters (C++23)
                    
                
				
					More C++23 Features
					
						- 
							std::mdspan
						
- 
							Deducing this
						
- 
							flat_map & flat_set
						
- 
							And more!
						
# Questions Time!
                    ## From Modern to Unbelievably Modern C++
                    |                              |   Coral Kashri, Solidus   |       Daisy Hollman, Google      |
                    | :--------------------------: | :-----------------------: | :------------------------------: |
                    |  |        @koralkashri       |         @The_Whole_Daisy         |
                    |                              |    coralkashri@gmail.com  |            cpp@dsh.fyi           |
                    |      |        Coral Kashri       |       (Not really on LinkedIn)       |