Debt Geopolitics and Sovereignty Erosion in Neoliberal Capitalism
Neoliberal capitalism's impact on debt geopolitics and erosion of sovereignty, with a focus on Ukraine's struggles with foreign debt, IMF conditionality, and economic destabilization. Analyzing the history of debt formation, economic crises, and the burden of debt on Ukraine's economy.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
E81 CSE 428S: Multi-Paradigm Programming in C++ Types and Generic Programming Department of Computer Science & Engineering Washington University, St. Louis MO Adam Mitz mitzah@wustl.edu 1
Type Aliases Complex type expressions obscure program s intent in addition to being tedious and error-prone to type E.g., vector<CardSet<PinochleRank,Suit> >::iterator Can use type aliases to clarify what is intended Via descriptively named types that convey their meaning E.g., pinocle_hand_terator or pinocle_meld_terator Watch out for issues related to const with aliasing I.e., typedef char * pcstring; encapsulates the type: const pcstring p; says p (not what it points to) is const See LLM pp. 63 for terminology: top-level const concerns whether or not a pointer can be modified, low-level const concerns whether or not what it points to can be modified CSE 428S Multi-Paradigm Programming in C++ 2
The auto Type Specifier The auto type specifier can be used effectively to declare types involving complex type expressions Lets us avoid writing tedious and error-prone syntax Also may help to deduce types that depend on other types E.g., auto op1 = compose(sn, cs); Avoid using the auto type specifier unnecessarily May obscure key semantics of the types involved E.g., if chaining many type parameters in template code, only use it when an explicit type declaration would be unwieldy Also, again watch out for issues related to const Declarations that use the auto type specifier may ignore top-level const and only preserve low-level const CSE 428S Multi-Paradigm Programming in C++ 3
The decltype Type Specifier The decltype type specifier lets you use an existing type (indirectly) to declare another type E.g., decltype (i) j; declares a variable j that is of the same type as another, existing, variable i Gives similar flexibility to when you would use auto But preserves top-level const as well as low-level const However, decltype should only be used selectively as well Applying decltype to an expression May yield a reference type that then must be initialized E.g., if you put the name of a variable inside of parentheses E.g., decltype ((i)) k; // won t compile CSE 428S Multi-Paradigm Programming in C++ 4
Run-Time Type Identification (RTTI) The dynamic_cast operator Forces a run-time type conversion involving a pointer or reference type to a class type (usually with virtual members) A static_cast should be used for other conversions, e.g., to convert a value from an enum class to an int The typeid operator Obtains the type of a variable or expression Lets you do run-time if-else logic over the types involved CSE 428S Multi-Paradigm Programming in C++ 5
Studio 12 Explore low-level and top-level const issues for explicit type declarations involving pointers Understand how those issues are handled for the auto and decltype type specifiers Consider how those issues affect the ability to modify variables (e.g. via prefix operator++) Studios 12 through 19 are due 11:59pm Monday November 25th (night before Exam 1) Submit as soon as each is done so you get feedback and can resubmit any that may be marked incomplete CSE 428S Multi-Paradigm Programming in C++ 6