下記のプログラムをコンパイルしようとすると、次のエラーが発生します。コンパイルに成功するには、プログラムで何を変更する必要がありますか? GCC 4.9.2のように見えるいくつかのnoexcept移動コンストラクタは "= default"として実装できません。gcc 4.9.2コンパイルエラー:AssetLinkData
トラブルを引き起こす行がある: AssetLinkData::AssetLinkData(AssetLinkData&& other) noexcept = default;
COMPILATION ERROR: FAILED: obj/browser/asset_link_data.o g++ -MMD -MF (I removed many more flags)
asset_link_data.cc: error: function 'password_manager::AssetLinkData::AssetLinkData(password_manager::AssetLinkData&&)' defaulted on its redeclaration with an exception-specification that differs from the implicit declaration 'password_manager::AssetLinkData::AssetLinkData(password_manager::AssetLinkData&&)' AssetLinkData::AssetLinkData(AssetLinkData&& other) noexcept = default;
ソース・コード:Imはasset_link_data.hの内容を追加することを下回る
#include "asset_link_data.h"
#include <algorithm>
#include <utility>
#include "base/json/json_reader.h"
#include "base/json/json_value_converter.h"
#include "base/values.h"
namespace password_manager { namespace {
constexpr char kGetLoginsRelation[] =
"delegate_permission/common.get_login_creds"; constexpr char kWebNamespace[] = "web";
} // namespace
AssetLinkData::AssetLinkData() = default;
AssetLinkData::AssetLinkData(AssetLinkData&& other) noexcept = default;
AssetLinkData::~AssetLinkData() = default; AssetLinkData& AssetLinkData::operator=(AssetLinkData&& other) = default;
} // namespace password_manager
:
#ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_SITE_AFFILIATION_ASSET_LINK_DATA_H_
#define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_SITE_AFFILIATION_ASSET_LINK_DATA_H_
#include <string>
#include <vector>
#include "base/macros.h"
#include "url/gurl.h"
namespace password_manager {
// The class parses an asset link file. The spec for the format is
// https://github.com/google/digitalassetlinks/blob/master/well-known/details.md
// The class cares only about two types of statements:
// - includes. Those are just a reference to a file to be loaded and parsed.
// - "get_login_creds" permission to a web page. That means that the target is
// allowed to get the credentials saved for the source.
// Only HTTPS URLs are taken into account.
class AssetLinkData {
public:
AssetLinkData();
AssetLinkData(AssetLinkData&& other) noexcept;
~AssetLinkData();
AssetLinkData& operator=(AssetLinkData&& other);
bool Parse(const std::string& data);
const std::vector<GURL>& includes() const { return includes_; }
const std::vector<GURL>& targets() const { return targets_; }
private:
std::vector<GURL> includes_;
std::vector<GURL> targets_;
DISALLOW_COPY_AND_ASSIGN(AssetLinkData);
};
} // namespace password_manager
#endif // COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_SITE_AFFILIATION_ASSET_LINK_DATA_H_
? – Kevin
Kevin: コードからincludeステートメントを削除しました。最初のインクルードは次のように書いています: #include "asset_link_data.h" – bari
質問を編集して、 'AssetLinkData'の定義を含めることはできますか?そして、エラーに関係のないもの( 'Target'、' Statement'、 'AssetLinkData :: Parse'など)を取り除きます。 – Kevin