Subject: [Boost-bugs] [Boost C++ Libraries] #13338: checked_deleteé®é¢
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-12-13 08:50:05
#13338: checked_deleteé®é¢
------------------------------+---------------------------
Reporter: linzhongzi@⦠| Owner: No-Maintainer
Type: Bugs | Status: new
Milestone: To Be Determined | Component: utility
Version: Boost 1.65.0 | Severity: Problem
Keywords: |
------------------------------+---------------------------
ç¯å¢ï¼
Visual studio 2017
booståºç¼è¯éé¡¹ï¼ msvc141,multi,win64,debug,shared
demoå·¥ç¨è®¾ç½®: debug, win32
é®é¢æº:
ãBeyond the C++ STL: an introduction to boostã书ä¸Part I, Library 3ï¼
checked_deleteç« è
å¦ææ deleter.h, deleter.cpp, to_be_deleted.hä¸ä¸ªæ件å
容æ´åå°ä¸ä¸ªæ件é
ï¼
ç¼è¯åä¼æ示 " warning C4150: å é¤æåä¸å®æ´âto_be_deletedâç±»åçæéï¼æ²¡
æè°ç¨ææå½æ°"
è¿è¡åè°ç¨ deleter::do_it æ¶ä¼é´æ¥è°ç¨å° ~to_be_deleted()ã
è°ç¨ deleter::delete_it æ¶åä¸ä¼é´æ¥è°ç¨å° ~to_be_deleted()ã
æåè°ç¨å® ~to_be_deleted()ç¨åºç»ææ¶ææ¥ä¸ä¸ªå¼å¸¸é误ã
å¾å¥æªçå°æ¹åï¼çæ¥æ¯ç¼è¯å¨å·¥ä½æ¹å¼çä¸å导è´çå§ããã
code like this:
// deleter.h
class to_be_deleted;
class deleter {
public:
void delete_it(to_be_deleted* p);
void do_it(to_be_deleted* p);
};
// deleter.cpp
//#include "deleter.h"
#include "boost/checked_delete.hpp"
void deleter::delete_it(to_be_deleted* p) {
delete p;
}
void deleter::do_it(to_be_deleted* p) {
boost::checked_delete(p); // typedef char
type_must_be_complete[sizeof(T)]; ææ代ç æ¾å
¥ä¸ä¸ªæ件ï¼è¿å¥å±
ç¶è½ç¼è¯éè¿
??
}
// to_be_deleted.h
#include <iostream>
class to_be_deleted
{
public:
~to_be_deleted() {
std::cout <<
"I'd like to say important things here, please.";
}
};
// Test application
//#include "deleter.h"
//#include "to_be_deleted.h"
int main() {
to_be_deleted* p = new to_be_deleted;
deleter d;
d.delete_it(p);
d.do_it(p);
}
-- Ticket URL: <https://svn.boost.org/trac10/boost/ticket/13338> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-12-13 08:56:38 UTC