<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Frage zu config-file syntax in boost::program_options]]></title><description><![CDATA[<p>Hi,</p>
<p>hab vor kurzem begonnen, mit boost::program_options zu experimentieren, da ich es in meinem Projekt einsetzen möchte -- allerdings war es mir bis jetzt noch nicht möglich, herauszufinden, wie ich eine Abfolge von floating-point Werten im config-File spezifizieren kann (die <a href="http://www.boost.org/doc/libs/1_38_0/doc/html/program_options.html" rel="nofollow">&quot;Doku&quot;</a> ist ja leider auch nicht sehr umfangreich). Der Code sieht folgendemaßen aus, großteils zusammengeflickt aus den Samles:</p>
<pre><code class="language-cpp">options_description gui(&quot;GUI options&quot;);
		gui.add_options()
			(&quot;gui.dummy-float&quot;, value&lt;vector&lt;float&gt; &gt;()-&gt;multitoken(), &quot;some dummy double value&quot;)
			;

		// ...

		options_description visible(&quot;Visible options&quot;);
		visible.add(general).add(gui);

		options_description config_file_options(&quot;Config file options&quot;);
		config_file_options.add(gui).add(backend);

		positional_options_description p;
		p.add(&quot;input-file&quot;, -1);

		variables_map vm;
		store(command_line_parser(ac, av).
			options(visible).positional(p).run(), vm);

		ifstream ifs(&quot;testConfig.cfg&quot;);
		if( !ifs )
			throw std::runtime_error( &quot;config file not found&quot; );
		store(parse_config_file(ifs, config_file_options), vm);
		notify(vm);

		// ...

		if( vm.count(&quot;gui.dummy-float&quot;)) {
			vector&lt;float&gt; dv = vm[&quot;gui.dummy-float&quot;].as&lt;vector&lt;float&gt; &gt;();
			for( vector&lt;float&gt;::iterator it = dv.begin(); it != dv.end(); ++it )
				cout &lt;&lt; &quot;dummy-float: &quot; &lt;&lt; *it &lt;&lt; std::endl;
		}
</code></pre>
<p>Wenn ich nun als Parameter zB. &quot;--gui.dummy-float=3.354 12.45&quot; verwende, wird das korrekt als Zahlenarray erkannt und geparst. Wenn ich jedoch im Config-file sowas hier schreibe</p>
<pre><code>[gui]
dummy-float=3.354 12.45
</code></pre>
<p>bekomme ich eine Exception geworfen: &quot;in option 'gui.dummy-float': invalid option value '3.354 12.45'&quot;. Ich hab herausgefunden, dass sowas hier funktionieren würde:</p>
<pre><code>[gui]
dummy-float=3.333
dummy-float=4.44
</code></pre>
<p>aber das wird spätestens bei 4x4-Matrizen etwas mühsam und unlesbar.</p>
<p>Hat jemand eine einigermaßen vernünftige Lösung dafür? Und warum diese Inkonsistenz zwischen Programmparametern und Config-Files?</p>
<p>Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252716/frage-zu-config-file-syntax-in-boost-program_options</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 08:35:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252716.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Oct 2009 12:49:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu config-file syntax in boost::program_options on Fri, 23 Oct 2009 12:50:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hab vor kurzem begonnen, mit boost::program_options zu experimentieren, da ich es in meinem Projekt einsetzen möchte -- allerdings war es mir bis jetzt noch nicht möglich, herauszufinden, wie ich eine Abfolge von floating-point Werten im config-File spezifizieren kann (die <a href="http://www.boost.org/doc/libs/1_38_0/doc/html/program_options.html" rel="nofollow">&quot;Doku&quot;</a> ist ja leider auch nicht sehr umfangreich). Der Code sieht folgendemaßen aus, großteils zusammengeflickt aus den Samles:</p>
<pre><code class="language-cpp">options_description gui(&quot;GUI options&quot;);
		gui.add_options()
			(&quot;gui.dummy-float&quot;, value&lt;vector&lt;float&gt; &gt;()-&gt;multitoken(), &quot;some dummy double value&quot;)
			;

		// ...

		options_description visible(&quot;Visible options&quot;);
		visible.add(general).add(gui);

		options_description config_file_options(&quot;Config file options&quot;);
		config_file_options.add(gui).add(backend);

		positional_options_description p;
		p.add(&quot;input-file&quot;, -1);

		variables_map vm;
		store(command_line_parser(ac, av).
			options(visible).positional(p).run(), vm);

		ifstream ifs(&quot;testConfig.cfg&quot;);
		if( !ifs )
			throw std::runtime_error( &quot;config file not found&quot; );
		store(parse_config_file(ifs, config_file_options), vm);
		notify(vm);

		// ...

		if( vm.count(&quot;gui.dummy-float&quot;)) {
			vector&lt;float&gt; dv = vm[&quot;gui.dummy-float&quot;].as&lt;vector&lt;float&gt; &gt;();
			for( vector&lt;float&gt;::iterator it = dv.begin(); it != dv.end(); ++it )
				cout &lt;&lt; &quot;dummy-float: &quot; &lt;&lt; *it &lt;&lt; std::endl;
		}
</code></pre>
<p>Wenn ich nun als Parameter zB. &quot;--gui.dummy-float=3.354 12.45&quot; verwende, wird das korrekt als Zahlenarray erkannt und geparst. Wenn ich jedoch im Config-file sowas hier schreibe</p>
<pre><code>[gui]
dummy-float=3.354 12.45
</code></pre>
<p>bekomme ich eine Exception geworfen: &quot;in option 'gui.dummy-float': invalid option value '3.354 12.45'&quot;. Ich hab herausgefunden, dass sowas hier funktionieren würde:</p>
<pre><code>[gui]
dummy-float=3.333
dummy-float=4.44
</code></pre>
<p>aber das wird spätestens bei 4x4-Matrizen etwas mühsam und unlesbar.</p>
<p>Hat jemand eine einigermaßen vernünftige Lösung dafür? Und warum diese Inkonsistenz zwischen Programmparametern und Config-Files?</p>
<p>Danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797069</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 23 Oct 2009 12:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu config-file syntax in boost::program_options on Sat, 24 Oct 2009 22:31:15 GMT]]></title><description><![CDATA[<p>iko79 schrieb:</p>
<blockquote>
<p>Hat jemand eine einigermaßen vernünftige Lösung dafür?</p>
</blockquote>
<p>Auf die Schnelle käme mir aktuell nur sowas in den Sinn:<br />
<a href="http://www.boost.org/doc/libs/1_40_0/doc/html/program_options/howto.html#id1396383" rel="nofollow">Custom Validators</a></p>
<p>Damit kannst du ein eigenes Format verwenden, welches du dann selber parst.</p>
<p>iko79 schrieb:</p>
<blockquote>
<p>Und warum diese Inkonsistenz zwischen Programmparametern und Config-Files?</p>
</blockquote>
<p>Genau kann ich dir das nicht sagen. Ich weiss nur, dass dies eine zum Teil gängige Art ist, um mehrfache Werte einem Name in einem INI File zuzuordnen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797756</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu config-file syntax in boost::program_options on Fri, 11 Dec 2009 03:20:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verwende jetzt Custom Validators, danke für den Vorschlag.</p>
<p>Allerdings habe ich ein Problem damit: Wenn ich eine Klasse definiere...</p>
<pre><code class="language-cpp">class Vec3f
{
    //...
};
typedef Vec3f Vec3;
</code></pre>
<p>...per Überladung eine validierungs-Funktion zur verfügung stelle...</p>
<pre><code class="language-cpp">void validate( any &amp;v, const std::vector&lt;std::string&gt; &amp;values, Vec3*, int )
</code></pre>
<p>...und eine option mit ensprechendem Typ zu meiner option_description hinzufüge...</p>
<pre><code class="language-cpp">options_description projector( &quot;Projector options&quot; );
projector.add_options()
    ( &quot;position, value&lt;Vec3&gt;(), &quot;bla&quot; );
</code></pre>
<p>...dann funktioniert das auch.</p>
<p>Allerdings, sobald ich die Klasse Vec3 in einen namespace verpacke...</p>
<pre><code class="language-cpp">namespace osg
{
    class Vec3f
    {
        //...
    };
    typedef Vec3f Vec3;
};
</code></pre>
<p>...und die überladene validierungs-Funktion...</p>
<pre><code class="language-cpp">void validate( any &amp;v, const std::vector&lt;std::string&gt; &amp;values, osg::Vec3*, int )
</code></pre>
<p>...als auch die Option entsprechend ändere...</p>
<pre><code class="language-cpp">options_description projector( &quot;Projector options&quot; );
projector.add_options()
    ( &quot;position&quot;, value&lt;osg::Vec3&gt;(), &quot;bla&quot; );
</code></pre>
<p>...wird mein überladener Validator nicht mehr gefunden. Statt dessen wird der default Validator (die Template-Funktion in value_semantic.hpp) verwendet, die versucht, den Vec3-Eintrag per lexical_cast zu konvertieren. Nachdem aber in osg::Vec3 keine &lt;&lt; oder &gt;&gt; Operatoren für std::basic_istream vorhanden sind führt das natürlich zu folgendem Fehler (boost 1.38.0, MSVC 9.0):</p>
<p>MSVC 9.0 schrieb:</p>
<blockquote>
<blockquote>
<p>h:\ahumari\svn\libs\boost-1.38.0\boost\lexical_cast.hpp(771) : error C2679: binary '&gt;&gt;' : no operator found which takes a right-hand operand of type 'osg::Vec3' (or there is no acceptable conversion)<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(1144): could be 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::operator &gt;&gt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_istream&lt;_Elem,_Traits&gt; &amp;,signed char *)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(1146): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::operator &gt;&gt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_istream&lt;_Elem,_Traits&gt; &amp;,signed char &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(1148): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::operator &gt;&gt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_istream&lt;_Elem,_Traits&gt; &amp;,unsigned char *)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(1150): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::operator &gt;&gt;&lt;std::char_traits&lt;char&gt;&gt;(std::basic_istream&lt;_Elem,_Traits&gt; &amp;,unsigned char &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(155): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(std::basic_istream&lt;_Elem,_Traits&gt; &amp;(__cdecl *)(std::basic_istream&lt;_Elem,_Traits&gt; &amp;))'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(161): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(std::basic_ios&lt;_Elem,_Traits&gt; &amp;(__cdecl *)(std::basic_ios&lt;_Elem,_Traits&gt; &amp;))'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(168): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(std::ios_base &amp;(__cdecl *)(std::ios_base &amp;))'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(175): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(std::_Bool &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(194): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(short &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(228): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(unsigned short &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(247): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(int &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(273): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(unsigned int &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(291): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(long &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(309): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(__w64 unsigned long &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(329): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(__int64 &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(348): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(unsigned __int64 &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(367): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(float &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(386): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(double &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(404): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(long double &amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(422): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(void *&amp;)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; j:\program files\microsoft visual studio 9.0\vc\include\istream(441): or 'std::basic_istream&lt;_Elem,_Traits&gt; &amp;std::basic_istream&lt;_Elem,_Traits&gt;::operator &gt;&gt;(std::basic_streambuf&lt;_Elem,_Traits&gt; *)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; while trying to match the argument list '(std::basic_istream&lt;_Elem,_Traits&gt;, osg::Vec3)'<br />
&gt; with<br />
&gt; [<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;<br />
&gt; ]<br />
&gt; h:\ahumari\svn\libs\boost-1.38.0\boost\lexical_cast.hpp(1151) : see reference to function template instantiation 'bool boost::detail::lexical_stream_limited_src&lt;CharT,Base,Traits&gt;::operator &gt;&gt;&lt;Target&gt;(InputStreamable &amp;)' being compiled<br />
&gt; with<br />
&gt; [<br />
&gt; CharT=char_type,<br />
&gt; Base=base,<br />
&gt; Traits=traits,<br />
&gt; Target=osg::Vec3,<br />
&gt; InputStreamable=osg::Vec3<br />
&gt; ]<br />
&gt; h:\ahumari\svn\libs\boost-1.38.0\boost\lexical_cast.hpp(1177) : see reference to function template instantiation 'Target boost::detail::lexical_cast&lt;Target,src,false,char_type&gt;(const std::basic_string&lt;_Elem,_Traits,_Ax&gt; &amp;,CharT *,size_t)' being compiled<br />
&gt; with<br />
&gt; [<br />
&gt; Target=osg::Vec3,<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;,<br />
&gt; _Ax=std::allocator&lt;char&gt;,<br />
&gt; CharT=char_type<br />
&gt; ]<br />
&gt; h:\ahumari\svn\libs\boost-1.38.0\boost\program_options\detail\value_semantic.hpp(89) : see reference to function template instantiation 'Target boost::lexical_cast&lt;T,std::basic_string&lt;_Elem,_Traits,_Ax&gt;&gt;(const Source &amp;)' being compiled<br />
&gt; with<br />
&gt; [<br />
&gt; Target=osg::Vec3,<br />
&gt; T=osg::Vec3,<br />
&gt; _Elem=char,<br />
&gt; _Traits=std::char_traits&lt;char&gt;,<br />
&gt; _Ax=std::allocator&lt;char&gt;,<br />
&gt; Source=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;<br />
&gt; ]<br />
&gt; h:\ahumari\svn\libs\boost-1.38.0\boost\program_options\detail\value_semantic.hpp(170) : see reference to function template instantiation 'void boost::program_options::validate&lt;T,char&gt;(boost::any &amp;,const std::vector&lt;_Ty&gt; &amp;,T *,long)' being compiled<br />
&gt; with<br />
&gt; [<br />
&gt; T=osg::Vec3,<br />
&gt; _Ty=std::string<br />
&gt; ]<br />
&gt; h:\ahumari\svn\libs\boost-1.38.0\boost\program_options\detail\value_semantic.hpp(163) : while compiling class template member function 'void boost::program_options::typed_value&lt;T,charT&gt;::xparse(boost::any &amp;,const std::vector&lt;_Ty&gt; &amp;) const'<br />
&gt; with<br />
&gt; [<br />
&gt; T=osg::Vec3,<br />
&gt; charT=char,<br />
&gt; _Ty=std::string<br />
&gt; ]<br />
&gt; h:\iko\vader\source\main.cpp(375) : see reference to class template instantiation 'boost::program_options::typed_value&lt;T,charT&gt;' being compiled<br />
&gt; with<br />
&gt; [<br />
&gt; T=osg::Vec3,<br />
&gt; charT=char<br />
&gt; ]</p>
</blockquote>
</blockquote>
<p>Kann mir dabei jemand helfen? Warum wird meine Funktion nicht erkannt?</p>
<p>Danke,<br />
iko.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820890</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 11 Dec 2009 03:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu config-file syntax in boost::program_options on Fri, 11 Dec 2009 12:42:30 GMT]]></title><description><![CDATA[<p>Okay, ich hab inzwischen rausgefunden, dass es daran liegt, dass die überladenen validate-Funktionen im globalen Namespace liegen. Bringe ich sie im selben Namespace wie die genannte Template-Funktion unter (boost::program_options), dann geht's.</p>
<p>Allerdings ist mir der Grund dafür schleierhaft. Im globalen Namespace sollte osg::Vec3 doch die selbe Bedeutung haben wie in boost::program_options? Hat jemand eine Erklärung dafür? (Compiler-Bug? O_o)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821036</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 11 Dec 2009 12:42:30 GMT</pubDate></item></channel></rss>