Visual Studio 2013で動作するコードがあります。これでVisual Studio 2017で同じコードを作成しようとしています。ここに私がしようとしているコードです。これによりアトミックC++の削除された関数を参照しようとしています
#include <array>
#include <atomic>
int main()
{
using TrdRobotStateArray = std::array<std::atomic<double>, 6>;
TrdRobotStateArray mCurrentPose = { 0.3 };
printf("%0.3f", mCurrentPose[0]);
return 0;
}
、私はこのエラーを取得する:
error C2280: 'std::atomic<double>::atomic(const std::atomic<double> &)': attempting to reference a deleted function
私はこのコードを書いていない、と私はアトミック変数に読み込むしようとしています。しかし、私はまだ、エラーで何が起こっているのかはまだよく分かりません。アトミックについての説明は非常に高く評価されます。ありがとう!
更新:ここ
このコードに付属のすべてのエラーと警告があります。それは将来他人を助けるでしょう。
1>AtomicTest.cpp
1>AtomicTest.cpp(13): error C4839: non-standard use of class
'std::atomic<double>' as an argument to a variadic function
1>AtomicTest.cpp(13): note: the constructor and destructor will not be
called; a bitwise copy of the class will be passed as the argument
1>AtomicTest.cpp(11): note: see declaration of 'std::atomic<double>'
1>AtomicTest.cpp(13): error C2280: 'std::atomic<double>::atomic(const
std::atomic<double> &)': attempting to reference a deleted function
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\atomic(689):
note: see declaration of 'std::atomic<double>::atomic'
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\atomic(689):
note: 'std::atomic<double>::atomic(const std::atomic<double> &)': function
was explicitly deleted
1>AtomicTest.cpp(13): warning C4477: 'printf' : format string '%0.3f'
requires an argument of type 'double', but variadic argument 1 has type
'std::atomic<double>'
1>Done building project "AtomicTest.vcxproj" -- FAILED.
実際には、このコードで最初に表示されるエラーメッセージは、エラーC4839:クラス 'std :: atomic'を非標準的なバリデーション関数の引数として使用しています。どのようにコンパイラを呼び出すのですか? –
P .:最新のバージョンのVisual C++ 2017に、改善されたエラーメッセージが追加されたと思います。https://docs.microsoft.com/en-us/cpp/cpp-conformance-improvements-2017を参照してください。最新のバージョンにアップグレードすることをお勧めします。 –
はい、私はそのエラーも受け取りますが、Jodocusの修正を適用するとすぐに消えてしまいました。私はそれについて心配する必要がありますか? –