The following code won't compile, while it should (CE link).
#include "proxy.h"
template <class T>
void Foo(T&& value) { ++value; }
PRO_DEF_FREE_DISPATCH(FreeFoo, Foo);
struct FooFacade : pro::facade_builder
::add_convention<FreeFoo, void()>
::build {};
int main() {
pro::proxy<FooFacade> p = pro::make_proxy<FooFacade, int>();
}