Lecture #27 - Template Metaprogramming

Web Resources:

CppReference.com, CPlusPlus.com, C++ TechLinks
Going Native 2013 - many experts
Herb Sutter's Blog, Herb Sutter on C++11, Herb Sutter keynote - Going Native 2012
Scott Meyer's Blog, S.M. on thread suspension, S.M.: C++11 Sampler
Stroustrup's Home Page, Code Project, Boost Library

Content:

In this lecture we continue a discussion of template metaprogramming.
  1. Syllabus
    Describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  2. MTMU Help Sessions:

    • Friday, 4/28 at 10:30am in CST 4-201 (Project #4 help from 9:00am to 10:30am)
    • Friday, 5/5 at 9:00am in CST 4-201
      Note: time and place have changed to 5/5 at 1:00pm, 369 Link Hall
  3. Projects:

    Project #4, Project4HelpS17
    Remote Code Publisher

    Project4HelpS17
    C++\CLI WPF client that sends and gets messages using native C++ mock channel.
    C# WPF client with C++\CLI shim that sends and gets messages using native C++ mock channel.
    Also included are several diagrams that illustrate design ideas for Project #4 and some sample Socket code.

    Communication Channel, vsdx
    Diagrams for Peer-To-Peer communication, Client and Server communication processing, and Message structure

    Mock Channel Demo, vsdx
    Diagram illustrating native C++ to C++\CLI interoperation for the Project #4 GUI via a mock demo.

    Note:
    Project #4 is due Tuesday, May 02. We will charge 1 point per day for Wednesday and Thursday. After Thursday midnight the late fee increases to 5 points per day. Also, after midnight Thursday, we will not count bonus points. This is necessary since we have a very short time to complete grading projects and submit course grades.
  4. Summer Projects:

    Summer Projects page If you are interested subscribe to Piazza.com for CSE000, summer 2017.
  5. Unit Test Framework
  6. Preliminaries:

    Program Scope and global data
    Scope inclusion rules

    Programming Languages, vsdx
    History of imperative, functional, and scripting langugages.
  7. Template Metaprogramming

  8. Go Programming Language:

  9. Advanced C++ Texts

  10. Common C++ Problems
  11. Fragile Designs
  12. UML Notation Revisited

CST strip