
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then overrides the members requiring argument types of path." Technically, I don't think this is overriding, and the base classes don't require path arguments. Maybe you mean: "The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then adds constructors, and overloads of the base interfaces, that accept path arguments instead of strings" -- Dave Abrahams Boost Consulting www.boost-consulting.com

At 12:40 PM 3/12/2004, David Abrahams wrote:
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then overrides the members requiring argument types of path."
Technically, I don't think this is overriding, and the base classes don't require path arguments.
Yes, that's clearly wrong.
Maybe you mean:
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then adds constructors, and overloads of the base interfaces, that accept path arguments instead of strings"
Hum... Looking at section 13, paragraph 1, a name is said to be overloaded only for declarations of the name in the same scope. Are a derived class and a base class in the same scope? My guess is no, although I couldn't find any specifics in a quick glance in the standard. The standard talks about visibility and hiding, but doesn't use the term "overload" for this exact case. The term "redeclares" is sometimes used. Regardless, "open" is the only name involved, and so perhaps this both technically correct and clearer: "The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then redeclares constructors and open functions to take file name arguments of type path instead of char*." Thanks, --Beman

Beman Dawes <bdawes@acm.org> writes:
At 12:40 PM 3/12/2004, David Abrahams wrote:
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then overrides the members requiring argument types of path."
Technically, I don't think this is overriding, and the base classes don't require path arguments.
Yes, that's clearly wrong.
Maybe you mean:
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then adds constructors, and overloads of the base interfaces, that accept path arguments instead of strings"
Hum... Looking at section 13, paragraph 1, a name is said to be overloaded only for declarations of the name in the same scope. Are a derived class and a base class in the same scope?
No, you're right. In that case "replaced" or "hidden" is probably more accurate.
My guess is no, although I couldn't find any specifics in a quick glance in the standard. The standard talks about visibility and hiding, but doesn't use the term "overload" for this exact case. The term "redeclares" is sometimes used.
OK.
Regardless, "open" is the only name involved, and so perhaps this both technically correct and clearer:
"The Filesystem Library's fstream.hpp header simply uses the <fstream> standard library components as base classes, and then redeclares constructors and open functions to take file name arguments of type path instead of char*."
OK. -- Dave Abrahams Boost Consulting www.boost-consulting.com
participants (2)
-
Beman Dawes
-
David Abrahams