【发布时间】:2017-11-17 09:46:36
【问题描述】:
在我的搜索中,我找到了根据成员函数的存在来选择模板扩展的方法,如果类型是整数等,但我想做的是基于类型名称拥有类似 SFINAE 的东西。看另一个问题的例子:
template<typename T>
std::enable_if_t<std::is_integral<T>::value> f(T t){
//integral version
}
这让我可以根据类型 T 是否为整数来进行选择。我想做的是,假设我定义了几个类; gl_renderable_t、vulkan_renderable_t 等。我想要类似的东西;
template<typename T>
std::enable_if_t<!T.has_typename(gl_renderable_t)!::value> f(T t){
// call gl render functions
}
template<typename T>
std::enable_if_t<!T.has_typename(vulkan_renderable_t)!::value> f(T t){
// call vulkan render functions
}
我想基本上使用基于 typename 的 SFINAE。考虑到人们用 SFINAE 做的所有疯狂的事情,这似乎应该很容易或至少是可能的,但我不知道该怎么做。
【问题讨论】: