1

VS10 を使用して、weak_ptr 用にコンパイルする「operator <」を取得できません。#include または #using がありませんか?

ドキュメントのコード サンプルでさえ、私には機能しません。 http://msdn.microsoft.com/en-us/library/bb982759.aspx

// temp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// std_tr1__memory__operator_lt.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>

int main()
{
    std::shared_ptr<int> sp0(new int(0));
    std::shared_ptr<int> sp1(new int(0));

    std::cout << "sp0 < sp0 == " << std::boolalpha
        << (sp0 < sp0) << std::endl;
    std::cout << "sp0 < sp1 == " << std::boolalpha
        << (sp0 < sp1) << std::endl;
    std::cout << "sp1 < sp0 == " << std::boolalpha
        << (sp1 < sp0) << std::endl;
    std::cout << std::endl;

    std::weak_ptr<int> wp0(sp0);
    std::weak_ptr<int> wp1(sp1);

    std::cout << "wp0 < wp0 == " << std::boolalpha
        << (wp0 < wp0) << std::endl;
    std::cout << "wp0 < wp1 == " << std::boolalpha
        << (wp0 < wp1) << std::endl;
    std::cout << "wp1 < wp0 == " << std::boolalpha
        << (wp1 < wp0) << std::endl;
}
4

1 に答える 1

1

ヘッダー ファイルに、コメント化されていない 'bool operator<(const weak_ptr&, const weak_ptr&) がないことが判明しました。ドキュメントに反して、これはサポートされていません。

于 2010-07-22T16:03:19.303 に答える