Building Applications with Qt and boost

I'm starting a series on my blog and youtube channel, about building an application in C++:

Building Applications with Qt and boost

by Jens Weller

From the article:

This is the start of a series of posts, in which I'll try to document my weekly work on a new application, build with Qt and boost. This first post is rather short, but I'd quickly try to give you an overview, why I use both Qt and boost in the same application. Regarding Qt, I wrote an introduction a two years ago, also for boost, there is an excellent website/tutorial about boost by Boris Schäling (buy his book! wink). This series is not meant as a general introduction, yet I try to show you how and what I use of Qt and boost.

CppCon 2015 program is available: 100+ talks, all new

cppcon-054.PNGThe CppCon 2015 program has been posted! A few additional well-known speakers will also be announced soon for the remaining plenary sessions, but the majority of the program is now set: After the opening keynote by Bjarne Stroustrup on "Writing Good C++14," once again there are 100+ top-quality talks in 6 tracks all week long at this year's premier C++ festival, presented by over 80 speakers from around the world.

Note that there are no repeats -- all of the 100+ talks are new since last year. (If you missed last year's talks, you can watch them for free online on YouTube and Channel 9.) This year the program committee had even more submissions than last time, nearly twice as many as could be accepted. Even though this meant turning down lots of very good talk proposals simply for lack of room, the good news is that's because there was so much even stronger material, and this year's program is packed with the very best topics and content on C++ available this year. Register now for September 20-25, 2015!

Here's the announcement:

CppCon 2015 Program Available

The CppCon 2015 Program is now (mostly) available with talk titles, abstracts, and speakers. The program contains over 100 one-hour sessions by over 80 speakers including many speakers returning from last year’s very successful program as well as many new voices. Not all sessions are announced yet, but we have announced our opening keynote by C++ creator Bjarne Stroustrup on Writing Good C++14.

Finally, we would like to thank the program committee, the speakers on the program, and the many more who proposed talks which we unfortunately just couldn’t squeeze in this year. Thank you for your hard work and enthusiastic support for this year’s program!

CppCon 2014 sqlpp11, An SQL Library Worthy Of Modern C++--Roland Bock

Have you registered for CppCon 2015 in September? Don’t delay – Registration is open now.

While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2014 for you to enjoy. Here is today’s feature:

sqlpp11, An SQL Library Worthy Of Modern C++

by Roland Bock

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

SQL and C++ are both strongly typed languages. They should play well together. But most C/C++ interfaces to SQL databases are string based. They force the developer to effectively hide the SQL types, names and expression structures from the compiler. This defers the validation of SQL expressions until runtime, i.e. unit tests or even production. And the strings might even be vendor specific, because different databases expect different dialects of SQL in those strings.

That feels wrong. Modern C++ can do better.

This talk gives an introduction to sqlpp11, a templated embedded domain specific language for SQL in C++. It allows you to build type-safe SQL expressions with type-safe results, all of which can be verified at compile time, long before your code enters unit tests or even production.

In addition to its obvious use with relational databases, sqlpp11 can also serve as an SQL frontend for all kinds of data sources: Since sqlpp11 offers complete SQL expression trees even at compile time, it isn't hard to apply SQL expressions to std::vector or std::map for instance, or streams, or XML, or JSON, you name it. With your help, sqlpp11 could become for C++ what LINQ is for C#.

std::shared_ptr's secret constructor -- Anthony Williams

std::shared_ptr has a secret: the aliasing constructor, that most users don't even know exists, but which is surprisingly useful. 

std::shared_ptr's secret constructor

by Anthony Williams

From the article:

What does this secret constructor do for us? It allows us to construct a new shared_ptr instance that shares ownership with another shared_ptr, but which has a different pointer value...

 

 

boost::variant and a general, generic visitor class

Starting a new project with boost::variant, I got into thinking about a general generic visitor for boost::variant...

boost::variant and a general, generic visitor class

by Jens Weller

From the article:

So, I started a new project, and I do use boost::variant to be able to stick otherwise unrelated classes into the same container. Actually a tree, but that doesn't matter here. With boost::variant, you simply derive your visitor class from the static_visitor class, which lets you visit the types in a boost::variant via the call operator. When you want to do always the same for all types, you simply can add a template method version of the call operator...

CppCon 2014 C++ Memory Model Meets High-Update-Rate Data Structures--Paul E. McKenney

Have you registered for CppCon 2015 in September? Don’t delay – Registration is open now.

While we wait for this year’s event, we’re featuring videos of some of the 100+ talks from CppCon 2014 for you to enjoy. Here is today’s feature:

C++ Memory Model Meets High-Update-Rate Data Structures

by Paul E. McKenney

(watch on YouTube) (watch on Channel 9)

Summary of the talk:

Highly performant and scalable techniques such as RCU and hazard pointers have been quite successful in read-mostly situations. However, there do come times when updates are necessary. It would be convenient if there was some general update-side counterpart to these techniques, but sadly there is not yet any such thing. Nevertheless, there are a number of specialized update-side techniques whose performance and scalability rival those of RCU and hazard pointers. This talk will discuss several of them, one of which is a solution to a challenge to the speaker at the 2014 Issaquah C++ standards committee meeting. This talk will also provide an outlook into the future of low-overhead scalable updates.

Time Zone Database Parser -- Howard Hinnant

This page fully documents a library to handle time zones in C++11 and C++14.

The library documentation

by Howard Hinnant

From the article:

Introduction

I had just completed writing date, which is a library for extending <chrono> into the realm of calendars, and I was looking around for the most challenging date time problem I could find with which I could demonstrate the power of this new library. "I know," I said to myself, "I'll handle all the world's time zones, and maybe even leap seconds!" Thus began my journey into a rabbit hole which I knew existed, but had never truly appreciated the intricacies of.

This library adds timezone and leap second support to this date library. This is a separate library from date because many clients of date do not need timezone nor leap second support, and this support does not come for free (though the cost is quite reasonable).

This library is a complete parser of the IANA Time Zone Database. This database contains timezone information that represents the history of local time for many representative locations around the globe. It is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight-saving rules. The database also maintains a list of leap seconds from 1972 through the present.

The IANA Time Zone Database contains four specific types of data:

Zone: A geographic location with a human-readable name (e.g. "America/New_York") which specifies the offset from UTC and an abbreviation for the zone. This data includes daylight saving rules, if applicable, for the zone. This data is not only the rules currently in effect for the region, but also includes specifications dating back to at least 1970, and in most cases dating back to the mid 1800's (when uniform time was first introduced across regions larger than individual towns and cities).

Rule: A specification for a single daylight-saving rule. This helps implement and consolidate the specifications of Zones.

Link: This is an alternative name for a Zone.

Leap: The date of the insertion of a leap second.

The library documented herein provides access to all of this data, and offers efficient and convenient ways to compute with it. And this is all done based on the date library, which in turn is based on the C++11/14 <chrono> library. So once you've learned those fundamental libraries, the learning curve for this library is greatly eased.

A date and time library for use with C++11 and C++14 -- Howard Hinnant

This paper fully documents a date and time library for use with C++11 and C++14.

Library documentation:

by Howard Hinnant

From the article:

Implementation

This entire library is implemented in a single header: date.h and is open source (with generous open source terms — not generous enough? Contact me, I'm flexible).

It uses the algorithms from chrono-Compatible Low-Level Date Algorithms. If you want detailed explanations of the algorithms, go there.

It performs best with C++14, which has vastly improved constexpr rules. However, the library will auto-adopt to C++11, sacrificing several constexpr declarations. In C++11, this will effectively transfer some computations that should be done at compile-time to run-time. Porting to C++98/03 has not been attempted.

Overview

This library builds date and date/time support on top of the <chrono> library. However it does not support timezones nor leap seconds. A separate library is provided, built on top of this one, for timezone and leap second support. Thus you only pay for such support if you need it.

SourceMeter for C/C++ with open-source SonarQube plugin released

FrontEndART has release a new version of their SourceMeter.

SourceMeter 7.0 released with support for C/C++

by FrontEndART team

From the article:

Most important product characteristics of SourceMeter:

  • Platform-independent command line tools
  • Transparent integration into build processes
  • Coding issue detection
  • Clone detection (copy-pasted source code fragments) extended with clone tracking and "clone smells"
  • Metrics calculation at component, file, namespace, class, function and method levels
  • C++14 support (almost complete, based on EDG front-end)
  • SonarQube plug-in

Online demo