2

//build のビデオを見ていました。ここでは、Herb Sutter がコード スニペットを使用して明示的な変換キーワードの利点を示しました。

template< /* ... */ > class unique_ptr {
public:
    // ...
    explicit operator bool() const { return get() != nullptr; }

そして彼は、そのキーワードで、これがコンパイルされるのを防ぐことができると言いました:

use(ptr * 42); // oops, meant *(ptr) * 42

私は本当にそれを得ることができません.Showcaseはどのようにコンパイルされますか? コンパイラはどのように変換を行いますか? どのタイプに?

4

1 に答える 1

1

暗黙的にからunique_ptrboolに変換し、次にboolからintに変換して乗算を実行します。

(bool to intは、trueが1で、falseが0であることを意味します)

于 2013-03-17T06:35:13.673 に答える