Lumiera  0.pre.03
»edit your freedom«
is_narrowingInit< SRC, TAR > Struct Template Reference

#include "lib/meta/trait.hpp"

Description

template<typename SRC, typename TAR>
struct lib::meta::is_narrowingInit< SRC, TAR >

temporary workaround for GCC [Bug-63723], necessary until CGG-5

Remarks
The problem is that GCC emits a warning on narrowing conversion, instead of letting the SFINAE substitution fail. This can be considered questionable behaviour, since the usual implementation of a is_convertible trait uses initialisation from a brace enclosed list, where C++11 prohibits narrowing conversions. Now the problem is, that we'll use such traits checks to remove such impossble cases from generated trampoline tables or visitor double dispatch implementations. Thus, for one we get lots of warnings at that point when generating those trampoline tables (at initialisation), while it is not clear we'll trigger those cases, and, when we do, we'll get narrowing conversions in a context where we're unable to cope with them or protect ourselves against spurious conversions. What follows is a quick-n-dirty hack to remove such unwanted conversions.

Definition at line 443 of file trait.hpp.

+ Inheritance diagram for is_narrowingInit< SRC, TAR >:
+ Collaboration diagram for is_narrowingInit< SRC, TAR >:

The documentation for this struct was generated from the following file: