"stateful". , , , ++ 14:
LX::push<void, void, void, void> ();
LX::set<0, class Hello> ();
LX::set<2, class World> ();
LX::pop ();
LX::value<> x;
, ++ 11, . # 28.
, , .
, , MSVC. , Prove args . auto_register:
template<class T, class F>
int auto_register_factory()
{
F::template apply<T>();
return 0;
}
template<class T, class F>
struct auto_register
{
static int static_register_;
typedef std::integral_constant<decltype(&static_register_), &static_register_> static_register_type_;
};
template<class T, class F>
int auto_register<T, F>::static_register_ = auto_register_factory<T, F>();
CRTP:
struct foo_register
{
template<class T>
static void apply()
{
}
};
template<class Derived>
struct fooable : auto_register<Derived, foo_register>
{};