Boost logo

Boost :

Subject: [boost] [type_traits] A partial implementation of boost::is_constructible
From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2016-02-19 02:46:50

I filed a ticket about a potential improvement of type trait

I am solving the following problem. I have a one-argument perfect
forwarding explicit constructor and want to constrain it only to the cases
when T is constructible from U:

template <typename T>
struct optional
  template <typename U>
  explicit optional(U&& v, ENABLE_IF(is_constructible<T, U&&>))

I cannot afford to use the "fallback" implementation of
boost::is_constructible (the one that forwards to is_convertible) because I
would be constraint my constructor too much: I would rather leave it

I do not need the full implementation of is_constructible (that would need
variadic templates) because I am only using the two-argument version (and I
suppose my problem is not isolated).

I would like a partial implementation of is_constructible that works
correctly for two arguments only; and a macro that allows me to test if it
is available.

I suspect that this is the common case that you use only the two-argument
version, and implementing only this would handle a quite a big number of
all the use cases. Is it something that fits into the library scope, or do
is it something I would have to implement myself?


Boost list run by bdawes at, gregod at, cpdaniel at, john at