pic*_*129 3 c++ templates using metaprogramming class
我的目的很简单,输入的数据类型取决于模板 bool:
template<bool isfloa>
class example{
public:
if (isfloa){
example(float p){printf("sizeof p: %d\n", sizeof(p))};
} else{
example(uint64_t p){printf("sizeof p: %d\n", sizeof(p))};
}
};
Run Code Online (Sandbox Code Playgroud)
这无法通过编译,我有以下解决方案(尚未测试):
using dataType = isfloa ? float : uint64_t;
example(dataType p){printf("sizeof p: %d\n", sizeof(p))};
Run Code Online (Sandbox Code Playgroud)
我想知道这是否有效?还有其他解决方案吗?多谢。
您可以使用std::conditional
template<bool isfloat>
class example{
public:
using value_type = std::conditional_t<isfloat,float,int>;
example(value_type p){printf("sizeof p: %d\n", sizeof(p));}
};
Run Code Online (Sandbox Code Playgroud)