From: Edward Diener (eddielee_at_[hidden])
Date: 2005-04-03 07:39:39
Pavel Chikulaev wrote:
>> "Edward Diener" <eddielee_at_[hidden]> wrote in message
>>> Adding an implementation of any Boost library to .net means
>>> rewriting at least some of that library in managed C++ for net 1.0
>>> or 1.1 or for C++/CLI for net 1.2 . I know that managed C++ has no
>>> template support ( and under an NDA I can not disclose anything I
>>> know about .net 1.2 that is not public knowledge ) so basically you
>>> are asking that the FileSystem library be written completely
>>> without the use of templates.
>>> Furthermore all C++ modules in net 1.0 and net 1.1 are subject to
>>> the DLL initialization bug if those modules are created as a .NET
>>> assembly using mixed mode C++. Mixed mode C++ involves any C++ code
>>> which uses the C++ standard library or the windows API. This bug
>>> can occur at any time and crash the end-user's application and has
>>> nothing to do with the programmer's code, thus essentially
>>> destroying all mixed-mode C++ programming of assemblies for .net
>>> 1.0 and .net 1.1. Nor is there any sure workaround for this bug.
>>> This is all well-documented by Microsoft. So the only real
>>> alternative for C++ programmers writing assembles for .net 1.0 and
>>> .net 1.1 are to write pure mode managed C++, which is vastly
>>> different in many respects from standard C++ which Boost promotes.
>>> Given these truths it would be exceedingly foolish for Boost, or
>>> for the Boost Filesystem, to be developed for .net as it now exists.
>> You're absolutely right, but what about 2.0? It supports templates
>> I believe Microsoft will fix that bug in 2.0.
>> The only disadvantage that it's not ready yet.
>> So, may be we should postpone this question until 2.0 released?
>> Anyway I don't think it's bad idea to do it with at least .NET 2.0.
The problem is that the .NET classes themselves do not support templates as
classes or as public or protected member functions. So moving any of Boost
to .NET essentially must drop the use of templates for the programmer using
Now you may feel that this is still useful, and I have done exactly that,
although not for .NET, in my own Regular Expression Component Library using
Boost regex++, but I do not think you can ask any of the Boost programmers
to do that for you. If you decide to take a Boost library and create a .NET
implementation for it for your own use or that of others, no one will
object. But I think it is wrong to ask Boost implementors to work with an
implementation that is not standard C++. After all Boost is about the C++
standard and creating advanced implementations which follow that standard as
much as possible.