diff --git a/doc/autodoc.xml b/doc/autodoc.xml index 69f8bfe..0055ec5 100644 --- a/doc/autodoc.xml +++ b/doc/autodoc.xml @@ -1,7 +1,7 @@ -
+
-unspecified +unspecified @@ -33,10 +33,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -68,10 +68,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -103,10 +103,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -173,10 +173,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -1035,10 +1035,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -1070,10 +1070,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -1140,10 +1140,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified @@ -1210,10 +1210,10 @@
-
+
Barrett Adair 2015 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -unspecified +unspecified diff --git a/doc/callable_traits.qbk b/doc/callable_traits.qbk index 96d3391..89c0c59 100644 --- a/doc/callable_traits.qbk +++ b/doc/callable_traits.qbk @@ -57,7 +57,7 @@ The use cases for [library_name] are closely related to those of [@http://www.bo # [library_name]' template aliases and `constexpr` `std::integral_constant` functions are preferable to `typename foo::type` and `foo::value` # [library_name] offers a familar, consistent interface for the synthesis and decomposition of callable types - * e.g. `remove_const_qualifier` parallels `std::remove_const` + * e.g. `remove_function_const` parallels `std::remove_const` # universal references are accepted everywhere, so you don't need to worry about using `std::remove_reference` first @@ -110,12 +110,12 @@ The simplest way to use [library_name] is to include the main header file: [library_name] interface is also broken down by trait into individual header files. To use only the traits you need, include one or more of the following headers, listed alphabetically: -[include_header [link callable_traits.ref_add_const_qualifier add_const_qualifier]] -[include_header [link callable_traits.ref_add_cv_qualifiers add_cv_qualifiers]] -[include_header [link callable_traits.ref_add_lvalue_qualifier add_lvalue_qualifier]] -[include_header [link callable_traits.ref_add_rvalue_qualifier add_rvalue_qualifier]] +[include_header [link callable_traits.ref_add_function_const add_function_const]] +[include_header [link callable_traits.ref_add_function_cv add_function_cv]] +[include_header [link callable_traits.ref_add_function_lvalue add_function_lvalue]] +[include_header [link callable_traits.ref_add_function_rvalue add_function_rvalue]] [include_header [link callable_traits.ref_add_varargs add_varargs]] -[include_header [link callable_traits.ref_add_volatile_qualifier add_volatile_qualifier]] +[include_header [link callable_traits.ref_add_function_volatile add_function_volatile]] [include_header [link callable_traits.ref_apply_member_pointer apply_member_pointer]] [include_header [link callable_traits.ref_apply_return apply_return]] [include_header [link callable_traits.ref_arg_at arg_at]] @@ -137,42 +137,42 @@ The simplest way to use [library_name] is to include the main header file: [include_header [link callable_traits.ref_max_arity max_arity]] [include_header [link callable_traits.ref_min_arity min_arity]] [include_header [link callable_traits.ref_qualified_function_type qualified_function_type]] -[include_header [link callable_traits.ref_remove_const_qualifier remove_const_qualifier]] -[include_header [link callable_traits.ref_remove_cv_qualifiers remove_cv_qualifiers]] +[include_header [link callable_traits.ref_remove_function_const remove_function_const]] +[include_header [link callable_traits.ref_remove_function_cv remove_function_cv]] [include_header [link callable_traits.ref_remove_member_pointer remove_member_pointer]] -[include_header [link callable_traits.ref_remove_reference_qualifier remove_reference_qualifier]] +[include_header [link callable_traits.ref_remove_function_reference remove_function_reference]] [include_header [link callable_traits.ref_remove_varargs remove_varargs]] -[include_header [link callable_traits.ref_remove_volatile_qualifier remove_volatile_qualifier]] +[include_header [link callable_traits.ref_remove_function_volatile remove_function_volatile]] [include_header [link callable_traits.ref_result_of result_of]] [endsect] -[section:ref_add_const_qualifier add_const_qualifier] +[section:ref_add_function_const add_function_const] TODO [heading Example] -[import ../example/add_const_qualifier.cpp] -[add_const_qualifier] +[import ../example/add_function_const.cpp] +[add_function_const] [endsect] -[section:ref_add_cv_qualifiers add_cv_qualifiers] +[section:ref_add_function_cv add_function_cv] TODO [heading Example] -[import ../example/add_cv_qualifiers.cpp] -[add_cv_qualifiers] +[import ../example/add_function_cv.cpp] +[add_function_cv] [endsect] -[section:ref_add_lvalue_qualifier add_lvalue_qualifier] +[section:ref_add_function_lvalue add_function_lvalue] TODO -[import ../example/add_lvalue_qualifier.cpp] -[add_lvalue_qualifier] +[import ../example/add_function_lvalue.cpp] +[add_function_lvalue] [endsect] -[section:ref_add_rvalue_qualifier add_rvalue_qualifier] +[section:ref_add_function_rvalue add_function_rvalue] TODO -[import ../example/add_rvalue_qualifier.cpp] -[add_rvalue_qualifier] +[import ../example/add_function_rvalue.cpp] +[add_function_rvalue] [endsect] [section:ref_add_varargs add_varargs] @@ -181,7 +181,7 @@ TODO [add_varargs] [endsect] -[section:ref_add_volatile_qualifier add_volatile_qualifier] +[section:ref_add_function_volatile add_function_volatile] TODO [endsect] @@ -353,18 +353,18 @@ TODO [qualified_function_type] [endsect] -[section:ref_remove_const_qualifier remove_const_qualifier] +[section:ref_remove_function_const remove_function_const] TODO [heading Example] -[/import ../example/remove_const_qualifier.cpp] -[remove_const_qualifier] +[/import ../example/remove_function_const.cpp] +[remove_function_const] [endsect] -[section:ref_remove_cv_qualifiers remove_cv_qualifiers] +[section:ref_remove_function_cv remove_function_cv] TODO [heading Example] -[/import ../example/remove_cv_qualifiers.cpp] -[remove_cv_qualifiers] +[/import ../example/remove_function_cv.cpp] +[remove_function_cv] [endsect] [section:ref_remove_member_pointer remove_member_pointer] @@ -374,11 +374,11 @@ TODO [remove_member_pointer] [endsect] -[section:ref_remove_reference_qualifier remove_reference_qualifier] +[section:ref_remove_function_reference remove_function_reference] TODO [heading Example] -[/import ../example/remove_reference_qualifier.cpp] -[remove_reference_qualifier] +[/import ../example/remove_function_reference.cpp] +[remove_function_reference] [endsect] [section:ref_remove_varargs remove_varargs] @@ -388,11 +388,11 @@ TODO [remove_varargs] [endsect] -[section:ref_remove_volatile_qualifier remove_volatile_qualifier] +[section:ref_remove_function_volatile remove_function_volatile] TODO [heading Example] -[/import ../example/remove_volatile_qualifier.cpp] -[remove_volatile_qualifier] +[/import ../example/remove_function_volatile.cpp] +[remove_function_volatile] [endsect] [section:ref_result_of result_of] diff --git a/doc/html/callable_traits/headers.html b/doc/html/callable_traits/headers.html index ca6af69..df3411b 100644 --- a/doc/html/callable_traits/headers.html +++ b/doc/html/callable_traits/headers.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -39,12 +39,12 @@ of the following headers, listed alphabetically:

- #include<callable_traits/add_const_qualifier.hpp>
- #include<callable_traits/add_cv_qualifiers.hpp>
- #include<callable_traits/add_lvalue_qualifier.hpp>
- #include<callable_traits/add_rvalue_qualifier.hpp>
+ #include<callable_traits/add_function_const.hpp>
+ #include<callable_traits/add_function_cv.hpp>
+ #include<callable_traits/add_function_lvalue.hpp>
+ #include<callable_traits/add_function_rvalue.hpp>
#include<callable_traits/add_varargs.hpp>
- #include<callable_traits/add_volatile_qualifier.hpp>
+ #include<callable_traits/add_function_volatile.hpp>
#include<callable_traits/apply_member_pointer.hpp>
#include<callable_traits/apply_return.hpp>
#include<callable_traits/arg_at.hpp>
@@ -66,12 +66,12 @@ #include<callable_traits/max_arity.hpp>
#include<callable_traits/min_arity.hpp>
#include<callable_traits/qualified_function_type.hpp>
- #include<callable_traits/remove_const_qualifier.hpp>
- #include<callable_traits/remove_cv_qualifiers.hpp>
+ #include<callable_traits/remove_function_const.hpp>
+ #include<callable_traits/remove_function_cv.hpp>
#include<callable_traits/remove_member_pointer.hpp>
- #include<callable_traits/remove_reference_qualifier.hpp>
+ #include<callable_traits/remove_function_reference.hpp>
#include<callable_traits/remove_varargs.hpp>
- #include<callable_traits/remove_volatile_qualifier.hpp>
+ #include<callable_traits/remove_function_volatile.hpp>
#include<callable_traits/result_of.hpp>

@@ -85,7 +85,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_const_qualifier.html b/doc/html/callable_traits/ref_add_const_qualifier.html index f1d24c7..f573f41 100644 --- a/doc/html/callable_traits/ref_add_const_qualifier.html +++ b/doc/html/callable_traits/ref_add_const_qualifier.html @@ -1,13 +1,13 @@ -add_const_qualifier +add_function_const - + @@ -20,21 +20,21 @@

-PrevUpHomeNext +PrevUpHomeNext

TODO

- - Example + + Example

#include <type_traits>
-#include <callable_traits/add_const_qualifier.hpp>
+#include <callable_traits/add_function_const.hpp>
 
 namespace ct = callable_traits;
 
@@ -45,33 +45,33 @@
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() const;
-        using test = ct::add_const_qualifier<pmf>;
+        using test = ct::add_function_const<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_const_qualifier doesn't change anything when
+        // add_function_const doesn't change anything when
         // the function type is already const.
         using pmf = void(foo::*)() const &&;
         using expect = void(foo::*)() const &&;
-        using test = ct::add_const_qualifier<pmf>;
+        using test = ct::add_function_const<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
         using pmf = void(foo::*)() volatile &;
         using expect = void(foo::*)() const volatile &;
-        using test = ct::add_const_qualifier<pmf>;
+        using test = ct::add_function_const<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_const_qualifier can also be used with "abominable"
+        // add_function_const can also be used with "abominable"
         // function types.
         using f = void();
         using expect = void() const;
-        using test = ct::add_const_qualifier<f>;
+        using test = ct::add_function_const<f>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_const_qualifier has no affect on function pointers,
+        // add_function_const has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = void(*)();
         using expect = void(*)();
-        using test = ct::add_const_qualifier<f>;
+        using test = ct::add_function_const<f>;
         static_assert(std::is_same<test, expect>::value, "");
     }
 }
