Boost logo

Boost :

Subject: Re: [boost] C++11 Metaprogramming
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-04-05 10:25:56

on Wed Apr 04 2012, Sebastian Redl <> wrote:

> On 03.04.2012, at 19:20, Dave Abrahams wrote:
>> on Sun Apr 01 2012, Olivier Grant <> wrote:
>>> Hi Dave,
>>> That's going to be an interesting presentation. Here is a small piece of
>>> code that allows to generate a traits structure that determines if a call
>>> can be made on an object with a specific function name and specific
>>> arguments and return value :
>>> (compile with : g++ -std=c++0x -Wall -o has_callable has_callable.cpp)
>>> This was not possible in C++03, or at least not completely possible, and
>>> the code is much simpler with C++11 for the cases where it was possible as
>>> well.
>> Yep, I see. However, I also have some questions about the utility of
>> such traits. As I mentioned to Mathias, structural matching is always
>> susceptible to false positives. What do you use this for?
> I have used something like this to define a generic Set concept (bool
> contains(const Set& set, const Value& value)). Since in this concept,
> every normal value represents its own singleton set, I have used
> is_callable to separate out functions and function-like objects that
> return bool.

Hm. Can you describe this concept more fully, e.g. with a requirements
table or ConceptGCC syntax?

Dave Abrahams
BoostPro Computing

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