0
靜態斷言全部失敗。 Constifier
是什麼類型的函數指針創建?將常量添加到函數指針會發生什麼?
#include <type_traits>
template<typename T>
struct Constifier;
template<typename T>
struct Constifier<T *>
{
typedef const T *Type;
};
int main()
{
static_assert(std::is_same<typename Constifier<int (*)()>::Type, const int (*)()>::value, "");
static_assert(std::is_same<typename Constifier<int (*)()>::Type, int (*const)()>::value, "");
static_assert(std::is_same<typename Constifier<int (*)()>::Type, void>::value, "");
}
在你的trait中,你並沒有爲const *指針*添加常量,而是添加了*指向*函數,但函數類型的頂級cv限定符被忽略(儘管你可以有一個指向函數的const指針,你會使用'typedef T * const Type')。順便說一句。這裏不需要'typename'關鍵字。 –
@PiotrSkotnicki我看,它不是依賴類型。 – xiver77