const_castで消しされないconstが存在する。関数へのポインターにおける関数の型や、メンバー関数へのポインターにおけるメンバー関数の型だ。
void f(int const *) {} struct C { void f() const {} } ; int main() { // これが普通 void (*ok_1)(int const *) = &f ; // ill-formed. // 関数の仮引数のconstを消そうとしている void (*error_1)(int *) = const_cast<void (*)(int *)>(&f) ; // これが普通 void (C::*ok_2)() const = &C::f ; // ill-formd. // メンバー関数のconstを消そうとしている void (C::*ok_2)() = const_cast<void (C::*ok_2)()>(&C::f) ; }
こんなconstが消せてたまるか。
No comments:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.