Victor Ciura


Victor Ciura is a Senior Software Engineer at CAPHYON and Technical Lead on the Advanced Installer team. Since 2005, he has been designing and implementing several core components and libraries of Advanced Installer.

He’s a regular guest at the Computer Science Department of his Alma Mater, University of Craiova, where he gives student lectures & workshops on “Using C++/STL for Competitive Programming and Software Development”.

Currently, he spends most of his time working with his team on improving and extending the repackaging and virtualization technologies in Advanced Installer IDE, helping clients migrate their traditional desktop apps to the modern Windows application format: MSIX.

One of his “hobbies” is tidying-up and modernizing (C++17) the aging codebase of Advanced Installer and has been known to build tools that help this process: Clang Power Tools.

More details: @ciura_victor &



A Short Life span<> For a Regular Mess (2019)

By now you probably heard about “Regular Types and Why Do I Care” :)

This would be Part 2 of the journey we’ll take together, where we get a chance to explore std::span through our Regular lens. Don’t worry if you’ve missed Part 1; we’ll have plenty of time to revisit the important bits, as we prepare to span our grasp into C++20.

Regular is not exactly a new concept. If we reflect back on STL and its design principles, as best described by Alexander Stepanov in his “Fundamentals of Generic Programming” paper, we see that regular types naturally appear as necessary foundational concepts in programming. Why do we need to bother with such taxonomies? Because STL assumes such properties about the types it deals with and imposes such conceptual requirements for its data structures and algorithms to work properly. C++20 Concepts are based on precisely defined foundational type requirements such as Semiregular, Regular, EqualityComparable, etc.

Recent STL additions such as std::string_view, std::reference_wrapper, std::optional, as well as new incoming types for C++20 like std::span or std::function_ref raise new questions regarding values types, reference types and non-owning “borrow” types. Designing and implementing regular types is crucial in everyday programming, not just library design. Properly constraining types and function prototypes will result in intuitive usage; conversely, breaking subtle contracts for functions and algorithms will result in unexpected behavior for the caller.

This talk will explore the relation between Regular types (and other concepts) and new STL additions like std::span with examples, common pitfalls, and guidance.


Status quo: clang-tidy & AddressSanitizer on Windows (2019)

Clang-tidy is the go-to assistant for most C++ programmers looking to improve their code. If you set out to modernize your aging code base and find hidden bugs along the way, clang-tidy is your friend. My team brought all the clang-tidy magic to Visual Studio C++ developers with an open-source Visual Studio extension called “Clang Power Tools”. This helped tens of thousands of developers leverage its powers to improve their projects, regardless of their compiler of choice for building their applications.

Clang-tidy comes packed with hundreds of built-in checks: best-practice, fixits, and static analysis for potential risks. Most of them are extremely valuable in real-world code, but there are several cases where you might need to run custom checks/transformations for your project. You will now get a crash course in writing your own tidy check/fix-it from scratch.

You think static analysis is great? Wait until you try dynamic/runtime analysis! After years of improvements and successes for Clang and GCC users, AddressSanitizer (ASan) is finally coming to Windows, in Visual Studio 2019. Let's take an overview of how this experience is going to be for MSVC projects.