1 
2 // Copyright (C) 2009-2012 Lorenzo Caminiti
3 // Distributed under the Boost Software License, Version 1.0
4 // (see accompanying file LICENSE_1_0.txt or a copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 // Home at http://www.boost.org/libs/local_function
7 
8 #ifndef ADDABLE_HPP_
9 #define ADDABLE_HPP_
10 
11 #include <boost/concept_check.hpp>
12 
13 template<typename T>
14 struct Addable { // User-defined concept.
BOOST_CONCEPT_USAGEAddable15     BOOST_CONCEPT_USAGE(Addable) {
16         return_type(x + y); // Check addition `T operator+(T x, T y)`.
17     }
18 
19 private:
return_typeAddable20     void return_type(T) {} // Implementation (required for some linkers).
21     static T const& x;
22     static T const& y;
23 };
24 
25 #endif // #include guard
26 
27