@@ -87,7 +87,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_cv_qualifiers.html b/doc/html/callable_traits/ref_add_cv_qualifiers.html index 3c22590..f92f63b 100644 --- a/doc/html/callable_traits/ref_add_cv_qualifiers.html +++ b/doc/html/callable_traits/ref_add_cv_qualifiers.html @@ -1,13 +1,13 @@ -add_cv_qualifiers +add_function_cv - - + + @@ -20,21 +20,21 @@

-PrevUpHomeNext +PrevUpHomeNext

TODO

- - Example + + Example

#include <type_traits>
-#include <callable_traits/add_cv_qualifiers.hpp>
+#include <callable_traits/add_function_cv.hpp>
 
 namespace ct = callable_traits;
 
@@ -45,33 +45,33 @@
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() const volatile;
-        using test = ct::add_cv_qualifiers<pmf>;
+        using test = ct::add_function_cv<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_cv_qualifiers doesn't change anything when
+        // add_function_cv doesn't change anything when
         // the function type is already cv-qualified.
         using pmf = void(foo::*)() const volatile &&;
         using expect = void(foo::*)() const volatile &&;
-        using test = ct::add_cv_qualifiers<pmf>;
+        using test = ct::add_function_cv<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
         using pmf = void(foo::*)() volatile &;
         using expect = void(foo::*)() const volatile &;
-        using test = ct::add_cv_qualifiers<pmf>;
+        using test = ct::add_function_cv<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_cv_qualifiers can also be used with "abominable"
+        // add_function_cv can also be used with "abominable"
         // function types.
         using f = void();
         using expect = void() const volatile;
-        using test = ct::add_cv_qualifiers<f>;
+        using test = ct::add_function_cv<f>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_cv_qualifiers has no affect on function pointers,
+        // add_function_cv has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = void(&)();
         using expect = void(&)();
-        using test = ct::add_cv_qualifiers<f>;
+        using test = ct::add_function_cv<f>;
         static_assert(std::is_same<test, expect>::value, "");
     }
 }
