<分区>
是否有可能确定一个类T
标记为 final
在编译时?我一直在尝试修改 this answer的做法:
template<typename T>
struct sub {
using type = struct : T {};
};
template<typename T>
struct is_final {
using yes = char;
using no = struct { char arr[2]; };
template<typename U> static yes test(...);
template<typename U> static no test(typename sub<U>::type*);
public:
static constexpr bool value = sizeof (test<T>(nullptr)) == sizeof (yes);
};
但它不起作用; is_final<T>::value
总是 false
.似乎 SFINAE 不是那样工作的。
如果无法在 C++11 中实现此特性,那么在 C++14 中如何实现(std::is_final
)?是否有一些新的语言功能可以实现这一点?