\title{A1: Tool Chain} \input{preamble.tex} This assignment consists of two small programs; \texttt{hello.cc} and \texttt{hello-cpp20.cc}. Both use \texttt{import } rather the \texttt{\#include } which on my tool-chain (gcc on linux) requires some pre-generation in order to work. A \texttt{Makefile} is provided which handles all the necessary pre-generation as well as the actual compilation of the programs. \section*{Exercise 1} The \texttt{hello.cc} simply prints a \texttt{const char*} literal string to the console using the \texttt{std::cout} output stream. \section*{Exercise 2} The \texttt{hello-cpp2.cc} wraps the printing in a templated function, utilizing a \texttt{concept} ``Printable'' to make sure that the stream operator is implemented on the supplied type for the \texttt{std::cout} stream. Examples of calling the function is supplied; one using a \texttt{const char*} literal string, one using a \texttt{std::string} literal, one using an \texttt{int}, and finally one using a custom type which fails compilation because it doesn't provide a stream operator implementaion for \texttt{std::ostream}. Initially I had the argument for the \texttt{printIt} function being just a reference, which failed compilation because of the \texttt{std::string} litteral being a temporary. Adding \texttt{const} fixed the issue. I originally had the idea to somehow use \texttt{std::format} for the second part of the exercise, but since this is not yet supported by my compiler I had to change plans. \end{document}