我的enable_if陈述变得很长,所以我想以某种方式输入typedef.我不知道最好的方法是什么.
我试过这个,但它不起作用
template<typename T>
struct isValidImageFormat
{
typedef
typename std::is_same<T, float>::value ||
typename std::is_same<T, unsigned char>::value
value;
};
Run Code Online (Sandbox Code Playgroud)
错误是:
在{||«token typename std :: is_same :: value ||之前预期的nonqualified-id
问题:
Joh*_*nck 11
你想要std::disjunction(哲学中用"或"这个奇特的词):
typedef std::disjunction<
std::is_same<T, float>,
std::is_same<T, unsigned char>> condition;
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用condition::value获取真或假值.或者,如果您只想要一个值,请尝试以下方法:
constexpr bool condition =
std::is_same<T, float>::value ||
std::is_same<T, unsigned char>::value;
Run Code Online (Sandbox Code Playgroud)
在typename当你想与类型工作的关键字时,在你的榜样,你要使用constexpr bool的值.
template<typename T>
struct isValidImageFormat
{
constexpr static bool value =
std::is_same<T, float>::value ||
std::is_same<T, unsigned char>::value;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |