C++ 动态声明新结构-可能的用例

C++ 动态声明新结构-可能的用例,c++,templates,metaprogramming,C++,Templates,Metaprogramming,此处提出的问题直接链接/引用了这一点。利用每个lambda都有一个独特的类型这一事实,有一些使用lambda的非常优雅的解决方案。解决办法如下: template <size_t> constexpr auto make_new_type() { return [](){}; } using A = decltype(make_new_type<__LINE__>()); using B = decltype(make_new_type<__LINE__>(

此处提出的问题直接链接/引用了这一点。利用每个lambda都有一个独特的类型这一事实,有一些使用lambda的非常优雅的解决方案。解决办法如下:

template <size_t>
constexpr auto make_new_type() { return [](){}; }

using A = decltype(make_new_type<__LINE__>());
using B = decltype(make_new_type<__LINE__>());
using C = decltype(make_new_type<__LINE__>());
模板
constexpr自动创建新类型(){return[](){};}
使用A=decltype(创建新类型());
使用B=decltype(make_new_type());
使用C=decltype(创建新类型());

上述方法解决了哪些“一般”应用的问题?

最常用于将唯一整数ID(如枚举)替换为唯一类型。使用模板,您可以解决许多问题,例如禁止函数调用单个ID或使用模板参数推断(非类型模板参数不可用)。粗略地说,这是创建“enum”的方法,其中的每个元素不仅具有唯一的值,而且具有唯一的类型。我有一个很好的例子。@DmytroDadyka这很有趣,我当然对你的例子感兴趣,也许其他人也会感兴趣。你可以投票重新开放。