{"id":1853,"date":"2016-08-23T09:33:35","date_gmt":"2016-08-23T14:33:35","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=1853"},"modified":"2016-08-23T09:33:35","modified_gmt":"2016-08-23T14:33:35","slug":"c-11-and-qt-part-4-test-your-compiler","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/","title":{"rendered":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler"},"content":{"rendered":"<p>As promised, here is a test to see if your compiler actually handles initialization lists correctly or adopted a &#8220;last one in wins&#8221; strategy.<\/p>\n<pre>#ifndef SMALLDATA_H\r\n#define SMALLDATA_H\r\n\r\nclass SmallData\r\n{\r\npublic:\r\n\u00a0\u00a0\u00a0 explicit SmallData( int nuVal);\r\n\u00a0\u00a0\u00a0 explicit SmallData();\r\n\u00a0\u00a0\u00a0 ~SmallData();\r\n\u00a0\u00a0 \u00a0\r\nprivate:\r\n\u00a0\u00a0\u00a0 int m_data = 8;\r\n\r\n};\r\n\r\n#endif \/\/ SMALLDATA_H<\/pre>\n<p>&nbsp;<\/p>\n<pre>#include \"SmallData.h\"\r\n#include &lt;iostream&gt;\r\n\r\nSmallData::SmallData()\r\n{\r\n\u00a0\u00a0\u00a0 std::cout &lt;&lt; \"SmallData Default constructor data value \" &lt;&lt; m_data &lt;&lt; std::endl;\r\n}\r\n\r\nSmallData::SmallData(int nuVal) :\r\n\u00a0\u00a0\u00a0 m_data(nuVal)\r\n{\r\n\u00a0\u00a0\u00a0 std::cout &lt;&lt; \"SmallData nuVal constructor data value \" &lt;&lt; m_data &lt;&lt; std::endl;\r\n}\r\n\r\nSmallData::~SmallData()\r\n{\r\n}<\/pre>\n<pre>\r\n\r\n#ifndef OUTERCLASS_H\r\n#define OUTERCLASS_H\r\n\r\n#include \"SmallData.h\"\r\n\r\nclass OuterClass\r\n{\r\npublic:\r\n\u00a0\u00a0\u00a0 explicit OuterClass();\r\n\u00a0\u00a0\u00a0 ~OuterClass();\r\n\u00a0\u00a0 \u00a0\r\nprivate:\r\n\u00a0\u00a0\u00a0 SmallData m_1;\r\n\u00a0\u00a0\u00a0 SmallData *m_ptr=nullptr;\r\n\u00a0\u00a0\u00a0 SmallData m_2{33};\r\n\r\n};\r\n\r\n#endif \/\/ OUTERCLASS_H<\/pre>\n<p>&nbsp;<\/p>\n<pre>#include \"OuterClass.h\"\r\n\r\nOuterClass::OuterClass()\r\n{\r\n\u00a0\u00a0\u00a0 m_ptr = new SmallData(12);\r\n}\r\n\r\nOuterClass::~OuterClass()\r\n{\r\n\u00a0\u00a0\u00a0 if (m_ptr != nullptr)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delete m_ptr;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<pre>#include &lt;iostream&gt;\r\n#include \"OuterClass.h\"\r\n\r\nint main(int argc, char **argv)\r\n{\r\n\u00a0\u00a0\u00a0 std::cout &lt;&lt; \"About to create create variable o\" &lt;&lt; std::endl;\r\n\u00a0\u00a0\u00a0 OuterClass o;\r\n\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 std::cout &lt;&lt; \"About to new ptr\" &lt;&lt; std::endl;\r\n\u00a0\u00a0\u00a0 OuterClass *ptr = new OuterClass();\r\n\u00a0\u00a0\u00a0 std::cout &lt;&lt; \"Finished new now deleting\" &lt;&lt; std::endl;\r\n\u00a0\u00a0\u00a0 delete ptr;\r\n\u00a0\u00a0\u00a0 ptr = nullptr;\r\n\u00a0\u00a0 \u00a0\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Compiling and executing this code yields the following output.<\/p>\n<pre>About to create create variable o\r\nSmallData Default constructor data value 8\r\nSmallData nuVal constructor data value 33\r\nSmallData nuVal constructor data value 12\r\nAbout to new ptr\r\nSmallData Default constructor data value 8\r\nSmallData nuVal constructor data value 33\r\nSmallData nuVal constructor data value 12\r\nFinished new now deleting\r\nPress ENTER to continue...<\/pre>\n<p style=\"text-align: justify;\">Careful readers will note that I made use of another C++ 11 feature <em>nullptr<\/em>. This was added to the language to get around all of the issues with 0 being used for everything. Basically one of the main problems\/hacks from old C days:<\/p>\n<pre>char *ptr = 0;\r\nint x = 0;\r\n...\r\nx = ptr;<\/pre>\n<p style=\"text-align: justify;\">Oh come on! You&#8217;ve all seen code which did that, especially if you started back when the <a href=\"http:\/\/www.edm2.com\/index.php\/Zortech_C%2B%2B\">Zortech C++ compiler<\/a> reigned supreme on DOS, before Watcom kicked its butt at the same time Symantec ran it into the ground. If you came from <a href=\"https:\/\/en.wikibooks.org\/wiki\/X86_Assembly\/Data_Transfer\">8086 assembly<\/a> you had a much higher probability of using pointers and integers interchangeably. Even if you didn&#8217;t come from assembly language programming, some hardware which operated via configurable shared memory used to have you load the base address of the shared memory range as an integer into the card\/device\/driver. Code like that is prevalent on every desktop, laptop and tablet today. What do you think those BIOS settings do which allow you to configure the amount of RAM to share with the video card?<\/p>\n<p style=\"text-align: justify;\">The problem isn&#8217;t so much storing a pointer in an integer. The real problem is when something like this happens:<\/p>\n<pre style=\"text-align: justify;\">char *ptr = 0;\r\nint x = 2;\r\n...\r\nptr = x;<\/pre>\n<p style=\"text-align: justify;\">Maybe, just maybe you lead the world&#8217;s most charmed life. Maybe, just maybe the very next instruction attempts to dereference the pointer. Most people don&#8217;t get that lucky. Usually it is not until many hundreds of lines later when you actually use the pointer, perhaps in a different method, when you get your access violation\/segmentation fault\/whatever your OS of choice chooses to slam you with when accessing out of process protected memory. Of course, this assume you aren&#8217;t in an embedded target running as root where the OS says &#8220;Sure! You can overwrite a chunk of me!&#8221;<\/p>\n<p style=\"text-align: justify;\">At any rate, the output from this test says my fears of a &#8220;last one in wins&#8221; shortcut were unfounded for this compiler. You really should run the test with your compiler though.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As promised, here is a test to see if your compiler actually handles initialization lists correctly or adopted a &#8220;last one in wins&#8221; strategy. #ifndef SMALLDATA_H #define SMALLDATA_H class SmallData { public: \u00a0\u00a0\u00a0 explicit SmallData( int nuVal); \u00a0\u00a0\u00a0 explicit SmallData(); \u00a0\u00a0\u00a0 ~SmallData(); \u00a0\u00a0 \u00a0 private: \u00a0\u00a0\u00a0 int m_data = 8; }; #endif \/\/ SMALLDATA_H &nbsp; #include &#8220;SmallData.h&#8221; #include &lt;iostream&gt; SmallData::SmallData() { \u00a0\u00a0\u00a0 std::cout &lt;&lt; &#8220;SmallData Default constructor data value &#8221; &lt;&lt; m_data &lt;&lt; std::endl; } &hellip; <a title=\"C++ 11 and Qt \u2014 Part 4 Test Your Compiler\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/\"><span class=\"screen-reader-text\">C++ 11 and Qt \u2014 Part 4 Test Your Compiler<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[1188,1182,1189],"class_list":["post-1853","post","type-post","status-publish","format-standard","hentry","category-information-technology","tag-8086-assembly","tag-c-11","tag-pointers","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"As promised, here is a test to see if your compiler actually handles initialization lists correctly or adopted a &#8220;last one in wins&#8221; strategy. #ifndef SMALLDATA_H #define SMALLDATA_H class SmallData { public: \u00a0\u00a0\u00a0 explicit SmallData( int nuVal); \u00a0\u00a0\u00a0 explicit SmallData(); \u00a0\u00a0\u00a0 ~SmallData(); \u00a0\u00a0 \u00a0 private: \u00a0\u00a0\u00a0 int m_data = 8; }; #endif \/\/ SMALLDATA_H &nbsp; #include &quot;SmallData.h&quot; #include &lt;iostream&gt; SmallData::SmallData() { \u00a0\u00a0\u00a0 std::cout &lt;&lt; &quot;SmallData Default constructor data value &quot; &lt;&lt; m_data &lt;&lt; std::endl; } &hellip; C++ 11 and Qt \u2014 Part 4 Test Your CompilerRead more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-23T14:33:35+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\"},\"headline\":\"C++ 11 and Qt \u2014 Part 4 Test Your Compiler\",\"datePublished\":\"2016-08-23T14:33:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/\"},\"wordCount\":373,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"keywords\":[\"8086 assembly\",\"C++ 11\",\"pointers\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/\",\"name\":\"C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2016-08-23T14:33:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/c-11-and-qt-part-4-test-your-compiler\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ 11 and Qt \u2014 Part 4 Test Your Compiler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"No part of this site may be used by AI without first purchasing that right\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/","og_locale":"en_US","og_type":"article","og_title":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog","og_description":"As promised, here is a test to see if your compiler actually handles initialization lists correctly or adopted a &#8220;last one in wins&#8221; strategy. #ifndef SMALLDATA_H #define SMALLDATA_H class SmallData { public: \u00a0\u00a0\u00a0 explicit SmallData( int nuVal); \u00a0\u00a0\u00a0 explicit SmallData(); \u00a0\u00a0\u00a0 ~SmallData(); \u00a0\u00a0 \u00a0 private: \u00a0\u00a0\u00a0 int m_data = 8; }; #endif \/\/ SMALLDATA_H &nbsp; #include \"SmallData.h\" #include &lt;iostream&gt; SmallData::SmallData() { \u00a0\u00a0\u00a0 std::cout &lt;&lt; \"SmallData Default constructor data value \" &lt;&lt; m_data &lt;&lt; std::endl; } &hellip; C++ 11 and Qt \u2014 Part 4 Test Your CompilerRead more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/","og_site_name":"Logikal Blog","article_published_time":"2016-08-23T14:33:35+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/"},"author":{"name":"admin","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c"},"headline":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler","datePublished":"2016-08-23T14:33:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/"},"wordCount":373,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"keywords":["8086 assembly","C++ 11","pointers"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/","name":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"datePublished":"2016-08-23T14:33:35+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/c-11-and-qt-part-4-test-your-compiler\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"C++ 11 and Qt \u2014 Part 4 Test Your Compiler"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"No part of this site may be used by AI without first purchasing that right","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"]},{"@type":"Person","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","caption":"admin"},"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1853"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1853\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}