@@ -87,7 +87,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_function_const.html b/doc/html/callable_traits/ref_add_function_const.html new file mode 100644 index 0000000..f573f41 --- /dev/null +++ b/doc/html/callable_traits/ref_add_function_const.html @@ -0,0 +1,93 @@ + + + +add_function_const + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+
#include <type_traits>
+#include <callable_traits/add_function_const.hpp>
+
+namespace ct = callable_traits;
+
+struct foo {};
+
+int main() {
+
+    {
+        using pmf = void(foo::*)();
+        using expect = void(foo::*)() const;
+        using test = ct::add_function_const<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_const doesn't change anything when
+        // the function type is already const.
+        using pmf = void(foo::*)() const &&;
+        using expect = void(foo::*)() const &&;
+        using test = ct::add_function_const<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        using pmf = void(foo::*)() volatile &;
+        using expect = void(foo::*)() const volatile &;
+        using test = ct::add_function_const<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_const can also be used with "abominable"
+        // function types.
+        using f = void();
+        using expect = void() const;
+        using test = ct::add_function_const<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_const has no affect on function pointers,
+        // function references, function objects, or member data pointers.
+        using f = void(*)();
+        using expect = void(*)();
+        using test = ct::add_function_const<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    }
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_add_function_cv.html b/doc/html/callable_traits/ref_add_function_cv.html new file mode 100644 index 0000000..f92f63b --- /dev/null +++ b/doc/html/callable_traits/ref_add_function_cv.html @@ -0,0 +1,93 @@ + + + +add_function_cv + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+
#include <type_traits>
+#include <callable_traits/add_function_cv.hpp>
+
+namespace ct = callable_traits;
+
+struct foo {};
+
+int main() {
+
+    {
+        using pmf = void(foo::*)();
+        using expect = void(foo::*)() const volatile;
+        using test = ct::add_function_cv<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_cv doesn't change anything when
+        // the function type is already cv-qualified.
+        using pmf = void(foo::*)() const volatile &&;
+        using expect = void(foo::*)() const volatile &&;
+        using test = ct::add_function_cv<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        using pmf = void(foo::*)() volatile &;
+        using expect = void(foo::*)() const volatile &;
+        using test = ct::add_function_cv<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_cv can also be used with "abominable"
+        // function types.
+        using f = void();
+        using expect = void() const volatile;
+        using test = ct::add_function_cv<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_cv has no affect on function pointers,
+        // function references, function objects, or member data pointers.
+        using f = void(&)();
+        using expect = void(&)();
+        using test = ct::add_function_cv<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    }
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_add_function_lvalue.html b/doc/html/callable_traits/ref_add_function_lvalue.html new file mode 100644 index 0000000..3862624 --- /dev/null +++ b/doc/html/callable_traits/ref_add_function_lvalue.html @@ -0,0 +1,92 @@ + + + +add_function_lvalue + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+
#include <type_traits>
+#include <callable_traits/add_function_lvalue.hpp>
+
+namespace ct = callable_traits;
+
+struct foo {};
+
+int main() {
+
+    {
+        using pmf = void(foo::*)();
+        using expect = void(foo::*)() &;
+        using test = ct::add_function_lvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_lvalue doesn't change anything when
+        // the function type already has an lvalue qualifier.
+        using pmf = void(foo::*)() &;
+        using expect = void(foo::*)() &;
+        using test = ct::add_function_lvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_lvalue models C++11 reference collapsing
+        // rules, so that adding an lvalue qualifier to an
+        // rvalue-qualified type will force the lvalue.
+        using pmf = void(foo::*)() &&;
+        using expect = void(foo::*)() &;
+        using test = ct::add_function_lvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_lvalue can also be used to create "abominable"
+        // function types.
+        using f = void();
+        using expect = void() &;
+        using test = ct::add_function_lvalue<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_lvalue has no affect on function pointers,
+        // function references, function objects, or member data pointers.
+        using f = int foo::*;
+        using expect = int foo::*;
+        using test = ct::add_function_lvalue<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    }
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_add_function_rvalue.html b/doc/html/callable_traits/ref_add_function_rvalue.html new file mode 100644 index 0000000..1fa7ddd --- /dev/null +++ b/doc/html/callable_traits/ref_add_function_rvalue.html @@ -0,0 +1,93 @@ + + + +add_function_rvalue + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+
#include <type_traits>
+#include <callable_traits/add_function_rvalue.hpp>
+
+namespace ct = callable_traits;
+
+struct foo {};
+
+int main() {
+
+    {
+        using pmf = void(foo::*)();
+        using expect = void(foo::*)() &&;
+        using test = ct::add_function_rvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_rvalue doesn't change anything when
+        // the function type already has an rvalue qualifier.
+        using pmf = void(foo::*)() &&;
+        using expect = void(foo::*)() &&;
+        using test = ct::add_function_rvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_rvalue models C++11 reference collapsing
+        // rules, so that adding an rvalue qualifier to an
+        // lvalue-qualified type will not change anything.
+        using pmf = void(foo::*)() const &;
+        using expect = void(foo::*)() const &;
+        using test = ct::add_function_rvalue<pmf>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_rvalue can also be used with "abominable"
+        // function types.
+        using f = void() const;
+        using expect = void() const &&;
+        using test = ct::add_function_rvalue<f>;
+        static_assert(std::is_same<test, expect>::value, "");
+    } {
+        // add_function_rvalue has no affect on function pointers,
+        // function references, function objects, or member data pointers.
+        auto lambda = []{};
+        using lambda_t = decltype(lambda);
+        using expect = lambda_t;
+        using test = ct::add_function_rvalue<lambda_t>;
+        static_assert(std::is_same<test, expect>::value, "");
+    }
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_add_function_volatile.html b/doc/html/callable_traits/ref_add_function_volatile.html new file mode 100644 index 0000000..3daff53 --- /dev/null +++ b/doc/html/callable_traits/ref_add_function_volatile.html @@ -0,0 +1,46 @@ + + + +add_function_volatile + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_add_lvalue_qualifier.html b/doc/html/callable_traits/ref_add_lvalue_qualifier.html index dfd9a70..3862624 100644 --- a/doc/html/callable_traits/ref_add_lvalue_qualifier.html +++ b/doc/html/callable_traits/ref_add_lvalue_qualifier.html @@ -1,13 +1,13 @@ -add_lvalue_qualifier +add_function_lvalue - - + + @@ -20,17 +20,17 @@

-PrevUpHomeNext +PrevUpHomeNext

TODO

#include <type_traits>
-#include <callable_traits/add_lvalue_qualifier.hpp>
+#include <callable_traits/add_function_lvalue.hpp>
 
 namespace ct = callable_traits;
 
@@ -41,36 +41,36 @@
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier<pmf>;
+        using test = ct::add_function_lvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_lvalue_qualifier doesn't change anything when
+        // add_function_lvalue doesn't change anything when
         // the function type already has an lvalue qualifier.
         using pmf = void(foo::*)() &;
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier<pmf>;
+        using test = ct::add_function_lvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_lvalue_qualifier models C++11 reference collapsing
+        // add_function_lvalue models C++11 reference collapsing
         // rules, so that adding an lvalue qualifier to an
         // rvalue-qualified type will force the lvalue.
         using pmf = void(foo::*)() &&;
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier<pmf>;
+        using test = ct::add_function_lvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_lvalue_qualifier can also be used to create "abominable"
+        // add_function_lvalue can also be used to create "abominable"
         // function types.
         using f = void();
         using expect = void() &;
-        using test = ct::add_lvalue_qualifier<f>;
+        using test = ct::add_function_lvalue<f>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_lvalue_qualifier has no affect on function pointers,
+        // add_function_lvalue has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = int foo::*;
         using expect = int foo::*;
-        using test = ct::add_lvalue_qualifier<f>;
+        using test = ct::add_function_lvalue<f>;
         static_assert(std::is_same<test, expect>::value, "");
     }
 }
@@ -86,7 +86,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_rvalue_qualifier.html b/doc/html/callable_traits/ref_add_rvalue_qualifier.html index ed0b791..1fa7ddd 100644 --- a/doc/html/callable_traits/ref_add_rvalue_qualifier.html +++ b/doc/html/callable_traits/ref_add_rvalue_qualifier.html @@ -1,12 +1,12 @@ -add_rvalue_qualifier +add_function_rvalue - + @@ -20,17 +20,17 @@
-PrevUpHomeNext +PrevUpHomeNext

TODO

#include <type_traits>
-#include <callable_traits/add_rvalue_qualifier.hpp>
+#include <callable_traits/add_function_rvalue.hpp>
 
 namespace ct = callable_traits;
 
@@ -41,37 +41,37 @@
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() &&;
-        using test = ct::add_rvalue_qualifier<pmf>;
+        using test = ct::add_function_rvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_rvalue_qualifier doesn't change anything when
+        // add_function_rvalue doesn't change anything when
         // the function type already has an rvalue qualifier.
         using pmf = void(foo::*)() &&;
         using expect = void(foo::*)() &&;
-        using test = ct::add_rvalue_qualifier<pmf>;
+        using test = ct::add_function_rvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_rvalue_qualifier models C++11 reference collapsing
+        // add_function_rvalue models C++11 reference collapsing
         // rules, so that adding an rvalue qualifier to an
         // lvalue-qualified type will not change anything.
         using pmf = void(foo::*)() const &;
         using expect = void(foo::*)() const &;
-        using test = ct::add_rvalue_qualifier<pmf>;
+        using test = ct::add_function_rvalue<pmf>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_rvalue_qualifier can also be used with "abominable"
+        // add_function_rvalue can also be used with "abominable"
         // function types.
         using f = void() const;
         using expect = void() const &&;
-        using test = ct::add_rvalue_qualifier<f>;
+        using test = ct::add_function_rvalue<f>;
         static_assert(std::is_same<test, expect>::value, "");
     } {
-        // add_rvalue_qualifier has no affect on function pointers,
+        // add_function_rvalue has no affect on function pointers,
         // function references, function objects, or member data pointers.
         auto lambda = []{};
         using lambda_t = decltype(lambda);
         using expect = lambda_t;
-        using test = ct::add_rvalue_qualifier<lambda_t>;
+        using test = ct::add_function_rvalue<lambda_t>;
         static_assert(std::is_same<test, expect>::value, "");
     }
 }
