{ "labelLang" : "hun", "responseDate" : "2024-03-29 13:49", "content" : { "otype" : "PublicationOther", "mtid" : 31998746, "status" : "APPROVED", "published" : true, "unhandledTickets" : 0, "deleted" : false, "lastRefresh" : "2024-02-19T13:35:56.117+0000", "lastModified" : "2024-01-09T15:22:24.841+0000", "created" : "2021-05-04T20:11:23.096+0000", "creator" : { "otype" : "Author", "mtid" : 10060712, "link" : "/api/author/10060712", "label" : "Szalay Richárd (Programozási nyelvek, C++, Informatika)", "familyName" : "Szalay", "givenName" : "Richárd", "published" : true, "oldId" : 10060712, "snippet" : true }, "lastDuplumOK" : "2022-07-22T12:47:23.205+0000", "lastDuplumSearch" : "2022-07-22T12:47:23.205+0000", "core" : true, "citation" : false, "type" : { "otype" : "PublicationType", "mtid" : 29, "link" : "/api/publicationtype/29", "label" : "Egyéb", "code" : 29, "otypeName" : "PublicationOther", "listPosition" : 15, "published" : true, "oldId" : 29, "snippet" : true }, "subType" : { "otype" : "SubType", "mtid" : 10000259, "link" : "/api/subtype/10000259", "label" : "Rádió műsor, TV műsor, film (Egyéb)", "name" : "Rádió műsor, TV műsor, film", "nameEng" : "Radio, TV program, video", "docType" : { "otype" : "PublicationType", "mtid" : 29, "link" : "/api/publicationtype/29", "label" : "Egyéb", "code" : 29, "otypeName" : "PublicationOther", "listPosition" : 15, "published" : true, "oldId" : 29, "snippet" : true }, "listPosition" : 1584, "published" : true, "oldId" : 10000259, "snippet" : true }, "category" : { "otype" : "Category", "mtid" : 3, "link" : "/api/category/3", "label" : "Ismeretterjesztő", "published" : true, "oldId" : 3, "snippet" : true }, "languages" : [ { "otype" : "Language", "mtid" : 10002, "link" : "/api/language/10002", "label" : "Angol", "name" : "Angol", "nameEng" : "English", "published" : true, "oldId" : 2, "snippet" : true } ], "firstAuthor" : "Szalay, Richárd", "authorships" : [ { "otype" : "PersonAuthorship", "mtid" : 96186922, "link" : "/api/authorship/96186922", "label" : "Szalay, Richárd [Szalay, Richárd (Programozási nyel...), szerző] Programozási Nyelvek és Fordítóprogramok Tanszék (ELTE / IK); PhD Informatika Doktori Iskola (ELTE / IK)", "listPosition" : 1, "share" : 1.0, "first" : true, "last" : false, "corresponding" : false, "author" : { "otype" : "Author", "mtid" : 10060712, "link" : "/api/author/10060712", "label" : "Szalay Richárd (Programozási nyelvek, C++, Informatika)", "familyName" : "Szalay", "givenName" : "Richárd", "published" : true, "oldId" : 10060712, "snippet" : true }, "familyName" : "Szalay", "givenName" : "Richárd", "authorTyped" : true, "editorTyped" : false, "otherTyped" : false, "type" : { "otype" : "AuthorshipType", "mtid" : 1, "link" : "/api/authorshiptype/1", "label" : "Szerző", "code" : 0, "published" : true, "oldId" : 0, "snippet" : true }, "published" : false, "snippet" : true } ], "title" : "Weak Interfaces → Weak Defences", "subTitle" : "The Bane of Implicit Conversion in our Function Calls", "identifiers" : [ { "otype" : "PublicationIdentifier", "mtid" : 18742169, "link" : "/api/publicationidentifier/18742169", "label" : "Egyéb URL: http://cppnow2021.sched.com/event/hhkX/weak-interfaces-weak-defences-the-bane-of-implicit-conversion-in-our-function-calls", "source" : { "otype" : "PlainSource", "mtid" : 40, "link" : "/api/publicationsource/40", "label" : "Egyéb URL", "type" : { "otype" : "PublicationSourceType", "mtid" : 10006, "link" : "/api/publicationsourcetype/10006", "label" : "Link", "mayHaveOa" : true, "published" : true, "snippet" : true }, "name" : "Egyéb URL", "nameEng" : "Other URL", "linkPattern" : "@@@", "publiclyVisible" : true, "published" : true, "oldId" : 40, "snippet" : true }, "idValue" : "http://cppnow2021.sched.com/event/hhkX/weak-interfaces-weak-defences-the-bane-of-implicit-conversion-in-our-function-calls", "realUrl" : "http://cppnow2021.sched.com/event/hhkX/weak-interfaces-weak-defences-the-bane-of-implicit-conversion-in-our-function-calls", "published" : false, "snippet" : true }, { "otype" : "PublicationIdentifier", "mtid" : 19005701, "link" : "/api/publicationidentifier/19005701", "label" : "Teljes dokumentum: http://www.youtube.com/watch?v=-UW4tA5r2QE", "source" : { "otype" : "PlainSource", "mtid" : 39, "link" : "/api/publicationsource/39", "label" : "Teljes dokumentum", "type" : { "otype" : "PublicationSourceType", "mtid" : 10006, "link" : "/api/publicationsourcetype/10006", "label" : "Link", "mayHaveOa" : true, "published" : true, "snippet" : true }, "name" : "Teljes dokumentum", "nameEng" : "Teljes dokumentum", "linkPattern" : "@@@", "publiclyVisible" : true, "published" : true, "oldId" : 39, "snippet" : true }, "idValue" : "http://www.youtube.com/watch?v=-UW4tA5r2QE", "realUrl" : "http://www.youtube.com/watch?v=-UW4tA5r2QE", "published" : false, "snippet" : true } ], "firstPageOrInternalIdForSort" : "", "pageLength" : 45, "publishedYear" : 2021, "conference" : { "otype" : "Conference", "mtid" : 261654, "link" : "/api/conference/261654", "label" : "C++Now 2021 2021-05-02 [Aspen (CO), Amerikai Egyesült Államok *]", "location" : [ { "otype" : "City", "mtid" : 16169, "link" : "/api/city/16169", "label" : "Aspen (CO), Amerikai Egyesült Államok *", "partOf" : { "otype" : "Country", "mtid" : 10017, "link" : "/api/country/10017", "label" : "Amerikai Egyesült Államok", "published" : true, "oldId" : 13, "snippet" : true }, "published" : true, "oldId" : 10008027, "snippet" : true } ], "published" : true, "snippet" : true }, "abstractText" : "Making functions that can be called just the right way is trickier than it sounds.\nIt is way too easy to simply use only the built-in and some of the cornerstone STL types as parameters to the function.\nPeople commonly go about taking ints, and bools, and doubles, and strings.\nWhat actual semantics are tied to individual parameters are usually expressed through the name of the variable, or worse, only in the documentation.\nSpecial tools outside of the language's jurisdiction are needed to handle these names.\nAnd we all know people rarely like to read the documentation...\n\nHowever, the situation is even worse than it would seem at face value: given a function like \"drawBlameView(FileID, int, int, bool, DrawMode)\" you would think only the two ints are the problem...\nWrong! All 5 parameters here might be mixed up, due to typedefs hiding FileID to be actually int, and the implicit conversion between bool and the rest.\nUnfortunately, this is not immediately apparent, especially when a new person joins an existing project, and the responsibility falls to all of us to make sure our function interfaces are safer.\n\nSeveral tools exist that try string magic to figure out whether a call is done with badly ordered arguments by mistake.\nHowever, those tools mostly can only help after the fact.\nWe will discuss how one can go about finding and filtering out the functions in their project.\nWhat's more, a highlight and plea for preventive refactoring also help in identifying places in the code where type safety will not only help function calls but other parts too, such as your local variables.\nThe method might sound simple at first, but there are plenty nasty creatures lurking in the shadows... especially if you want to do all this for an incredibly huge project that has never evolved to proper type safety.", "subjects" : [ { "otype" : "Classification", "mtid" : 10049, "link" : "/api/classification/10049", "label" : "Szoftvertervezés és -fejlesztés", "published" : true, "snippet" : true } ], "fundings" : [ { "otype" : "Funding", "mtid" : 1996521, "link" : "/api/funding/1996521", "label" : "(Kooperatív Doktori Program (NKFIH))", "published" : false, "snippet" : true } ], "digital" : true, "printed" : false, "collaboration" : "NATIONAL", "sourceYear" : 2021, "foreignEdition" : true, "foreignLanguage" : true, "fullPublication" : false, "conferencePublication" : true, "nationalOrigin" : true, "missingAuthor" : false, "oaType" : "NONE", "oaCheckDate" : "2024-02-19", "oaFree" : false, "citationCount" : 1, "citationCountUnpublished" : 0, "citationCountWoOther" : 0, "independentCitCountWoOther" : 0, "nationalOriginCitationCount" : 1, "foreignEditionCitationCount" : 1, "doiCitationCount" : 0, "wosCitationCount" : 0, "scopusCitationCount" : 0, "wosScopusCitationCount" : 0, "wosScopusCitationCountWoOther" : 0, "wosScopusIndependentCitationCount" : 0, "wosScopusIndependentCitationCountWoOther" : 0, "independentCitationCount" : 0, "selfCitationCount" : 1, "unhandledCitationCount" : 0, "citingPubCount" : 1, "independentCitingPubCount" : 0, "citingPubCountWoOther" : 0, "independentCitingPubCountWoOther" : 0, "unhandledCitingPubCount" : 0, "citedPubCount" : 0, "citedCount" : 0, "pubStats" : { "types" : [ { "type" : "Folyóiratcikk", "typeEng" : "Journal Article", "code" : 24, "count" : 0 }, { "type" : "Könyvrészlet", "typeEng" : "Chapter in Book", "code" : 25, "count" : 0 }, { "type" : "Könyv", "typeEng" : "Book", "code" : 23, "count" : 0 }, { "type" : "Egyéb konferenciaközlemény", "typeEng" : "Conference paper", "code" : 31, "count" : 0 }, { "type" : "Egyéb konferenciakötet", "typeEng" : "Conference proceedings", "code" : 32, "count" : 0 }, { "type" : "Oltalmi formák", "typeEng" : "Protection forms", "code" : 26, "count" : 0 }, { "type" : "Disszertáció", "typeEng" : "Thesis", "code" : 28, "count" : 0 }, { "type" : "Egyéb", "typeEng" : "Miscellaneous", "code" : 29, "count" : 1 }, { "type" : "Alkotás", "typeEng" : "Achievement", "code" : 22, "count" : 0 }, { "type" : "Kutatási adat", "typeEng" : "Research data", "code" : 33, "count" : 0 } ], "citationTypes" : [ { "type" : "Folyóiratcikk", "typeEng" : "Journal Article", "code" : 24, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Könyvrészlet", "typeEng" : "Chapter in Book", "code" : 25, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Könyv", "typeEng" : "Book", "code" : 23, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Egyéb konferenciaközlemény", "typeEng" : "Conference paper", "code" : 31, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Egyéb konferenciakötet", "typeEng" : "Conference proceedings", "code" : 32, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Oltalmi formák", "typeEng" : "Protection forms", "code" : 26, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Disszertáció", "typeEng" : "Thesis", "code" : 28, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Egyéb", "typeEng" : "Miscellaneous", "code" : 29, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Alkotás", "typeEng" : "Achievement", "code" : 22, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 }, { "type" : "Kutatási adat", "typeEng" : "Research data", "code" : 33, "countUnknown" : 0, "countIndependent" : 0, "countSelfCitation" : 0 } ], "years" : [ { "year" : 2023, "publicationCount" : 0, "citationCount" : 1, "independentCitationCount" : 0, "citingPubCount" : 1, "independentCitingPubCount" : 0, "oaStats" : null, "oaStats2" : null } ] }, "hasCitationDuplums" : false, "userChangeableUntil" : "2021-08-02T20:11:37.377+0000", "directInstitutesForSort" : "PhD Informatika Doktori Iskola (ELTE / IK); Programozási Nyelvek és Fordítóprogramok Tanszék (ELTE / IK)", "ownerAuthorCount" : 1, "ownerInstituteCount" : 7, "directInstituteCount" : 2, "authorCount" : 1, "contributorCount" : 0, "startDate" : "2021-05-02", "endDate" : "2021-05-07", "country" : { "otype" : "Country", "mtid" : 10017, "link" : "/api/country/10017", "label" : "Amerikai Egyesült Államok", "published" : true, "oldId" : 13, "snippet" : true }, "hasQualityFactor" : false, "link" : "/api/publication/31998746", "label" : "Szalay Richárd. Weak Interfaces → Weak Defences: The Bane of Implicit Conversion in our Function Calls. (2021)", "template" : "