 Template Metaprogramming: Type TraitsTemplate Metaprogramming: Type Traits Part 1 CppCon 2020 1 Jody Hagins jhagins@maystreet.com coachhagins@gmail.comTemplate Metaprogramming: Type Traits CppCon 2020 2 IntroductionIntended Audience oriented: shallow depth, slow current • Not necessarily beginner to C++, but beginner to traditional template metaprogramming techniques 3Intended Audience • Beginner/Intermediate • Gentle entry: swimming oriented: shallow depth, slow current • Not necessarily beginner to C++, but beginner to traditional template metaprogramming techniques • Type traits part of standard library for ~10 years 3Intended Audience0 码力 | 403 页 | 5.30 MB | 6 月前3 Template Metaprogramming: Type TraitsTemplate Metaprogramming: Type Traits Part 1 CppCon 2020 1 Jody Hagins jhagins@maystreet.com coachhagins@gmail.comTemplate Metaprogramming: Type Traits CppCon 2020 2 IntroductionIntended Audience oriented: shallow depth, slow current • Not necessarily beginner to C++, but beginner to traditional template metaprogramming techniques 3Intended Audience • Beginner/Intermediate • Gentle entry: swimming oriented: shallow depth, slow current • Not necessarily beginner to C++, but beginner to traditional template metaprogramming techniques • Type traits part of standard library for ~10 years 3Intended Audience0 码力 | 403 页 | 5.30 MB | 6 月前3
 Template-Less Meta-Programming1 / 58Template Metaprogramming (TMP) Template Metaprogramming (TMP) template Template-Less Meta-Programming1 / 58Template Metaprogramming (TMP) Template Metaprogramming (TMP) template- using meta_fun = this_talk - ; 2 / 58❓static_assert(Template::Metaprogramming::is_hard); // ✔ 3 / 58❓s 58❓static_assert(Template::Metaprogramming::is_hard); // ✔ ❓static_assert(Template::Metaprogramming::is_powerful); // ✔ 3 / 58❓static_assert(Template::Metaprogramming::is_hard); // ✔ ❓static_assert( ❓static_assert(Template::Metaprogramming::is_powerful); // ✔ ❓static_assert(( Template::Metaprogramming::is_easy and Template::Metaprogramming::is_powerful and Template::Metaprogramming::has_nice_error_messages 0 码力 | 130 页 | 5.79 MB | 6 月前3
 Many Ways to Kill an Orc (or a Hero)abstract… • « Our game programmers and game engines involve fights between heroes and their foes […] » 3From the abstract… • « Our game programmers and game engines involve fights between heroes and their and monsters to hit at each other […] » 4From the abstract… • « Our game programmers and game engines involve fights between heroes and their foes. There are «classical», traditional ways to express other. This is what this talk will explore » 5From the abstract… • « Our game programmers and game engines involve fights between heroes and their foes. There are «classical», traditional ways to express0 码力 | 202 页 | 1.26 MB | 6 月前3 Many Ways to Kill an Orc (or a Hero)abstract… • « Our game programmers and game engines involve fights between heroes and their foes […] » 3From the abstract… • « Our game programmers and game engines involve fights between heroes and their and monsters to hit at each other […] » 4From the abstract… • « Our game programmers and game engines involve fights between heroes and their foes. There are «classical», traditional ways to express other. This is what this talk will explore » 5From the abstract… • « Our game programmers and game engines involve fights between heroes and their foes. There are «classical», traditional ways to express0 码力 | 202 页 | 1.26 MB | 6 月前3
 Combining Co-Routines and Functions into a Job System>90000 students • Entertainment Computing Research Group • Efficiency and performance of game engines, AI, networking, VR … • Teaching: 3D Graphics, AI, Physics for games, Game Streaming, … • IFIP Hlavacs – Combining Co-Routines and Functions into a Job System - CppCon 2021 3 / 39 Creating Game Engines with C++ • Vienna Game Job System + • Graphics API Abstraction Layer + • Vienna Entity Component Combining Co-Routines and Functions into a Job System - CppCon 2021 26 / 39 The Promise API in VGJS template Combining Co-Routines and Functions into a Job System>90000 students • Entertainment Computing Research Group • Efficiency and performance of game engines, AI, networking, VR … • Teaching: 3D Graphics, AI, Physics for games, Game Streaming, … • IFIP Hlavacs – Combining Co-Routines and Functions into a Job System - CppCon 2021 3 / 39 Creating Game Engines with C++ • Vienna Game Job System + • Graphics API Abstraction Layer + • Vienna Entity Component Combining Co-Routines and Functions into a Job System - CppCon 2021 26 / 39 The Promise API in VGJS template- class Coro_promise : public Coro_promise_base { protected: //… public: Coro_promise() 0 码力 | 39 页 | 1.23 MB | 6 月前3
 Things Happening in SG14overloading based on constexpr arguments • Motivating example: template Things Happening in SG14overloading based on constexpr arguments • Motivating example: template- string MyFormat(constexpr const char*, T&&); // A template - string MyFormat(const char*, T&&); // B syntax): template - struct Facto { // Ok: N known at compile-time static_assert(N >= 0, $"{N} is negative"); enum : unsigned long long { value = N * Facto - ::value }; }; template <> compile-time to allow for designs that avoid dynamic memory allocation • Example (strawman syntax): template - std::function - make_func(F f) { // only compiles if construction of a function 0 码力 | 148 页 | 1009.97 KB | 6 月前3
 Heterogeneous Modern C++ with SYCL 2020Standard C++ Application Code C++ Libraries ML Frameworks C++ Template Libraries C++ Template Libraries C++ Template Libraries SYCL Compiler CPU Compiler CPU One-MKL One-DNN OneDPC frameworks can be directly compiled and accelerated SYCL is ideal for accelerating larger C++-based engines and applications with performance portability C++ Kernel Fusion can give better performance Efficient parallel operations between work items • Class template argument deduction (CTAD) and template deduction guides • Simplified class template instantiation • Simplified use of Accessors with a built-in0 码力 | 114 页 | 7.94 MB | 6 月前3 Heterogeneous Modern C++ with SYCL 2020Standard C++ Application Code C++ Libraries ML Frameworks C++ Template Libraries C++ Template Libraries C++ Template Libraries SYCL Compiler CPU Compiler CPU One-MKL One-DNN OneDPC frameworks can be directly compiled and accelerated SYCL is ideal for accelerating larger C++-based engines and applications with performance portability C++ Kernel Fusion can give better performance Efficient parallel operations between work items • Class template argument deduction (CTAD) and template deduction guides • Simplified class template instantiation • Simplified use of Accessors with a built-in0 码力 | 114 页 | 7.94 MB | 6 月前3
 Plug-in Based Software Architecture for Roboticsapplication restart 8Some popular C++ projects that use plugins 9 ● Audio editing software ● Game Engines ● Image editing software ● Text Editors and IDEDesigning the components of the plugin architecture stringifies the type 43registerPlugin is a free function in ClassLoader W Register the plugin template Plug-in Based Software Architecture for Roboticsapplication restart 8Some popular C++ projects that use plugins 9 ● Audio editing software ● Game Engines ● Image editing software ● Text Editors and IDEDesigning the components of the plugin architecture stringifies the type 43registerPlugin is a free function in ClassLoader W Register the plugin template- std::unique_ptr - registerPlugin(const std::string& the factory functions (i.e.) to create and destroy instance of the Derived class. MetaObject template - class MetaObject { public: MetaObject(const std::string & class_name 0 码力 | 75 页 | 2.40 MB | 6 月前3
 Cache-Friendly Design in Robot Path Planningframeworks around robot systems Navigation and perception systems 4About Me Other interests: Game engines Meta-programming 5Robot path planning 6Robot path planning Path planning 7Path planning How we need? 74What do we need? The search algorithm! 75Here is Dijkstra's algorithm as C++ code template Cache-Friendly Design in Robot Path Planningframeworks around robot systems Navigation and perception systems 4About Me Other interests: Game engines Meta-programming 5Robot path planning 6Robot path planning Path planning 7Path planning How we need? 74What do we need? The search algorithm! 75Here is Dijkstra's algorithm as C++ code template- bool search(C& ctx, const G& graph, VertexID start, VertexID goal) 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 76Here is Dijkstra's algorithm as C++ code template - bool search(C& ctx, const G& graph, VertexID start, VertexID goal) 0 码力 | 216 页 | 10.68 MB | 6 月前3
 Just-in-Time Compilation - J F Bastien - CppCon 2020is correct to be secure.While the concept of a compiler producing incorrect code is not new, JiT engines raise the stakes by performing this compilation at runtime while potentially under the influence compiler optimizing away a security check inserted by a developer. One concern with complex JiT engines is a compiler producing incorrect code at runtime through either a miscalculation of code locations Compilers — 2011 (read)While the concept of a compiler producing incorrect code is not new, JiT engines raise the stakes by performing this compilation at runtime while potentially under the influence0 码力 | 111 页 | 3.98 MB | 6 月前3 Just-in-Time Compilation - J F Bastien - CppCon 2020is correct to be secure.While the concept of a compiler producing incorrect code is not new, JiT engines raise the stakes by performing this compilation at runtime while potentially under the influence compiler optimizing away a security check inserted by a developer. One concern with complex JiT engines is a compiler producing incorrect code at runtime through either a miscalculation of code locations Compilers — 2011 (read)While the concept of a compiler producing incorrect code is not new, JiT engines raise the stakes by performing this compilation at runtime while potentially under the influence0 码力 | 111 页 | 3.98 MB | 6 月前3
 Leveraging the Power of C++ for Efficient Machine Learning on Embedded Devicesthen use that knowledge to make predictions ◮ Applications: ◮ Computer vision ◮ Medicine ◮ Search engines 6 / 50Embedded devices ◮ Computing devices designed to perform specific tasks within larger systems0 码力 | 51 页 | 1.78 MB | 6 月前3 Leveraging the Power of C++ for Efficient Machine Learning on Embedded Devicesthen use that knowledge to make predictions ◮ Applications: ◮ Computer vision ◮ Medicine ◮ Search engines 6 / 50Embedded devices ◮ Computing devices designed to perform specific tasks within larger systems0 码力 | 51 页 | 1.78 MB | 6 月前3
共 293 条
- 1
- 2
- 3
- 4
- 5
- 6
- 30
相关搜索词
 TemplateMetaprogrammingTypeTraitsLessMetaProgrammingManyWaystoKillanOrcorHeroCombiningCoRoutinesandFunctionsintoJobSystemThingsHappeninginSG14HeterogeneousModernC++withSYCL2020PlugBasedSoftwareArchitectureforRoboticsCacheFriendlyDesignRobotPathPlanningJustTimeCompilationBastienCppConLeveragingthePowerofEfficientMachineLearningonEmbeddedDevices














