I try to measure the runtime of the program using Intel Pin. For this purpose I include chrono in my project. However It is not going to compile well. It gives a lot of errors. Furthermore, I tried to include chrono to many standart Intel Pin examples - the same result.
Could you please help me to solve errors below?
ratio(24,32): error C2143: syntax error: missing ',' before '<'
ratio(25): message : see reference to class template instantiation 'std::_Abs<_Val>' being compiled
ratio(30,38): error C2143: syntax error: missing ',' before '<'
ratio(31): message : see reference to class template instantiation 'std::_Safe_mult<_Ax,_Bx,_Sfinae,_Good>' being compiled
ratio(40,36): error C2143: syntax error: missing ',' before '<'
ratio(41): message : see reference to class template instantiation 'std::_Sign_of<_Val>' being compiled
ratio(45,38): error C2143: syntax error: missing ',' before '<'
ratio(46): message : see reference to class template instantiation 'std::_Safe_addX<_Ax,_Bx,_Good,_Also_good>' being compiled
ratio(50,44): error C2760: syntax error: unexpected token ',', expected 'expression'
ratio(51): message : see reference to class template instantiation 'std::_Safe_addX<_Ax,_Bx,false,false>' being compiled
ratio(65,41): error C2143: syntax error: missing ',' before '<'
ratio(66): message : see reference to class template instantiation 'std::_GcdX<_Ax,0>' being compiled
ratio(74,2): error C2504: 'integral_constant': base class undefined
ratio(74,38): error C2143: syntax error: missing ',' before '<'
ratio(158,5): error C2065: 'void_t': undeclared identifier
ratio(158,1): error C2226: syntax error: unexpected type 'std::_Ratio_multiply<_R1,_R2>::_Num::type'
ratio(159,1): error C2988: unrecognizable template declaration/definition
ratio(159,1): error C2059: syntax error: '>'
ratio(159,58): error C2143: syntax error: missing ';' before '{'
ratio(159,58): error C2447: '{': missing function header (old-style formal list?)
ratio(186,35): error C2143: syntax error: missing ',' before '<'
ratio(188): message : see reference to class template instantiation 'std::ratio_equal<_R1,_R2>' being compiled
ratio(195,39): error C2143: syntax error: missing ',' before '<'
ratio(197): message : see reference to class template instantiation 'std::ratio_not_equal<_R1,_R2>' being compiled
ratio(252,34): error C2143: syntax error: missing ',' before '<'
ratio(254): message : see reference to class template instantiation 'std::ratio_less<_R1,_R2>' being compiled
ratio(261,40): error C2143: syntax error: missing ',' before '<'
ratio(263): message : see reference to class template instantiation 'std::ratio_less_equal<_R1,_R2>' being compiled
ratio(279,43): error C2143: syntax error: missing ',' before '<'
ratio(282): message : see reference to class template instantiation 'std::ratio_greater_equal<_R1,_R2>' being compiled
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(512,39): error C2371: 'wint_t': redefinition; different basic types
1>E:\Tools\source\pin\extras\crt\include\wchar.h(52): message : see declaration of 'wint_t'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(513,39): error C2371: 'wctype_t': redefinition; different basic types
1>E:\Tools\source\pin\extras\crt\include\wchar.h(77): message : see declaration of 'wctype_t'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(538,19): error C2371: 'mbstate_t': redefinition; different basic types
1>E:\Tools\source\pin\extras\crt\include\wchar.h(58): message : see declaration of 'mbstate_t'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\corecrt.h(552,28): error C2371: 'time_t': redefinition; different basic types
1>E:\Tools\source\pin\extras\crt\include\sys\types.h(91): message : see declaration of 'time_t'
vcruntime_new.h(34,26): error C2011: 'std::nothrow_t': 'struct' type redefinition
1>E:\Tools\source\pin\extras\libstdc++\include\new(10): message : see declaration of 'std::nothrow_t'
vcruntime_new.h(168,5): error C2084: function 'void *operator new(size_t,void *)' already has a body
1>E:\Tools\source\pin\extras\libstdc++\include\new(36): message : see previous definition of 'new'
vcruntime_new.h(174,5): error C2084: function 'void operator delete(void *,void *) throw()' already has a body
1>E:\Tools\source\pin\extras\libstdc++\include\new(40): message : see previous definition of 'delete'
vcruntime_new.h(184,5): error C2084: function 'void *operator new[](size_t,void *)' already has a body
1>E:\Tools\source\pin\extras\libstdc++\include\new(37): message : see previous definition of 'new[]'
vcruntime_new.h(190,5): error C2084: function 'void operator delete[](void *,void *) throw()' already has a body
1>E:\Tools\source\pin\extras\libstdc++\include\new(41): message : see previous definition of 'delete[]'
xtimec.h(28,15): error C2144: syntax error: 'int' should be preceded by ';'
xtimec.h(28,19): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(30,15): error C2144: syntax error: 'long' should be preceded by ';'
xtimec.h(30,20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(30,1): error C2086: 'int _CRTIMP2': redefinition
xtimec.h(28): message : see declaration of '_CRTIMP2'
xtimec.h(31,15): error C2144: syntax error: 'long' should be preceded by ';'
xtimec.h(31,20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(31,1): error C2086: 'int _CRTIMP2': redefinition
xtimec.h(28): message : see declaration of '_CRTIMP2'
xtimec.h(32,15): error C2144: syntax error: '__int64' should be preceded by ';'
xtimec.h(32,25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(32,1): error C2086: 'int _CRTIMP2': redefinition
xtimec.h(28): message : see declaration of '_CRTIMP2'
xtimec.h(36,15): error C2144: syntax error: '__int64' should be preceded by ';'
xtimec.h(36,25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(36,1): error C2086: 'int _CRTIMP2': redefinition
xtimec.h(28): message : see declaration of '_CRTIMP2'
xtimec.h(37,15): error C2144: syntax error: '__int64' should be preceded by ';'
xtimec.h(37,25): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
xtimec.h(37,1): error C2086: 'int _CRTIMP2': redefinition
xtimec.h(28): message : see declaration of '_CRTIMP2'
chrono(28,55): error C2143: syntax error: missing ',' before '<'
chrono(29): message : see reference to class template instantiation 'std::chrono::treat_as_floating_point<_Rep>' being compiled
chrono(96,43): error C2143: syntax error: missing ';' before '<'
chrono(171): message : see reference to class template instantiation 'std::chrono::duration<_Rep,_Period>' being compiled
chrono(96,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
chrono(96,30): error C2126: 'std::chrono::duration<_Rep,_Period>::common_type_t' cannot be declared with 'constexpr' specifier
chrono(96,1): warning C4869: 'nodiscard' may only be applied to classes, enumerations, and functions
chrono(97,1): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
chrono(101,43): error C2143: syntax error: missing ';' before '<'
chrono(101,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
chrono(101,30): error C2126: 'std::chrono::duration<_Rep,_Period>::common_type_t' cannot be declared with 'constexpr' specifier
chrono(101,1): warning C4869: 'nodiscard' may only be applied to classes, enumerations, and functions
chrono(102,1): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
chrono(223,24): error C2143: syntax error: missing ',' before '<'
chrono(224): message : see reference to class template instantiation 'std::_Lcm<_Ax,_Bx>' being compiled
chrono(228,19): error C2988: unrecognizable template declaration/definition
chrono(228,19): error C2143: syntax error: missing ';' before '<'
chrono(228,19): error C2059: syntax error: '<'
chrono(228,37): error C2065: '_Rep1': undeclared identifier
chrono(228,44): error C2065: '_Period1': undeclared identifier
chrono(228,28): error C2923: 'std::chrono::duration': '_Rep1' is not a valid template type argument for parameter '_Rep'
chrono(228,28): error C2923: 'std::chrono::duration': '_Period1' is not a valid template type argument for parameter '_Period'
chrono(229,22): error C2065: '_Rep2': undeclared identifier
chrono(229,29): error C2065: '_Period2': undeclared identifier
chrono(229,13): error C2923: 'std::chrono::duration': '_Rep2' is not a valid template type argument for parameter '_Rep'
chrono(229,13): error C2923: 'std::chrono::duration': '_Period2' is not a valid template type argument for parameter '_Period'
chrono(229,40): error C2143: syntax error: missing ';' before '{'
chrono(229,40): error C2447: '{': missing function header (old-style formal list?)
chrono(235,8): error C2976: 'std::common_type': too few template arguments
chrono(228): message : see declaration of 'std::common_type'
chrono(238,2): error C2976: 'std::common_type': too few template arguments
chrono(236): message : see declaration of 'std::common_type'
chrono(243,39): error C2988: unrecognizable template declaration/definition
chrono(243,39): error C2143: syntax error: missing ';' before '<'
chrono(243,16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
chrono(243,39): error C2059: syntax error: '<'
chrono(243,49): error C2065: '_Rep1': undeclared identifier
chrono(243,56): error C2065: '_Period1': undeclared identifier
chrono(243,40): error C2923: 'std::chrono::duration': '_Rep1' is not a valid template type argument for parameter '_Rep'
chrono(243,40): error C2923: 'std::chrono::duration': '_Period1' is not a valid template type argument for parameter '_Period'
chrono(243,76): error C2065: '_Rep2': undeclared identifier
chrono(243,83): error C2065: '_Period2': undeclared identifier
chrono(243,67): error C2923: 'std::chrono::duration': '_Rep2' is not a valid template type argument for parameter '_Rep'
chrono(243,67): error C2923: 'std::chrono::duration': '_Period2' is not a valid template type argument for parameter '_Period'
chrono(244,34): error C2065: '_Rep1': undeclared identifier
chrono(244,41): error C2065: '_Period1': undeclared identifier
chrono(244,25): error C2923: 'std::chrono::duration': '_Rep1' is not a valid template type argument for parameter '_Rep'
chrono(244,25): error C2923: 'std::chrono::duration': '_Period1' is not a valid template type argument for parameter '_Period'
chrono(244,74): error C2065: '_Rep2': undeclared identifier
chrono(244,81): error C2065: '_Period2': undeclared identifier
chrono(244,65): error C2923: 'std::chrono::duration': '_Rep2' is not a valid template type argument for parameter '_Rep'
chrono(244,65): error C2923: 'std::chrono::duration': '_Period2' is not a valid template type argument for parameter '_Period'
chrono(245,81): error C2143: syntax error: missing ';' before '{'
chrono(245,81): error C2447: '{': missing function header (old-style formal list?)
chrono(251,39): error C2988: unrecognizable template declaration/definition
chrono(251,39): error C2143: syntax error: missing ';' before '<'
chrono(251,16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
chrono(251,26): error C2374: 'std::chrono::common_type_t': redefinition; multiple initialization
chrono(243): message : see declaration of 'std::chrono::common_type_t'
chrono(251,39): error C2059: syntax error: '<'
chrono(251,49): error C2065: '_Rep1': undeclared identifier
chrono(251,56): error C2065: '_Period1': undeclared identifier
chrono(251,40): error C2923: 'std::chrono::duration': '_Rep1' is not a valid template type argument for parameter '_Rep'
chrono(251,40): error C2923: 'std::chrono::duration': '_Period1' is not a valid template type argument for parameter '_Period'
chrono(251,76): error C2065: '_Rep2': undeclared identifier
chrono(251,83): error C2065: '_Period2': undeclared identifier
chrono(251,67): error C2923: 'std::chrono::duration': '_Rep2' is not a valid template type argument for parameter '_Rep'
chrono(251,67): error C2923: 'std::chrono::duration': '_Period2' is not a valid template type argument for parameter '_Period'
chrono(252,34): error C2065: '_Rep1': undeclared identifier
chrono(252,41): error C2065: '_Period1': undeclared identifier
chrono(252,25): error C2923: 'std::chrono::duration': '_Rep1' is not a valid template type argument for parameter '_Rep'
chrono(252,25): error C2923: 'std::chrono::duration': '_Period1' is not a valid template type argument for parameter '_Period'
chrono(252,74): error C2065: '_Rep2': undeclared identifier
chrono(252,81): error C2065: '_Period2': undeclared identifier
chrono(252,1): fatal error C1003: error count exceeds 100; stopping compilation
I am trying to create a UE4 plugin then I can simply create a blueprint function like so using Boost Beast client example :
void UBoostBPFunctionLibrary::ConnectWebsocket(FString inMessage, FString& outResStr)
{
//using tcp = boost::asio::ip::tcp; // from <boost/asio/ip/tcp.hpp>
//namespace websocket = boost::beast::websocket; // from <boost/beast/websocket.hpp>
//auto const host = "127.0.0.1";
//auto const port = "8080";
//std::string text(TCHAR_TO_ANSI(*inMessage));
//// The io_context is required for all I/O
//boost::asio::io_context ioc;
//// These objects perform our I/O
//tcp::resolver resolver{ ioc };
//websocket::stream<tcp::socket> ws{ ioc };
//// Look up the domain name
//auto const results = resolver.resolve(host, port);
//// Make the connection on the IP address we get from a lookup
//boost::asio::connect(ws.next_layer(), results.begin(), results.end());
//// Perform the websocket handshake
//ws.handshake(host, "/");
//// Send the message
//ws.write(boost::asio::buffer(std::string(text)));
//// This buffer will hold the incoming message
//boost::beast::multi_buffer buffer;
//// Read a message into our buffer
//ws.read(buffer);
//// Close the WebSocket connection
//ws.close(websocket::close_code::normal);
////// If we get here then the connection is closed gracefully
//// // The buffers() function helps print a ConstBufferSequence
//outResStr = FString(boost::beast::to_static_string(boost::beast::buffers(buffer.data())).c_str());
}
But as I try to compile simply by including the following header files in my BoostBPFunctionLibrary.h :
#include <boost/beast/core.hpp>
#include <boost/beast/websocket.hpp>
#include <boost/asio/connect.hpp>
#include <boost/asio/ip/tcp.hpp>
I get loads of errors such as the following. I guess the errors are all pointing to the clash of check definition in "AssertionMacros.h" and any boost version of it, but the question then is how can I fix that and make it work ? Why is there no clear fundamental separation between the two definitions ? I tried to remove the boost version of "check function" as pointed by the first error line but that breaks other code files in boost, I tried to do that to UE4 and the answer is still no. I feel that there is something fundamentally wrong here. Please advice.
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1333): error C4003: not enough arguments for function-like macro invocation 'check'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1333): error C2062: type 'void' unexpected
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1405): note: see reference to class template instantiation 'boost::intrusive::list_impl<ValueTraits,SizeType,ConstantTimeSize,HeaderHolder>' being compiled
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1333): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1334): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1334): error C2059: syntax error: '{'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/list.hpp(1334): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1452): warning C4002: too many arguments for function-like macro invocation 'check'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1452): error C2988: unrecognizable template declaration/definition
2> C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(2074): note: see reference to class template instantiation 'boost::intrusive::bstree_algorithms<NodeTraits>' being compiled
2> C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/core/string.hpp(87): note: see reference to class template instantiation 'boost::basic_string_view<char,std::char_traits<char>>' being compiled
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1452): error C2059: syntax error: '<end Parse>'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1452): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1453): error C2988: unrecognizable template declaration/definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1453): error C2059: syntax error: '{'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree_algorithms.hpp(1453): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2074): error C4003: not enough arguments for function-like macro invocation 'check'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2057): error C2988: unrecognizable template declaration/definition
2> C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2122): note: see reference to class template instantiation 'boost::intrusive::bstree_impl<ValueTraits,VoidOrKeyOfValue,VoidOrKeyComp,SizeType,ConstantTimeSize,AlgoType,HeaderHolder>' being compiled
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2057): error C2059: syntax error: '<end Parse>'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2057): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2058): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2058): error C2988: unrecognizable template declaration/definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2058): error C2059: syntax error: '{'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2058): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2074): error C2062: type 'void' unexpected
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2074): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2075): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2075): error C2988: unrecognizable template declaration/definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2075): error C2059: syntax error: '{'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2075): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2081): error C2988: unrecognizable template declaration/definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2081): error C2059: syntax error: 'if'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2081): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2084): error C2988: unrecognizable template declaration/definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2084): error C2059: syntax error: 'return'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2084): error C2238: unexpected token(s) preceding ';'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2087): error C2255: 'friend': not allowed outside of a class definition
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/intrusive/bstree.hpp(2087): error C2144: syntax error: 'bool' should be preceded by ';'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(36): error C2988: unrecognizable template declaration/definition
2> C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(41): note: see reference to class template instantiation 'boost::beast::http::detail::is_header_impl<T>' being compiled
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(36): error C2059: syntax error: '<end Parse>'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(36): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(38): error C2226: syntax error: unexpected type 'std::false_type'
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(38): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
2>C:\Users\Alam Syed\Documents\Unreal Projects\SomeProject\Plugins\PCL\Source\PCL\Boost\include\boost-root\boost/beast/http/detail/type_traits.hpp(40): error C2760: syntax error: unexpected token '{', expected 'expression'
2> Module.PCL.cpp
There is an answer - a sort of explanation as to why this is happening in unreal Engine forums for library macro conflicts. There is a dirty work around will try that.
I have some code that is meant to get a QList of QMaps from a set of data. Then it should go through all the QMaps in that list. For some reason upon attempting this I am getting some errors regarding the QVector used to store data. Here is my code:
#include <QCoreApplication>
#include <QMap>
#include <QVariant>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<QMap<QString, QVariant>> maps;
QMap<QString, QVariant> item1;
item1.insert("Item 1", QVariant::fromValue(1));
maps.append(item1);
foreach (const QMap<QString, QVariant> & map, maps)
{
qDebug() << map;
}
return a.exec();
}
Error:
..\ErrorTest\main.cpp(17): warning C4002: too many actual parameters for macro 'Q_FOREACH'
..\ErrorTest\main.cpp(17): error C2275: 'QVariant': illegal use of this type as an expression
C:\Qt\5.8\msvc2015_64\include\QtCore/qsharedpointer_impl.h(94): note: see declaration of 'QVariant'
..\ErrorTest\main.cpp(17): error C2955: 'std::remove_reference': use of class template requires template argument list
D:\Microsoft Visual Studio 14.0\VC\INCLUDE\xtr1common(301): note: see declaration of 'std::remove_reference'
..\ErrorTest\main.cpp(17): error C2065: 'map': undeclared identifier
..\ErrorTest\main.cpp(17): error C2143: syntax error: missing ')' before '>'
..\ErrorTest\main.cpp(17): error C2059: syntax error: '>'
..\ErrorTest\main.cpp(17): error C2065: '_container_': undeclared identifier
..\ErrorTest\main.cpp(17): error C2228: left of '.control' must have class/struct/union
..\ErrorTest\main.cpp(17): note: type is 'unknown-type'
..\ErrorTest\main.cpp(17): error C2228: left of '.i' must have class/struct/union
..\ErrorTest\main.cpp(17): note: type is 'unknown-type'
..\ErrorTest\main.cpp(17): error C2228: left of '.e' must have class/struct/union
..\ErrorTest\main.cpp(17): note: type is 'unknown-type'
..\ErrorTest\main.cpp(17): error C2059: syntax error: ')'
..\ErrorTest\main.cpp(17): error C2143: syntax error: missing ';' before 'for'
..\ErrorTest\main.cpp(17): error C2059: syntax error: '='
..\ErrorTest\main.cpp(17): error C2143: syntax error: missing ';' before '}'
..\ErrorTest\main.cpp(17): fatal error C1004: unexpected end-of-file found
Thank you, and yes the tagData->toMappedList() returns the correct set of QMaps/data.
Imho the problem is the , inside the template. Sadly foreach is nothing but a call for Q_FOREACH which is a macro. It requires to arguments separated by comma. But because of the template you have 2 commas. I had this problem a while ago, though Qt Creator at least provided me with error: macro "Q_FOREACH" passed 3 arguments, but takes just 2 instead of the ton of errors you got. In your case this would be:
..\ErrorTest\main.cpp(17): warning C4002: too many actual parameters for macro 'Q_FOREACH'
I would suggest a for loop with an iterator to traverse the list of maps. Unless you want to dump the const in which case you can do:
QMap<QString, QVariant> map;
foreach (map, maps) {
...
}
You can also use auto but again - no constantness.
If constantness is a critical aspect in your case, go for the for loop with a constant iterator.
The code below compiles fine with g++
#include <iostream>
using namespace std;
int main()
{
for (struct { int i; double j; } x = {0,0}; x.i < 10; ++x.i, x.j+=.1)
{
std::cout << x.i << " " << x.j << '\n';
}
}
But with MSVC2005 I get errors
error C2332: 'struct' : missing tag name
error C2143: syntax error : missing ')' before '{'
warning C4094: untagged 'struct' declared no symbols
error C2059: syntax error : 'empty declaration'
error C2143: syntax error : missing ';' before ')'
error C2143: syntax error : missing ';' before ')'
error C2065: 'x' : undeclared identifier
error C2059: syntax error : '{'
error C2143: syntax error : missing ';' before '{'
error C2143: syntax error : missing ';' before '}'
error C2228: left of '.i' must have class/struct/union
1> type is ''unknown-type''
error C2228: left of '.i' must have class/struct/union
1> type is ''unknown-type''
error C2228: left of '.j' must have class/struct/union
1> type is ''unknown-type''
error C2059: syntax error : ')'
error C2143: syntax error : missing ';' before '{'
error C2228: left of '.i' must have class/struct/union
1> type is ''unknown-type''
error C2228: left of '.j' must have class/struct/union
1> type is ''unknown-type''
I want to know if anonymous struct inside loops are an "extension" or a language feature and MSC2005 is missing it?
It's a bug in msvc. Unfortunately, it is not high in their priority list.
I'm trying to create a threadpool with the boost threadpool library, but on defining it I keep getting lots of error about template params being wrong.
I'm probably doing something fundamentally wrong, but I'm not seeing it?
//Threadpool
typedef boost::threadpool::thread_pool<
boost::threadpool::task_func,
boost::threadpool::fifo_scheduler<tsk>,
boost::threadpool::static_size<boost::threadpool::fifo_pool>,
boost::threadpool::resize_controller<boost::threadpool::fifo_pool>,
boost::threadpool::wait_for_active_tasks<boost::threadpool::fifo_pool>
> pool;
ERRORS:
------ Build started: Project: Trial, Configuration: Debug Win32 ------
Compiling...
Trial.cpp
error C2923: 'boost::threadpool::fifo_scheduler' : 'tsk' is invalid as template argument '#1', type expected
see declaration of 'tsk'
error C3200: 'boost::threadpool::fifo_pool' : invalid template argument for template parameter 'SizePolicy', expected a class template
error C3200: 'boost::threadpool::resize_controller<Pool>' : invalid template argument for template parameter 'SizePolicyController', expected a class template
with
[
Pool=boost::threadpool::fifo_pool
]
error C3200: 'boost::threadpool::wait_for_active_tasks<Pool>' : invalid template argument for template parameter 'ShutdownPolicy', expected a class template
with
[
Pool=boost::threadpool::fifo_pool
]
error C3200: 'boost::threadpool::fifo_pool' : invalid template argument for template parameter 'SizePolicy', expected a class template
see reference to class template instantiation 'boost::threadpool::thread_pool<Task,SchedulingPolicy,SizePolicy,SizePolicyController,ShutdownPolicy>' being compiled
with
[
Task=boost::threadpool::task_func,
SchedulingPolicy=boost::threadpool::fifo_scheduler,
SizePolicy=boost::threadpool::fifo_pool,
SizePolicyController=boost::threadpool::resize_controller<boost::threadpool::fifo_pool>,
ShutdownPolicy=boost::threadpool::wait_for_active_tasks<boost::threadpool::fifo_pool>
]
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(79) : error C3200: 'boost::threadpool::resize_controller<Pool>' : invalid template argument for template parameter 'SizePolicyController', expected a class template
with
[
Pool=boost::threadpool::fifo_pool
]
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(79) : error C3200: 'boost::threadpool::wait_for_active_tasks<Pool>' : invalid template argument for template parameter 'ShutdownPolicy', expected a class template
with
[
Pool=boost::threadpool::fifo_pool
]
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(91) : error C2059: syntax error : '<'
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(91) : error C2238: unexpected token(s) preceding ';'
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(92) : error C2059: syntax error : '<'
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(92) : error C2238: unexpected token(s) preceding ';'
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(111) : error C2146: syntax error : missing ';' before identifier 'size_controller'
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(111) : error C2501: 'boost::threadpool::thread_pool<Task,SchedulingPolicy,SizePolicy,SizePolicyController,ShutdownPolicy>::size_controller_type' : missing storage-class or type specifiers
with
[
Task=boost::threadpool::task_func,
SchedulingPolicy=boost::threadpool::fifo_scheduler,
SizePolicy=boost::threadpool::fifo_pool,
SizePolicyController=boost::threadpool::resize_controller<boost::threadpool::fifo_pool>,
ShutdownPolicy=boost::threadpool::wait_for_active_tasks<boost::threadpool::fifo_pool>
]
c:\Program Files\boost\boost_1_44\boost\threadpool\pool.hpp(112) : warning C4183: 'size_controller': missing return type; assumed to be a member function returning 'int'
---------------------- Done ----------------------
Build: 0 succeeded, 1 failed, 0 skipped
According to your comment, tsk is a variable. You can't pass runtime expressions (such as a variable) as template parameters. Templates are entirely compile-time.
For this specific problem, you just need to do this:
typedef boost::threadpool::thread_pool<> pool;
void taskfunc();
// later on...
pool my_pool;
my_pool.schedule(&taskfunc);
boost::threadpool::task_func is just a boost::function0<void> — any 0-arg void function pointer can convert to that type.