我只是在学习C++中的元编程基础知识,我觉得很高兴看到其他人如何解决以下问题.另外,看到使用Boost元编程库的解决方案会非常好,因为我认为它们对我来说是一个黑暗的角落.所以问题是,这可以更优雅地重写吗?
假设我们有以下结构:
template <std::size_t size>
struct type_factory
{
typedef typename type_factory_impl<size>::type type;
};
Run Code Online (Sandbox Code Playgroud)
这个结构应该是typedef type,取决于的值size.type_factory_impl是实施type_factory.用于确定的算法type是:
if(size % bits<unsigned long long>::value == 0)
typedef unsigned long long type;
else if(size % bits<unsigned long>::value == 0)
typedef unsigned long type;
else if(size % bits<unsigned int>::value == 0)
typedef unsigned int type;
else if(size % bits<unsigned short int>::value == 0)
typedef unsigned short int type;
else if(size % bits<unsigned char>::value == 0)
typedef …Run Code Online (Sandbox Code Playgroud)