@@ -87,7 +87,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_varargs.html b/doc/html/callable_traits/ref_add_varargs.html index e104f37..293c39d 100644 --- a/doc/html/callable_traits/ref_add_varargs.html +++ b/doc/html/callable_traits/ref_add_varargs.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -92,7 +92,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_add_volatile_qualifier.html b/doc/html/callable_traits/ref_add_volatile_qualifier.html index 7a9f0fd..3daff53 100644 --- a/doc/html/callable_traits/ref_add_volatile_qualifier.html +++ b/doc/html/callable_traits/ref_add_volatile_qualifier.html @@ -1,7 +1,7 @@ -add_volatile_qualifier +add_function_volatile @@ -24,7 +24,7 @@

TODO diff --git a/doc/html/callable_traits/ref_apply_member_pointer.html b/doc/html/callable_traits/ref_apply_member_pointer.html index ad18179..5e3c8c7 100644 --- a/doc/html/callable_traits/ref_apply_member_pointer.html +++ b/doc/html/callable_traits/ref_apply_member_pointer.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -70,7 +70,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_qualified_function_type.html b/doc/html/callable_traits/ref_qualified_function_type.html index bb18ef6..eb02053 100644 --- a/doc/html/callable_traits/ref_qualified_function_type.html +++ b/doc/html/callable_traits/ref_qualified_function_type.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,7 +47,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_remove_const_qualifier.html b/doc/html/callable_traits/ref_remove_const_qualifier.html index e7ce1bc..28560cf 100644 --- a/doc/html/callable_traits/ref_remove_const_qualifier.html +++ b/doc/html/callable_traits/ref_remove_const_qualifier.html @@ -1,13 +1,13 @@ -remove_const_qualifier +remove_function_const - + @@ -20,21 +20,21 @@

-PrevUpHomeNext +PrevUpHomeNext

TODO

- - Example + + Example

- [remove_const_qualifier] + [remove_function_const]

@@ -47,7 +47,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_remove_cv_qualifiers.html b/doc/html/callable_traits/ref_remove_cv_qualifiers.html index d716927..e493148 100644 --- a/doc/html/callable_traits/ref_remove_cv_qualifiers.html +++ b/doc/html/callable_traits/ref_remove_cv_qualifiers.html @@ -1,12 +1,12 @@ -remove_cv_qualifiers +remove_function_cv - + @@ -20,21 +20,21 @@
-PrevUpHomeNext +PrevUpHomeNext

TODO

- - Example + + Example

- [remove_cv_qualifiers] + [remove_function_cv]

@@ -47,7 +47,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_remove_function_const.html b/doc/html/callable_traits/ref_remove_function_const.html new file mode 100644 index 0000000..28560cf --- /dev/null +++ b/doc/html/callable_traits/ref_remove_function_const.html @@ -0,0 +1,53 @@ + + + +remove_function_const + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+

+ [remove_function_const] +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_remove_function_cv.html b/doc/html/callable_traits/ref_remove_function_cv.html new file mode 100644 index 0000000..e493148 --- /dev/null +++ b/doc/html/callable_traits/ref_remove_function_cv.html @@ -0,0 +1,53 @@ + + + +remove_function_cv + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+

+ [remove_function_cv] +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_remove_function_reference.html b/doc/html/callable_traits/ref_remove_function_reference.html new file mode 100644 index 0000000..cc3954f --- /dev/null +++ b/doc/html/callable_traits/ref_remove_function_reference.html @@ -0,0 +1,53 @@ + + + +remove_function_reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+

+ [remove_function_reference] +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_remove_function_volatile.html b/doc/html/callable_traits/ref_remove_function_volatile.html new file mode 100644 index 0000000..5f57fa3 --- /dev/null +++ b/doc/html/callable_traits/ref_remove_function_volatile.html @@ -0,0 +1,53 @@ + + + +remove_function_volatile + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ TODO +

+

+ + Example +

+

+ [remove_function_volatile] +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/callable_traits/ref_remove_member_pointer.html b/doc/html/callable_traits/ref_remove_member_pointer.html index 4f2979f..6218fd0 100644 --- a/doc/html/callable_traits/ref_remove_member_pointer.html +++ b/doc/html/callable_traits/ref_remove_member_pointer.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -79,7 +79,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_remove_reference_qualifier.html b/doc/html/callable_traits/ref_remove_reference_qualifier.html index 3778e68..cc3954f 100644 --- a/doc/html/callable_traits/ref_remove_reference_qualifier.html +++ b/doc/html/callable_traits/ref_remove_reference_qualifier.html @@ -1,7 +1,7 @@ -remove_reference_qualifier +remove_function_reference @@ -24,17 +24,17 @@

TODO

- - Example + + Example

- [remove_reference_qualifier] + [remove_function_reference]

diff --git a/doc/html/callable_traits/ref_remove_varargs.html b/doc/html/callable_traits/ref_remove_varargs.html index f0a02b0..98dffd6 100644 --- a/doc/html/callable_traits/ref_remove_varargs.html +++ b/doc/html/callable_traits/ref_remove_varargs.html @@ -6,8 +6,8 @@ - - + +
@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,7 +47,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/callable_traits/ref_remove_volatile_qualifier.html b/doc/html/callable_traits/ref_remove_volatile_qualifier.html index 3e3d7db..5f57fa3 100644 --- a/doc/html/callable_traits/ref_remove_volatile_qualifier.html +++ b/doc/html/callable_traits/ref_remove_volatile_qualifier.html @@ -1,7 +1,7 @@ -remove_volatile_qualifier +remove_function_volatile @@ -24,17 +24,17 @@

TODO

- - Example + + Example

- [remove_volatile_qualifier] + [remove_function_volatile]

diff --git a/doc/html/callable_traits/ref_result_of.html b/doc/html/callable_traits/ref_result_of.html index 64dd91d..6c2e214 100644 --- a/doc/html/callable_traits/ref_result_of.html +++ b/doc/html/callable_traits/ref_result_of.html @@ -6,7 +6,7 @@ - +
@@ -19,7 +19,7 @@

-PrevUpHome +PrevUpHome
@@ -189,12 +189,12 @@ static_assert(std::is_same<pmf, with_const>::value, ""); // Let's remove the const qualifier: - using mutable_pmf = ct::remove_const_qualifier<pmf>; + using mutable_pmf = ct::remove_function_const<pmf>; using without_const = void (foo::*)(int, int&&, const int&, void*) /*no const!*/; static_assert(std::is_same<mutable_pmf, without_const>::value, ""); // Now let's add an rvalue qualifier (&&): - using rvalue_pmf = ct::add_rvalue_qualifier<pmf>; + using rvalue_pmf = ct::add_function_rvalue<pmf>; using with_rvalue = void (foo::*)(int, int&&, const int&, void*) const &&; static_assert(std::is_same<rvalue_pmf, with_rvalue>::value, ""); @@ -318,7 +318,7 @@ CallableTraits offers a familar, consistent interface for the synthesis and decomposition of callable types
  • - e.g. remove_const_qualifier + e.g. remove_function_const parallels std::remove_const
@@ -392,7 +392,8 @@ API, this example might make a bit more sense.

#include <functional>
-#include <callable_traits/callable_traits.hpp>
+#include <callable_traits/function_type.hpp>
+#include <callable_traits/bind.hpp>
 
 namespace example_library {
 
@@ -440,7 +441,7 @@
     }
 }
 
-//client code starts here
+// client code starts here
 #include <cassert>
 
 using namespace example_library;
