似乎 std::remove_const 无法删除const char*
. 考虑以下代码:
#include <iostream>
#include <type_traits>
#include <typeinfo>
template< typename T >
struct S
{
static void foo( ) {
std::cout << typeid(T).name() << std::endl;
std::cout << typeid( std::remove_const<T>::type ).name() << std::endl;
}
};
int main( )
{
S<char const*>::foo();
}
该程序的输出(在 Visual Studio 2010 上):
char const *
char const *
在 gcc 中,我们有可读的输出(这里的代码):
PKc
PKc
我希望能进入char *
微软编译器的第二行,以及 gcc 上的任何东西(但不同于第一行)。我究竟做错了什么?我该如何char const*
转向char*
?