Twitter / digitalghostの妹: int f(int); int f(double) ...
おお!
void f( int ) {} void f( double ) = delete ; int main() { f(0) ; // OK f(1.0) ;// error }
これはすごい。いままでまったく気がつかなかった。よく見たら、deleteは、Deleted definitionsという名前であった。Explicitly-defaulted functionsとは、名前からして明確に異なるのである。素晴らしいことに、deleted定義を指定できる関数に、制限はない。つまり、メンバー関数である必要すらない。
なぜ、いままでメンバー関数にしか使えないという思い込みをしていたのだろう。これは素晴らしい。
ちなみに、こういうこともできる。
void f( int ) {} // f(int)以外すべて削除 template < typename T > void f( T ) = delete ; int main() { f(0) ; // OK f(1.0) ;// error }
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.