@@ -459,19 +460,19 @@
 
 int main() {
 
-    //function pointer
+    // function pointer
     auto f = make_function(&add);
     assert(f(99, 1) == 100);
 
-    //function reference
+    // function reference
     f = make_function(add);
     assert(f(99, 1) == 100);
 
-    //member function pointer (bound to object)
+    // member function pointer (bound to object)
     f = make_function(&adder::eval, adder{}, _1, _2);
     assert(f(99, 1) == 100);
 
-    //lambda
+    // lambda
     f = make_function([](int i, int j) {
         return i + j;
     });
diff --git a/doc/html/standalone_HTML.manifest b/doc/html/standalone_HTML.manifest
index 8971a3e..fb4ed81 100644
--- a/doc/html/standalone_HTML.manifest
+++ b/doc/html/standalone_HTML.manifest
@@ -1,11 +1,11 @@
 index.html
 callable_traits/headers.html
-callable_traits/ref_add_const_qualifier.html
-callable_traits/ref_add_cv_qualifiers.html
-callable_traits/ref_add_lvalue_qualifier.html
-callable_traits/ref_add_rvalue_qualifier.html
+callable_traits/ref_add_function_const.html
+callable_traits/ref_add_function_cv.html
+callable_traits/ref_add_function_lvalue.html
+callable_traits/ref_add_function_rvalue.html
 callable_traits/ref_add_varargs.html
-callable_traits/ref_add_volatile_qualifier.html
+callable_traits/ref_add_function_volatile.html
 callable_traits/ref_apply_member_pointer.html
 callable_traits/ref_apply_return.html
 callable_traits/ref_arg_at.html
@@ -27,10 +27,10 @@ callable_traits/ref_is_volatile_qualified.html
 callable_traits/ref_max_arity.html
 callable_traits/ref_min_arity.html
 callable_traits/ref_qualified_function_type.html
-callable_traits/ref_remove_const_qualifier.html
-callable_traits/ref_remove_cv_qualifiers.html
+callable_traits/ref_remove_function_const.html
+callable_traits/ref_remove_function_cv.html
 callable_traits/ref_remove_member_pointer.html
-callable_traits/ref_remove_reference_qualifier.html
+callable_traits/ref_remove_function_reference.html
 callable_traits/ref_remove_varargs.html
-callable_traits/ref_remove_volatile_qualifier.html
+callable_traits/ref_remove_function_volatile.html
 callable_traits/ref_result_of.html
diff --git a/example/add_const_qualifier.cpp b/example/add_function_const.cpp
similarity index 69%
rename from example/add_const_qualifier.cpp
rename to example/add_function_const.cpp
index 24f5eac..389d6a8 100644
--- a/example/add_const_qualifier.cpp
+++ b/example/add_function_const.cpp
@@ -4,9 +4,9 @@ Distributed under the Boost Software License, Version 1.0.
 (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
 ->*/
 
-//[ add_const_qualifier
+//[ add_function_const
 #include 
-#include 
+#include 
 
 namespace ct = callable_traits;
 
@@ -17,33 +17,33 @@ int main() {
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() const;
-        using test = ct::add_const_qualifier;
+        using test = ct::add_function_const;
         static_assert(std::is_same::value, "");
     } {
-        // add_const_qualifier doesn't change anything when
+        // add_function_const doesn't change anything when
         // the function type is already const.
         using pmf = void(foo::*)() const &&;
         using expect = void(foo::*)() const &&;
-        using test = ct::add_const_qualifier;
+        using test = ct::add_function_const;
         static_assert(std::is_same::value, "");
     } {
         using pmf = void(foo::*)() volatile &;
         using expect = void(foo::*)() const volatile &;
-        using test = ct::add_const_qualifier;
+        using test = ct::add_function_const;
         static_assert(std::is_same::value, "");
     } {
-        // add_const_qualifier can also be used with "abominable"
+        // add_function_const can also be used with "abominable"
         // function types.
         using f = void();
         using expect = void() const;
-        using test = ct::add_const_qualifier;
+        using test = ct::add_function_const;
         static_assert(std::is_same::value, "");
     } {
-        // add_const_qualifier has no affect on function pointers,
+        // add_function_const has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = void(*)();
         using expect = void(*)();
-        using test = ct::add_const_qualifier;
+        using test = ct::add_function_const;
         static_assert(std::is_same::value, "");
     }
 }
diff --git a/example/add_cv_qualifiers.cpp b/example/add_function_cv.cpp
similarity index 70%
rename from example/add_cv_qualifiers.cpp
rename to example/add_function_cv.cpp
index 05eac45..6c80078 100644
--- a/example/add_cv_qualifiers.cpp
+++ b/example/add_function_cv.cpp
@@ -4,9 +4,9 @@ Distributed under the Boost Software License, Version 1.0.
 (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
 ->*/
 
-//[ add_cv_qualifiers
+//[ add_function_cv
 #include 
-#include 
+#include 
 
 namespace ct = callable_traits;
 
@@ -17,33 +17,33 @@ int main() {
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() const volatile;
-        using test = ct::add_cv_qualifiers;
+        using test = ct::add_function_cv;
         static_assert(std::is_same::value, "");
     } {
-        // add_cv_qualifiers doesn't change anything when
+        // add_function_cv doesn't change anything when
         // the function type is already cv-qualified.
         using pmf = void(foo::*)() const volatile &&;
         using expect = void(foo::*)() const volatile &&;
-        using test = ct::add_cv_qualifiers;
+        using test = ct::add_function_cv;
         static_assert(std::is_same::value, "");
     } {
         using pmf = void(foo::*)() volatile &;
         using expect = void(foo::*)() const volatile &;
-        using test = ct::add_cv_qualifiers;
+        using test = ct::add_function_cv;
         static_assert(std::is_same::value, "");
     } {
-        // add_cv_qualifiers can also be used with "abominable"
+        // add_function_cv can also be used with "abominable"
         // function types.
         using f = void();
         using expect = void() const volatile;
-        using test = ct::add_cv_qualifiers;
+        using test = ct::add_function_cv;
         static_assert(std::is_same::value, "");
     } {
-        // add_cv_qualifiers has no affect on function pointers,
+        // add_function_cv has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = void(&)();
         using expect = void(&)();
-        using test = ct::add_cv_qualifiers;
+        using test = ct::add_function_cv;
         static_assert(std::is_same::value, "");
     }
 }
diff --git a/example/add_lvalue_qualifier.cpp b/example/add_function_lvalue.cpp
similarity index 67%
rename from example/add_lvalue_qualifier.cpp
rename to example/add_function_lvalue.cpp
index d8a6f83..ee39cf6 100644
--- a/example/add_lvalue_qualifier.cpp
+++ b/example/add_function_lvalue.cpp
@@ -4,9 +4,9 @@ Distributed under the Boost Software License, Version 1.0.
 (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
 ->*/
 
-//[ add_lvalue_qualifier
+//[ add_function_lvalue
 #include 
-#include 
+#include 
 
 namespace ct = callable_traits;
 
@@ -17,36 +17,36 @@ int main() {
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier;
+        using test = ct::add_function_lvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_lvalue_qualifier doesn't change anything when
+        // add_function_lvalue doesn't change anything when
         // the function type already has an lvalue qualifier.
         using pmf = void(foo::*)() &;
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier;
+        using test = ct::add_function_lvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_lvalue_qualifier models C++11 reference collapsing
+        // add_function_lvalue models C++11 reference collapsing
         // rules, so that adding an lvalue qualifier to an
         // rvalue-qualified type will force the lvalue.
         using pmf = void(foo::*)() &&;
         using expect = void(foo::*)() &;
-        using test = ct::add_lvalue_qualifier;
+        using test = ct::add_function_lvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_lvalue_qualifier can also be used to create "abominable"
+        // add_function_lvalue can also be used to create "abominable"
         // function types.
         using f = void();
         using expect = void() &;
-        using test = ct::add_lvalue_qualifier;
+        using test = ct::add_function_lvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_lvalue_qualifier has no affect on function pointers,
+        // add_function_lvalue has no affect on function pointers,
         // function references, function objects, or member data pointers.
         using f = int foo::*;
         using expect = int foo::*;
-        using test = ct::add_lvalue_qualifier;
+        using test = ct::add_function_lvalue;
         static_assert(std::is_same::value, "");
     }
 }
diff --git a/example/add_rvalue_qualifier.cpp b/example/add_function_rvalue.cpp
similarity index 68%
rename from example/add_rvalue_qualifier.cpp
rename to example/add_function_rvalue.cpp
index 4ca622f..af42b0b 100644
--- a/example/add_rvalue_qualifier.cpp
+++ b/example/add_function_rvalue.cpp
@@ -4,9 +4,9 @@ Distributed under the Boost Software License, Version 1.0.
 (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
 ->*/
 
-//[ add_rvalue_qualifier
+//[ add_function_rvalue
 #include 
-#include 
+#include 
 
 namespace ct = callable_traits;
 
@@ -17,37 +17,37 @@ int main() {
     {
         using pmf = void(foo::*)();
         using expect = void(foo::*)() &&;
-        using test = ct::add_rvalue_qualifier;
+        using test = ct::add_function_rvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_rvalue_qualifier doesn't change anything when
+        // add_function_rvalue doesn't change anything when
         // the function type already has an rvalue qualifier.
         using pmf = void(foo::*)() &&;
         using expect = void(foo::*)() &&;
-        using test = ct::add_rvalue_qualifier;
+        using test = ct::add_function_rvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_rvalue_qualifier models C++11 reference collapsing
+        // add_function_rvalue models C++11 reference collapsing
         // rules, so that adding an rvalue qualifier to an
         // lvalue-qualified type will not change anything.
         using pmf = void(foo::*)() const &;
         using expect = void(foo::*)() const &;
-        using test = ct::add_rvalue_qualifier;
+        using test = ct::add_function_rvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_rvalue_qualifier can also be used with "abominable"
+        // add_function_rvalue can also be used with "abominable"
         // function types.
         using f = void() const;
         using expect = void() const &&;
-        using test = ct::add_rvalue_qualifier;
+        using test = ct::add_function_rvalue;
         static_assert(std::is_same::value, "");
     } {
-        // add_rvalue_qualifier has no affect on function pointers,
+        // add_function_rvalue has no affect on function pointers,
         // function references, function objects, or member data pointers.
         auto lambda = []{};
         using lambda_t = decltype(lambda);
         using expect = lambda_t;
-        using test = ct::add_rvalue_qualifier;
+        using test = ct::add_function_rvalue;
         static_assert(std::is_same::value, "");
     }
 }
diff --git a/example/intro.cpp b/example/intro.cpp
index ea06b43..1865061 100644
--- a/example/intro.cpp
+++ b/example/intro.cpp
@@ -97,12 +97,12 @@ int main() {
     static_assert(std::is_same::value, "");
 
     // Let's remove the const qualifier:
-    using mutable_pmf = ct::remove_const_qualifier;
+    using mutable_pmf = ct::remove_function_const;
     using without_const = void (foo::*)(int, int&&, const int&, void*) /*no const!*/;
     static_assert(std::is_same::value, "");
 
     // Now let's add an rvalue qualifier (&&):
-    using rvalue_pmf = ct::add_rvalue_qualifier;
+    using rvalue_pmf = ct::add_function_rvalue;
     using with_rvalue = void (foo::*)(int, int&&, const int&, void*) const &&;
     static_assert(std::is_same::value, "");
 
diff --git a/example/make_function.cpp b/example/make_function.cpp
index 61ea83f..f3eebd9 100644
--- a/example/make_function.cpp
+++ b/example/make_function.cpp
@@ -6,7 +6,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 //[ make_function
 #include 
-#include 
+#include 
+#include 
 
 namespace example_library {
 
@@ -54,7 +55,7 @@ namespace example_library {
     }
 }
 
-//client code starts here
+// client code starts here
 #include 
 
 using namespace example_library;
@@ -73,19 +74,19 @@ struct adder {
 
 int main() {
 
-    //function pointer
+    // function pointer
     auto f = make_function(&add);
     assert(f(99, 1) == 100);
 
-    //function reference
+    // function reference
     f = make_function(add);
     assert(f(99, 1) == 100);
 
-    //member function pointer (bound to object)
+    // member function pointer (bound to object)
     f = make_function(&adder::eval, adder{}, _1, _2);
     assert(f(99, 1) == 100);
 
-    //lambda
+    // lambda
     f = make_function([](int i, int j) {
         return i + j;
     });
diff --git a/include/callable_traits/add_const_qualifier.hpp b/include/callable_traits/add_function_const.hpp
similarity index 57%
rename from include/callable_traits/add_const_qualifier.hpp
rename to include/callable_traits/add_function_const.hpp
index 6be93b8..2852db8 100644
--- a/include/callable_traits/add_const_qualifier.hpp
+++ b/include/callable_traits/add_function_const.hpp
@@ -1,5 +1,5 @@
 /*!
-@file add_const_qualifier
+@file add_function_const
 
 @copyright Barrett Adair 2015
 Distributed under the Boost Software License, Version 1.0.
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_ADD_CONST_QUALIFIER_HPP
-#define CALLABLE_TRAITS_ADD_CONST_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_ADD_FUNCTION_CONST_HPP
+#define CALLABLE_TRAITS_ADD_FUNCTION_CONST_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using add_const_qualifier =
+        using add_function_const =
             typename detail::traits::add_const;
     }
 
     namespace detail {
 
         template
-        struct add_const_qualifier_error {
+        struct add_function_const_error {
 
             static_assert(Sfinae,
-                "callable_traits::add_const_qualifier "
+                "callable_traits::add_function_const "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using add_const_qualifier_t = fail_if_invalid<
-            permissive::add_const_qualifier,
-            add_const_qualifier_error>;
+        using add_function_const_t = fail_if_invalid<
+            permissive::add_function_const,
+            add_function_const_error>;
     }
 
     namespace verbose {
 
         template
-        using add_const_qualifier =
-            detail::add_const_qualifier_t;
+        using add_function_const =
+            detail::add_function_const_t;
     }
 
     template
-    using add_const_qualifier =
-        detail::add_const_qualifier_t;
+    using add_function_const =
+        detail::add_function_const_t;
 }
 
 #endif
diff --git a/include/callable_traits/add_cv_qualifiers.hpp b/include/callable_traits/add_function_cv.hpp
similarity index 59%
rename from include/callable_traits/add_cv_qualifiers.hpp
rename to include/callable_traits/add_function_cv.hpp
index 73aceab..0f74e5a 100644
--- a/include/callable_traits/add_cv_qualifiers.hpp
+++ b/include/callable_traits/add_function_cv.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_ADD_CV_QUALIFIERS_HPP
-#define CALLABLE_TRAITS_ADD_CV_QUALIFIERS_HPP
+#ifndef CALLABLE_TRAITS_ADD_FUNCTION_CV_HPP
+#define CALLABLE_TRAITS_ADD_FUNCTION_CV_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using add_cv_qualifiers =
+        using add_function_cv =
             typename detail::traits::add_cv;
     }
 
     namespace detail {
 
         template
-        struct add_cv_qualifiers_error {
+        struct add_function_cv_error {
 
             static_assert(Sfinae,
-                "callable_traits::add_cv_qualifiers "
+                "callable_traits::add_function_cv "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using add_cv_qualifiers_t = fail_if_invalid<
-            permissive::add_cv_qualifiers,
-            add_cv_qualifiers_error>;
+        using add_function_cv_t = fail_if_invalid<
+            permissive::add_function_cv,
+            add_function_cv_error>;
     }
 
     namespace verbose {
 
         template
-        using add_cv_qualifiers =
-            detail::add_cv_qualifiers_t;
+        using add_function_cv =
+            detail::add_function_cv_t;
     }
 
     template
-    using add_cv_qualifiers =
-        detail::add_cv_qualifiers_t;
+    using add_function_cv =
+        detail::add_function_cv_t;
 }
 
 #endif
diff --git a/include/callable_traits/add_lvalue_qualifier.hpp b/include/callable_traits/add_function_lvalue.hpp
similarity index 58%
rename from include/callable_traits/add_lvalue_qualifier.hpp
rename to include/callable_traits/add_function_lvalue.hpp
index 4563ec2..db6a203 100644
--- a/include/callable_traits/add_lvalue_qualifier.hpp
+++ b/include/callable_traits/add_function_lvalue.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_ADD_LVALUE_QUALIFIER_HPP
-#define CALLABLE_TRAITS_ADD_LVALUE_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_ADD_FUNCTION_LVALUE_HPP
+#define CALLABLE_TRAITS_ADD_FUNCTION_LVALUE_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using add_lvalue_qualifier =
+        using add_function_lvalue =
             typename detail::traits::add_lvalue_reference;
     }
 
     namespace detail {
 
         template
-        struct add_lvalue_qualifier_error {
+        struct add_function_lvalue_error {
 
             static_assert(Sfinae,
-                "callable_traits::add_lvalue_qualifier "
+                "callable_traits::add_function_lvalue "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using add_lvalue_qualifier_t = fail_if_invalid<
-            permissive::add_lvalue_qualifier,
-            add_lvalue_qualifier_error>;
+        using add_function_lvalue_t = fail_if_invalid<
+            permissive::add_function_lvalue,
+            add_function_lvalue_error>;
     }
 
     namespace verbose {
 
         template
-        using add_lvalue_qualifier =
-            detail::add_lvalue_qualifier_t;
+        using add_function_lvalue =
+            detail::add_function_lvalue_t;
     }
 
     template
-    using add_lvalue_qualifier =
-        detail::add_lvalue_qualifier_t;
+    using add_function_lvalue =
+        detail::add_function_lvalue_t;
 }
 
 #endif
diff --git a/include/callable_traits/add_rvalue_qualifier.hpp b/include/callable_traits/add_function_rvalue.hpp
similarity index 58%
rename from include/callable_traits/add_rvalue_qualifier.hpp
rename to include/callable_traits/add_function_rvalue.hpp
index 8dcba37..823382c 100644
--- a/include/callable_traits/add_rvalue_qualifier.hpp
+++ b/include/callable_traits/add_function_rvalue.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_ADD_RVALUE_QUALIFIER_HPP
-#define CALLABLE_TRAITS_ADD_RVALUE_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_ADD_FUNCTION_RVALUE_HPP
+#define CALLABLE_TRAITS_ADD_FUNCTION_RVALUE_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using add_rvalue_qualifier =
+        using add_function_rvalue =
             typename detail::traits::add_rvalue_reference;
     }
 
     namespace detail {
 
         template
-        struct add_rvalue_qualifier_error {
+        struct add_function_rvalue_error {
 
             static_assert(Sfinae,
-                "callable_traits::add_rvalue_qualifier "
+                "callable_traits::add_function_rvalue "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using add_rvalue_qualifier_t = fail_if_invalid<
-            permissive::add_rvalue_qualifier,
-            add_rvalue_qualifier_error>;
+        using add_function_rvalue_t = fail_if_invalid<
+            permissive::add_function_rvalue,
+            add_function_rvalue_error>;
     }
 
     namespace verbose {
 
         template
-        using add_rvalue_qualifier =
-            detail::add_rvalue_qualifier_t;
+        using add_function_rvalue =
+            detail::add_function_rvalue_t;
     }
 
     template
-    using add_rvalue_qualifier =
-        detail::add_rvalue_qualifier_t;
+    using add_function_rvalue =
+        detail::add_function_rvalue_t;
 }
 
 #endif
diff --git a/include/callable_traits/add_volatile_qualifier.hpp b/include/callable_traits/add_function_volatile.hpp
similarity index 57%
rename from include/callable_traits/add_volatile_qualifier.hpp
rename to include/callable_traits/add_function_volatile.hpp
index df70897..d67c634 100644
--- a/include/callable_traits/add_volatile_qualifier.hpp
+++ b/include/callable_traits/add_function_volatile.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_ADD_VOLATILE_QUALIFIER_HPP
-#define CALLABLE_TRAITS_ADD_VOLATILE_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_ADD_FUNCTION_VOLATILE_HPP
+#define CALLABLE_TRAITS_ADD_FUNCTION_VOLATILE_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using add_volatile_qualifier =
+        using add_function_volatile =
             typename detail::traits::add_volatile;
     }
 
     namespace detail {
 
         template
-        struct add_volatile_qualifier_error {
+        struct add_function_volatile_error {
 
             static_assert(Sfinae,
-                "callable_traits::add_volatile_qualifier "
+                "callable_traits::add_function_volatile "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using add_volatile_qualifier_t = fail_if_invalid<
-            permissive::add_volatile_qualifier,
-            add_volatile_qualifier_error>;
+        using add_function_volatile_t = fail_if_invalid<
+            permissive::add_function_volatile,
+            add_function_volatile_error>;
     }
 
     namespace verbose {
 
         template
-        using add_volatile_qualifier =
-            detail::add_volatile_qualifier_t;
+        using add_function_volatile =
+            detail::add_function_volatile_t;
     }
 
     template
-    using add_volatile_qualifier =
-        detail::add_volatile_qualifier_t;
+    using add_function_volatile =
+        detail::add_function_volatile_t;
 }
 
 #endif
diff --git a/include/callable_traits/callable_traits.hpp b/include/callable_traits/callable_traits.hpp
index c9a91be..8905767 100644
--- a/include/callable_traits/callable_traits.hpp
+++ b/include/callable_traits/callable_traits.hpp
@@ -10,12 +10,12 @@ Distributed under the Boost Software License, Version 1.0.
 #ifndef CALLABLE_TRAITS_CALLABLE_TRAITS_HPP
 #define CALLABLE_TRAITS_CALLABLE_TRAITS_HPP
 
-#include 
-#include 
-#include 
-#include 
+#include 
+#include 
+#include 
+#include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -37,12 +37,12 @@ Distributed under the Boost Software License, Version 1.0.
 #include 
 #include 
 #include 
-#include 
-#include 
+#include 
+#include 
 #include 
-#include 
+#include 
 #include 
-#include 
+#include 
 #include 
 #include 
 
diff --git a/include/callable_traits/remove_const_qualifier.hpp b/include/callable_traits/remove_function_const.hpp
similarity index 57%
rename from include/callable_traits/remove_const_qualifier.hpp
rename to include/callable_traits/remove_function_const.hpp
index 99edabe..b919d3b 100644
--- a/include/callable_traits/remove_const_qualifier.hpp
+++ b/include/callable_traits/remove_function_const.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_REMOVE_CONST_QUALIFIER_HPP
-#define CALLABLE_TRAITS_REMOVE_CONST_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_REMOVE_FUNCTION_CONST_HPP
+#define CALLABLE_TRAITS_REMOVE_FUNCTION_CONST_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using remove_const_qualifier =
+        using remove_function_const =
             typename detail::traits::remove_const;
     }
 
     namespace detail {
 
         template
-        struct remove_const_qualifier_error {
+        struct remove_function_const_error {
 
             static_assert(Sfinae,
-                "callable_traits::remove_const_qualifier "
+                "callable_traits::remove_function_const "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using remove_const_qualifier_t = fail_if_invalid<
-            permissive::remove_const_qualifier,
-            remove_const_qualifier_error>;
+        using remove_function_const_t = fail_if_invalid<
+            permissive::remove_function_const,
+            remove_function_const_error>;
     }
 
     namespace verbose {
 
         template
-        using remove_const_qualifier =
-            detail::remove_const_qualifier_t;
+        using remove_function_const =
+            detail::remove_function_const_t;
     }
 
     template
-    using remove_const_qualifier =
-        detail::remove_const_qualifier_t;
+    using remove_function_const =
+        detail::remove_function_const_t;
 }
 
 #endif
diff --git a/include/callable_traits/remove_cv_qualifiers.hpp b/include/callable_traits/remove_function_cv.hpp
similarity index 58%
rename from include/callable_traits/remove_cv_qualifiers.hpp
rename to include/callable_traits/remove_function_cv.hpp
index fd148a2..5da82ee 100644
--- a/include/callable_traits/remove_cv_qualifiers.hpp
+++ b/include/callable_traits/remove_function_cv.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_REMOVE_CV_QUALIFIERS_HPP
-#define CALLABLE_TRAITS_REMOVE_CV_QUALIFIERS_HPP
+#ifndef CALLABLE_TRAITS_REMOVE_FUNCTION_CV_HPP
+#define CALLABLE_TRAITS_REMOVE_FUNCTION_CV_HPP
 
 #include 
 #include 
@@ -20,36 +20,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using remove_cv_qualifiers =
+        using remove_function_cv =
             typename detail::traits::remove_cv;
     }
 
     namespace detail {
 
         template
-        struct remove_cv_qualifiers_error {
+        struct remove_function_cv_error {
 
             static_assert(Sfinae,
-                "callable_traits::remove_cv_qualifiers "
+                "callable_traits::remove_function_cv "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using remove_cv_qualifiers_t = fail_if_invalid<
-            permissive::remove_cv_qualifiers,
-            remove_cv_qualifiers_error>;
+        using remove_function_cv_t = fail_if_invalid<
+            permissive::remove_function_cv,
+            remove_function_cv_error>;
     }
 
     namespace verbose {
 
         template
-        using remove_cv_qualifiers =
-            detail::remove_cv_qualifiers_t;
+        using remove_function_cv =
+            detail::remove_function_cv_t;
     }
 
     template
-    using remove_cv_qualifiers =
-        detail::remove_cv_qualifiers_t;
+    using remove_function_cv =
+        detail::remove_function_cv_t;
 }
 
 #endif
diff --git a/include/callable_traits/remove_reference_qualifier.hpp b/include/callable_traits/remove_function_reference.hpp
similarity index 55%
rename from include/callable_traits/remove_reference_qualifier.hpp
rename to include/callable_traits/remove_function_reference.hpp
index 539aae7..605d4a7 100644
--- a/include/callable_traits/remove_reference_qualifier.hpp
+++ b/include/callable_traits/remove_function_reference.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_REMOVE_REFERENCE_QUALIFIER_HPP
-#define CALLABLE_TRAITS_REMOVE_REFERENCE_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_REMOVE_FUNCTION_REFERENCE_HPP
+#define CALLABLE_TRAITS_REMOVE_FUNCTION_REFERENCE_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using remove_reference_qualifier =
+        using remove_function_reference =
             typename detail::traits::remove_reference;
     }
 
     namespace detail {
 
         template
-        struct remove_reference_qualifier_error {
+        struct remove_function_reference_error {
 
             static_assert(Sfinae,
-                "callable_traits::remove_reference_qualifier "
+                "callable_traits::remove_function_reference "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using remove_reference_qualifier_t = fail_if_invalid<
-            permissive::remove_reference_qualifier,
-            remove_reference_qualifier_error>;
+        using remove_function_reference_t = fail_if_invalid<
+            permissive::remove_function_reference,
+            remove_function_reference_error>;
     }
 
     namespace verbose {
 
         template
-        using remove_reference_qualifier =
-            detail::remove_reference_qualifier_t;
+        using remove_function_reference =
+            detail::remove_function_reference_t;
     }
 
     template
-    using remove_reference_qualifier =
-        detail::remove_reference_qualifier_t;
+    using remove_function_reference =
+        detail::remove_function_reference_t;
 }
 
 #endif
diff --git a/include/callable_traits/remove_volatile_qualifier.hpp b/include/callable_traits/remove_function_volatile.hpp
similarity index 55%
rename from include/callable_traits/remove_volatile_qualifier.hpp
rename to include/callable_traits/remove_function_volatile.hpp
index 24728a1..6554532 100644
--- a/include/callable_traits/remove_volatile_qualifier.hpp
+++ b/include/callable_traits/remove_function_volatile.hpp
@@ -7,8 +7,8 @@ Distributed under the Boost Software License, Version 1.0.
 
 */
 
-#ifndef CALLABLE_TRAITS_REMOVE_VOLATILE_QUALIFIER_HPP
-#define CALLABLE_TRAITS_REMOVE_VOLATILE_QUALIFIER_HPP
+#ifndef CALLABLE_TRAITS_REMOVE_FUNCTION_VOLATILE_HPP
+#define CALLABLE_TRAITS_REMOVE_FUNCTION_VOLATILE_HPP
 
 #include 
 #include 
@@ -19,36 +19,36 @@ namespace callable_traits {
     namespace permissive {
 
         template
-        using remove_volatile_qualifier =
+        using remove_function_volatile =
             typename detail::traits::remove_volatile;
     }
 
     namespace detail {
 
         template
-        struct remove_volatile_qualifier_error {
+        struct remove_function_volatile_error {
 
             static_assert(Sfinae,
-                "callable_traits::remove_volatile_qualifier "
+                "callable_traits::remove_function_volatile "
                 "is not a meaningful operation for this T.");
         };
 
         template
-        using remove_volatile_qualifier_t = fail_if_invalid<
-            permissive::remove_volatile_qualifier,
-            remove_volatile_qualifier_error>;
+        using remove_function_volatile_t = fail_if_invalid<
+            permissive::remove_function_volatile,
+            remove_function_volatile_error>;
     }
 
     namespace verbose {
 
         template
-        using remove_volatile_qualifier =
-            detail::remove_volatile_qualifier_t;
+        using remove_function_volatile =
+            detail::remove_function_volatile_t;
     }
 
     template
-    using remove_volatile_qualifier =
-        detail::remove_volatile_qualifier_t;
+    using remove_function_volatile =
+        detail::remove_function_volatile_t;
 }
 
 #endif
diff --git a/test/pmf_qualifiers.cpp b/test/pmf_qualifiers.cpp
index 228b469..2f7853d 100644
--- a/test/pmf_qualifiers.cpp
+++ b/test/pmf_qualifiers.cpp
@@ -30,58 +30,58 @@ using pmf_cv = void(foo::*)() const volatile;
 using pmf_cvl = void(foo::*)() const volatile &;
 using pmf_cvr = void(foo::*)() const volatile &&;
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
-CT_ASSERT(std::is_same>{});
-CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
+CT_ASSERT(std::is_same>{});
 
 CT_ASSERT(!ct::is_const_qualified());
 CT_ASSERT(!ct::is_const_qualified(pmf{}));