用于检测最终 类 的特征

Traits for detecting final classes

是否可以在编译时判断一个class 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)?是否有一些新的语言功能可以实现这一点?

根据此处的信息,在此答案之后,问题发生了根本性的改变。我不打算追问问题的演变。

只需使用std::is_final