Equal behavior with or without support for JavaScript or Ajax,
as far as possible, by using graceful degradation or progressive
enhancement.

Efficient rendering and (sub-) millisecond latency.

Integrated Unicode support and pervasive localization.

Support for browser history navigation (back/forward buttons and
bookmarks), clean URLs with HTML5 History if available, and
search engine optimization with a unified behavior for plain HTML
or Ajax sessions.

Based on event-driven async I/O: sessions are not
tied to threads, and neither do open connections block threads.
Instead, threads are used only to improve concurrent request
handling (or for reentrant event loops).

Not vulnerable to Cross-site Request Forgery (CSRF) because
cookies for session tracking are optional, and even when used, they
are never solely relied on for requests that trigger event handling
code.

Not vulnerable to breaking the application logic by skipping to
a particular URL, since only those events exposed in the interface
can be triggered.

Session hijacking mitigation and risk prevention

DoS mitigation

A built-in authentication module implements best practices for
authentication, and supports third party identity providers using
OAuth 2.0, and (later) OpenID Connect

Object Relational Mapping library

Wt comes with Wt::Dbo, a self-contained library which implements
Object-Relational mapping, and thus a convenient way to interact with
SQL databases from C++. Although features like optimistic concurrency
control make this an ideal technology for a database driven web
application (and it provides good integration with Wt's MVC classes),
the library can also be used for other applications, and does not
depend on Wt.
The ORM library (see also this
tutorial) has the following features:

No code generation, no macro hacks, no XML configuration, just
modern C++!

Uses a templated visitor pattern which requires a single
template method to provide the mapping: DRY and as efficient as
conceivable!

You can indicate surrogate auto-incremental keys or map natural
keys of any C++ type, which may also be composite (i.e. require more
than one database field).

Flexible querying which can query individual fields, objects, or
tuples of any these (using Boost.Tuple).

Use a single connection or share connection pools between
multiple sessions from which connections are used only during an
active transaction.

Comes with Sqlite3, Firebird, MariaDB/MySQL and PostgreSQL
backends, and an Oracle backend is also available on request.

Testing

With Wt, event handling code constructs and manipulates a widget tree,
which can easily be inspected by test code. Therefore, a test
environment allows your application to be instantiated and events
to be simulated in absence of a browser, short-cutting the underlying
request/response cycle that would otherwise require a simulated browser.

Deployment

The library abstracts different deployment options as connectors
libraries, which connect Wt with the outer world. Switching deployment
option is a matter of (re)linking to one of these connector libraries!