std::remove_constはのconst-nessを削除できないようです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 *
Microsoftコンパイラの2行目、およびgccの1行目とは異なるものを取得したいと思います。私は何が間違っているのですか?どうすればいいchar const*
ですchar*
か?