Boost C++ Libraries: {1} Active Tickets https://svn.boost.org/trac10/report/1 Trac Report - * List all active tickets by ticket number. * Color each row based on priority. * If a ticket has been accepted, a '*' is appended after the owner's name en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/report/1 Trac v1.4.3 #13645: boost::geometry::simplify broken in 1.67 Sat, 28 Jul 2018 18:51:42 GMT Sat, 28 Jul 2018 19:09:12 GMT <p> bg::simplify is broken in version 1.67. In version 1.66, it works fine. </p> <p> This is the code that I ran: </p> <blockquote> <p> std::cout &lt;&lt; "Ring is: " &lt;&lt; bg::wkt(*ring) &lt;&lt; std::endl; std::cout &lt;&lt; "Tolerance is: " &lt;&lt; mill-&gt;tolerance; toolpath_optimised.push_back(make_shared&lt;icoords&gt;()); bg::simplify(*ring, *(toolpath_optimised.back()), mill-&gt;tolerance); std::cout &lt;&lt; "Simplified result is: " &lt;&lt; bg::wkt(*(toolpath_optimised.back())) &lt;&lt; std::endl; </p> </blockquote> <p> With boost 1.66, the first coordinate of the input and the first coordinate of the output are the same. With 1.67, the first coordinate of the input and the first coordinate of the output are not the same. This is incorrect behavior. Notice in the output below. </p> <p> 1.66 stdout: </p> <p> POLYGON((1.20884 3.81395,1.19293 3.84469,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.04518 4.17544,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.893609 4.90997,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.91559 5.32486,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.964488 5.56768,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.63972 6.82073,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,3.04552 7.41246,3.0034 7.21862,2.9966 7.18665,2.99153 7.16271,2.76836 6.10662,2.76698 6.10013,2.76489 6.09027,2.74216 5.97705,2.6906 5.70316,2.68837 5.69147,2.67984 5.6473,2.67213 5.60519,2.66543 5.564,2.65315 5.48319,2.65167 5.47366,2.63996 5.39965,2.63532 5.36774,2.63159 5.33635,2.63138 5.33435,2.6307 5.32801,2.62318 5.26016,2.61595 5.2276,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.1292 4.51786,2.08948 4.4963,2.08131 4.49177,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.34625 3.38161,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.41166 4.44702,3.42417 4.61343,3.42484 4.62197,3.43487 4.74505,3.43551 4.75253,3.44435 4.85207,3.44499 4.859,3.45368 4.94885,3.45436 4.95561,3.46376 5.04538,3.46451 5.05229,3.47563 5.15095,3.47649 5.15837,3.49103 5.27952,3.49207 5.28796,3.49295 5.29492,3.49686 5.32917,3.5 5.36419,3.5 5.44571,3.5 5.45486,3.5 5.65575,3.49821 5.68007,3.49738 5.6905,3.49516 5.71697,3.46645 6.03898,3.46523 6.05293,3.39658 6.85028,3.39459 6.87361,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) </p> <p> Tolerance is: 0.0004 </p> <p> Simplified result is: POLYGON((1.20884 3.81395,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,2.99153 7.16271,2.76489 6.09027,2.74216 5.97705,2.67213 5.60519,2.63532 5.36774,2.62318 5.26016,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.42484 4.62197,3.43487 4.74505,3.44499 4.859,3.46451 5.05229,3.47649 5.15837,3.49686 5.32917,3.5 5.36419,3.5 5.65575,3.49516 5.71697,3.46523 6.05293,3.39658 6.85028,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) </p> <p> 1.67 stdout: </p> <p> Ring is: POLYGON((1.20884 3.81395,1.19293 3.84469,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.04518 4.17544,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.978492 4.38006,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.91559 4.67514,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.893609 4.90997,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.893609 5.09003,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.91559 5.32486,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.964488 5.56768,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.06524 5.87683,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.16629 6.10304,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.63972 6.82073,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,3.04552 7.41246,3.0034 7.21862,2.9966 7.18665,2.99153 7.16271,2.76836 6.10662,2.76698 6.10013,2.76489 6.09027,2.74216 5.97705,2.6906 5.70316,2.68837 5.69147,2.67984 5.6473,2.67213 5.60519,2.66543 5.564,2.65315 5.48319,2.65167 5.47366,2.63996 5.39965,2.63532 5.36774,2.63159 5.33635,2.63138 5.33435,2.6307 5.32801,2.62318 5.26016,2.61595 5.2276,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.1292 4.51786,2.08948 4.4963,2.08131 4.49177,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.34625 3.38161,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.41166 4.44702,3.42417 4.61343,3.42484 4.62197,3.43487 4.74505,3.43551 4.75253,3.44435 4.85207,3.44499 4.859,3.45368 4.94885,3.45436 4.95561,3.46376 5.04538,3.46451 5.05229,3.47563 5.15095,3.47649 5.15837,3.49103 5.27952,3.49207 5.28796,3.49295 5.29492,3.49686 5.32917,3.5 5.36419,3.5 5.44571,3.5 5.45486,3.5 5.65575,3.49821 5.68007,3.49738 5.6905,3.49516 5.71697,3.46645 6.03898,3.46523 6.05293,3.39658 6.85028,3.39459 6.87361,3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953)) </p> <p> Tolerance is: 0.0004 </p> <p> Simplified result is: POLYGON((3.34281 7.48824,3.27331 7.49253,3.20382 7.49584,3.13432 7.49817,3.06483 7.49953,1.20884 3.81395,1.1663 3.89695,1.13837 3.9535,1.11221 4.01006,1.08784 4.06661,1.06524 4.12317,1.02628 4.22659,1.00887 4.27775,0.99294 4.3289,0.964488 4.43232,0.952375 4.47996,0.941568 4.5276,0.932065 4.57524,0.923868 4.62288,0.908966 4.72079,0.903551 4.76643,0.899345 4.81207,0.896348 4.85771,0.891839 4.95499,0.89125 5,0.891839 5.04501,0.896348 5.14229,0.899345 5.18793,0.903551 5.23357,0.908966 5.27921,0.923868 5.37712,0.932065 5.42476,0.941568 5.4724,0.952375 5.52004,0.978492 5.61994,0.99294 5.6711,1.00887 5.72225,1.02628 5.77341,1.04518 5.82456,1.08784 5.93338,1.11221 5.98993,1.13836 6.04648,1.19292 6.1553,1.22687 6.21973,1.26309 6.28417,1.30155 6.3486,1.34227 6.41304,1.37621 6.4653,1.42695 6.54109,1.48072 6.61688,1.53754 6.69267,1.59739 6.76846,1.67765 6.86689,1.71667 6.91305,1.75679 6.9592,1.79801 7.00536,1.84033 7.05152,1.88375 7.09768,1.97387 7.19,2.02613 7.24226,2.11566 7.32986,2.20903 7.41746,2.30626 7.50507,2.40733 7.59267,2.52209 7.582,2.57436 7.57651,2.69697 7.56203,2.81959 7.54438,2.94221 7.52354,3.06483 7.49953,2.99153 7.16271,2.76489 6.09027,2.74216 5.97705,2.67213 5.60519,2.63532 5.36774,2.62318 5.26016,2.60164 5.168,2.5906 5.12662,2.57778 5.08701,2.55845 5.03242,2.54629 5.00067,2.53279 4.97027,2.50892 4.92023,2.49607 4.89498,2.48215 4.87082,2.45406 4.82499,2.44052 4.80413,2.42605 4.78419,2.39396 4.74237,2.37944 4.72443,2.36407 4.70735,2.32808 4.66943,2.31204 4.65339,2.29516 4.6382,2.2553 4.60415,2.23694 4.58929,2.21769 4.57531,2.17388 4.54521,2.15204 4.53104,2.02613 4.46059,2 4.44505,1.97387 4.42796,1.89344 4.37298,1.86199 4.3507,1.83015 4.32662,1.67482 4.2054,1.63047 4.17003,1.58508 4.13234,1.20884 3.81395,1.22146 3.7599,1.23538 3.70586,1.2506 3.65182,1.26713 3.59778,1.28496 3.54373,1.30409 3.48969,1.32452 3.43565,1.36696 3.33161,1.39856 3.25817,1.43253 3.18474,1.46887 3.1113,1.50757 3.03787,1.54864 2.96443,1.59208 2.891,1.63788 2.81756,1.68606 2.74413,1.73659 2.67069,1.7895 2.59726,1.84477 2.52382,1.90241 2.45039,1.96242 2.37695,2.0248 2.30352,2.08954 2.23008,2.15665 2.15665,2.26607 2.15409,2.3755 2.15435,2.48493 2.15744,2.59435 2.16335,2.70378 2.17208,2.8132 2.18363,2.92263 2.19801,3.03206 2.2152,3.14148 2.23522,3.25091 2.25806,3.36033 2.28373,3.46976 2.31221,3.57918 2.34352,3.68861 2.37765,3.79804 2.4146,3.90746 2.45438,3.77286 2.81292,3.72912 2.9318,3.68819 3.04785,3.65009 3.16108,3.61482 3.27149,3.58236 3.37908,3.55273 3.48384,3.52591 3.58578,3.50192 3.6849,3.48076 3.7812,3.46241 3.87467,3.44689 3.96533,3.43419 4.05316,3.42431 4.13817,3.41726 4.22035,3.41302 4.29971,3.41161 4.37626,3.41161 4.44635,3.42484 4.62197,3.43487 4.74505,3.44499 4.859,3.46451 5.05229,3.47649 5.15837,3.49686 5.32917,3.5 5.36419,3.5 5.65575,3.49516 5.71697,3.46523 6.05293,3.39658 6.85028,3.34281 7.48824)) </p> Eyal Soha <eyalsoha@…> https://svn.boost.org/trac10/ticket/13645 https://svn.boost.org/trac10/ticket/13645 Report #13644: std::iterator_traits<>::value_type is always non-const for any kind of boost::iterator_facade Iterator Thu, 26 Jul 2018 14:32:38 GMT Thu, 26 Jul 2018 14:32:38 GMT <p> I've found a bug in boost::iterator_facade. If you define your own iterator by using the facade and you try to deduce the value_type of the iterator by using std::iterator_traits, the type is always non-const independently of the iterator value type declaration. </p> <p> You can reproduce this with the following test program: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iterator&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/iterator/iterator_facade.hpp&gt;</span><span class="cp"></span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">Value</span><span class="o">&gt;</span> <span class="k">class</span> <span class="nc">IteratorTest</span> <span class="o">:</span> <span class="k">public</span> <span class="n">boost</span><span class="o">::</span><span class="n">iterator_facade</span><span class="o">&lt;</span> <span class="n">IteratorTest</span><span class="o">&lt;</span><span class="n">Value</span><span class="o">&gt;</span> <span class="p">,</span> <span class="n">Value</span> <span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">forward_traversal_tag</span> <span class="o">&gt;</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="n">IteratorTest</span><span class="p">()</span> <span class="p">{};</span> <span class="k">private</span><span class="o">:</span> <span class="n">Value</span> <span class="n">m_value</span><span class="p">{};</span> <span class="k">friend</span> <span class="k">class</span> <span class="nc">boost</span><span class="o">::</span><span class="n">iterator_core_access</span><span class="p">;</span> <span class="k">template</span> <span class="o">&lt;</span><span class="n">class</span><span class="o">&gt;</span> <span class="k">friend</span> <span class="k">class</span> <span class="nc">IteratorTest</span><span class="p">;</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">OtherIteratorType</span><span class="o">&gt;</span> <span class="kr">inline</span> <span class="kt">bool</span> <span class="n">equal</span><span class="p">(</span><span class="k">const</span> <span class="n">IteratorTest</span><span class="o">&lt;</span><span class="n">OtherIteratorType</span><span class="o">&gt;&amp;</span> <span class="n">other</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span> <span class="p">}</span> <span class="kt">void</span> <span class="n">increment</span><span class="p">()</span> <span class="p">{</span> <span class="p">}</span> <span class="kr">inline</span> <span class="n">Value</span><span class="o">&amp;</span> <span class="n">dereference</span><span class="p">()</span> <span class="k">const</span> <span class="k">noexcept</span> <span class="p">{</span> <span class="k">return</span> <span class="n">m_value</span><span class="p">;</span> <span class="p">}</span> <span class="p">};</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span> <span class="k">class</span> <span class="nc">DeduceType</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="n">iterator</span> <span class="o">=</span> <span class="n">IteratorTest</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">const_iterator</span> <span class="o">=</span> <span class="n">IteratorTest</span><span class="o">&lt;</span><span class="k">const</span> <span class="kt">int</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">auto</span> <span class="n">it</span> <span class="o">=</span> <span class="n">iterator</span><span class="p">();</span> <span class="k">auto</span> <span class="n">cit</span> <span class="o">=</span> <span class="n">const_iterator</span><span class="p">();</span> <span class="n">DeduceType</span><span class="o">&lt;</span><span class="k">decltype</span><span class="p">(</span><span class="n">it</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">debug1</span><span class="p">;</span> <span class="n">DeduceType</span><span class="o">&lt;</span><span class="k">decltype</span><span class="p">(</span><span class="n">cit</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">debug2</span><span class="p">;</span> <span class="n">DeduceType</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">iterator_traits</span><span class="o">&lt;</span><span class="k">decltype</span><span class="p">(</span><span class="n">it</span><span class="p">)</span><span class="o">::</span><span class="n">value_type</span><span class="o">&gt;&gt;</span> <span class="n">debug3</span><span class="p">;</span> <span class="n">DeduceType</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">iterator_traits</span><span class="o">&lt;</span><span class="k">decltype</span><span class="p">(</span><span class="n">cit</span><span class="p">)</span><span class="o">::</span><span class="n">value_type</span><span class="o">&gt;&gt;</span> <span class="n">debug4</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> With my VS2017 compiler, I receive the following compiler output (I've omitted the implementation of DeduceType to force the compiler to tell me the type; so the compiler error here is not an Error) </p> <pre class="wiki">1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(46): error C2079: 'debug1' uses undefined class 'DeduceType&lt;iterator&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(47): error C2079: 'debug2' uses undefined class 'DeduceType&lt;const_iterator&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(48): error C2079: 'debug3' uses undefined class 'DeduceType&lt;std::iterator_traits&lt;int&gt;&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(49): error C2079: 'debug4' uses undefined class 'DeduceType&lt;std::iterator_traits&lt;int&gt;&gt;' </pre><p> I've found the reason for this bug in boost/iterator/iterator_facade.hpp:120 </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">ValueParam</span> <span class="p">,</span> <span class="k">class</span> <span class="nc">CategoryOrTraversal</span> <span class="p">,</span> <span class="k">class</span> <span class="nc">Reference</span> <span class="p">,</span> <span class="k">class</span> <span class="nc">Difference</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">iterator_facade_types</span> <span class="p">{</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">facade_iterator_category</span><span class="o">&lt;</span> <span class="n">CategoryOrTraversal</span><span class="p">,</span> <span class="n">ValueParam</span><span class="p">,</span> <span class="n">Reference</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">iterator_category</span><span class="p">;</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">remove_const</span><span class="o">&lt;</span><span class="n">ValueParam</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">value_type</span><span class="p">;</span> </pre></div></div><p> If you change the line </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="k">typename</span> <span class="n">remove_const</span><span class="o">&lt;</span><span class="n">ValueParam</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">value_type</span><span class="p">;</span> </pre></div></div><p> to </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="n">ValueParam</span> <span class="n">value_type</span><span class="p">;</span> </pre></div></div><p> the output of my test program is as expected: </p> <pre class="wiki">1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(46): error C2079: 'debug1' uses undefined class 'DeduceType&lt;iterator&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(47): error C2079: 'debug2' uses undefined class 'DeduceType&lt;const_iterator&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(48): error C2079: 'debug3' uses undefined class 'DeduceType&lt;std::iterator_traits&lt;int&gt;&gt;' 1&gt;c:\users\florian\source\repos\iterator_facade_const_bug\iterator_facade_const_bug\reproducebug.cpp(49): error C2079: 'debug4' uses undefined class 'DeduceType&lt;std::iterator_traits&lt;const int&gt;&gt;' </pre> Florian Reiser <florian.reiser@…> https://svn.boost.org/trac10/ticket/13644 https://svn.boost.org/trac10/ticket/13644 Report #13642: Strange behaviour of filesystem::relative on Windows Wed, 25 Jul 2018 12:21:31 GMT Wed, 25 Jul 2018 12:21:31 GMT <p> The following code snippet behaves unexpected under Windows: </p> <p> </p> <pre class="wiki"> path base("C:\\Temp"); path contained ("c:\\temp\\test"); path result = relative(contained, base); std::cout &lt;&lt; "relative returns " &lt;&lt; result.generic_string() &lt;&lt; "\n"; </pre><p> It returns an empty path, though the expected result would be something like ".\test". This is due to a case sensitive comparison, which is not consistent with how Windows treats path names. </p> <p> I understand that this is the way it is documented, but if Boost.Filesystem is understood to be an abstraction layer over different operating systems, this is definitely not the desired behaviour. </p> <p> I have attached a patch, which fixes the problem. </p> martin.apel@… https://svn.boost.org/trac10/ticket/13642 https://svn.boost.org/trac10/ticket/13642 Report #13641: Boost.Build doesn't create config.log when --build-dir is specified Mon, 23 Jul 2018 11:16:44 GMT Mon, 23 Jul 2018 11:16:44 GMT <p> Platform: Windows </p> <p> How to reproduce: </p> <ol><li>Extract Boost sources to some directory, say D:\boost </li><li>Bootstrap Boost as usual </li><li>Build Boost like this: <code>b2 --build-dir=D:\boost-build stage</code> </li></ol><p> Build process will not produce configuration log in D:\boost-build\boost\bin.v2\config.log, but will spew all configuration messages and errors to console. </p> <p> What I've found: </p> <ul><li>in tools\build\src\build-system.jam, line 678: <code>$(first-project-root).build-dir</code> yields "/D:/boost-build/boost/bin.v2". With a slash at the beginning it's not a valid Windows path. </li><li>in tools\build\src\build-system.jam, line 679: <code>set-log-file</code> rule silently fails </li><li>in tools\build\src\build\configure.jam, line 280: <code>FILE_OPEN</code> is unable to create "/D:/boost-build/boost/bin.v2/config.log" </li></ul><p> I don't have enough Boost.Build knowledge to provide a reasonable patch, but the problem seems to stem from <code>build-dir</code> project attribute prepending a slash to its value on Windows. </p> alexsharoff@… https://svn.boost.org/trac10/ticket/13641 https://svn.boost.org/trac10/ticket/13641 Report #13640: GCC trunk can only compile program_options with -fpermissive Mon, 23 Jul 2018 09:51:27 GMT Mon, 23 Jul 2018 09:51:27 GMT <p> /usr/include/boost/program_options/variables_map.hpp:172:14: error: friend declaration of ‘void boost::program_options::store(const boost::program_options::basic_parsed_options&lt;char&gt;&amp;, boost::program_options::variables_map&amp;, bool)’ specifies default arguments and isn't the only declaration [-fpermissive] </p> <blockquote> <p> void store(const basic_parsed_options&lt;char&gt;&amp; options, </p> <blockquote> <p> <sup><del></del> </sup></p> </blockquote> </blockquote> <p> /usr/include/boost/program_options/variables_map.hpp:98:14: note: previous declaration of ‘void boost::program_options::store(const boost::program_options::basic_parsed_options&lt;char&gt;&amp;, boost::program_options::variables_map&amp;, bool)’ </p> <blockquote> <p> void store(const basic_parsed_options&lt;char&gt;&amp; options, </p> <blockquote> <p> <sup><del></del> </sup></p> </blockquote> </blockquote> anonymous https://svn.boost.org/trac10/ticket/13640 https://svn.boost.org/trac10/ticket/13640 Report #13639: monotonic_buffer_resource current_buffer() possibly broken and documentation wrong Sat, 21 Jul 2018 14:18:22 GMT Sat, 21 Jul 2018 15:19:17 GMT <p> The comment and the function declaration do not seem to match: </p> <pre class="wiki"> //! &lt;b&gt;Returns&lt;/b&gt;: //! The number of bytes of storage available for the specified alignment. //! //! &lt;b&gt;Note&lt;/b&gt;: Non-standard extension. const void *current_buffer() const BOOST_NOEXCEPT; </pre><p> Source: <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/boost/container/pmr/monotonic_buffer_resource.hpp"><span class="icon">​</span>https://www.boost.org/doc/libs/1_67_0/boost/container/pmr/monotonic_buffer_resource.hpp</a> </p> Markus Dreseler https://svn.boost.org/trac10/ticket/13639 https://svn.boost.org/trac10/ticket/13639 Report #13638: wrong system to generic error conversion on windows with ERROR_SHARING_VIOLATION Wed, 18 Jul 2018 14:40:41 GMT Thu, 19 Jul 2018 00:21:07 GMT <p> in system/detail/error_code.ipp </p> <pre class="wiki">case ERROR_SHARING_VIOLATION_: return make_error_condition( permission_denied ); </pre><p> This does not mean permission denied. It means more like device_or_resource_busy or perhaps text_file_busy. </p> joseph@… https://svn.boost.org/trac10/ticket/13638 https://svn.boost.org/trac10/ticket/13638 Report #13636: distance calculation can be wrong for rings with collinear segments Tue, 17 Jul 2018 12:49:55 GMT Tue, 17 Jul 2018 13:25:31 GMT <p> While unit-testing our code using boost::geometry, I stumbled upon a weird distance calculation: For two rings that are perfect 2d boxes and share the orientation and one segment length, their distance is calculated as zero although they are clearly not intersecting: </p> <p> <a class="ext-link" href="https://wandbox.org/permlink/Z9DMLo52IdhZRCFb"><span class="icon">​</span>https://wandbox.org/permlink/Z9DMLo52IdhZRCFb</a> </p> <p> I made a rough sketch of the situation: <a class="ext-link" href="https://www.desmos.com/calculator/7jbmeu9jqq"><span class="icon">​</span>https://www.desmos.com/calculator/7jbmeu9jqq</a>. </p> <hr /> <p> Note the line </p> <pre class="wiki">// slightly change the values vehicleRing[2] = Point2D(vehicleRing[2].x() + 1e-10, vehicleRing[2].y() + 1e-10); </pre><p> .. changing vehicleRing<a class="missing changeset" title="No changeset 0 in the repository">[0]</a> or vehicleRing<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> also results in zero distance, whereas slightly moving vehicleRing<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> results in the expected distance. </p> <hr /> <p> Sorry for being lazy and not finding a simpler test-case (resp. simpler numbers), I just copied the values I generated in my own testing pipeline. </p> stfn <p1433025@…> https://svn.boost.org/trac10/ticket/13636 https://svn.boost.org/trac10/ticket/13636 Report #13635: circular_buffer does not always initialize elements Tue, 17 Jul 2018 08:41:42 GMT Tue, 17 Jul 2018 08:45:14 GMT <p> The circular_buffer erroneously mark some sections of the buffer as initialized, which can lead to use of uninitialized memory for non-trivial classes in the <code>insert</code> function. The problem appears to come from the <code>is_uninitialized</code> function, which does not properly handle the buffer state when <code>m_buff &lt; m_first &lt; m_last</code>. </p> <div class="wiki-code"><div class="code"><pre><span class="kt">bool</span> <span class="nf">is_uninitialized</span><span class="p">(</span><span class="n">const_pointer</span> <span class="n">p</span><span class="p">)</span> <span class="k">const</span> <span class="n">BOOST_NOEXCEPT</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p</span> <span class="o">&gt;=</span> <span class="n">m_last</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">m_first</span> <span class="o">&lt;</span> <span class="n">m_last</span> <span class="o">||</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="n">m_first</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> In this case, e.g. <code>p = m_buff</code> will be flagged as initialized since <code>p &gt;= m_last</code> is <code>false</code>. </p> <p> A proper check would be: </p> <div class="wiki-code"><div class="code"><pre><span class="kt">bool</span> <span class="nf">is_uninitialized</span><span class="p">(</span><span class="n">const_pointer</span> <span class="n">p</span><span class="p">)</span> <span class="k">const</span> <span class="n">BOOST_NOEXCEPT</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">m_first</span> <span class="o">&lt;</span> <span class="n">m_last</span><span class="p">)</span> <span class="k">return</span> <span class="n">p</span> <span class="o">&gt;=</span> <span class="n">m_last</span> <span class="o">||</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="n">m_first</span><span class="p">;</span> <span class="k">return</span> <span class="n">p</span> <span class="o">&gt;=</span> <span class="n">m_last</span> <span class="o">&amp;&amp;</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="n">m_first</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> Minimal reproducing program: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/circular_buffer.hpp&gt;</span><span class="cp"></span> <span class="cm">/*</span> <span class="cm">$ g++ --version | head -n1</span> <span class="cm">g++ (GCC) 8.1.1 20180531</span> <span class="cm">$ g++ example.cpp -o example &amp;&amp; valgrind --tool=memcheck ./example 2&gt;&amp;1 | grep Invalid</span> <span class="cm">==19349== Invalid write of size 8</span> <span class="cm">==19349== Invalid write of size 2</span> <span class="cm">==19349== Invalid free() / delete / delete[] / realloc()</span> <span class="cm">*/</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">x</span><span class="p">(</span><span class="mi">7</span><span class="p">),</span> <span class="n">y</span><span class="p">(</span><span class="mi">8</span><span class="p">);</span> <span class="c1">// has non-trivial move/copy</span> <span class="n">boost</span><span class="o">::</span><span class="n">circular_buffer</span><span class="o">&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">buffer</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span> <span class="n">buffer</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="c1">// [x| | ]</span> <span class="n">buffer</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="c1">// [x|x| ]</span> <span class="n">buffer</span><span class="p">.</span><span class="n">pop_front</span><span class="p">();</span> <span class="c1">// [ |x| ]</span> <span class="n">buffer</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">buffer</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="mi">2</span><span class="p">,</span> <span class="n">y</span><span class="p">);</span> <span class="c1">// is_uninitialized(i) -&gt; [0,0,1] (should be [1,0,1])</span> <span class="c1">// [copy 1 -&gt; 0] : [x|x| ] bad copy to uninitialized element</span> <span class="c1">// [copy y -&gt; 1] : [x|y| ] ok</span> <span class="c1">// [construct y -&gt; 2] : [x|y|y] ok</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="c1">// tries to destruct uninitialized entry</span> <span class="p">}</span> </pre></div></div> Niklas Fejes <niklas.fejes@…> https://svn.boost.org/trac10/ticket/13635 https://svn.boost.org/trac10/ticket/13635 Report #13634: regex duplicating literal part of replace string Fri, 13 Jul 2018 14:29:28 GMT Fri, 13 Jul 2018 14:29:28 GMT <p> The below code should result in 'moreless' but instead results in 'morelessless' </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/regex.hpp&gt; int main(int argc, char **argv) { boost::regex::flag_type regex_flags = boost::regex_constants::normal; boost::regex_constants::match_flag_type match_flags = boost::regex_constants::match_default; boost::regex pattern("(.*)", regex_flags); std::string strResult; strResult = boost::regex_replace(std::string("more"), pattern, std::string("${1}less"), match_flags); std::cout &lt;&lt; strResult &lt;&lt; std::endl; char result; std::cin &gt;&gt; result; return 0; } </pre> joseph@… https://svn.boost.org/trac10/ticket/13634 https://svn.boost.org/trac10/ticket/13634 Report #13633: boost/system/error_code.hpp fails to compile on clang-3.6 in gnu++14 mode due to invalid constexpr Thu, 12 Jul 2018 06:08:28 GMT Thu, 12 Jul 2018 06:08:28 GMT <p> A minimal test file that includes "boost/system/error_code.hpp" fails to compile on my clang-3.6 in gnu++14 mode with the Boost 1.68.0 beta 1. The exact command line and error message are: </p> <p> rainer@rainer10:~/work/cpp_test$ schroot -c steamrt_scout_amd64 -- clang-3.6 -std=gnu++14 -c test.cpp -I boost_1_68_0/ In file included from test.cpp:1: boost_1_68_0/boost/system/error_code.hpp:226:41: error: constexpr constructor </p> <blockquote> <p> never produces a constant expression [-Winvalid-constexpr] </p> <blockquote> <p> BOOST_SYSTEM_CONSTEXPR explicit std_category( boost::system::err... </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> boost_1_68_0/boost/system/error_code.hpp:226:41: note: non-constexpr constructor </p> <blockquote> <p> 'error_category' cannot be used in a constant expression </p> </blockquote> <p> /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/system_error:69:5: note: </p> <blockquote> <p> declared here </p> </blockquote> <blockquote> <p> error_category() noexcept; <sup> </sup></p> </blockquote> <p> 1 error generated. </p> <p> This is a regression from Boost 1.67. </p> Rainer Deyke <rainerd@…> https://svn.boost.org/trac10/ticket/13633 https://svn.boost.org/trac10/ticket/13633 Report #13632: boost::function operator== is bugged on FreeBSD 11.2 Wed, 11 Jul 2018 13:45:32 GMT Sun, 22 Jul 2018 01:00:03 GMT <p> The Passenger application server is a C++ application and uses Boost. Our FreeBSD 11.2 users ran into a crash bug: <a class="ext-link" href="https://github.com/phusion/passenger/issues/2097"><span class="icon">​</span>https://github.com/phusion/passenger/issues/2097</a> </p> <p> Upon further investigation, it turns out that the underlying problem is boost::function operator==. The following test program... </p> <pre class="wiki">boost::function&lt;void ()&gt; f; printf("is null: %d\n", f == NULL); </pre><p> ...prints 1 on macOS (as it should) and 0 on FreeBSD 11.2. I haven't tested this small test program on FreeBSD 11.1, but users reported that Passenger worked fine on FreeBSD 11.1 so the problem likely did not exist there. </p> <p> Digger deeper, on FreeBSD the == operator calls this function (in boost/function/function_base.hpp): </p> <pre class="wiki"># if !(defined(__GNUC__) &amp;&amp; __GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &lt;= 3) // Comparisons between boost::function objects and arbitrary function // objects. GCC 3.3 and before has an obnoxious bug that prevents this // from working. template&lt;typename Functor&gt; BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool) operator==(const function_base&amp; f, Functor g) { if (const Functor* fp = f.template target&lt;Functor&gt;()) return function_equal(*fp, g); else return false; } </pre><p> ...and returns false (the else branch). </p> <p> While on macOS it calls this function: </p> <pre class="wiki">inline bool operator!=(const function_base&amp; f, detail::function::useless_clear_type*) { return !f.empty(); } </pre><p> Just looking at the #if there already gives me the feeling that it is not right. Boost is trying to work around a GCC 3 bug but it wrongly detects Clang 6.0.0 as GCC 3. </p> <p> This bug has been confirmed on both Boost 1.64 and Boost 1.67. </p> hongli@… https://svn.boost.org/trac10/ticket/13632 https://svn.boost.org/trac10/ticket/13632 Report #13631: Need for boost::property_tree:ptree::range_type Mon, 09 Jul 2018 09:51:56 GMT Mon, 09 Jul 2018 09:51:56 GMT <pre class="wiki"> Examples Without: void my_function ( boost::property_tree:ptree &amp;p , std::pair&lt; Here goes long story about I don't know what. Shoud I use asoc_iter or cons_assoc or decltyp and How. Blah, blah. Help! Help! &gt; &amp;r , std::string const &amp; name ) { r = p.equal_range( name ); } With: void my_function ( boost::property_tree:ptree const&amp;p , boost::property_tree:ptree::range_const_type &amp;r , std::string const &amp; name ) { r = p.equal_range( name ); } </pre> dmilos@… https://svn.boost.org/trac10/ticket/13631 https://svn.boost.org/trac10/ticket/13631 Report #13630: Missing assembly files on iOS Mon, 09 Jul 2018 09:10:17 GMT Mon, 09 Jul 2018 09:10:17 GMT <p> I am re-posting an issue I posted a while ago on Boost.Context <a class="missing wiki">GitHub</a> repository (issue 76, I cannot post links apparently), since it does not seem to be very active. </p> <p> Basically, there are some assembly files that are not compiled for iOS. </p> <p> I am attaching a collection of patches (each patch only handle one architecture). Being a real neophyte with Boost Build, I hope someone will be able to make a single patch, solving every architecture at once. </p> delrieutheo@… https://svn.boost.org/trac10/ticket/13630 https://svn.boost.org/trac10/ticket/13630 Report #13629: boost::fusion::make_map cannot be called with boost::fusion::vector Sat, 07 Jul 2018 05:48:09 GMT Sat, 07 Jul 2018 05:48:09 GMT <p> The following code cannot be compiled on MSVC2017. </p> <pre class="wiki">struct Z; boost::fusion::make_map&lt;Z&gt;(boost::fusion::make_vector(1, 2)); </pre><p> Error is like this </p> <pre class="wiki">1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(112): error C2664: 'boost::fusion::pair&lt;test_main::test_method::Z,T&gt;::pair(const boost::fusion::pair&lt;test_main::test_method::Z,T&gt; &amp;)': cannot convert argument 1 from 'const int' to 'const boost::fusion::vector&lt;int,int&gt; &amp;' 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt; 1&gt; ] 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(113): note: Reason: cannot convert from 'const int' to 'const boost::fusion::vector&lt;int,int&gt;' 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\map\detail\map_impl.hpp(113): note: No constructor could take the source type, or constructor overload resolution was ambiguous 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\map\map.hpp(74): note: see reference to function template instantiation 'boost::fusion::detail::map_impl&lt;0,boost::fusion::pair&lt;test_main::test_method::Z,T&gt;&gt;::map_impl&lt;boost::fusion::vector_iterator&lt;Sequence,0&gt;&gt;(const Iterator &amp;,boost::fusion::detail::map_impl_from_iterator)' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt;, 1&gt; Sequence=boost::fusion::vector&lt;int,int&gt;, 1&gt; Iterator=boost::fusion::vector_iterator&lt;const boost::fusion::vector&lt;int,int&gt;,0&gt; 1&gt; ] 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\map\map.hpp(73): note: see reference to function template instantiation 'boost::fusion::detail::map_impl&lt;0,boost::fusion::pair&lt;test_main::test_method::Z,T&gt;&gt;::map_impl&lt;boost::fusion::vector_iterator&lt;Sequence,0&gt;&gt;(const Iterator &amp;,boost::fusion::detail::map_impl_from_iterator)' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt;, 1&gt; Sequence=boost::fusion::vector&lt;int,int&gt;, 1&gt; Iterator=boost::fusion::vector_iterator&lt;const boost::fusion::vector&lt;int,int&gt;,0&gt; 1&gt; ] 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\generation\make_map.hpp(59): note: see reference to function template instantiation 'boost::fusion::map&lt;boost::fusion::pair&lt;test_main::test_method::Z,T&gt;&gt;::map&lt;boost::fusion::vector&lt;int,int&gt;,void&gt;(const Sequence &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt;, 1&gt; Sequence=boost::fusion::vector&lt;int,int&gt; 1&gt; ] 1&gt;d:\libraries\boost_1_67_0\boost\fusion\container\generation\make_map.hpp(59): note: see reference to function template instantiation 'boost::fusion::map&lt;boost::fusion::pair&lt;test_main::test_method::Z,T&gt;&gt;::map&lt;boost::fusion::vector&lt;int,int&gt;,void&gt;(const Sequence &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt;, 1&gt; Sequence=boost::fusion::vector&lt;int,int&gt; 1&gt; ] 1&gt;d:\path\to\my_code.cpp(LINE): note: see reference to function template instantiation 'boost::fusion::map&lt;boost::fusion::pair&lt;test_main::test_method::Z,T&gt;&gt; boost::fusion::make_map&lt;test_main::test_method::Z,boost::fusion::vector&lt;int,int&gt;&gt;(const boost::fusion::vector&lt;int,int&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::fusion::vector&lt;int,int&gt; 1&gt; ] </pre> Shintaro Sakahara <shintaro-sakahara@…> https://svn.boost.org/trac10/ticket/13629 https://svn.boost.org/trac10/ticket/13629 Report #13628: boost::intrusive::rbtree::insert_unique() may throw, contrary to what the doc says Fri, 06 Jul 2018 12:07:07 GMT Fri, 06 Jul 2018 12:07:07 GMT <p> The doc says: </p> <blockquote> <p> Throws: Nothing. </p> </blockquote> <p> but it actually may throw if the comparator throws. </p> <pre class="wiki">seastar::memory::alloc_failure_injector::fail() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.cc:38 seastar::memory::alloc_failure_injector::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:65 (inlined by) seastar::memory::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:121 (inlined by) managed_bytes::read_linearize() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:141 (inlined by) managed_bytes::data() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:396 (inlined by) managed_bytes::operator std::experimental::fundamentals_v1::basic_string_view&lt;signed char, std::char_traits&lt;signed char&gt; &gt;() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:337 (inlined by) dht::token_view::token_view(dht::token const&amp;) at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:151 (inlined by) dht::token::operator dht::token_view() const at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:147 (inlined by) dht::decorated_key::tri_compare(schema const&amp;, dht::decorated_key const&amp;) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:191 (inlined by) dht::decorated_key::less_compare(schema const&amp;, dht::decorated_key const&amp;) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:217 (inlined by) dht::decorated_key::less_comparator::operator()(dht::decorated_key const&amp;, dht::decorated_key const&amp;) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:226 memtable_entry::compare::operator()(memtable_entry const&amp;, memtable_entry const&amp;) const at /home/tgrabiec/src/scylla/memtable.hh:99 (inlined by) boost::intrusive::tree_value_compare&lt;memtable_entry*, memtable_entry::compare, boost::move_detail::identity&lt;memtable_entry&gt;, true&gt;::operator()(memtable_entry const&amp;, memtable_entry const&amp;) const at /usr/include/boost/intrusive/detail/tree_value_compare.hpp:147 (inlined by) bool boost::intrusive::detail::key_nodeptr_comp&lt;memtable_entry::compare, boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, boost::move_detail::identity&lt;memtable_entry&gt; &gt;::operator()&lt;boost::intrusive::rbtree_node&lt;void*&gt;*, memtable_entry&gt;(boost::intrusive::rbtree_node&lt;void*&gt;* const&amp;, memtable_entry const&amp;, boost::move_detail::enable_if_c&lt;boost::intrusive::detail::key_nodeptr_comp&lt;memtable_entry::compare, boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, boost::move_detail::identity&lt;memtable_entry&gt; &gt;::is_same_or_nodeptr_convertible&lt;boost::intrusive::rbtree_node&lt;void*&gt;*&gt;::value&amp;&amp;(!boost::intrusive::detail::key_nodeptr_comp&lt;memtable_entry::compare, boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, boost::move_detail::identity&lt;memtable_entry&gt; &gt;::is_same_or_nodeptr_convertible&lt;memtable_entry&gt;::value), void&gt;::type*) const at /usr/include/boost/intrusive/detail/key_nodeptr_comp.hpp:100 (inlined by) std::pair&lt;boost::intrusive::rbtree_node&lt;void*&gt;*, bool&gt; boost::intrusive::bstree_algorithms&lt;boost::intrusive::rbtree_node_traits&lt;void*, false&gt; &gt;::insert_unique_check&lt;memtable_entry, boost::intrusive::detail::key_nodeptr_comp&lt;memtable_entry::compare, boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, boost::move_detail::identity&lt;memtable_entry&gt; &gt; &gt;(boost::intrusive::rbtree_node&lt;void*&gt; const* const&amp;, boost::intrusive::rbtree_node&lt;void*&gt;* const&amp;, memtable_entry const&amp;, boost::intrusive::detail::key_nodeptr_comp&lt;memtable_entry::compare, boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, boost::move_detail::identity&lt;memtable_entry&gt; &gt;, boost::intrusive::insert_commit_data_t&lt;boost::intrusive::rbtree_node&lt;void*&gt;*&gt;&amp;, unsigned long*) at /usr/include/boost/intrusive/bstree_algorithms.hpp:1083 (inlined by) boost::intrusive::bstree_impl&lt;boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, void, memtable_entry::compare, unsigned long, true, (boost::intrusive::algo_types)5, void&gt;::insert_unique(boost::intrusive::tree_iterator&lt;boost::intrusive::mhtraits&lt;memtable_entry, boost::intrusive::set_member_hook&lt;void, void, void, void&gt;, &amp;memtable_entry::_link&gt;, true&gt;, memtable_entry&amp;) at /usr/include/boost/intrusive/bstree.hpp:1153 </pre> anonymous https://svn.boost.org/trac10/ticket/13628 https://svn.boost.org/trac10/ticket/13628 Report #13627: "bcp --namespace=..." misses change in macro for "unordered". Thu, 05 Jul 2018 17:37:53 GMT Fri, 06 Jul 2018 10:04:50 GMT <p> Boost version: 1.67.0 </p> <p> Steps to reproduce given below error message. </p> <p> Hello, </p> <p> I'm using bcp to put all of boost under a new namespace. bcp completes ok, but compilation of the new tree gives the following error (repeats several times - first instance shown): </p> <pre class="wiki">gcc.compile.c++ build/boost/bin.v2/libs/graph/build/gcc-4.8.5/release/threading-multi/read_graphviz_new.o In file included from ./boost/unordered/detail/set.hpp:6:0, from ./boost/unordered/unordered_set.hpp:20, from ./boost/unordered_set.hpp:17, from ./boost/graph/adjacency_list.hpp:21, from ./boost/graph/graphviz.hpp:24, from libs/graph/src/read_graphviz_new.cpp:50: ./boost/unordered/detail/implementation.hpp:1606:52: error: ‘boost’ has not been declared BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:5: note: in definition of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ namespace_::tuple&lt;BOOST_PP_ENUM_PARAMS_Z(z, n, A)&gt; const&amp; x) \ ^ ./boost/unordered/detail/implementation.hpp:1583:56: error: expected unqualified-id before ‘const’ namespace_::tuple&lt;BOOST_PP_ENUM_PARAMS_Z(z, n, A)&gt; const&amp; x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:56: error: expected ‘)’ before ‘const’ namespace_::tuple&lt;BOOST_PP_ENUM_PARAMS_Z(z, n, A)&gt; const&amp; x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ ./boost/unordered/detail/implementation.hpp:1583:63: error: expected initializer before ‘x’ namespace_::tuple&lt;BOOST_PP_ENUM_PARAMS_Z(z, n, A)&gt; const&amp; x) \ ^ ./boost/unordered/detail/implementation.hpp:1606:9: note: in expansion of macro ‘BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE’ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(1, 1, boost) ^ </pre><p> Steps to reproduce: </p> <pre class="wiki">unzip boost_1_67_0.zip &gt;/dev/null cd boost_1_67_0/ ./bootstrap.sh --without-libraries=python ./b2 tools/bcp mkdir -p ddt ./dist/bin/bcp --namespace=ddtboost bin.v2 boost libs more status tools ddt cd ddt ./bootstrap.sh --without-libraries=python ./b2 -j4 --build-dir=build --without-python --layout=tagged variant=release link=shared threading=multi runtime-link=shared </pre><p> Changing the third parameter from <code>boost</code> to <code>ddtboost</code> in the calls to <code>BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE()</code> starting at lines 1606 and 1695 fixed the issue (given my --namespace). </p> <p> I've attempted to attach a patch file showing the differences, but chances are outstanding I screwed it up. </p> <p> If I can provide any more info, please let me know. </p> <p> Thanks Lou </p> Lou Barbieri <louis.barbieri@…> https://svn.boost.org/trac10/ticket/13627 https://svn.boost.org/trac10/ticket/13627 Report #13626: Growing managed mapped file cause a pointer invalidation Thu, 05 Jul 2018 15:47:47 GMT Thu, 05 Jul 2018 15:57:43 GMT bvbfan@… https://svn.boost.org/trac10/ticket/13626 https://svn.boost.org/trac10/ticket/13626 Report #13624: GCC 8.1.1 Error: "Failed to determine builtin floating point type sizes" Tue, 03 Jul 2018 15:53:30 GMT Wed, 04 Jul 2018 13:31:15 GMT <p> Hi, </p> <p> I received an error telling me to make a bug report here ;) I am using GCC 8.1.1 on OpenSUSE Tumbleweed. The project itself is a huge chunk of cmake spaghetti code so I used a quick <code>@echo</code> to print out the exact command: </p> <pre class="wiki">/usr/bin/g++ -frounding-math -std=c++11 -Wuninitialized -Wno-error=unused-variable -DBOOST_NO_AUTO_PTR -DBOOST_SYSTEM_NO_DEPRECATED=1 -fopenmp -Wall -ftemplate-depth-100 -frounding-math -Wno-misleading-indentation -Wno-placement-new -Wno-expansion-to-defined -Wno-long-long -Wno-unknown-pragmas -Wno-comment -Wno-address -Wno-error=address -Wno-expansion-to-defined -g </pre><p> The error I was talking of: </p> <pre class="wiki">/.../boost_gcc_debug/include/boost/atomic/detail/float_sizes.hpp:139:2: error: #error Boost.Atomic: Failed to determine builtin floating point type sizes, the target platform is not supported. Please, report to the developers (patches are welcome). #error Boost.Atomic: Failed to determine builtin floating point type sizes, the target platform is not supported. Please, report to the developers (patches are welcome). </pre><p> Simon </p> simon.michalke@… https://svn.boost.org/trac10/ticket/13624 https://svn.boost.org/trac10/ticket/13624 Report #13623: scope_exit has broken documentation Tue, 03 Jul 2018 03:15:15 GMT Tue, 03 Jul 2018 03:15:15 GMT <p> The Reference section is empty: <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/reference.html"><span class="icon">​</span>https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/reference.html</a> </p> <p> However, through Google I found there are pages that are supposed to be in that section, such as <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html"><span class="icon">​</span>https://www.boost.org/doc/libs/1_67_0/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html</a> </p> <p> This section also seems to be the only place in the docs that mention which .hpp file to include if you want to use this library, so it isn't even possible to use the library with the documentation alone until the Reference section is fixed. </p> Kef Schecter <furrykef@…> https://svn.boost.org/trac10/ticket/13623 https://svn.boost.org/trac10/ticket/13623 Report #13622: BOOST_SCOPE_EXIT error : use of undeclared identifier 'boost_se_params_t_* Fri, 29 Jun 2018 05:20:40 GMT Fri, 29 Jun 2018 05:20:40 GMT <p> When compiling with Visual C++ 2017 LLVM-vs2017 toolset (CLang), the following code produces " error : use of undeclared identifier 'boost_se_params_t_8'" </p> <pre class="wiki">#include &lt;boost/scope_exit.hpp&gt; template &lt;typename T&gt; class AClass { public: int function() { int handle = 0; BOOST_SCOPE_EXIT_TPL(&amp;handle) { if (handle) { handle = 0; } } BOOST_SCOPE_EXIT_END; return handle; } }; class Derived : public AClass&lt;Derived&gt; { }; int main() { Derived d; return d.function(); } &gt;Source.cpp(8,5): error : use of undeclared identifier 'boost_se_params_t_8' 1&gt; BOOST_SCOPE_EXIT_TPL(&amp;handle) { 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1&gt; BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1&gt; BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,22): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1&gt; (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(280,5): note: expanded from macro 'BOOST_SCOPE_EXIT_DETAIL_PARAMS_T' 1&gt; BOOST_PP_CAT(boost_se_params_t_, id) 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(22,32): note: expanded from macro 'BOOST_PP_CAT' 1&gt;# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/preprocessor/cat.hpp(29,34): note: expanded from macro 'BOOST_PP_CAT_I' 1&gt;# define BOOST_PP_CAT_I(a, b) a ## b 1&gt; ^ 1&gt;&lt;scratch space&gt;(94,1): note: expanded from here 1&gt;boost_se_params_t_8 1&gt;^ 1&gt;Source.cpp(23,12): note: in instantiation of member function 'AClass&lt;Derived&gt;::function' requested here 1&gt; return d.function(); 1&gt; ^ 1&gt;Source.cpp(8,5): error : expected expression 1&gt; BOOST_SCOPE_EXIT_TPL(&amp;handle) { 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(902,9): note: expanded from macro 'BOOST_SCOPE_EXIT_TPL' 1&gt; BOOST_SCOPE_EXIT_ID_TPL(BOOST_SCOPE_EXIT_AUX_PP_LINE_COUNTER, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(895,9): note: expanded from macro 'BOOST_SCOPE_EXIT_ID_TPL' 1&gt; BOOST_SCOPE_EXIT_AUX_IMPL(id, typename, \ 1&gt; ^ 1&gt;d:\boost.org\boost_1_67_0\boost/scope_exit.hpp(829,59): note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_IMPL' 1&gt; (BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)*)boost_se_params) \ 1&gt; ^ 1&gt;2 errors generated. </pre> markus_bonk@… https://svn.boost.org/trac10/ticket/13622 https://svn.boost.org/trac10/ticket/13622 Report #13619: boost.crc fails to compile with gcc due to undefined behaviour Tue, 26 Jun 2018 19:11:34 GMT Tue, 26 Jun 2018 19:13:01 GMT <p> Boost revision: 62faaa4584e16cd60cd62d5cbb0833954686e89c<br /> Following code is minimal example to reproduce error: </p> <pre class="wiki"> #include &lt;boost/crc.hpp&gt; template class boost::crc_optimal&lt;6,6,6,6,0,0&gt;; int main() {} </pre><pre class="wiki"> $ g++ -std=c++14 -pedantic-errors -I../boost/install-root/include/ -o/dev/null crc-test.cxx In file included from ../boost/install-root/include/boost/config.hpp:61:0, from ../boost/install-root/include/boost/crc.hpp:12, from crc-test.cxx:1: ../boost/install-root/include/boost/crc.hpp: In instantiation of 'const least boost::detail::mask_uint_t&lt;6ul&gt;::sig_bits': ../boost/install-root/include/boost/crc.hpp:356:9: required from 'const fast boost::detail::mask_uint_t&lt;6ul&gt;::sig_bits_fast' ../boost/install-root/include/boost/crc.hpp:915:41: required from 'boost::crc_optimal&lt;Bits, TruncPoly, InitRem, FinalXor, ReflectIn, ReflectRem&gt;::value_type boost::crc_optimal&lt;Bits, TruncPoly, InitRem, FinalXor, ReflectIn, ReflectRem&gt;::get_interim_remainder() const [with long unsigned int Bits = 6ul; typename boost::uint_t&lt;Bits&gt;::fast TruncPoly = 6u; typename boost::uint_t&lt;Bits&gt;::fast InitRem = 6u; typename boost::uint_t&lt;Bits&gt;::fast FinalXor = 6u; bool ReflectIn = false; bool ReflectRem = false; boost::crc_optimal&lt;Bits, TruncPoly, InitRem, FinalXor, ReflectIn, ReflectRem&gt;::value_type = unsigned char]' crc-test.cxx:3:23: required from here ../boost/install-root/include/boost/crc.hpp:350:69: error: left operand of shift expression '(-1 &lt;&lt; 6ul)' is negative [-fpermissive] BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) &lt;&lt; Bits )) ); ~~~~~~~~~~~~~~~~~^~~~~~~~~ </pre><p> GCC produce incorrect message: there is no -Werror options or similar, as you see. Reason is initialization of static constant in declaration in class with expression that is _not_ constant because consists UB(left shift of negative value). '0u' literal is unsigned, but promouted to 'int' when 'least' is 'unsigned char'. Error is reproductable on release 1.67.0. Solution, for example, is make explicit cast of left operand to unsigned integral type. GCC information: </p> <pre class="wiki">$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) </pre> Pavel Fevralev <dllmain@…> https://svn.boost.org/trac10/ticket/13619 https://svn.boost.org/trac10/ticket/13619 Report #13618: Support for string_view etc... Tue, 26 Jun 2018 11:21:50 GMT Tue, 26 Jun 2018 14:44:46 GMT <p> Boost String Algorithm doesn't work well with string_view and I think it should work fine. So I wrote wrapper codes around it to make that possible. My original intention was just for a personal use, so it is C++17 and I wasn't strict about compatibility to boost string_algo either. </p> <p> But having done that, it occurs to me that many things I did are also applicable to the boost string_algo in a way it keeps backward compatibility so it doesn't break exiting code. </p> <p> I put the code and brief summary of changes at gitlab.com/stream9/string_algo/blob/master/Summary.md (if I put URL, system regard it as spam, so please prepend scheme by yourself). I don't know boost string_algo have plan to make similar improvement. I you do, maybe I can help something. </p> stream009@… https://svn.boost.org/trac10/ticket/13618 https://svn.boost.org/trac10/ticket/13618 Report #13616: "likely" is c++2a-keyword used by gcc 8.1.1 but used as identifier Sun, 24 Jun 2018 08:11:43 GMT Sun, 24 Jun 2018 08:11:43 GMT <p> In new <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0479r5.html"><span class="icon">​</span>C++2a-Specification</a> new attribute-tokens, "likely" and "unlikely", are introduced. In GCC 8.1.1 this proposed feature has already been implemented. </p> <p> So using GCC8.1.1+ boost (version 1.67) won't compile anymore since "likely" is used as identifier in different header files. For example: </p> <p> boost/date_time/special_values_parser.hpp:105:17 boost/date_time/time_parsing.hpp:312:19 </p> anonymous https://svn.boost.org/trac10/ticket/13616 https://svn.boost.org/trac10/ticket/13616 Report #13614: padding related issue on VS2017 with boost::endian Thu, 21 Jun 2018 04:51:38 GMT Thu, 21 Jun 2018 04:51:38 GMT <p> On Visual Studio 2017 upd3, there seems to be some unexpected padding-related behaviour, shown below. The issue might not necessarily be a library 'bug', but I think it's worth looking at. </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/endian/arithmetic.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">endian</span><span class="p">;</span> <span class="cp">#pragma pack(push, 1)</span> <span class="k">struct</span> <span class="n">Empty</span> <span class="p">{};</span> <span class="k">struct</span> <span class="n">T1</span> <span class="p">{</span> <span class="n">big_uint16_t</span> <span class="n">d</span><span class="p">;</span> <span class="kt">uint8_t</span> <span class="n">d2</span><span class="p">;</span> <span class="p">};</span> <span class="k">struct</span> <span class="n">T2</span> <span class="p">{</span> <span class="kt">uint16_t</span> <span class="n">d</span><span class="p">;</span> <span class="kt">uint8_t</span> <span class="n">d2</span><span class="p">;</span> <span class="p">};</span> <span class="k">struct</span> <span class="nl">D0</span><span class="p">:</span> <span class="n">T1</span> <span class="p">{}</span> <span class="n">x0</span><span class="p">;</span> <span class="c1">// sizeof(x0) evaluates to 3</span> <span class="k">struct</span> <span class="nl">D1</span><span class="p">:</span> <span class="n">T1</span><span class="p">,</span> <span class="n">Empty</span> <span class="p">{}</span> <span class="n">x1</span><span class="p">;</span> <span class="c1">// sizeof(x1) evaluates to 4 &lt;- i think this should also be 3</span> <span class="k">struct</span> <span class="nl">D2</span><span class="p">:</span> <span class="n">T2</span><span class="p">,</span> <span class="n">Empty</span> <span class="p">{}</span> <span class="n">x2</span><span class="p">;</span> <span class="c1">// sizeof(x2) evaluates to 3</span> <span class="c1">// (uint8_t*)&amp;x1.d2 - (uint8_t*)&amp;x1.d evaluates to 2 (i.e. big_uint16_t is itself not padded)</span> <span class="c1">//</span> <span class="c1">// - tested with a struct containing a char[2], this did not happen</span> <span class="c1">// - tested on various versions of g++ and clang, but this did not happen either.</span> <span class="cp">#pragma pack(pop)</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%zu %zu %zu&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">x0</span><span class="p">),</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">x1</span><span class="p">),</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">x2</span><span class="p">));</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div> imak@… https://svn.boost.org/trac10/ticket/13614 https://svn.boost.org/trac10/ticket/13614 Report #13613: gcd performs modulo by zero which is undefined Wed, 20 Jun 2018 12:45:53 GMT Wed, 20 Jun 2018 12:45:53 GMT <p> Boost.Rational uses Boost.Integer's gcd method. I Added Coverity Scan support to the Boost.Rational build and it identified an issue that needs investigation: </p> <p> CID 293013 (<a href="https://svn.boost.org/trac10/query?id=4-12" title="Tickets 4-12">#4-12</a> of 12): Division or modulo by zero (DIVIDE_BY_ZERO) divide_by_zero: In function call gcd, modulo by expression 0 has undefined behavior. [hide details] </p> <p> (rational_test.cpp) 470 BOOST_CHECK_EQUAL( boost::gcd&lt;T&gt;( 0, -9), static_cast&lt;T&gt;( 9) ); </p> <p> (rational.hpp) <a class="missing wiki">IntType</a> gcd(<a class="missing wiki">IntType</a> n, <a class="missing wiki">IntType</a> m) { </p> <blockquote> <p> <em> Defer to the version in Boost.Integer </em></p> </blockquote> <blockquote class="citation"> <ol><li>divide_arg: n is used as a divisor in function gcd. </li></ol></blockquote> <blockquote> <p> return integer::gcd( n, m ); </p> </blockquote> <p> } </p> James E. King, III https://svn.boost.org/trac10/ticket/13613 https://svn.boost.org/trac10/ticket/13613 Report #13612: Missing support for move semantic in boost::bimap Wed, 20 Jun 2018 06:44:56 GMT Wed, 20 Jun 2018 06:44:56 GMT <p> And due to that that useful container is slow as hell. </p> piotrzsl@… https://svn.boost.org/trac10/ticket/13612 https://svn.boost.org/trac10/ticket/13612 Report #13610: _env_impl is not reloaded Tue, 19 Jun 2018 12:34:48 GMT Tue, 19 Jun 2018 12:34:48 GMT <p> In boost/process/detail/posix/environment.hpp native_environment_impl&lt;Char&gt;::reload vector _impl reloaded, but _env_impl set to _impl.data() in constructor and will be invalid after call of reload (after setting of environment for example). </p> <p> _env_impl = _impl.data(); need to be added to native_environment_impl&lt;Char&gt;::reload </p> santa4github@… https://svn.boost.org/trac10/ticket/13610 https://svn.boost.org/trac10/ticket/13610 Report #13607: Asio bad_address_cast fix under no exceptions Thu, 14 Jun 2018 18:12:21 GMT Thu, 14 Jun 2018 18:15:01 GMT <p> When using the Asio module in MSVC when exceptions are disabled, deriving an exception from bad_cast throws a linker error. A simple fix would look similar to the lexical_cast, bad_any_cast, etc. </p> kvankooten https://svn.boost.org/trac10/ticket/13607 https://svn.boost.org/trac10/ticket/13607 Report #13605: Filedescriptor leak in boost::process Thu, 14 Jun 2018 13:27:47 GMT Thu, 14 Jun 2018 13:27:47 GMT <p> Hi, </p> <p> I am using boost 1.64.0 on linux. I am using boost process to execute subprocesses. When, for some reason, the path does not point to a file, or when the file is not executable, then I keep leaking file descriptors. </p> <p> Minimal example: </p> <pre class="wiki">#include &lt;boost/process.hpp&gt; #include &lt;boost/process/extend.hpp&gt; #include &lt;boost/filesystem.hpp&gt; #include &lt;boost/asio.hpp&gt; #include &lt;sys/prctl.h&gt; int main() { namespace bp = boost::process; namespace ex = bp::extend; system("ls -l /proc/self/fd"); try { boost::asio::io_service ios; bp::child process ("/does/not/exist", ios); process.wait(); } catch (const bp::process_error&amp; e) { // A process_error has been thrown - there is no file /does/not/exist } system("ls -l /proc/self/fd"); } </pre><p> Example output: </p> <pre class="wiki">total 0 lrwx------ 1 hopp hopp 64 Jun 14 12:04 0 -&gt; /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 1 -&gt; /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 2 -&gt; /dev/pts/3 lr-x------ 1 hopp hopp 64 Jun 14 12:04 3 -&gt; /proc/19629/fd total 0 lrwx------ 1 hopp hopp 64 Jun 14 12:04 0 -&gt; /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 1 -&gt; /dev/pts/3 lrwx------ 1 hopp hopp 64 Jun 14 12:04 2 -&gt; /dev/pts/3 lr-x------ 1 hopp hopp 64 Jun 14 12:04 3 -&gt; pipe:[82382] lr-x------ 1 hopp hopp 64 Jun 14 12:04 4 -&gt; /proc/19632/fd </pre><p> The file descriptor leaked by the example is <code>3 -&gt; pipe:[82382]</code>. Is this a bug or am I doing something wrong? </p> 4hopp https://svn.boost.org/trac10/ticket/13605 https://svn.boost.org/trac10/ticket/13605 Report #13601: Compiling iterator_range_core.hpp with VS2017 (15.7.1) generates the Warning C5032. Thu, 14 Jun 2018 07:36:33 GMT Thu, 14 Jun 2018 07:36:33 GMT <p> This ticket is split off ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/13595" title="#13595: Bugs: Compiling Boost with VS2017 (15.7.1) generates the Warning C5032. (closed: duplicate)">#13595</a>. </p> <p> When compiling iterator_range_core.hpp with "Microsoft Visual Studio Professional 2017 Version 15.7.1" the warning: </p> <pre class="wiki">warning C5032: detected #pragma warning(push) with no corresponding #pragma warning(pop) compiling ... </pre><p> is generated. The warnings come from from this codeline: </p> <p> iterator_range_core.hpp line 21 </p> <pre class="wiki">20 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500)) 21 #pragma warning( push ) 22 #pragma warning( disable : 4996 ) 23 #endif </pre> alexander.frank.lehmann@… https://svn.boost.org/trac10/ticket/13601 https://svn.boost.org/trac10/ticket/13601 Report #13599: condition_variable::timed_wait never returns Thu, 14 Jun 2018 03:04:33 GMT Tue, 11 Sep 2018 21:29:43 GMT <p> boost::condition_variable::timed_wait never returns if compiled with -DBOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC. </p> <p> this_thread::sleep and thread::timed_join exhibit the same problem, but both these functions are documented as deprecated. However condition_variable::timed_wait is not documented as deprecated. </p> <p> This can be worked around by using condition_variable::wait_for. </p> <p> The following simple test program demonstrates the problem in that it hangs forever. Removing the #define makes it return after one second. </p> <pre class="wiki">#define BOOST_THREAD_HAS_CONDATTR_SET_CLOCK_MONOTONIC #include &lt;boost/thread.hpp&gt; #include &lt;iostream&gt; int main( int argc, char* argv[] ) { boost::condition_variable cv; boost::mutex m; boost::mutex::scoped_lock lock( m ); cv.timed_wait( lock, boost::posix_time::seconds( 1 ) ); std::cout &lt;&lt; "wait_for has returned" &lt;&lt; std::endl; return 0; } </pre> steven.cook@… https://svn.boost.org/trac10/ticket/13599 https://svn.boost.org/trac10/ticket/13599 Report #13597: VC++ 15 compiler warning C4244: 'argument': conversion from 'const coordinate_type' to 'const int', possible loss of data Wed, 13 Jun 2018 13:34:58 GMT Thu, 14 Jun 2018 09:42:23 GMT <p> I'm using Microsoft Visual Studio 15.6.0 to compile boost 1.67.0. I use compiler flag /W4 and compile for x64 platform. The following warnings (which we declared an error for our project) occur in geometry: </p> <p> <strong>\boost_1_67_0\boost\geometry\algorithms\detail\expand\point.hpp(73): error C4244: 'argument': conversion from 'const coordinate_type' to 'const int', possible loss of data</strong> </p> <p> <strong>\boost_1_67_0\boost\geometry\strategies\cartesian\side_by_triangle.hpp(114): error C4244: 'initializing': conversion from 'coordinate_type' to 'const promoted_type', possible loss of data</strong> </p> <p> <strong>\boost_1_67_0\boost\geometry\algorithms\detail\equals\collect_vectors.hpp(91): error C4244: 'initializing': conversion from '<span class="underline">int64' to 'double', possible loss of data</span></strong><span class="underline"> </span></p> <p> <strong>\boost_1_67_0\boost\geometry\strategies\cartesian\intersection.hpp(159): error C4244: 'return': conversion from '<span class="underline">int64' to 'double', possible loss of data</span></strong><span class="underline"> </span></p> <p> Consider related ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10667" title="#10667: Support Requests: VC++ 2013 compiler warning C4244: 'initializing' : conversion from ... (new)">#10667</a>. </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/13597 https://svn.boost.org/trac10/ticket/13597 Report #13594: init_from_settings does not allow repeated calls Wed, 13 Jun 2018 09:42:49 GMT Wed, 13 Jun 2018 10:24:38 GMT <p> I have an application that causes init_from_settings to be called repeatedly, which does not quite work as I expected. I noticed that this causes memory use to grow, presumably because old sinks are not removed and new sinks are added which each call, which (to me) is unexpected behaviour. I understand that sinks can be removed by calling remove_all_sinks() before (re)initialization, but it would be much nicer when init_from_settings would just configure the logging system 'from scratch' (I am not currently sure that I can fully revert the system to an uninitialized state before calling init_from_settings). </p> PieterB@… https://svn.boost.org/trac10/ticket/13594 https://svn.boost.org/trac10/ticket/13594 Report #13593: intersects assertion failure for linestrings in spherical_equatorial coordinates Wed, 13 Jun 2018 09:31:59 GMT Wed, 13 Jun 2018 09:31:59 GMT <p> I have found a specific case when boost::geometry::intersects fails with assertion "lhs.denominator() != 0" on linestrings with equal (or very close) segments in spherical_equatorial coordinate system. Here is the test example: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/linestring.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/version.hpp&gt; int main() { using GeoCoordSystem = boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt;; using GeoPoint = boost::geometry::model::d2::point_xy&lt;double, GeoCoordSystem&gt;; boost::geometry::model::linestring&lt;GeoPoint&gt; line1, line2; boost::geometry::read_wkt("linestring(11.5800734 48.2523631, 11.580114 48.2524051, 11.5801572 48.2524435)", line1); boost::geometry::read_wkt("linestring(11.5800734 48.2523631, 11.580114 48.2524051, 11.5801572 48.2524434)", line2); std::cout &lt;&lt; "Using boost v" &lt;&lt; BOOST_VERSION &lt;&lt; std::endl; const bool b = boost::geometry::intersects(line1, line2); std::cout &lt;&lt; "Intersects: " &lt;&lt; (b ? "YES" : "NO") &lt;&lt; std::endl; return 0; } </pre><p> Program output is the following: </p> <pre class="wiki">Using boost v106700 a.out: /opt/Storage/Install/boost_1_67_0/boost/geometry/policies/robustness/segment_ratio.hpp:54: static bool boost::geometry::detail::segment_ratio::less&lt;Type, false&gt;::apply(const Ratio&amp;, const Ratio&amp;) [with Ratio = boost::geometry::segment_ratio&lt;double&gt;; Type = double]: Assertion `lhs.denominator() != 0' failed. Aborted (core dumped) </pre><p> The issue is reproducible in both boost v1.63 and latest v1.67. </p> swordvetal@… https://svn.boost.org/trac10/ticket/13593 https://svn.boost.org/trac10/ticket/13593 Report #13592: command_line_parser(int, char const*[]) throws std::bad_alloc when called with zero arguments Tue, 12 Jun 2018 09:58:32 GMT Tue, 12 Jun 2018 09:58:32 GMT <p> boost::program_options::command_line_parser(int, char const*[]) throws std::bad_alloc when called with zero arguments. </p> <p> Code to reproduce: </p> <pre class="wiki">#include &lt;boost/program_options.hpp&gt; int main(int, char const*[]) { boost::program_options::command_line_parser fParser(0, nullptr); } </pre> kai.unger@… https://svn.boost.org/trac10/ticket/13592 https://svn.boost.org/trac10/ticket/13592 Report #13590: Bug in executor::_read_error leads to bad string allocation exception Mon, 11 Jun 2018 09:15:19 GMT Mon, 11 Jun 2018 09:15:19 GMT <p> Method executor::_read_error contains various weaknesses which can lead to string allocation with excessive length, causing exceptions at string construction or out-of-memory issues. </p> <p> The most severe issue caused by the fact that the method is not prepared for reading fragments from the pipe. As the pipe is not created with O_DIRECT, data can be fragmented. In fact, we observed that ::read returned just 4 bytes, although _write_error is writing 8 bytes. This leaves the second entry of the data<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> array uninitialized(!!), which is afterwards - without any check! - passed directly to the string creation: </p> <blockquote> <p> std::string msg(data<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>, ' '); --&gt; crash as data<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> contains random value </p> </blockquote> <p> Also the second part of the function, which reads the error message text, is not prepared for reading fragmented data. </p> <p> Patched code that works well here can be found attached. </p> Elmar Daegele <elmar.daegele@…> https://svn.boost.org/trac10/ticket/13590 https://svn.boost.org/trac10/ticket/13590 Report #13589: boost_1_55_0 bootstrap mingw failed Mon, 11 Jun 2018 01:47:06 GMT Fri, 21 Sep 2018 09:02:10 GMT <p> command that i used </p> <pre class="wiki">cd C:\deps\boost_1_55_0\ bootstrap.bat mingw </pre><p> Error output </p> <pre class="wiki">Building Boost.Build engine 'gcc' is not recognized as an internal or external command, operable program or batch file. Failed to build Boost.Build engine. Please consult bootstrap.log for furter diagnostics. </pre><p> bootstrap.log </p> <pre class="wiki">### ### Using 'mingw' toolset. ### C:\deps\boost_1_55_0\tools\build\v2\engine&gt;if exist bootstrap rd /S /Q bootstrap C:\deps\boost_1_55_0\tools\build\v2\engine&gt;md bootstrap C:\deps\boost_1_55_0\tools\build\v2\engine&gt;gcc -DNT -o bootstrap\jam0.exe command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c </pre> Rie <princedragon9924@…> https://svn.boost.org/trac10/ticket/13589 https://svn.boost.org/trac10/ticket/13589 Report #13588: rename lock_sharable and its methods(and mutex methods) in order of concept of std::lock_shared Thu, 07 Jun 2018 08:54:52 GMT Thu, 07 Jun 2018 08:54:52 GMT <p> To make compatible with std locks, interprocess shared mutexes and locks classes( and they methods) must be renamed according std <a class="missing wiki">SharedMutex</a> concept. see <a class="ext-link" href="http://en.cppreference.com/w/cpp/concept/SharedMutex"><span class="icon">​</span>http://en.cppreference.com/w/cpp/concept/SharedMutex</a>. </p> <p> Example: boost::interprocess::file_lock::lock_sharable to boost::interprocess::file_lock::lock_shared </p> <p> boost::interprocess::file_lock::unlock_sharable to boost::interprocess::file_lock::unlock_shared </p> <p> boost::interprocess::file_lock::try_lock_sharable to boost::interprocess::file_lock::try_lock_shared </p> <p> boost::interprocess::sharable_lock to boost::interprocess::shared_lock </p> <p> boost::interprocess::sharable_lock::owns to boost::interprocess::shared_lock::owns_lock </p> <p> and so on... </p> fsmoke@… https://svn.boost.org/trac10/ticket/13588 https://svn.boost.org/trac10/ticket/13588 Report #13587: ssl::stream::async_shutdown() never completes when async_read is active Wed, 06 Jun 2018 07:46:10 GMT Wed, 06 Jun 2018 07:46:10 GMT <p> I have a connected ssl::stream. If I do an asio::async_read followed by an async_shutdown on the stream, the read operation will complete with stream_truncated error (as expected) but the async_shutdown operation never completes (i.e. handler never gets called). See a minimal reproduce below. </p> <p> Environment: Debian stretch, gcc 6.3.0, Boost 1.67, BoringSSL. </p> <p> My questions: </p> <ol><li>Is it allowed to call async_shutdown on an ssl::stream when there is an async_read pending? </li><li>If yes, is the above behavior expected? </li><li>If not, how do I gracefully shutdown an SSL stream when an async_read is pending? And is this restriction documented anywhere? </li></ol><p> Code: </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; #include &lt;boost/asio/connect.hpp&gt; #include &lt;boost/asio/ip/tcp.hpp&gt; #include &lt;boost/asio/ssl/error.hpp&gt; #include &lt;boost/asio/ssl/stream.hpp&gt; #include &lt;cstdlib&gt; #include &lt;functional&gt; #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;string&gt; using tcp = boost::asio::ip::tcp; // from &lt;boost/asio/ip/tcp.hpp&gt; namespace ssl = boost::asio::ssl; // from &lt;boost/asio/ssl.hpp&gt; void fail(boost::system::error_code ec, char const* what) { std::cerr &lt;&lt; what &lt;&lt; ": " &lt;&lt; ec.message() &lt;&lt; "\n"; } class session : public std::enable_shared_from_this&lt;session&gt; { tcp::resolver resolver_; ssl::stream&lt;tcp::socket&gt; stream_; std::string buffer_; public: explicit session(boost::asio::io_context&amp; ioc, ssl::context&amp; ctx) : resolver_(ioc) , stream_(ioc, ctx) { } void run( char const* host, char const* port) { // Set SNI Hostname (many hosts need this to handshake successfully) if(! SSL_set_tlsext_host_name(stream_.native_handle(), host)) { boost::system::error_code ec{static_cast&lt;int&gt;(::ERR_get_error()), boost::asio::error::get_ssl_category()}; std::cerr &lt;&lt; ec.message() &lt;&lt; "\n"; return; } resolver_.async_resolve( host, port, std::bind( &amp;session::on_resolve, shared_from_this(), std::placeholders::_1, std::placeholders::_2)); } void on_resolve( boost::system::error_code ec, tcp::resolver::results_type results) { if(ec) return fail(ec, "resolve"); boost::asio::async_connect( stream_.next_layer(), results.begin(), results.end(), std::bind( &amp;session::on_connect, shared_from_this(), std::placeholders::_1)); } void on_connect(boost::system::error_code ec) { if(ec) return fail(ec, "connect"); stream_.async_handshake( ssl::stream_base::client, std::bind( &amp;session::on_handshake, shared_from_this(), std::placeholders::_1)); } void on_handshake(boost::system::error_code ec) { if(ec) return fail(ec, "handshake"); std::cout &lt;&lt; "Connected" &lt;&lt; std::endl; boost::asio::async_read(stream_, boost::asio::dynamic_buffer(buffer_), std::bind( &amp;session::on_read, shared_from_this(), std::placeholders::_1, std::placeholders::_2)); stream_.async_shutdown( std::bind( &amp;session::on_shutdown, shared_from_this(), std::placeholders::_1)); } void on_read( boost::system::error_code ec, std::size_t) { if(ec) return fail(ec, "read"); std::cout &lt;&lt; "Message received" &lt;&lt; std::endl; } void on_shutdown(boost::system::error_code ec) { std::cout &lt;&lt; "Closed" &lt;&lt; std::endl; } }; int main(int argc, char** argv) { boost::asio::io_context ioc; ssl::context ctx{ssl::context::sslv23_client}; std::make_shared&lt;session&gt;(ioc, ctx)-&gt;run("www.google.com", "443"); ioc.run(); return EXIT_SUCCESS; } </pre><p> The program will output </p> <pre class="wiki">Connected read: stream truncated </pre><p> and hangs. </p> anonymous https://svn.boost.org/trac10/ticket/13587 https://svn.boost.org/trac10/ticket/13587 Report #13586: array::rangecheck() allows access one element past end of array Sat, 02 Jun 2018 08:38:20 GMT Sat, 02 Jun 2018 08:38:20 GMT <p> The array::rangecheck method does not throw an out of range exception for an index equal to the array size. </p> <p> This makes the at() method not throw an exception for N as index value. This differs from the documentation for that method. </p> <p> Note: I discovered this by reading the code and have not made any tests of this behavior. </p> anonymous https://svn.boost.org/trac10/ticket/13586 https://svn.boost.org/trac10/ticket/13586 Report #13585: Undefined Behavior results in optimizer removing critical check Thu, 31 May 2018 21:16:23 GMT Thu, 31 May 2018 21:16:23 GMT <p> We have been experiencing an odd BAD_ACCESS when calling boost::filesystem::copy(const path&amp; from, const path&amp; to) </p> <p> the symptom is a null pointer dereference when converting *ec to a bool at operations.cpp:894. However, this is preceeded by a check to ensure the ec != 0 which is being subverted. </p> <p> The working theory is that on operations.cpp:893 a potentially null pointer to a boost::system::error_code is dereferenced and assigned to a reference as part of symlink_status(from, *ec) which is *undefined behavior*. </p> <p> As a result, the optimizer seems to be removing the "ec != 0" check from the next line based on the knowledge that if ec had been null it would have resulted in undefined behavior already. This of course leads to the null ec being dereferenced and having its bool conversion called. In turn, this creates a bad access and abort. </p> bart.wyatt@… https://svn.boost.org/trac10/ticket/13585 https://svn.boost.org/trac10/ticket/13585 Report #13584: boost beast flat buffer move ctor, move assign and swap all "cancel" a prepare() Thu, 31 May 2018 03:34:48 GMT Thu, 31 May 2018 13:07:01 GMT <p> The boost beast flat_buffer "cancels" any outstanding prepare() when being moved from or swapped. </p> <p> This seems like a very sane thing to do. </p> <p> However, boost::asio::async_read_until depends on calling prepare() on it's <a class="missing wiki">DynamicBuffer</a> and then calling the corresponding commit() on a moved-to version. </p> <p> Flat buffer will (correctly) silently commit the minimum of the requested size and the size from the previous prepare(). When used with async_read_until, the commit is always zero, since the prepare was "cancelled" by the move. </p> <p> The flat_buffer code always sets last_ to out_ during a move or swap, which is what achieves what I am calling the "cancel" of the prepare(). </p> <p> I tested setting last_ to other.last_ in the move ctor, move assignment, and swap, and verified that asio::async_read_until now works with beast::flat_buffer On this report I set component=asio, because I couldn't find beast on the drop box. </p> <p> I'm working with 1.67 and g++ 7.30 on ubuntu 18.04 </p> paul.d.rose@… https://svn.boost.org/trac10/ticket/13584 https://svn.boost.org/trac10/ticket/13584 Report #13583: quantities can be assigned from cmath sqrt result, but not initialized Wed, 30 May 2018 21:33:28 GMT Wed, 30 May 2018 21:33:28 GMT <p> The cmath functions are very helpful in letting me perform math on quantities, but I ran across an inconsistency. Code like: </p> <pre class="wiki"> quantity&lt;wavenumber, float&gt; x, y; quantity&lt;wavenumber, float&gt; foo = sqrt(x*x + y*y); </pre><p> fails to compile (with an "error: conversion from..."). The workaround is to use an assignment instead: </p> <pre class="wiki"> quantity&lt;wavenumber, float&gt; foo; foo = sqrt(x*x + y*y); </pre><p> It seems odd to have this restriction (and it's certainly undocumented) so I suspect it is a bug. </p> edaskel@… https://svn.boost.org/trac10/ticket/13583 https://svn.boost.org/trac10/ticket/13583 Report #13582: what does $(>) mean? Wed, 30 May 2018 06:42:25 GMT Wed, 30 May 2018 06:42:25 GMT <p> I notice below logic in tools/build/src/tools/gcc.jam actions link.dll bind LIBRARIES { </p> <blockquote> <p> "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) "$(.IMPLIB-COMMAND)$(&lt;<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>)" -o "$(&lt;[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(&lt;[-1]:D=) -shared $(START-GROUP) "$(&gt;)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) </p> </blockquote> <p> } </p> <p> And then I google and find $(&gt;) will be "expanded to a list of source files". Refer to the source files, they are absolute path? is there any means to use relate path? </p> anonymous https://svn.boost.org/trac10/ticket/13582 https://svn.boost.org/trac10/ticket/13582 Report #13581: `basic_stream_socket::read_some` on `non_blocked` socket returns `ec=would_block` Tue, 29 May 2018 14:52:30 GMT Wed, 30 May 2018 09:48:25 GMT <p> In the <code>boost\asio\detail\impl\socket_ops.ipp</code> file there is <code>sync_recv</code> function which should block until some data is received. </p> <p> Inside this function there is following <code>if</code> block </p> <pre class="wiki"> if ((state &amp; user_set_non_blocking) || (ec != boost::asio::error::would_block &amp;&amp; ec != boost::asio::error::try_again)) return 0; </pre><p> IMHO condition is wrong here. It should return 0 for all cases except socket is in <code>non_blocking</code> mode and ec is one of <code>[would_block, try_again]</code> </p> <p> In fact if socket is in 'non-blocked' mode and ec = would_block, it also returns 0. </p> <p> If assumption is correct, code should look like </p> <pre class="wiki"> if (0 == (state &amp; user_set_non_blocking) || (ec != boost::asio::error::would_block &amp;&amp; ec != boost::asio::error::try_again)) return 0; </pre> Dmytro Ovdiienko <dmitriyovdienko@…> https://svn.boost.org/trac10/ticket/13581 https://svn.boost.org/trac10/ticket/13581 Report #13580: The call "boost::filesystem::create_directories" on Windows cannot create a complete chain of directories, if the path's item contains terminating space(s) Tue, 29 May 2018 11:50:09 GMT Tue, 29 May 2018 11:55:17 GMT <p> The issue is obserbed on OS Windows, and not on OS Linux. Looks like a subdirectory, which name contains terminal space(s), is created without space(s) on OS Windows, and then an attempt to create a nested subdirectory fails. </p> sz@… https://svn.boost.org/trac10/ticket/13580 https://svn.boost.org/trac10/ticket/13580 Report #13579: memory management in algorithm::is_any_of Tue, 29 May 2018 10:29:02 GMT Wed, 13 Jun 2018 20:24:35 GMT <p> In boost/algorithm/string/detail/classification.hpp, is_any_ofF contains a fixed buffer </p> <p> <em> </em></p> <pre class="wiki">set_value_type m_fixSet[sizeof(set_value_type*)*2]; </pre><p> This buffer is used for storage when the following predicate holds: </p> <pre class="wiki">static bool use_fixed_storage(std::size_t size) { return size&lt;=sizeof(set_value_type*)*2; } </pre><p> </p> <p> Note that as the RHS of the inequality is measured in bytes, the argument <em>size</em> should also be measured in bytes. However, a typical use is as follows: </p> <pre class="wiki">std::size_t Size=::boost::distance(Range); m_Size=Size; if(use_fixed_storage(m_Size)) </pre><p> boost::distance does not return a value in bytes; it returns the length of a sequence. It's quite possible for e.g. a sequence of length 2 to occupy 16 bytes. </p> <p> This results in reads past the end of m_fixSet, and consequent segfaults. </p> anonymous https://svn.boost.org/trac10/ticket/13579 https://svn.boost.org/trac10/ticket/13579 Report #13578: Why boost.context export make_x86_64_sysv_elf_gas.o Tue, 29 May 2018 07:54:20 GMT Wed, 30 May 2018 02:01:12 GMT <p> when build context library, it will compile some assembly files. After the context library generated, I use readelf to analyze the context library as below: readelf --wide --symbols /my-build/boost/1.67.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_67_0/x86_64-poky-linux/boost/bin</a>.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/libboost_context.so.1.67.0 </p> <p> 42: 0000000000000000 0 FILE LOCAL DEFAULT ABS /my-build/boost/1.67.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_67_0/x86_64-poky-linux/boost/bin</a>.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/asm/make_x86_64_sysv_elf_gas.o </p> <p> Why does the make_x86_64_sysv_elf_gas.o line exist in the output of "readelf --wide --symbols /my-build/boost/1.67.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_67_0/x86_64-poky-linux/boost/bin</a>.v2/libs/context/build/aca09349fdb84d131321425f6c3a38ed/libboost_context.so.1.67.0", is there any means to hidden the line? </p> anonymous https://svn.boost.org/trac10/ticket/13578 https://svn.boost.org/trac10/ticket/13578 Report #13576: boost filesystem create_directories function fails randomly when accessing to a mapped network drive Mon, 28 May 2018 15:07:47 GMT Mon, 28 May 2018 15:07:47 GMT <p> When trying to create a folder in a mapped network drive with boost filesystem create_directories function, I get random errors of type: "The system cannot find the path specified.". By random I mean that sometimes I get the error and sometimes I don't. </p> <p> And yes, I have checked: </p> <ul><li>It is a valid path. </li><li>It is not a too long path. In fact, I use windows extended path as \?\PATH. </li><li>The network drive works perfectly, and it is inside our company local network (Gigabit ethernet). </li><li>I have write permissions. </li><li>There are not unicode characters. </li></ul><p> Below the code (adapted to make it more simple). </p> <pre class="wiki">#include "boost/filesystem.hpp" #include &lt;string&gt; #include &lt;chrono&gt; #include &lt;thread&gt; #include &lt;iostream&gt; #define MAX_RETRIES 10 #define RETRY_TIME 5000 //in millisecond namespace fs = boost::filesystem; bool createDirectory(const std::string&amp; folderPath) { //If the function does not succeed to create the directory in first place, it will retry after RETRY_TIME miliseconds a maximum number of MAX_RETRIES. for (unsigned int i=0; i&lt;MAX_RETRIES; i++) { try { if (fs::create_directories(fs::path(folderPath))) { std::cerr &lt;&lt; "Folder created successfully!" &lt;&lt; std::endl; return true; } } catch (fs::filesystem_error const &amp; e) { std::cerr &lt;&lt; "File operation problem with files: " &lt;&lt; e.what() &lt;&lt;". Try number: "&lt;&lt;i+1&lt;&lt;std::endl; } if (i==MAX_RETRIES-1) { return false; } std::this_thread::sleep_for(std::chrono::milliseconds(RETRY_TIME)); } return true; } </pre><p> In this example I am trying to create the folder: </p> <p> Z:\PRIVATE_FOLDERS\XXX\tests\YYY\ZZZZZ\MMMMMMM\CCCCCC\@mmmm1\@ccccc1\@eeeeeeeee2 (Z is a network mapped drive): </p> <p> And here is the output. Sometimes it works the first time </p> <pre class="wiki">Folder created successfully! </pre><p> Sometimes it fails several consecutive times until it works. Magic? </p> <pre class="wiki">File operation problem with files: "boost::filesystem::create_directories: The system cannot find the path specified: "\\?\Z:\PRIVATE_FOLDERS\XXX\tests\YYY\ZZZZZ\MMMMMMM\CCCCCC\@mmmm1\@ccccc1\@eeeeeeeee2"". try number: 1 File operation problem with files: "boost::filesystem::create_directories: The system cannot find the path specified: "\\?\Z:\PRIVATE_FOLDERS\XXX\tests\YYY\ZZZZZ\MMMMMMM\CCCCCC\@mmmm1\@ccccc1\@eeeeeeeee2"". try number: 2 File operation problem with files: "boost::filesystem::create_directories: The system cannot find the path specified: "\\?\Z:\PRIVATE_FOLDERS\XXX\tests\YYY\ZZZZZ\MMMMMMM\CCCCCC\@mmmm1\@ccccc1\@eeeeeeeee2"". try number: 3 Folder created successfully! </pre><p> The problem of this implementation is that, a priori there is no way to differentiate if the input path is a network drive, or it is a wrong path or does not have write permissions. Therefore I need always to spend the MAX_RETRIES until it finally fails, with the consequent performance penalty. </p> <p> Notes: </p> <ul><li>I am on Windows 10 </li><li>Boost version is 1.60 built on VS2015 downloaded from official webpage. </li><li>I use intel compiler 17 for the rest of the code. </li></ul> sergio.anza@… https://svn.boost.org/trac10/ticket/13576 https://svn.boost.org/trac10/ticket/13576 Report #13575: boost asio memory leak Thu, 24 May 2018 14:39:13 GMT Thu, 31 May 2018 08:44:59 GMT <p> This code on heavily loaded server leads to memory leak inside kqueue_reactor::allocate_descriptor_state(): </p> <pre class="wiki">boost::asio::ip::udp::socket s(io_service); s.open(boost::asio::ip::udp::v4()); s.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); </pre><p> While this code doesn't lead to this leak: </p> <pre class="wiki">boost::asio::ip::udp::socket s(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0)); </pre><p> Tested on MacOS. </p> boris@… https://svn.boost.org/trac10/ticket/13575 https://svn.boost.org/trac10/ticket/13575 Report #13573: container/detail/flat_tree.hpp should not #include <boost/move/make_unique.hpp> Wed, 23 May 2018 14:38:52 GMT Wed, 23 May 2018 14:38:52 GMT <p> Code that uses boost::container::flap_map fails to compile on gcc4.8.5 with -std=c++1 when BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE is defined, with the following compile error: </p> <p> boost/move/unique_ptr.hpp: In constructor 'boost::movelib::unique_ptr&lt;T, D&gt;::unique_ptr(boost::movelib::unique_ptr&lt;T, D&gt;&amp;&amp;)': boost/move/unique_ptr.hpp:528:29: error: 'move_if_not_lvalue_reference' is not a member of 'boost' </p> <blockquote> <p> : m_data(u.release(), ::boost::move_if_not_lvalue_reference&lt;D&gt;(u.get_deleter())) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> boost/move/unique_ptr.hpp:528:68: error: expected primary-expression before '&gt;' token </p> <blockquote> <p> : m_data(u.release(), ::boost::move_if_not_lvalue_reference&lt;D&gt;(u.get_deleter())) </p> </blockquote> <p> I was able to workaround this by passing in -DBOOST_MOVE_MAKE_UNIQUE_HPP_INCLUDED on the commandline to gcc, which effectively inhibits boost/move/make_unique.hpp from being included. </p> <p> The fact the above workaround worked at all seems to suggest that container/detail/flat_tree.hpp has no dependency on boost/move/make_unique.hpp. </p> huili80@… https://svn.boost.org/trac10/ticket/13573 https://svn.boost.org/trac10/ticket/13573 Report #13571: difference results in invalid output Tue, 22 May 2018 14:25:02 GMT Tue, 22 May 2018 14:25:02 GMT <p> The difference of the following polygons results in invalid output: </p> <p> using point_type = boost::geometry::model::d2::point_xy&lt;double&gt;; typedef boost::geometry::model::ring&lt;point_type, false, true&gt; polygon; <em> ring&lt;Point, <a class="missing wiki">ClockWise</a>, Closed, ..&gt; </em></p> <p> polygon op1, op2; </p> <p> boost::geometry::read_wkt("POLYGON((-5.357134899522904 1.708858148436605, -5.357046447070072 1.70877395054338, -5.210065937318399 -4.255706093497865, -8.65742840572935 -7.877265427733816, -9.246259311414669 -8.490599384498884, -8.647097810281494 -9.763145957490103, -5.287187110528729 -8.539478296007726, 4.07689365108185 -12.90390576571258, 6.997906000870004 3.116694062477888, -3.776939893600782 18.69699618899459, -3.858843408040787 18.57007309862488, -2.981468369027455 17.54675359552481, -4.116369566376584 2.772428265346094, -5.357134899522904 1.708858148436605))", op1); boost::geometry::read_wkt("POLYGON((-8.382184938267567 -5.157754480221099, -11.2072487852155 -5.954897113329205, -12.6412056272337 -8.516183878234685, -11.8440629941256 -11.34124772518262, -9.282776229220117 -12.77520456720082, -6.457712382272181 -11.97806193409271, -5.023755540253982 -9.416775169187234, -5.820898173362086 -6.591711322239298, -8.382184938267567 -5.157754480221099))", op2); boost::geometry::validity_failure_type type0 = boost::geometry::no_failure; bool v0 = boost::geometry::is_valid(op1, type0); </p> <p> boost::geometry::validity_failure_type type1 = boost::geometry::no_failure; bool v1 = boost::geometry::is_valid(op2, type1); </p> <p> std::vector&lt;polygon&gt; polyOutTemp; boost::geometry::difference(op1, op2, polyOutTemp); </p> <p> boost::geometry::validity_failure_type type3 = boost::geometry::no_failure; bool v2 = boost::geometry::is_valid(polyOutTemp<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>, type3); </p> <p> polyOutTemp<a class="missing changeset" title="No changeset 0 in the repository">[0]</a> is invalid because of self intersections. It seems to be a precision issue, since the self intersection occurs in a part of the polygon that should not affected by the difference algorithm. </p> anonymous https://svn.boost.org/trac10/ticket/13571 https://svn.boost.org/trac10/ticket/13571 Report #13570: asio_handler_invoke resume wrong thread in coroutine Mon, 21 May 2018 09:58:20 GMT Mon, 21 May 2018 09:58:20 GMT <p> Environment:<br /> Windows 10, VS2015 Update3, Boost 1.65.1, Boost 1.67.0, x86/x64<br /> </p> <p> Coroutine should be suspended and resumed by the same thread, but in boost 1.67.0 it doesn't. I guess it's a bug introduced since boost 1.66. </p> <p> In Boost 1.65.0, correct behavior, output:<br /> thread : 37c0<br /> thread : 37c0<br /> hello<br /> </p> <p> In Boost 1.67.0, wrong behavior, output:<br /> thread : df4<br /> thread : 1844<br /> hello<br /> </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/asio/spawn.hpp&gt; #include &lt;boost/bind.hpp&gt; #include &lt;boost/thread.hpp&gt; std::string Test(boost::asio::io_service&amp; ios, boost::asio::yield_context yield) { boost::asio::io_service::work work(ios); #if BOOST_VERSION &gt;= 106600 boost::asio::async_completion&lt; boost::asio::yield_context, void(boost::system::error_code, std::string)&gt; init(BOOST_ASIO_MOVE_CAST(boost::asio::yield_context)(yield)); auto handler = init.completion_handler; #else boost::asio::detail::async_result_init&lt; boost::asio::yield_context, void(boost::system::error_code, std::string)&gt; init(BOOST_ASIO_MOVE_CAST(boost::asio::yield_context)(yield)); auto handler = init.handler; #endif boost::thread t([&amp;handler]() { boost::this_thread::sleep_for(boost::chrono::seconds(2)); boost::asio::detail::asio_handler_invoke( boost::bind&lt;void&gt;( handler, boost::system::error_code(), "hello"), &amp;handler); }); t.detach(); return init.result.get(); } int main(int argc, char* argv[]) { boost::asio::io_service ios; boost::asio::spawn(ios, [&amp;ios](boost::asio::yield_context yield) { boost::system::error_code ec; std::cout &lt;&lt; "thread : " &lt;&lt; boost::this_thread::get_id() &lt;&lt; std::endl; std::string msg = Test(ios, yield[ec]); std::cout &lt;&lt; "thread : " &lt;&lt; boost::this_thread::get_id() &lt;&lt; std::endl; std::cout &lt;&lt; msg &lt;&lt; std::endl; }); ios.run(); std::string tmp; std::cin &gt;&gt; tmp; return 0; } </pre> pengying.wu@… https://svn.boost.org/trac10/ticket/13570 https://svn.boost.org/trac10/ticket/13570 Report #13569: Broken build on newer versions of LLVM Fri, 18 May 2018 21:45:49 GMT Fri, 18 May 2018 21:45:49 GMT <p> Starting with LLVM <a class="missing changeset" title="No changeset 331746 in the repository">r331746</a>, the use of compare-and-swap on a const object is not allowed. On x86 and Clang, this breaks several places in atomic/detail/ops_gcc_x86_dcas.hpp, like this: </p> <pre class="wiki">if defined(__clang__) // Clang cannot allocate eax:edx register pairs but it has sync intrinsics value = __sync_val_compare_and_swap(&amp;storage, (storage_type)0, (storage_type)0); #elif defined(BOOST_ATOMIC_DETAIL_X86_NO_ASM_AX_DX_PAIRS) ... </pre><p> The use of compare-and-swap is actually a workaround for a Clang limitation which hasn't existed for a long time. Clang versions newer than 4.0.1 understand "=&amp;A" contraints. I am attaching a proposed patch to ops_css_x86_dcas.hpp and config.hpp which detects the Clang version (using a <span class="underline">has_feature), and if it's new enough, uses the "=&amp;A" constraint, otherwise falls back to the existing compare-and-swap. (I had to do a bit of fancy footwork with the #ifs to make this happen.) </span></p> Emil Gilliam <egilliam@…> https://svn.boost.org/trac10/ticket/13569 https://svn.boost.org/trac10/ticket/13569 Report #13568: no referenceto boost::regex libraries error in compilation Fri, 18 May 2018 13:58:20 GMT Fri, 18 May 2018 13:58:20 GMT <ul><li>I am compiling a project on an Linux machine (Ubuntu 16.04) and running into build errors that mention undefined references to boost:re_detail_106300 </li></ul><p> -all the functions in my projects that use the boost::regex library are flagged as no reference </p> anonymous https://svn.boost.org/trac10/ticket/13568 https://svn.boost.org/trac10/ticket/13568 Report #13567: io_context ::run() doesn't return immediately on stopped io_context due to Windows implementation Wed, 16 May 2018 08:27:11 GMT Wed, 16 May 2018 08:27:11 GMT <p> This code hangs, when running on Windows: </p> <pre class="wiki"> boost::asio::io_context context; // 1 boost::asio::post(context, []() { for (;;); }); // 2 context.stop(); // 3 context.run(); // hangs in a handler, posted in 2 </pre><p> <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/reference/io_context/stop.html"><span class="icon">​</span>io_context::stop</a> documentation says: </p> <blockquote> <p> Subsequent calls to run(), run_one(), poll() or poll_one() will return immediately until restart() is called. </p> </blockquote> <p> Which is, judging by example above, isn't true. Same goes for <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/reference/io_context/stopped.html"><span class="icon">​</span>io_context::stopped</a>: </p> <blockquote> <p> When an io_context object is stopped, calls to run(), run_one(), poll() or poll_one() will return immediately without invoking any handlers. </p> </blockquote> <p> and code example below: </p> <pre class="wiki"> boost::asio::io_context context; // 1 boost::asio::post(context, []() { for (;;); }); // 2 context.stop(); // 3 if (context.stopped()) { context.run(); // hangs in a handler, posted in 2 } </pre><p> When running on Linux, same code fully complies the documentation and doesn't invoke any handlers in examples provided. </p> cvzakharchenko@… https://svn.boost.org/trac10/ticket/13567 https://svn.boost.org/trac10/ticket/13567 Report #13566: difference and intersection yield wrong result Wed, 16 May 2018 06:51:43 GMT Wed, 16 May 2018 07:01:10 GMT <p> We are developing new algorithm that will hopefully be based on boost::geometry. Unfortunately we have come across some errors in the difference and intersection computations (possibly related to <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/13522" title="#13522: Bugs: Invalid empty result using boost::geometry::difference (assigned)">#13522</a> and <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/13553" title="#13553: Bugs: intersection gives wrong result (assigned)">#13553</a>), which are a central part of the algorithm. </p> <p> I posted my original problem as a comment in <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/13522" title="#13522: Bugs: Invalid empty result using boost::geometry::difference (assigned)">#13522</a> (<a class="ext-link" href="https://wandbox.org/permlink/ThHHAW13DOdHbgEx"><span class="icon">​</span>https://wandbox.org/permlink/ThHHAW13DOdHbgEx</a>) </p> <p> After reading <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/13553" title="#13553: Bugs: intersection gives wrong result (assigned)">#13553</a> I tried out the define BOOST_GEOMETRY_NO_ROBUSTNESS which at first seemed to work. However, I then ran into a problem at another position (<a class="ext-link" href="https://wandbox.org/permlink/8YH8EiIRMtsUd1LH"><span class="icon">​</span>https://wandbox.org/permlink/8YH8EiIRMtsUd1LH</a>) The two polygons have finite, not too small intersection, but both the intersection and the difference are empty. </p> <p> The problem seems be that the two geometries overlap almost exactly in one vertex (0.0054, -0.02436) - this is the second vertex of the green polygon and the first vertex of the blue polygon. </p> <p> Changing the coordinate (0.0054) in the green polygon only slightly yields the correct result. </p> Henrik Zimmer <henrik@…> https://svn.boost.org/trac10/ticket/13566 https://svn.boost.org/trac10/ticket/13566 Report #13565: Compilation issue with property_tree on VS2017 15.7 Tue, 15 May 2018 10:05:28 GMT Tue, 15 May 2018 11:59:32 GMT <p> The new Visual Studio 2017 15.7 with following compiler settings: </p> <p> Conformance mode: Yes(/permissive-) C++ Language Standard: ISO C++17 Standard (/std:c++17) </p> <p> generates following error: </p> <p> Error C3203 'iterator': unspecialized class template can't be used as a template argument for template parameter 'Iterator', expected a real type </p> <blockquote> <p> : public boost::reverse_iterator&lt;iterator&gt; </p> </blockquote> <p> during the compilation of the following code: </p> <blockquote> <p> std::string value = { "[GENERAL]\n" </p> <blockquote> <p> "<a class="missing wiki">MyValue</a>=42" }; </p> </blockquote> </blockquote> <p> </p> <blockquote> <p> namespace bpt = boost::property_tree; bpt::ptree tree; try { </p> <blockquote> <p> std::istringstream input(value); bpt::read_ini(input, tree); <em> Parse the INI-File into the property tree. </em></p> </blockquote> <p> } catch (...) { } </p> </blockquote> <blockquote> <p> int const v = tree.get&lt;int&gt;("GENERAL.<a class="missing wiki">MyValue</a>", 0); </p> </blockquote> <p> It looks like it has something todo with the deprecation of std::iterator in C++17. In case the Conformance mode is switched to "No", the code compiles without any errors. It is also dependent on project configuration and include order, since my first try to create an isolated project for demonstration didn't resulted in the same error. But I didn't invest much time for it. </p> <p> Here is my proposal for the solution of the issue: Prefix the template parameter to make them fully qualified. </p> <p> Change lines 112 and 122: </p> <blockquote> <p> class basic_ptree&lt;K, D, C&gt;::reverse_iterator </p> <blockquote> <p> : public boost::reverse_iterator&lt;iterator&gt; </p> </blockquote> </blockquote> <p> and </p> <blockquote> <p> class basic_ptree&lt;K, D, C&gt;::const_reverse_iterator </p> <blockquote> <p> : public boost::reverse_iterator&lt;const_iterator&gt; </p> </blockquote> </blockquote> <p> to: </p> <blockquote> <p> class basic_ptree&lt;K, D, C&gt;::reverse_iterator </p> <blockquote> <p> : public boost::reverse_iterator&lt;basic_ptree&lt;K, D, C&gt;::iterator&gt; </p> </blockquote> </blockquote> <p> and </p> <blockquote> <p> class basic_ptree&lt;K, D, C&gt;::const_reverse_iterator </p> <blockquote> <p> : public boost::reverse_iterator&lt;basic_ptree&lt;K, D, C&gt;::const_iterator&gt; </p> </blockquote> </blockquote> <p> This resolves the issue on my side. </p> Pavel Pokutnev <pavel.pokutnev@…> https://svn.boost.org/trac10/ticket/13565 https://svn.boost.org/trac10/ticket/13565 Report #13564: Compile error of asio::async_read_until Sun, 13 May 2018 11:28:16 GMT Mon, 02 Jul 2018 15:31:39 GMT <p> I have a new compile error after moving from asio in 1.65.1 to asio in 1.67.0. Same code which compiled fine before. async_read_until uses read_until_delim_string_op in read_until.hpp, and the ctor has been rewritten in 67.0. It seems to want now to copy the buffer in the first constructor. Buffers are non copyable, so there is a compile error. </p> <p> The 67.0 ctor is now a template: </p> <blockquote> <p> template &lt;typename <a class="missing wiki">BufferSequence</a>&gt; read_until_delim_string_op(<a class="missing wiki">AsyncReadStream</a>&amp; stream, </p> <blockquote> <p> BOOST_ASIO_MOVE_ARG(<a class="missing wiki">BufferSequence</a>) buffers, const std::string&amp; delim, <a class="missing wiki">ReadHandler</a>&amp; handler) </p> </blockquote> <p> : stream_(stream), </p> <blockquote> <p> buffers_(BOOST_ASIO_MOVE_CAST(<a class="missing wiki">BufferSequence</a>)(buffers)), delim_(delim), start_(0), search_position_(0), handler_(BOOST_ASIO_MOVE_CAST(<a class="missing wiki">ReadHandler</a>)(handler)) </p> </blockquote> </blockquote> <blockquote> <p> { } </p> </blockquote> <p> In 65.1 the ctor was: </p> <blockquote> <p> read_until_delim_op(<a class="missing wiki">AsyncReadStream</a>&amp; stream, </p> <blockquote> <p> boost::asio::basic_streambuf&lt;Allocator&gt;&amp; streambuf, char delim, <a class="missing wiki">ReadHandler</a>&amp; handler) </p> </blockquote> <p> : stream_(stream), </p> <blockquote> <p> streambuf_(streambuf), delim_(delim), start_(0), search_position_(0), handler_(BOOST_ASIO_MOVE_CAST(<a class="missing wiki">ReadHandler</a>)(handler)) </p> </blockquote> </blockquote> <p> I have gcc 8.1. Not sure if this is a bug (it sounds like it), therefore logging this as "Support Request" for now. </p> Vincent Lextrait <vincent.lextrait@…> https://svn.boost.org/trac10/ticket/13564 https://svn.boost.org/trac10/ticket/13564 Report #13563: Error deserializing empty forward_list Fri, 11 May 2018 12:03:11 GMT Fri, 11 May 2018 12:03:11 GMT <p> Deserializing an empty forward_list is broken if the elements aren't default constructible (with old compilers it's enough that elements have a non-trivial default constructor). </p> <p> A patch is attached. The problem is that the first element is always loaded first, even if the list is empty. The result may be a crash or any undefined behavior, since deserialization goes out of sync. </p> <p> Test case: </p> <pre class="wiki">#include &lt;boost/serialization/forward_list.hpp&gt; #include &lt;boost/archive/binary_iarchive.hpp&gt; #include &lt;boost/archive/binary_oarchive.hpp&gt; #include &lt;forward_list&gt; #include &lt;iostream&gt; #include &lt;sstream&gt; struct Foo { int x; Foo(int a) : x(a) {}; template&lt;class Archive&gt; void serialize(Archive&amp; ar, const unsigned int) { ar &amp; x; } private: friend class boost::serialization::access; Foo() = default; }; int main() { std::forward_list&lt;Foo&gt; flist; std::ostringstream oss; boost::archive::binary_oarchive oa{oss}; oa &lt;&lt; flist; std::istringstream iss{oss.str()}; boost::archive::binary_iarchive ia{iss}; ia &gt;&gt; flist; } </pre><p> Results in: </p> <pre class="wiki">terminate called after throwing an instance of 'boost::archive::archive_exception' what(): input stream error Aborted (core dumped) </pre> Maximiliano Pin <mxcpin@…> https://svn.boost.org/trac10/ticket/13563 https://svn.boost.org/trac10/ticket/13563 Report #13562: Missing null pointer check in compensating_work_started Tue, 08 May 2018 08:01:20 GMT Wed, 09 May 2018 09:28:41 GMT <p> In boost/asio/detail/impl/scheduler.ipp(275): </p> <pre class="wiki">void scheduler::compensating_work_started() { thread_info_base* this_thread = thread_call_stack::contains(this); ++static_cast&lt;thread_info*&gt;(this_thread)-&gt;private_outstanding_work; } </pre><p> there is a missing null pointer check for this_thread, other routines have one! </p> <p> I saw the error comming from boost/asio/detail/impl/epoll_reactor.ipp(712): </p> <pre class="wiki">688 struct epoll_reactor::perform_io_cleanup_on_block_exit 689 { 690 explicit perform_io_cleanup_on_block_exit(epoll_reactor* r) 691 : reactor_(r), first_op_(0) 692 { 693 } 694 695 ~perform_io_cleanup_on_block_exit() 696 { 697 if (first_op_) 698 { 699 // Post the remaining completed operations for invocation. 700 if (!ops_.empty()) 701 reactor_-&gt;scheduler_.post_deferred_completions(ops_); 702 703 // A user-initiated operation has completed, but there's no need to 704 // explicitly call work_finished() here. Instead, we'll take advantage of 705 // the fact that the scheduler will call work_finished() once we return. 706 } 707 else 708 { 709 // No user-initiated operations have completed, so we need to compensate 710 // for the work_finished() call that the scheduler will make once this 711 // operation returns. 712 reactor_-&gt;scheduler_.compensating_work_started(); 713 } 714 } </pre> michael.lindig@… https://svn.boost.org/trac10/ticket/13562 https://svn.boost.org/trac10/ticket/13562 Report #13560: Cannot build --with-python --with-mpi --python-buildid=py36 python=3.6 Thu, 03 May 2018 11:43:37 GMT Thu, 03 May 2018 11:43:37 GMT <p> For a long time, debian would do multiple build configs of boost. First, build boost without python. Then build boost for each supported python version, including mpi/mpi-python/numpy. </p> <p> However, this does not appear to quite work. Previously boost_python introduced boost_python2 and boost_python3 libraries pointing at the default versions of respective major series. But in master/1.66/1.67 these appear to be gone. </p> <p> However, mpi Jamfile still refers to boost_python3 library which no longer exists. </p> <p> Either it is a bug in boost_python that it has dropped boost_python2 and boost_python3 aliases. Or it is a bug in mpi Jamfiles and it should stop using boost_python2 and boost_python3 aliases and simply compile against "boost_python" and use a matching buildid. </p> <p> I've proposed a patch to make mpi build against 'boost_python' without iterating for 2 3 major versions here </p> <p> <a class="ext-link" href="https://github.com/boostorg/mpi/pull/58/files"><span class="icon">​</span>https://github.com/boostorg/mpi/pull/58/files</a> </p> <p> Components are mpi&amp;python </p> Dimitri John Ledkov <xnox@…> https://svn.boost.org/trac10/ticket/13560 https://svn.boost.org/trac10/ticket/13560 Report #13559: boost::program_options::detail::make_vector class removed? Wed, 02 May 2018 23:30:04 GMT Tue, 08 May 2018 15:40:09 GMT <p> Boost v 1.66 contains this in program_options/detail/parsers.hpp </p> <p> namespace boost { namespace program_options { </p> <blockquote> <p> namespace detail { </p> <blockquote> <p> template&lt;class charT, class Iterator&gt; std::vector&lt;std::basic_string&lt;charT&gt; &gt; make_vector(Iterator i, Iterator e) { </p> <blockquote> <p> std::vector&lt;std::basic_string&lt;charT&gt; &gt; result; <em> Some compilers don't have templated constructor for </em> vector, so we can't create vector from (argv+1, argv+argc) range for(; i != e; ++i) </p> <blockquote> <p> result.push_back(*i); </p> </blockquote> <p> return result; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> This is not present in v 1.67, and the release notes make no mention of the change. Was it left out inadvertently? Moved to a different library? </p> anonymous https://svn.boost.org/trac10/ticket/13559 https://svn.boost.org/trac10/ticket/13559 Report #13558: gcd(INT_MIN, INT_MIN) crashes Wed, 02 May 2018 20:28:08 GMT Wed, 02 May 2018 20:28:33 GMT <p> The following produces a SIGFPE for me: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;climits&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/integer/common_factor_rt.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">integer</span><span class="o">::</span><span class="n">gcd</span><span class="p">(</span><span class="n">INT_MIN</span><span class="p">,</span> <span class="n">INT_MIN</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> because it simplifies <code>gcd(INT_MIN, INT_MIN)</code> =&gt; <code>gcd(INT_MIN % INT_MIN, INT_MIN)</code> =&gt; <code>gcd(0, INT_MIN)</code> =&gt; <code>gcd(0, INT_MIN % 0)</code> =&gt; gcd(0, SIGFPE)`. </p> <p> I'm actually not sure what the right behavior is (the documented behavior is that the return is always positive, and, for example, <code>gcd(-2, -2)</code> returns 2, but obviously you can't do that here). </p> <p> Boost 1.63 returned <code>INT_MIN</code> in this case, which seems like the best answer. </p> <p> Responsible commit: <a class="ext-link" href="https://github.com/boostorg/integer/commit/beb68718640150f67fe5671bbbb7848d9e7170b8"><span class="icon">​</span>https://github.com/boostorg/integer/commit/beb68718640150f67fe5671bbbb7848d9e7170b8</a> </p> Evan Driscoll <evaned@…> https://svn.boost.org/trac10/ticket/13558 https://svn.boost.org/trac10/ticket/13558 Report #13557: Boost 1.67.0 chrono library Windows build installs NTFS junction Tue, 01 May 2018 19:14:37 GMT Tue, 11 Sep 2018 18:57:46 GMT <p> While testing our internal build of Boost with the latest version, I noticed the following problem when building on Windows using MSVC 2015: </p> <p> During the build the following statements are logged: </p> <pre class="wiki">mklink-or-dir boost\chrono\stopwatches mklink /J "boost\chrono\stopwatches" "libs\chrono\stopwatches\include\boost\chrono\stopwatches" Junction created for boost\chrono\stopwatches &lt;&lt;===&gt;&gt; libs\chrono\stopwatches\include\boost\chrono\stopwatches </pre><p> This command creates an NTFS junction, which is something new compared to any previous version of Boost I've used (which goes back to 1.50.0). </p> <p> My problem is that we're building Boost using our own CMake scripts and the CMake "install" command cannot handle NTFS junctions, it simply fails during our custom follow-up step that packages the built binaries and headers. </p> <p> I haven't seen NTFS junctions seen used before, so I wonder if this procedure was intentional or not. Is there an option to have the bjam install phase make a copy of those files instead of creating the junction? </p> george@… https://svn.boost.org/trac10/ticket/13557 https://svn.boost.org/trac10/ticket/13557 Report #13556: boost::geometry::within() is not finding a point within a segment Tue, 01 May 2018 17:20:11 GMT Tue, 01 May 2018 17:20:11 GMT <p> 1). I construct two segment objects which intersect, and use geometry::intersection() to select the point where they intersect. </p> <p> 2). I use geometry::within() to check that the point is within each of the segments. </p> <p> I've found that if I use segments that are perpendicular, within() behaves as I would expect. </p> Josiah Slack <josiahnmi@…> https://svn.boost.org/trac10/ticket/13556 https://svn.boost.org/trac10/ticket/13556 Report #13555: Crash when statically linked to the dynamic library when use dlopen. Tue, 01 May 2018 15:48:05 GMT Tue, 01 May 2018 15:48:05 GMT <p> Hi! </p> <p> I have shared library under Linux that is statically linked to boost_serialization. I load my library twice durind my application wors by the use dlopen/dlclose. At the second dlopen I have: </p> <p> <a class="missing ticket">#0</a> boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than (rhs=..., this=0x1003730) at libs/serialization/src/extended_type_info_typeid.cpp:59 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> boost::serialization::typeid_system::type_compare::operator() (this=0x863360, rhs=0xf838f0, lhs=0x1003730) at libs/serialization/src/extended_type_info_typeid.cpp:41 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_get_insert_equal_pos (<span class="underline">k=&lt;optimized out&gt;, this=0x863360) </span></p> <blockquote> <p> at /usr/include/c++/7/bits/stl_tree.h:2069 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_insert_equal&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; ( </p> <blockquote> <p> <span class="underline">v=&lt;optimized out&gt;, this=0x863360) at /usr/include/c++/7/bits/stl_tree.h:2117 </span></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::insert ( </p> <blockquote> <p> <span class="underline">x=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/include/c++/7/bits/stl_multiset.h:498 </span></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> boost::serialization::typeid_system::extended_type_info_typeid_0::type_register (this=0x1003730, ti=...) at libs/serialization/src/extended_type_info_typeid.cpp:91 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00007fffd6023819 in boost::serialization::extended_type_info_typeid&lt;QFont&gt;::extended_type_info_typeid (this=0x1003730) at /opt/boost/include/boost/serialization/extended_type_info_typeid.hpp:91 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x00007fffd60231a0 in boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;QFont&gt; &gt;::get_instance()::singleton_wrapper::singleton_wrapper() (this=0x1003730) </p> <blockquote> <p> at /opt/boost/include/boost/serialization/singleton.hpp:121 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> 0x00007fffd6023213 in boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;QFont&gt; &gt;::get_instance () at /opt/boost/include/boost/serialization/singleton.hpp:142 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> 0x00007fffd6022e83 in boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;QFont&gt; &gt;::get_const_instance () at /opt/boost/include/boost/serialization/singleton.hpp:156 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10" title="#10: Bugs: allyourbase.jam file is bad. (closed: Out of Date)">#10</a> 0x00007fffd6022aca in boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, QFont&gt;::oserializer (this=0x1003710) at /opt/boost/include/boost/archive/detail/oserializer.hpp:116 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11" title="#11: Bugs: why not using mt19937? (closed: Fixed)">#11</a> 0x00007fffd6022744 in boost::serialization::singleton&lt;boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, QFont&gt; &gt;::get_instance()::singleton_wrapper::singleton_wrapper() (this=0x1003710) </p> <blockquote> <p> at /opt/boost/include/boost/serialization/singleton.hpp:121 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/12" title="#12: Bugs: Can't specify VertexPredicate (closed: Fixed)">#12</a> 0x00007fffd60227b7 in boost::serialization::singleton&lt;boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, QFont&gt; &gt;::get_instance () at /opt/boost/include/boost/serialization/singleton.hpp:142 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/13" title="#13: Bugs: iterator_adapter and abstract classes (closed: Out of Date)">#13</a> 0x00007fffd60166e9 in <span class="underline">static_initialization_and_destruction_0 (</span>initialize_p=1, <span class="underline">priority=65535) at /opt/boost/include/boost/serialization/singleton.hpp:173 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/14" title="#14: Feature Requests: Support for static data members (closed: Out of Date)">#14</a> 0x00007fffd60167ba in _GLOBAL</span>sub_I_archivebuilder.cpp(void) () at /home/misha/Documents/devel/svn/soac/trunk/diagnostic/dcsplugins/development/gui/qt/archivebuilder.cpp:233 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/15" title="#15: Feature Requests: thread class needs join() with timeout (closed: None)">#15</a> 0x00007ffff7de640a in call_init.part () from /lib64/ld-linux-x86-64.so.2 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/16" title="#16: Feature Requests: way to defer thread creation needed (closed: None)">#16</a> 0x00007ffff7de6516 in _dl_init () from /lib64/ld-linux-x86-64.so.2 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/17" title="#17: Feature Requests: Socket wrapper class (closed: fixed)">#17</a> 0x00007ffff7dea67f in dl_open_worker () from /lib64/ld-linux-x86-64.so.2 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/18" title="#18: Bugs: lexical_cast fails in some cases (closed: Fixed)">#18</a> 0x00007ffff4d59e5f in _dl_catch_exception () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/19" title="#19: Bugs: Problems building on NT &amp; Linux (closed: Out of Date)">#19</a> 0x00007ffff7de9f1a in _dl_open () from /lib64/ld-linux-x86-64.so.2 <a class="deleted ticket" href="https://svn.boost.org/trac10/ticket/20" title="#20: Support Requests: passwords in c++ programming (deleted)">#20</a> 0x00007ffff2c8af96 in dlopen_doit () from /lib64/libdl.so.2 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/21" title="#21: Bugs: Can't compile transitive closure example (closed: Out of Date)">#21</a> 0x00007ffff4d59e5f in _dl_catch_exception () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/22" title="#22: Support Requests: compilation failure on Linux RH 7.1 (closed: Wont Fix)">#22</a> 0x00007ffff4d59eef in _dl_catch_error () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/23" title="#23: Bugs: Trivial doc error (closed: Fixed)">#23</a> 0x00007ffff2c8b685 in _dlerror_run () from /lib64/libdl.so.2 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/24" title="#24: Bugs: smart_ptr.hpp warnings on vacpp (closed: Wont Fix)">#24</a> 0x00007ffff2c8b051 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2 </p> <p> Qt libraries are linked dynamically to all parts of my application. </p> Kipa Mikhail <msnkipa@…> https://svn.boost.org/trac10/ticket/13555 https://svn.boost.org/trac10/ticket/13555 Report #13554: NULL deference exception in boost::asio::ip::tcp::resolver::results_type Tue, 01 May 2018 09:27:44 GMT Tue, 01 May 2018 09:27:44 GMT <p> boost::asio::ip::tcp::resolver::results_type type triggers a NULL dereference exception when calling empty() on a default-initialized instance. </p> <p> How to reproduce: </p> <ul><li>instantiate a new boost::asio::ip::tcp::resolver::results_type class instance with the default parameterless constructor </li><li>call the empty() method, it should return true </li><li>notice the access violation crash triggered </li></ul><p> Code example: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/asio/ip/tcp.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="cm">/*argc*/</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="cm">/*argv*/</span><span class="p">)</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">resolver</span><span class="o">::</span><span class="n">results_type</span> <span class="n">test</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">resolver</span><span class="o">::</span><span class="n">results_type</span><span class="p">();</span> <span class="k">if</span> <span class="p">(</span><span class="n">test</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ok&quot;</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> Boost version: 1.66 Windows x64 vc141 </p> <p> Issue analysis: empty() is implemented as </p> <div class="wiki-code"><div class="code"><pre><span class="kt">bool</span> <span class="nf">empty</span><span class="p">()</span> <span class="k">const</span> <span class="n">BOOST_ASIO_NOEXCEPT</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">values_</span><span class="o">-&gt;</span><span class="n">empty</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> but this-&gt;values_ returns NULL when the class is empty. A possible fix could be to NULL-check this-&gt;values_ and then call -&gt;empty() (if still needed at all) </p> <div class="wiki-code"><div class="code"><pre><span class="kt">bool</span> <span class="nf">empty</span><span class="p">()</span> <span class="k">const</span> <span class="n">BOOST_ASIO_NOEXCEPT</span> <span class="p">{</span> <span class="k">return</span> <span class="o">!</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">values_</span> <span class="o">||</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">values_</span><span class="o">-&gt;</span><span class="n">empty</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> Current workaround: I would suggest not to use .empty() at all currently but to rely on .begin() == .end() . </p> <p> Note that even if the code example above looks quite meaningless, .empty() crashes causes issue for example when checking if an address can be resolved using ip::basic_resolver::resolve function. The documentation states "An empty range is returned if an error occurs" so one expects to be able to check if the range is empty. </p> <p> P.S.: I had links to sources and documentation but the tracker kept saying "Akismet says content is spam". Please fix your tracker. </p> giacomopoz@… https://svn.boost.org/trac10/ticket/13554 https://svn.boost.org/trac10/ticket/13554 Report #13553: intersection gives wrong result Mon, 30 Apr 2018 14:04:02 GMT Wed, 16 May 2018 06:21:26 GMT <p> The following polygons result in a wrong intersection: </p> <p> using point_type = boost::geometry::model::d2::point_xy&lt;double&gt;; typedef boost::geometry::model::ring&lt;point_type, false, true&gt; polygon; </p> <p> polygon op1, op2; </p> <p> boost::geometry::read_wkt("POLYGON((7.7058932076134967 -11.523889618379748,8.0348094747518424 0.63492733448631888,7.7720440433489850 0.63492733448631888, 7.7058932076134967 -11.523889618379748))", op1); boost::geometry::read_wkt("POLYGON((2.6206910206017642 -32.773696844382265, 5.5835888947200090 -24.273798818378602, 6.7109368565951772 -20.023839227004206, 7.4191426214038723 -15.773870150408516, 7.7058941612236938 -11.523876267001913, -3.1025600674348395 -11.523582486001384, -3.1025610210450365 -32.773541282571529, 2.6206910206017642 -32.773696844382265))", op2); std::vector&lt;polygon&gt; result; boost::geometry::intersection(op1, op2, result); </p> <p> result is equal to op1, while op1 is mostly outside op2. </p> marnix.berg@… https://svn.boost.org/trac10/ticket/13553 https://svn.boost.org/trac10/ticket/13553 Report #13551: m_storage may be used uninitialized in this function Mon, 30 Apr 2018 09:02:58 GMT Mon, 30 Apr 2018 09:02:58 GMT <p> Hi, in 1.66 was the following feature introduced: On newer compilers optional is now trivially-copyable for scalar Ts. This uses a different storage (just T rather than aligned_storage). We require the compiler to support defaulted functions. </p> <p> Gcc 4.4.7 in C++98 mode is incorrectly recognizes because Boost tries to use tc_optional_base however without C++11 defaulted functions are not working. This is causing boost::optional&lt;unsigned char&gt;::&lt;anonymous&gt;.boost::optional_detail::tc_optional_base&lt;unsigned char&gt;::m_storage’ may be used uninitialized in this function warning. </p> lukasz.czajczyk@… https://svn.boost.org/trac10/ticket/13551 https://svn.boost.org/trac10/ticket/13551 Report #13550: Boost foreach library trigger warning in Qt Mon, 30 Apr 2018 06:46:44 GMT Thu, 10 May 2018 16:46:27 GMT <p> Since I use <a class="ext-link" href="https://github.com/KDE/clazy"><span class="icon">​</span>clazy</a> I have such warnings: </p> <pre class="wiki">warning: zero as null pointer constant foreach.hpp: 1100:77: note expanded from macro BOOST_FOREACH foreach.hpp: 1014:9: note expanded from macro BOOST_FOREACH_CONTAIN foreach.hpp: 942:13: note expanded from macro BOOST_FOREACH_SHOULD_COPY </pre><p> I have a running pull request here: <a class="ext-link" href="https://github.com/boostorg/foreach/pull/7"><span class="icon">​</span>https://github.com/boostorg/foreach/pull/7</a> </p> Martin Delille <martin@…> https://svn.boost.org/trac10/ticket/13550 https://svn.boost.org/trac10/ticket/13550 Report #13549: "Failed to register an intel toolset!" despite "iclvars.bat" intel64 ran. Sat, 28 Apr 2018 09:10:37 GMT Sat, 28 Apr 2018 09:10:37 GMT <p> Moin Moin. </p> <p> Despite I ran </p> <blockquote> <p> "iclvars.bat" intel64 </p> </blockquote> <p> I do receive an.: "Failed to register an intel toolset!" despite Message in "tools\build\src\tools\intel-win.jam" due to.: </p> <blockquote> <p> if ! [ feature.values &lt;toolset-intel:version&gt; ] </p> </blockquote> <p> being true (, hence failing). I tried to google the syntax, but did not find any expression-list explaining.: </p> <blockquote> <p> [ feature.values &lt;toolset-intel:version&gt; ] </p> </blockquote> <p> Is there a syntax to print out the expressions.: Using.: </p> <blockquote> <p> ECHO $feature.values ; ECHO $(feature.values) ; ECHO &lt;toolset-intel:version&gt; ; ECHO $(&lt;toolset-intel:version&gt;) ; </p> </blockquote> <p> just yields.: <span class="underline"></span><span class="underline"></span><span class="underline"></span><span class="underline"></span> $feature.values </p> <p> &lt;toolset-intel:version&gt; </p> <p> <span class="underline"></span><span class="underline"></span><span class="underline"></span><span class="underline"></span> So at least $feature.values does seem to be empty. </p> <p> But typing in <span class="underline"></span><span class="underline"></span><span class="underline"></span><span class="underline"></span> </p> <blockquote> <p> call "%VT_DLL_DIR%\..\..\..\compilers_and_libraries\windows\bin\iclvars.bat" intel64 </p> </blockquote> <p> bootstrap.bat <span class="underline"></span><span class="underline"></span><span class="underline"></span><span class="underline"></span> does compile a functional b2.exe/bjam.exe pair. Does anyone know, what happened here, or can someone privide help(-files) on the syntax used for the if-statement, please. 8<sup>))) </sup></p> <blockquote> <p> Tschüß, </p> <blockquote> <p> Michael. </p> </blockquote> </blockquote> boost@… https://svn.boost.org/trac10/ticket/13549 https://svn.boost.org/trac10/ticket/13549 Report #13548: typo in documentation Fri, 27 Apr 2018 19:05:22 GMT Fri, 27 Apr 2018 19:05:22 GMT <p> <a class="ext-link" href="https://www.boost.org/doc/libs/1_67_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html"><span class="icon">​</span>https://www.boost.org/doc/libs/1_67_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html</a> </p> <p> Escape Sequences ... \x{DDDD} </p> <p> Outputs the character whose hexadecimal code point is 0xDDDDD &lt;--<strong>too many D</strong> </p> howard.gleason@… https://svn.boost.org/trac10/ticket/13548 https://svn.boost.org/trac10/ticket/13548 Report #13547: "warning C6386: Buffer overrun while writing to 'mem': the writable size is 'size+1' bytes, but 'size' bytes might be written..."...->"https://svn.boost.org/trac10/attachment/ticket/13547/#ticket". Fri, 27 Apr 2018 15:03:14 GMT Fri, 27 Apr 2018 15:05:05 GMT <p> Moin Moin. </p> <p> For MSVC I saw a "warning C6386: Buffer overrun while writing to 'mem': the writable size is 'size+1' bytes, but 'size' bytes might be written..."-warning, which I pragma'ed out, according to the attachment, maybe You want to do the same. </p> <blockquote> <p> Tschüß, </p> <blockquote> <p> Michael. </p> </blockquote> </blockquote> <p> P.S.: -&gt;"<a class="ext-link" href="https://svn.boost.org/trac10/attachment/ticket/13546/#ticket"><span class="icon">​</span>https://svn.boost.org/trac10/attachment/ticket/13546/#ticket</a>". </p> boost@… https://svn.boost.org/trac10/ticket/13547 https://svn.boost.org/trac10/ticket/13547 Report #13546: "boost\asio\placeholders.hpp" is missing static modifiers for "boost::arg<1>&error"... Fri, 27 Apr 2018 14:58:41 GMT Fri, 27 Apr 2018 14:58:41 GMT <p> Moin Moin. </p> <p> For MSVC and ICL the fact, that, within an unnamed namespace "boost\asio\placeholders.hpp" is missing static modifiers for "boost::arg&lt;1&gt;&amp;error" yields linker-errors... I did add a change-suggestion. </p> <blockquote> <p> Tschüß, </p> <blockquote> <p> Michael. </p> </blockquote> </blockquote> boost@… https://svn.boost.org/trac10/ticket/13546 https://svn.boost.org/trac10/ticket/13546 Report #13545: Missing SAL-Präfixes for windows-function-imports. Fri, 27 Apr 2018 14:53:45 GMT Tue, 01 May 2018 21:58:48 GMT <p> Moin Moin. Regarding "boost\winapi\dll.hpp" I wanted to mention, that MSVC and ICL are mourning. The solution seemed to be to add the SAL-Präfixes for windows-function-imports, that MS always adds to its SDK-Headers. Maybe it is possible to amend the file or to skip the declarations, if an according header can be included from the Windows-10-SDK. A am attaching my version. </p> <blockquote> <p> Tschüß, </p> <blockquote> <p> Michael. </p> </blockquote> </blockquote> <p> P.S.: I would have been registering an account in order to verify myself, if I had seen an according link. </p> boost@… https://svn.boost.org/trac10/ticket/13545 https://svn.boost.org/trac10/ticket/13545 Report #13544: remove_vertex broken for adjacency_list Fri, 27 Apr 2018 12:59:47 GMT Fri, 27 Apr 2018 12:59:47 GMT <p> Create a graph with three nodes, with the third node having an edge to the first node. Calling remove_vertex on the second node will then corrupt the m_property attribute of the edge of the third node. </p> <p> The graph template parameters are as follows. I'm not including the property classes' content. </p> <div class="wiki-code"><div class="code"><pre> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">adjacency_list</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">setS</span><span class="p">,</span> <span class="c1">// Container type for edges</span> <span class="n">boost</span><span class="o">::</span><span class="n">vecS</span><span class="p">,</span> <span class="c1">// Container type for vertices</span> <span class="n">boost</span><span class="o">::</span><span class="n">directedS</span><span class="p">,</span> <span class="c1">// Param for</span> <span class="c1">// directed/undirected/bidirectional</span> <span class="c1">// graph</span> <span class="n">Vertex</span><span class="p">,</span> <span class="c1">// Type for the vertices</span> <span class="n">Edge</span> <span class="c1">// Type for the edges</span> <span class="o">&gt;</span> <span class="n">Graph_t</span><span class="p">;</span> </pre></div></div><p> The culprit is the following method, in your adjacency_list.hpp. </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">EdgeList</span><span class="p">,</span> <span class="k">class</span> <span class="nc">vertex_descriptor</span><span class="o">&gt;</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">reindex_edge_list</span><span class="p">(</span><span class="n">EdgeList</span><span class="o">&amp;</span> <span class="n">el</span><span class="p">,</span> <span class="n">vertex_descriptor</span> <span class="n">u</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">disallow_parallel_edge_tag</span><span class="p">)</span> <span class="p">{</span> <span class="k">typename</span> <span class="n">EdgeList</span><span class="o">::</span><span class="n">iterator</span> <span class="n">ei</span> <span class="o">=</span> <span class="n">el</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">e_end</span> <span class="o">=</span> <span class="n">el</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="k">while</span> <span class="p">(</span><span class="n">ei</span> <span class="o">!=</span> <span class="n">e_end</span><span class="p">)</span> <span class="p">{</span> <span class="k">typename</span> <span class="n">EdgeList</span><span class="o">::</span><span class="n">value_type</span> <span class="n">ce</span> <span class="o">=</span> <span class="o">*</span><span class="n">ei</span><span class="p">;</span> <span class="o">++</span><span class="n">ei</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="n">ce</span><span class="p">.</span><span class="n">get_target</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">u</span><span class="p">)</span> <span class="p">{</span> <span class="n">el</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">ce</span><span class="p">);</span> <span class="o">--</span><span class="n">ce</span><span class="p">.</span><span class="n">get_target</span><span class="p">();</span> <span class="n">el</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">ce</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> When initializing the variable ce, its m_property field, which is a unique_ptr, is stolen from *ei, setting ei's field to null. If get_target is not bigger than u, ce is not re-inserted in el, leaving the old copy with the null pointer. </p> <p> Below is a suggested and tested fix. </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">EdgeList</span><span class="p">,</span> <span class="k">class</span> <span class="nc">vertex_descriptor</span><span class="o">&gt;</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">reindex_edge_list</span><span class="p">(</span><span class="n">EdgeList</span><span class="o">&amp;</span> <span class="n">el</span><span class="p">,</span> <span class="n">vertex_descriptor</span> <span class="n">u</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">disallow_parallel_edge_tag</span><span class="p">)</span> <span class="p">{</span> <span class="k">typename</span> <span class="n">EdgeList</span><span class="o">::</span><span class="n">iterator</span> <span class="n">ei</span> <span class="o">=</span> <span class="n">el</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">e_end</span> <span class="o">=</span> <span class="n">el</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="k">while</span> <span class="p">(</span><span class="n">ei</span> <span class="o">!=</span> <span class="n">e_end</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">ei</span><span class="o">-&gt;</span><span class="n">get_target</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">u</span><span class="p">)</span> <span class="p">{</span> <span class="k">typename</span> <span class="n">EdgeList</span><span class="o">::</span><span class="n">value_type</span> <span class="n">ce</span> <span class="o">=</span> <span class="o">*</span><span class="n">ei</span><span class="p">;</span> <span class="o">++</span><span class="n">ei</span><span class="p">;</span> <span class="n">el</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">ce</span><span class="p">);</span> <span class="o">--</span><span class="n">ce</span><span class="p">.</span><span class="n">get_target</span><span class="p">();</span> <span class="n">el</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">ce</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="o">++</span><span class="n">ei</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div> Rasmus Ahlberg <rasmus.ahlberg@…> https://svn.boost.org/trac10/ticket/13544 https://svn.boost.org/trac10/ticket/13544 Report #13543: documentation for allocation_command shows the wrong return type Thu, 26 Apr 2018 17:06:47 GMT Thu, 26 Apr 2018 17:06:47 GMT <p> The documentation at </p> <p> <a class="ext-link" href="https://www.boost.org/doc/libs/1_59_0/doc/html/interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_advanced_features.managed_memory_segment_expand_in_place"><span class="icon">​</span>https://www.boost.org/doc/libs/1_59_0/doc/html/interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.managed_memory_segment_advanced_features.managed_memory_segment_expand_in_place</a> </p> <p> shows the return type for allocation_command is "std::pair&lt;T *, bool&gt;". The code doesn't match and just returns a "T *". The example also disagrees and shows: </p> <p> std::size_t * ret = managed_shm.allocation_command </p> <p> The pair would actually be nicer but either the code or the docs need updating. The same problem appears in later versions. </p> matt.liberty@… https://svn.boost.org/trac10/ticket/13543 https://svn.boost.org/trac10/ticket/13543 Report #13539: Boost Polygon - MSVC 2017 - Ambiguous call to size() function Wed, 25 Apr 2018 10:54:09 GMT Wed, 25 Apr 2018 10:57:36 GMT <p> We are currently switching our compiler from MSVC 2012 to MSVC 2017. Now I have problems compiling out application using Boost Polygon. I get the following error: </p> <p> c:\khand\win64\include\boost\polygon\polygon_traits.hpp(606): error C2668: "boost::polygon::size": ambiguous call to overloaded function c:\khand\win64\include\boost\polygon\polygon_traits.hpp(467): note: could be "unsigned <span class="underline">int64 boost::polygon::size&lt;polygon_type&gt;(const T &amp;)" </span></p> <blockquote> <p> with [ </p> <blockquote> <p> polygon_type=DESIGN::GTL::Polygon, T=DESIGN::GTL::Polygon </p> </blockquote> <p> ] </p> </blockquote> <p> C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\include\xutility(1611): note: or "unsigned <span class="underline">int64 std::size&lt;polygon_type&gt;(const _Container &amp;)" [bei der Verwendung der argumentbezogenen Suche gefunden] </span></p> <blockquote> <p> with [ </p> <blockquote> <p> polygon_type=DESIGN::GTL::Polygon, _Container=DESIGN::GTL::Polygon </p> </blockquote> <p> ] </p> </blockquote> <p> In size() function in polygon_traits.hpp conflicts with the now in C++ standard contained std::size(). </p> <p> I could solve the problem by using the completed name boost:polygon::size() in polygon_traits.hpp. Please see appended diff. </p> Kai Benndorf <kai.benndorf@…> https://svn.boost.org/trac10/ticket/13539 https://svn.boost.org/trac10/ticket/13539 Report #13538: Issue in addressof.hpp? Wed, 25 Apr 2018 01:19:18 GMT Thu, 10 May 2018 17:03:58 GMT <p> I'm trying to build pCloudCC and not sure if this is a Boost problem or a pCloud problem: </p> <p> [ 40%] Building CXX object CMakeFiles/pcloudcc_lib.dir/pclsync_lib.cpp.o In file included from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:30:0: /root/build/console-client-master/pCloudCC/lib/pclsync/pcompat.h:95:0: warning:&#34;_GNU_SOURCE&#34; redefined [enabled by default] </p> <blockquote> <p> #define _GNU_SOURCE <sup> </sup></p> </blockquote> <p> &lt;command-line&gt;:0:0: note: this is the location of the previous definition In file included from /usr/local/include/boost/smart_ptr/detail/local_sp_deleter.hpp:20:0, </p> <blockquote> <p> from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:1158, from /usr/local/include/boost/shared_ptr.hpp:17, from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:45: </p> </blockquote> <p> /usr/local/include/boost/smart_ptr/detail/local_counted_base.hpp: In member function ‘void boost::detail::local_counted_base::add_ref()’: /usr/local/include/boost/smart_ptr/detail/local_counted_base.hpp:67:49: error: <span class="underline">builtin_assume’ was not declared in this scope </span></p> <blockquote> <p> <span class="underline">builtin_assume( local_use_count_ &gt;= 1 ); </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:29:0, </p> <blockquote> <p> from /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:30, from /usr/local/include/boost/smart_ptr/shared_ptr.hpp:28, from /usr/local/include/boost/shared_ptr.hpp:17, from /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:45: </p> </blockquote> <p> /usr/local/include/boost/core/addressof.hpp: In instantiation of ‘T* boost::addressof(T&amp;) [with T = int (*)(_IO_FILE*)]’: /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:182:98: required from ‘void* boost::detail::sp_counted_impl_pd&lt;P, D&gt;::get_local_deleter(const sp_typeinfo&amp;) [with P = _IO_FILE*; D = int (*)(_IO_FILE*); boost::detail::sp_typeinfo = std::type_info]’ /root/build/console-client-master/pCloudCC/pclsync_lib.cpp:304:1: required from here /usr/local/include/boost/core/addressof.hpp:40:33: error: ‘<span class="underline">builtin_addressof’ was not declared in this scope </span></p> <blockquote> <p> return <span class="underline">builtin_addressof(o); </span></p> </blockquote> Josh <egomagickian@…> https://svn.boost.org/trac10/ticket/13538 https://svn.boost.org/trac10/ticket/13538 Report #13537: serializable unordered_map has incorrect template signature Tue, 24 Apr 2018 22:23:10 GMT Tue, 24 Apr 2018 22:23:10 GMT <p> In boost/serialization/unordered_map.hpp the template signature looks like this: </p> <pre class="wiki">template&lt; class Archive, class Key, class HashFcn, class EqualKey, class Allocator &gt; </pre><p> Whereas it should be: </p> <pre class="wiki">template&lt; class Archive, class Key, class Type, class HashFcn, class EqualKey, class Allocator &gt; </pre><p> The consequence is that if a custom allocator is specified then the serialization will cause compiler errors due to there being insufficient template parameters. </p> David Hawkes <daveh@…> https://svn.boost.org/trac10/ticket/13537 https://svn.boost.org/trac10/ticket/13537 Report #13535: xpressive miss captured groups name while assign a match_results object to another. Mon, 23 Apr 2018 10:48:24 GMT Mon, 23 Apr 2018 10:48:24 GMT <p> example: </p> <pre class="wiki"> cmatch match; cmatch mat2; cregex rex = tcompile("(?P&lt;ErrorCode&gt;\\d{5})"); if( regex_match("error10205",match,rex) ) { mat2 = match; string strErr = mat["ErrorCode"]; // Here will not get the match string } </pre><p> It's cause by funciton: <strong>void swap(match_results&lt;<a class="missing wiki">BidiIter</a>&gt; &amp;that)</strong> </p> <p> in <strong>match_results.hpp</strong> file. </p> <p> I had fix the bug, by adding </p> <h2 class="section" id="this-named_marks_.swapthat.named_marks_">this-&gt;named_marks_.swap(that.named_marks_);</h2> <p> after line 668. </p> hyd <ruoleng@…> https://svn.boost.org/trac10/ticket/13535 https://svn.boost.org/trac10/ticket/13535 Report #13534: icu support windows7 x64 failed Fri, 20 Apr 2018 21:44:14 GMT Fri, 20 Apr 2018 22:22:02 GMT <p> I'm trying to build any boost x64 version with icu support, but have't reached success. Built both version of icu 32 and 64 bit. I tried following steps: in order to find icu dlls I set </p> <ol start="0"><li>set PATH=c:/icu/bin64;c:/icu/bin;%PATH% </li><li>bjam adress-model=64 sICU_PATH=c:/icu --toolset=msvc-14.0 ; got </li></ol><ul><li>has_icu builds : no </li><li>icu(64) : yes </li></ul><p> What should I think of it? By checking resulting libraries, I realized that support wasn't enabled. </p> <p> result: icu support DISABLED </p> <p> 2.bjam adress-model=32 sICU_PATH=c:/icu --toolset=msvc-14.0 ; got </p> <ul><li>has_icu builds : yes </li><li>icu(64) : yes </li></ul><p> By checking resulting libraries, I found that support was enabled. </p> <p> result: icu support ENABLED </p> <p> any ideas? </p> stoneGuard https://svn.boost.org/trac10/ticket/13534 https://svn.boost.org/trac10/ticket/13534 Report #13530: str##A##B ? Fri, 20 Apr 2018 06:34:58 GMT Fri, 20 Apr 2018 06:34:58 GMT <p> #define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION </p> <p> 1&gt;LINK : fatal error LNK1104: 无法打开文件“boost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc141-mt-gd-x64-1_67.lib” </p> anonymous https://svn.boost.org/trac10/ticket/13530 https://svn.boost.org/trac10/ticket/13530 Report #13526: Boost.Interprocess named_semaphore fail with C# Tue, 17 Apr 2018 12:49:45 GMT Tue, 17 Apr 2018 12:49:45 GMT <p> I am using Boost.Interprocess named semaphore under Windows. </p> <p> The problem is with shared memory if I use marshalling between C# and C code (C wrapper around C++ code). The segfault occured. </p> <p> I found the place where the problem occured and post a ticket to stackowerflow. <a class="ext-link" href="https://stackoverflow.com/questions/49383042/boost-interprocess-v1-66-get-bootstamp-segfault-with-c-sharp"><span class="icon">​</span>https://stackoverflow.com/questions/49383042/boost-interprocess-v1-66-get-bootstamp-segfault-with-c-sharp</a> </p> <p> No one response so I decided report a bug(?). </p> janmkubalek@… https://svn.boost.org/trac10/ticket/13526 https://svn.boost.org/trac10/ticket/13526 Report #13524: Parameter mismatch on make_controlled factory (incorrectly constructed controlled_runge_kutta) Mon, 16 Apr 2018 15:41:21 GMT Mon, 16 Apr 2018 15:50:13 GMT <p> While constructing a <em>controlled_runge_kutta</em> (might also affect other) using the <em>make_controlled</em> factory, the constructor of <em>controlled_runge_kutta</em> gets passed the wrong parameters. The factory calls the constructor with <em>(abs_error, rel_error, stepper)</em>, instead of the actual parameters of the constructor <em>(error_checker, step_adjuster, stepper)</em>. (see <em>"boost/numeric/odeint/stepper/generation/make_controlled.hpp:44"</em> and <em>"boost/numeric/odeint/stepper/controlled_runge_kutta.hpp:247"</em>) This yields no compile error, since the respective class has the type of these paramerts as templates and the constructors of the actual expected types have all default parameters, without being explicit. This leads to the practically invisible error, where the passed values construct the types, expected by the constructor of controlled_runge_kutta, by populating the first parameter each (effectivly using these constructors as conversion constructors). </p> <p> Note: This leads to the maximal step size being set to the relative error limit and the relative error limit being set to the default value of 10<sup>-6</sup>. Since one usually sets the relative error limit to a rather low value (like the default 10<sup>-6</sup>), this causes the controller to split usually small enough steps into even smaller, thus thousands of, substeps, drastically increasing computation time. </p> <p> I was able to notice this behavior while debugging why my calculation of the controlled runge kutta uses unreasonably many substeps, while the constant step size runge kutta got a error estimated much lower then the error limit of the controller while doing the whole interval in only one step. </p> J.Saffer <j.saffer@…> https://svn.boost.org/trac10/ticket/13524 https://svn.boost.org/trac10/ticket/13524 Report #13522: Invalid empty result using boost::geometry::difference Mon, 16 Apr 2018 09:43:01 GMT Wed, 16 May 2018 06:21:58 GMT <p> Hello, </p> <p> executing the following polygon difference operation sequence produces an obviously incorrect empty result. The first difference produces a (possibliy) valid result with a spike which might be the actual problem. The third difference with the previous result generates an empty result. The intermediate difference is required the reproduce this behaviour. Without it the result of the third difference is correct. Removing the spike from step one also solves the problem. </p> <p> Code to reproduce this: </p> <p> using point_type = boost::geometry::model::d2::point_xy&lt;double&gt;; using polygon = boost::geometry::model::polygon&lt;point_type&gt;; using multi_polygon = boost::geometry::model::multi_polygon&lt;polygon&gt;; </p> <blockquote> <p> BoostGeometryBridge::Polygon2d_t Right<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a>; BoostGeometryBridge::MultiPolygon2d_t Left<a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a>; </p> </blockquote> <blockquote> <p> boost::geometry::read_wkt("MULTIPOLYGON(((0.747399249902131135 -0.974867609298678328,0.744720465461241043 -0.984866128861542012,0.737400169703072983 -0.992186849248596014,0.72740024741975795 -0.994866631198703,0.169444950081761997 -0.994882813404528998,0.156263880981993009 -0.992649068186161054,0.144555091741144004 -0.986196591543298973,0.135626528763234999 -0.976246166252738967,0.0970341390445131069 -0.91515608670535098,0.0527935015388215009 -0.831873652851741974,0.0149278636239085008 -0.745505885364162957,-0.016349202846282801 -0.656539920475841976,-0.0408612872409169006 -0.56547754891590496,-0.0584701351532070993 -0.472832385681689005,-0.0690764281904878985 -0.379126973119241983,-0.0726203441553292944 -0.284889833651171986,-0.0690818944579700972 -0.19065248877542601,-0.058481036857029399 -0.0969464611485150035,-0.0408775628926898033 -0.00430027666216776031,-0.0163707606471800993 0.086763516577464006,0.0149011452653820004 0.17573129555438699,0.0527617733210207981 0.262101259307556012,0.0969975799226773933 0.345386259216249991,0.135586426022915013 0.406478577227274984,0.144514411807557003 0.416429520405822984,0.156222826750318011 0.422882676210660002,0.169403766258661992 0.42511718599825099,0.727359063596658029 0.425133368204076989,0.737359141304932963 0.422454166307816015,0.744679861691986966 0.415133870549649009,0.747359067455327319 0.405136098375181386,0.747329770868999987 1.43513394783313997,2.74732976755064007 1.43524915817017007,2.74708725756255978 5.64524915118547987,-2.74750006237453981 1.25999999251885009,-2.74749997944197011 -4.43500000748115042,0.747500020558034994 -4.43500000604748035,0.747399249902131135 -0.974867609298678328),(-2.49638915854706989 0.152811596222504009,-1.75719536363572004 1.80498971421238008,-1.01782283569549992 1.4741902811305001,-1.75234596398119002 -0.167548384003570999,-1.76762179055725999 -0.173243028570225999,-2.49638915854706989 0.152811596222504009)))", Left<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>); </p> </blockquote> <blockquote> <p> boost::geometry::read_wkt("POLYGON((-1.57590744074229994 2.19505211912179998,-2.74750006237453981 1.25999999251885009,-2.74750004134586989 -0.184043917378418992,-1.76796680349592994 -0.184043903114115004,-1.74492840055212994 -0.175455463366190001,-1.00461083616106994 1.47923439340570995,-1.57590744074229994 2.19505211912179998))", Right<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>); boost::geometry::read_wkt("POLYGON((2.74708725756255001 5.64524915118547987, 1.48149582377297007 4.63517624723808019, 2.7471454369183701 4.6352491528611397, 2.74708725756255001 5.64524915118547987))", Right<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>); boost::geometry::read_wkt("POLYGON((-2.74749997944197011 -4.43500000748115042, -2.74750006237453981 1.25999999251885009, -3.11250006493298015 1.43568817247817004, -3.11249997689355018 -4.61000000763086959, -2.74749997944197011 -4.43500000748115042))", Right<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>); </p> </blockquote> <blockquote> <p> for(int i = 0; i &lt; 3; i++) { </p> <blockquote> <p> boost::geometry::difference(Left[i], Right[i], Left[i + 1]); </p> </blockquote> <p> } </p> </blockquote> <p> Final result in Left<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a> is empty. </p> lehnert@… https://svn.boost.org/trac10/ticket/13522 https://svn.boost.org/trac10/ticket/13522 Report #13520: Cant add capture-by-move lambda to channel Sun, 15 Apr 2018 14:06:50 GMT Sun, 15 Apr 2018 14:42:45 GMT <p> The following code isnt working if the <code>test</code> is move-only </p> <pre class="wiki">using task = std::function&lt;void()&gt;; boost::fibers::buffered_channel&lt;task&gt; ch{1024}; test tst; ch.push([t{std::move(tst)}]() { t.print(); }); </pre><p> Full repro: <a class="ext-link" href="http://coliru.stacked-crooked.com/a/88dec3ea76a41ea1"><span class="icon">​</span>http://coliru.stacked-crooked.com/a/88dec3ea76a41ea1</a> </p> kreuzerkrieg@… https://svn.boost.org/trac10/ticket/13520 https://svn.boost.org/trac10/ticket/13520 Report #13519: Invalid result for boost::geometry::difference Fri, 13 Apr 2018 15:21:42 GMT Wed, 02 May 2018 15:32:01 GMT <p> Hello, </p> <p> executing the following polygon difference operation produces an obviously incorrect result. From a relatively large face a small face is subtracted and the result is very small. </p> <p> Code snippet: </p> <blockquote> <p> using point_type = boost::geometry::model::d2::point_xy&lt;double&gt;; using polygon = boost::geometry::model::polygon&lt;point_type&gt;; using multi_polygon = boost::geometry::model::multi_polygon&lt;polygon&gt;; </p> </blockquote> <blockquote> <p> polygon op1, op2; multi_polygon result; </p> </blockquote> <blockquote> <p> boost::geometry::read_wkt("MULTIPOLYGON(((-1.54499301090586272 0.996130119403307535, -1.54499299947730218 0.99761525234323567, -1.54655249947779994 0.995186041738558957, -1.54499301090586272 0.996130119403307535)), ((-1.54655249947779994 0.995186041738558957, -1.54499301719928761 0.995312293499367451, -1.54499301635595665 0.995421883734666779, -1.54655249947779994 0.995186041738558957)), ((-1.5466074994591299 1.08624204173854011, -1.54631431516927331 1.08619819902499004, -1.54633399044383202 1.08621614521949872, -1.5466074994591299 1.08624204173854011)), ((-1.5466074994591299 1.08624204173854011, -1.54499299946018764 1.08107828103308101, -1.54499301135365474 1.08339600649103418, -1.5466074994591299 1.08624204173854011)), ((-1.53918049946492008 1.05799404173705991, -1.5466074994591299 1.08624204173854011, -1.54634340852929708 1.08622473535414787, -1.99999999954877006 1.5, -1.99999999954877006 0.5, -1.54499301954877 0.995006979999999985, -1.54499301770602582 0.995246443249784174, -1.54655249947779994 0.995186041738558957, -1.54499299947244828 1.02129648988327593, -1.5449929994644851 1.06013330832250108, -1.5466074994591299 1.08624204173854011, -1.54499299946029955 1.08053288029024164, -1.53891949946469997 1.05905604173701007, -1.53918049946492008 1.05799404173705991)))", op1); </p> </blockquote> <blockquote> <p> boost::geometry::read_wkt("POLYGON((-1.53581949946317997 1.06649704173632998, -1.5466074994591299 1.08624204173854011, -1.53723249946403007 1.06231704173661989, -1.53581949946317997 1.06649704173632998))", op2); </p> </blockquote> <blockquote> <p> boost::geometry::difference(op1, op2, result); </p> </blockquote> lehnert@… https://svn.boost.org/trac10/ticket/13519 https://svn.boost.org/trac10/ticket/13519 Report #13517: Boost Small Container chokes MSVC+NVCC CUDA 9.1 Thu, 12 Apr 2018 06:36:18 GMT Thu, 12 Apr 2018 06:36:18 GMT <p> I wanted to file a bug to a problem I had a year ago that seems to be present in newer version of boost (<a class="ext-link" href="https://stackoverflow.com/questions/42308279/is-boosts-small-vector-compatible-with-nvcc-8"><span class="icon">​</span>https://stackoverflow.com/questions/42308279/is-boosts-small-vector-compatible-with-nvcc-8</a>) </p> <p> Basically nvcc chokes when you include small_vector </p> <p> Steps to reproduce </p> <ol><li>One line program in kernel.cu </li></ol><p> #include &lt;boost/container/small_vector.hpp&gt; <em>look ma, no main </em></p> <ol start="2"><li>Build with typical settings, on my machine: </li></ol><p> 1&gt;------ Build started: Project: boost_test, Configuration: Debug x64 ------ 1&gt; Compiling CUDA source file kernel.cu... 1&gt; 1&gt; C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test&gt;"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test\kernel.cu" 1&gt; kernel.cu 1&gt;C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C2332: 'struct': missing tag name 1&gt; C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(608): note: see reference to class template instantiation 'boost::container::small_vector&lt;T,N,Allocator&gt;' being compiled 1&gt;C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): warning C4346: 'boost::container::vector&lt;T,boost::container::small_vector_allocator&lt;Allocator&gt;&gt;::initial_capacity_t': dependent name is not a type 1&gt; C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): note: prefix with 'typename' to indicate a type 1&gt;C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C3646: 'initial_capacity_t': unknown override specifier 1&gt;C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C3254: 'boost::container::small_vector&lt;T,N,Allocator&gt;': class contains explicit override 'initial_capacity_t' but does not derive from an interface that contains the function declaration 1&gt;C:\Boost\include\boost-1_66\boost/container/small_vector.hpp(484): error C2838: 'initial_capacity_t': illegal qualified name in member declaration 1&gt;c:\users\misha\appdata\local\temp\tmpxft_0000af9c_00000000-6_kernel.cudafe1.stub.c(2): warning C4103: alignment changed after including header, may be due to missing #pragma pack(pop) 1&gt;tmpxft_0000af9c_00000000-6_kernel.cudafe1.stub.c(1): warning C4103: alignment changed after including header, may be due to missing #pragma pack(pop) 1&gt;C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\<a class="missing wiki">BuildCustomizations</a>\CUDA 9.1.targets(707,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DWIN32 -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "C:\Users\Misha\documents\visual studio 2015\Projects\boost_test\boost_test\kernel.cu"" exited with code 2. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </p> kandel3@… https://svn.boost.org/trac10/ticket/13517 https://svn.boost.org/trac10/ticket/13517 Report #13516: crash in boost regex Mon, 09 Apr 2018 13:53:50 GMT Mon, 09 Apr 2018 16:21:06 GMT <p> Using a specific search and replace expression containing named tags causes boost regex to crash. The pull request at <a class="ext-link" href="https://github.com/boostorg/regex/pull/60/commits/124dd8d0d9c636436115ec988058a551c5fa39eb"><span class="icon">​</span>https://github.com/boostorg/regex/pull/60/commits/124dd8d0d9c636436115ec988058a551c5fa39eb</a> turns the crash into a regex exception. Attaching the search/replace expression and the file they are used on. </p> Aron Pongo <aron@…> https://svn.boost.org/trac10/ticket/13516 https://svn.boost.org/trac10/ticket/13516 Report #13515: async_pipe::async_read_some returns zero read size if -O<something> is used Fri, 06 Apr 2018 14:20:16 GMT Wed, 01 Aug 2018 19:59:31 GMT <p> Hi there, </p> <p> We are developing coroutine based application which sits mostly on some sort of I/O. Decided to go with coroutine based approach with boost 1.66 and asio/beast/process libs. While doing some internal POC we ran into issue with retrieving size of data obtained through pipe. </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/asio.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/asio/spawn.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/process.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;chrono&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="kt">void</span> <span class="nf">test_process</span><span class="p">()</span> <span class="p">{</span> <span class="k">static</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">path</span> <span class="o">=</span> <span class="s">&quot;./dataspit.py&quot;</span><span class="p">;</span> <span class="k">static</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">interpreter</span> <span class="o">=</span> <span class="s">&quot;python3&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Hello from streamer2</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="k">namespace</span> <span class="n">asio</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="p">;</span> <span class="k">namespace</span> <span class="n">process</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">process</span><span class="p">;</span> <span class="k">namespace</span> <span class="n">chrono</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">chrono</span><span class="p">;</span> <span class="n">asio</span><span class="o">::</span><span class="n">io_context</span> <span class="n">ioc</span><span class="p">;</span> <span class="n">asio</span><span class="o">::</span><span class="n">spawn</span><span class="p">(</span><span class="n">ioc</span><span class="p">,</span> <span class="p">[</span><span class="o">&amp;</span><span class="n">ioc</span><span class="p">](</span><span class="n">asio</span><span class="o">::</span><span class="n">yield_context</span> <span class="n">yield</span><span class="p">)</span> <span class="p">{</span> <span class="n">process</span><span class="o">::</span><span class="n">async_pipe</span> <span class="n">pipe</span><span class="p">{</span><span class="n">ioc</span><span class="p">};</span> <span class="k">auto</span> <span class="n">child</span> <span class="o">=</span> <span class="n">process</span><span class="o">::</span><span class="n">child</span><span class="p">{</span><span class="n">process</span><span class="o">::</span><span class="n">search_path</span><span class="p">(</span><span class="n">interpreter</span><span class="p">),</span> <span class="n">path</span><span class="p">,</span> <span class="n">process</span><span class="o">::</span><span class="n">std_out</span> <span class="o">&gt;</span> <span class="n">pipe</span><span class="p">};</span> <span class="n">std</span><span class="o">::</span><span class="n">array</span><span class="o">&lt;</span><span class="kt">char</span><span class="p">,</span> <span class="mi">4096</span><span class="o">&gt;</span> <span class="n">buffer</span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Buffer state: &quot;</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">buffer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">buffer</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="n">read_ec</span><span class="p">;</span> <span class="k">do</span> <span class="p">{</span> <span class="k">auto</span> <span class="n">timePoint</span> <span class="o">=</span> <span class="n">chrono</span><span class="o">::</span><span class="n">system_clock</span><span class="o">::</span><span class="n">now</span><span class="p">();</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">timePoint</span><span class="p">.</span><span class="n">time_since_epoch</span><span class="p">().</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;: Sleeping</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">.</span><span class="n">async_read_some</span><span class="p">(</span><span class="n">asio</span><span class="o">::</span><span class="n">buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">),</span> <span class="n">yield</span><span class="p">[</span><span class="n">read_ec</span><span class="p">]);</span> <span class="k">if</span> <span class="p">(</span><span class="n">read_ec</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">read_ec</span><span class="p">.</span><span class="n">message</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span> <span class="p">}</span> <span class="n">timePoint</span> <span class="o">=</span> <span class="n">chrono</span><span class="o">::</span><span class="n">system_clock</span><span class="o">::</span><span class="n">now</span><span class="p">();</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">timePoint</span><span class="p">.</span><span class="n">time_since_epoch</span><span class="p">().</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;: Read &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">size</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Buffer state: &quot;</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">buffer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">buffer</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_ec</span> <span class="o">!=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">eof</span><span class="p">);</span> <span class="n">child</span><span class="p">.</span><span class="n">wait</span><span class="p">();</span> <span class="p">}</span> <span class="p">);</span> <span class="n">ioc</span><span class="p">.</span><span class="n">run</span><span class="p">();</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Farewell from streamer2</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span> <span class="p">{</span> <span class="n">test_process</span><span class="p">();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><p> This code works fine when no compiler optimizations are used. As soon as its compiled with -Os or any numbered -O type. </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="n">pipe</span><span class="p">.</span><span class="n">async_read_some</span><span class="p">(</span><span class="n">asio</span><span class="o">::</span><span class="n">buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">),</span> <span class="n">yield</span><span class="p">[</span><span class="n">read_ec</span><span class="p">]);</span> </pre></div></div></div><p> starts returning 0. Buffer contents are modified though. Callback based approach yields same result. </p> <div class="wikipage" style="font-size: 80%"><pre class="wiki">... readv(6, [{"57757488835088650590974423544437"..., 4096}], 1) = 1030 write(1, "1523018074402113597: Read 0 byte"..., 341523018074402113597: Read 0 bytes) = 34 write(1, "Buffer state: 5355\n", 19Buffer state: 5355) = 19 write(1, "1523018074402457408: Sleeping\n", 301523018074402457408: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) epoll_wait(4, [{EPOLLIN, {u32=138163408, u64=138163408}}], 128, -1) = 1 readv(6, [{"15827357453760420053575823774839"..., 4096}], 1) = 546 write(1, "1523018076807802498: Read 0 byte"..., 341523018076807802498: Read 0 bytes) = 34 write(1, "Buffer state: 4953\n", 19Buffer state: 4953) = 19 write(1, "1523018076808233410: Sleeping\n", 301523018076808233410: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) epoll_wait(4, [{EPOLLIN, {u32=138163408, u64=138163408}}], 128, -1) = 1 readv(6, [{"66365484273136085944223051047033"..., 4096}], 1) = 814 write(1, "1523018079517434883: Read 0 byte"..., 341523018079517434883: Read 0 bytes) = 34 write(1, "Buffer state: 5454\n", 19Buffer state: 5454) = 19 write(1, "1523018079517782099: Sleeping\n", 301523018079517782099: Sleeping) = 30 readv(6, 0x83c2168, 1) = -1 EAGAIN (Resource temporarily unavailable) ... </pre></div><p> Epoll waits as expected, readv seems to return length as well. Looks like some kind of reordering issue. </p> <p> Tested this behavior on ubuntu 14.04/16.04 in 32/64bit modes on using stock gcc, all ran in docker containers within ubuntu 16.04 host. </p> <p> Issue applies to boost 1.66 for sure, tested also 1.65 and 1.67 beta on ubuntu 14.04 32 bit. Issue is there as well. </p> <p> Complete sample code in attachments. </p> <p> I'd be grateful for some notification if you find root cause and possible patch. I'd like to apply such to our boost sources. </p> <p> Best Regards, Tomasz Jonak </p> Tomasz Jonak <tjonak@…> https://svn.boost.org/trac10/ticket/13515 https://svn.boost.org/trac10/ticket/13515 Report #13514: can not build against boost 1.66.0 with MSVC 2015 due to range/concepts.hpp Fri, 06 Apr 2018 13:32:57 GMT Wed, 18 Apr 2018 20:00:10 GMT <p> I could build against boost 1.65.1 and earlier versions successfully with MSVC 2015, but not against boost 1.66.0 anymore with MSVC 2015 due to an error in range/concepts.hpp. Everything builds fine with MSVC 2017. The error was previously discussed here: <a class="ext-link" href="https://groups.google.com/forum/#!topic/boost-developers-archive/g9VWZU47Khw"><span class="icon">​</span>https://groups.google.com/forum/#!topic/boost-developers-archive/g9VWZU47Khw</a> </p> <p> The detailed error is: </p> <pre class="wiki">[4/196] Building CXX object lib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\OpenSSLManualInitTest.cpp.obj FAILED: lib/cpp/test/CMakeFiles/OpenSSLManualInitTest.dir/OpenSSLManualInitTest.cpp.obj C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe /TP -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB -DBOOST_TEST_DYN_LINK -DFORCE_BOOST_SMART_PTR -DNOMINMAX -DUSE_STD_THREAD=1 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\cpp\test -ID:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\test -I. -ID:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\src -I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" -ID:\Debug\Shared\include /MDd /Zi -I/d/Debug/Shared/include /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /MP /W3 /FIinttypes.h -DUNICODE -D_UNICODE /showIncludes /Folib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\OpenSSLManualInitTest.cpp.obj /Fdlib\cpp\test\CMakeFiles\OpenSSLManualInitTest.dir\ /FS -c D:\tmp\Debug\Shared\thrift-0.11.0\lib\cpp\test\OpenSSLManualInitTest.cpp Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24210 for x64 Copyright (C) Microsoft Corporation. All rights reserved. D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C2143: syntax error: missing ';' before '&lt;' D:\Debug\Shared\include\boost/range/concepts.hpp(209): note: see reference to class template instantiation 'boost::range_detail::ForwardIteratorConcept&lt;Iterator&gt;' being compiled D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int D:\Debug\Shared\include\boost/range/concepts.hpp(184): error C2238: unexpected token(s) preceding ';' </pre> Mario Emmenlauer <mario@…> https://svn.boost.org/trac10/ticket/13514 https://svn.boost.org/trac10/ticket/13514 Report #13512: Starting from boost 1.67 boost build system for Intel compiler on Windows is broken. Thu, 05 Apr 2018 07:42:07 GMT Thu, 05 Apr 2018 09:15:11 GMT <p> Starting from boost 1.67 boost build system for Intel compiler on Windows is broken. </p> <pre class="wiki">$ cd boost_1_67_0/libs/array/test $ ../../../b2 toolset=intel-18.0 C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:237: in configure-really ERROR: rule "msvc.maybe-rewrite-setup" unknown in module "intel-win". C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:132: in configure C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel-win.jam:46: in intel-win.init C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/build\toolset.jam:44: in toolset.using C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/tools\intel.jam:32: in intel.init C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src/build\toolset.jam:44: in toolset.using C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src\build-system.jam:543: in process-explicit-toolset-requests C:/Users/ikelarev/test3/boost_1_67_0/tools/build/src\build-system.jam:610: in load C:\Users\ikelarev\test3\boost_1_67_0\tools\build\src/kernel\modules.jam:295: in import C:\Users\ikelarev\test3\boost_1_67_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build C:\Users\ikelarev\test3\boost_1_67_0\boost-build.jam:17: in module scope </pre><p> With boost 1.66 this error does not appear. </p> Ivan Kelarev <ivan.kelarev@…> https://svn.boost.org/trac10/ticket/13512 https://svn.boost.org/trac10/ticket/13512 Report #13511: Boost transformation has possible bug Wed, 04 Apr 2018 18:25:58 GMT Wed, 04 Apr 2018 18:25:58 GMT <p> Applying multiple transformation &amp; translation simultaneously do not produce desired result. </p> <p> <strong>For example :</strong> </p> <p> <strong>Case 1 : Produces wrong result.</strong> </p> <blockquote> <p> btr = boost::polygon::transformation&lt;int&gt;(boost::polygon::axis_transformation::FLIP_X);<br /> btr += boost::polygon::transformation&lt;int&gt;(boost::polygon::axis_transformation::FLIP_XY);<br /> res = boost::polygon::transform(object, btr); </p> </blockquote> <p> <strong>Case 1 : Produces right result.</strong> </p> <blockquote> <p> btr = boost::polygon::transformation&lt;int&gt;(boost::polygon::axis_transformation::FLIP_X);<br /> res = boost::polygon::transform(object, btr);<br /> btr = boost::polygon::transformation&lt;int&gt;(boost::polygon::axis_transformation::FLIP_XY);<br /> res = boost::polygon::transform(res, btr); </p> </blockquote> asksoni@… https://svn.boost.org/trac10/ticket/13511 https://svn.boost.org/trac10/ticket/13511 Report #13510: Boost::intersection giving wrong results when intersection is calculated between 2 polygons in Boost-1.61, where as Boost-1.55 is giving correct results. Wed, 04 Apr 2018 09:11:40 GMT Wed, 04 Apr 2018 09:11:40 GMT <p> Hi, </p> <p> When calculating intersections between 2 polygons, the boost::geometry::intersection is giving wrong results in Boost-1.61 version, where as it is giving correct results in Boost-1.55 version. Here i am attaching the code snippet </p> <pre class="wiki">#include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry.hpp&gt; typedef boost::geometry::model::d2::point_xy&lt;double&gt; point; typedef boost::geometry::model::ring&lt;point&gt; ring; typedef boost::geometry::model::polygon&lt;point&gt; Polygon; int main() { Polygon p1; Polygon p2; ring r1; ring r2; r1.push_back(point(0.112, -105.2361)); r1.push_back(point(-0.6946, -53.2131)); r1.push_back(point(-0.2526, 0.9022)); r1.push_back(point(86.4137, 0.8264)); r1.push_back(point(179.5712, 0.0198)); r1.push_back(point(180.78110000, -51.1967)); r1.push_back(point(182.3942, -104.4295)); r1.push_back(point(90.0432, -104.8328)); r1.push_back(point(0.112, -105.2361)); p1.outer() = r1; boost::geometry::correct(p1); r1.clear(); r1.push_back(point(-10.7918213256483, 54.2140961455332)); r1.push_back(point(113.309785590778, -17.5321453530258)); r1.push_back(point(17.8097208933718, -86.8545273414985)); r1.push_back(point(-72.8426247838616, -20.4407767651296)); r1.push_back(point(-10.7918213256483, 54.2140961455332)); r2.push_back(point(33.8071936599424, 20.2800630043229)); r2.push_back(point(-28.7283817002881, -38.3773371397694)); r2.push_back(point(12.4772299711817, -63.1007041426512)); r2.push_back(point(64.8325953890491, 4.28259023775226)); r2.push_back(point(33.8071936599424, 20.2800630043229)); p2.inners().push_back(r2); p2.outer() = r1; boost::geometry::correct(p2); std::vector&lt;Polygon&gt; intersections; boost::geometry::intersection(p1, p2, intersections); return 0; } </pre><p> The 2nd point in the intersection result i.e 1st index in "interesections" is wrong. </p> <p> there is a difference of (0.00002) which will reduce the accuracy in computations. </p> <p> Boost-1.55 version: intersections<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = (-0.66354193, -55.21624099) </p> <p> Boost-1.61 version: intersections<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = (-0.66356150523, -55.216229256) </p> sumanth.kaliki@… https://svn.boost.org/trac10/ticket/13510 https://svn.boost.org/trac10/ticket/13510 Report #13509: Boost.Asio broken link in documentation Tue, 03 Apr 2018 15:32:27 GMT Fri, 13 Apr 2018 15:33:00 GMT <p> Hi, </p> <p> There is a broken link about 3rd party integration: </p> <p> <a class="ext-link" href="https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/nonblocking/third_party_lib.cpp"><span class="icon">​</span>https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/nonblocking/third_party_lib.cpp</a> </p> anonymous https://svn.boost.org/trac10/ticket/13509 https://svn.boost.org/trac10/ticket/13509 Report #13507: Build issue for Boost 1.67.0 Beta 1 with Visual Studio 2017 15.6.4 and Intel Compiler 18.0.2 Sat, 31 Mar 2018 10:12:44 GMT Sat, 31 Mar 2018 10:12:44 GMT <p> It seems that <em>intel-win.jam</em> file is outdated in Boost 1.67.0 Beta 1 since the <em>maybe-rewrite-setup</em> rule has been removed from the <em>msvc.jam</em> file. </p> Jacek Blaszczyk <jacekb@…> https://svn.boost.org/trac10/ticket/13507 https://svn.boost.org/trac10/ticket/13507 Report #13506: Bootstrap.bat fails for Microsoft Visual Studio Community 15.6.4 Sat, 31 Mar 2018 03:57:22 GMT Sat, 31 Mar 2018 05:03:18 GMT <p> .\bootstrap.bat fails with the following message: </p> <p> cl : Command line error D8016 : '/O2' and '/RTC1' command-line options are incompatible </p> donald.h.ellison@… https://svn.boost.org/trac10/ticket/13506 https://svn.boost.org/trac10/ticket/13506 Report #13505: graph/detail/array_binary_tree.hpp:45:18: error: unknown template name 'iterator' Fri, 30 Mar 2018 15:42:39 GMT Sat, 31 Mar 2018 10:24:28 GMT <p> Discovered this when building <a class="ext-link" href="https://github.com/dealii/dealii"><span class="icon">​</span>deal.II</a> against boost 1.67.0.b1 with Apple's Clang 9.1.0: </p> <pre class="wiki"> 2449 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/cuthill_mckee_ordering.hpp:15: 2450 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/detail/sparse_ordering.hpp:18: 2451 In file included from /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/pending/mutable_queue.hpp:20: &gt;&gt; 2452 /Users/davydden/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/boost-1.67.0.b1-hfpvj4kx4lur5l6i2uhlp6kwlai5rbln/include/boost/graph/detail/array_binary_tree.hpp:45:18: error: unknown template name 'iterator' 2453 : boost::iterator&lt;std::bidirectional_iterator_tag, ArrayBinaryTreeNode, 2454 ^ </pre><p> I can not use any lower version due to other issues. </p> Denis Davydov <davydden@…> https://svn.boost.org/trac10/ticket/13505 https://svn.boost.org/trac10/ticket/13505 Report #13502: Intel compiler detection under Windows failed Thu, 29 Mar 2018 11:31:20 GMT Wed, 04 Apr 2018 13:47:08 GMT <table class="wiki"> <tr>BOOST_COMP_MSVC <td> (BOOST_COMP_INTEL &amp;&amp; BOOST_OS_WINDOWS) </td></tr></table> <p> is false under Windows with Intel C++ 18 on Visual Studio 2017. </p> <p> This causes problem with compilation of DLL library on alias.hpp:39 </p> oley@… https://svn.boost.org/trac10/ticket/13502 https://svn.boost.org/trac10/ticket/13502 Report #13501: no matching function for call to 'hash_value' while compiling program with clang on osx Thu, 29 Mar 2018 11:26:49 GMT Thu, 29 Mar 2018 15:25:56 GMT <p> I am getting the following error while building an external program (augustus 3.3 with CGP and sqlite support, <a class="ext-link" href="https://circleci.com/gh/bioconda/bioconda-recipes/6507"><span class="icon">​</span>https://circleci.com/gh/bioconda/bioconda-recipes/6507</a>) with clang on osx: </p> <pre class="wiki">include/boost/functional/hash/extensions.hpp:262:20: error: no matching function for call to 'hash_value' return hash_value(val); ^~~~~~~~~~ </pre> travis.wrightsman@… https://svn.boost.org/trac10/ticket/13501 https://svn.boost.org/trac10/ticket/13501 Report #13499: Intel Compiler 2018 Windows error: overloaded function "boost::scope_exit::detail::deref" is not a type name Wed, 28 Mar 2018 19:51:14 GMT Thu, 10 May 2018 16:37:00 GMT <p> Im using the Intel Compiler 2018 from Parallel Studio XE 2018 Update 2 Composer Edition together with Visual Studio Community Edition 2015 Update 3 to build <em>thrift</em>, a library that uses boost 1.65.1. I start the build from the Intel Compiler console. The build fails with errors: </p> <pre class="wiki">FAILED: lib/cpp/CMakeFiles/thrift_static.dir/src/thrift/windows/OverlappedSubmissionThread.cpp.obj D:\bda-ci\IntelSWTools\compilers_and_libraries\windows\bin\intel64\icl.exe /TP -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB -DBOOST_TEST_DYN_LINK -DFORCE_BOOST_SMART_PTR -DNOMINMAX -DUSE_STD_THREAD=1 -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\cpp -ID:\Debug\Shared\thrift-0.11.0\lib\cpp -I. -ID:\Debug\Shared\thrift-0.11.0\lib\cpp\src -I"C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt" -ID:\Debug\Shared\include /MDd /Zi /arch:SSE4.2 -I/d/Debug/Shared/include /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /MP /W3 /FIinttypes.h -DUNICODE -D_UNICODE -Qstd=c++11 /showIncludes /Folib\cpp\CMakeFiles\thrift_static.dir\src\thrift\windows\OverlappedSubmissionThread.cpp.obj /Fdlib\cpp\CMakeFiles\thrift_static.dir\thrift_static.pdb -c D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.2.185 Build 20180210 Copyright (C) 1985-2018 Intel Corporation. All rights reserved. D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: overloaded function "boost::scope_exit::detail::deref" is not a type name BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a ")" BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a type specifier BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error #303: explicit type is missing ("int" assumed) BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: expected a ";" BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp(62): error: identifier "boost_se_capture_t_0_62" is undefined BOOST_SCOPE_EXIT((&amp;doneSubmittingEvent)) { SetEvent(doneSubmittingEvent.h); } ^ compilation aborted for D:\Debug\Shared\thrift-0.11.0\lib\cpp\src\thrift\windows\OverlappedSubmissionThread.cpp (code 2) </pre><p> I am under the impression that this error is related to boost, is that correct? Is there a workaround or solution? </p> Mario Emmenlauer <mario@…> https://svn.boost.org/trac10/ticket/13499 https://svn.boost.org/trac10/ticket/13499 Report #13498: Error compiling boost with Intel Compiler 2018 / Visual Studio 2015 on Windows Wed, 28 Mar 2018 19:13:53 GMT Wed, 18 Apr 2018 19:54:59 GMT <p> Im using the Intel Compiler 2018 from Parallel Studio XE 2018 Update 2 Composer Edition together with Visual Studio Community Edition 2015 Update 3 to build boost 1.65.1. I start the boost build from the Intel Compiler console. My build settings are: </p> <pre class="wiki">bootstrap.bat \ --with-icu="D:/Debug/Shared" \ --with-libraries=atomic,date_time,exception,filesystem,graph,program_options,regex,test,thread --with-toolset="intel" &amp;&amp; \ b2 \ --prefix="D:/Debug/Shared" \ --layout="system" \ --debug-configuration \ -q \ --with-atomic --with-date_time --with-exception --with-filesystem --with-graph --with-program_options --with-regex --with-test --with-thread address-model=64 toolset="intel-18.0-vc14" \ link=shared \ runtime-link=shared \ pch=off \ architecture="x86" \ host-os="windows" \ target-os="windows" \ variant=debug \ threading=multi \ threadapi=win32 \ include="D:/Debug/Shared/include" \ cflags="/FS /DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /MDd /Zi /arch:SSE4.2" \ cxxflags="/DDEBUG /DWINVER=_WIN32_WINNT_WIN7 /D_WIN32_WINNT=_WIN32_WINNT_WIN7 /Qwd1744 /std:c++11 /MDd /Zi /arch:SSE4.2" \ linkflags="/MACHINE:X64 /DEBUG /LIBPATH:D:/Debug/Shared/lib" \ -sHAVE_ICU=1 \ -sICU_PATH="D:/Debug/Shared" \ -sICU_LINK="-LD:/Debug/Shared\\lib -licuuc -licuin -licudt" \ -sNO_BZIP2 \ -sNO_ZLIB \ -sNO_LZMA \ -j4 install </pre><p> The build fails early on with errors that the compiler 'icl' is not found: </p> <pre class="wiki">[...] common.mkdir bin.v2\libs\system\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi compile-c-c++ bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj 'icl' is not recognized as an internal or external command, operable program or batch file. call "C:\Users\bdaci01\AppData\Local\Temp\b2_intel-win_18.0_iclvars_intel64 vs2015.cmd" &gt; nul icl @"bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj.rsp" ...failed compile-c-c++ bin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\lockpool.obj... ...skipped &lt;pbin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi&gt;boost_atomic.dll for lack of &lt;pbin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi&gt;lockpool.obj... ...skipped &lt;pD:\Debug\Shared\lib&gt;boost_atomic.dll for lack of &lt;pbin.v2\libs\atomic\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi&gt;boost_atomic.dll... compile-c-c++ bin.v2\libs\date_time\build\intel-vc14-win-18.0\debug\address-model-64\architecture-x86\pch-off\threading-multi\gregorian\greg_month.obj 'icl' is not recognized as an internal or external command, operable program or batch file. </pre><p> I can build other packages fine, and I can call 'icl' from the same shell where boost complains that 'icl' is not recognized as an internal or external command, operable program or batch file. </p> Mario Emmenlauer <mario@…> https://svn.boost.org/trac10/ticket/13498 https://svn.boost.org/trac10/ticket/13498 Report #13497: ‘next’ is not a member of ‘boost’ in spsc_queue.hpp in 1.67 Wed, 28 Mar 2018 14:36:55 GMT Sun, 01 Apr 2018 10:57:25 GMT <p> /usr/src/boost_1_67_0/boost/lockfree/spsc_queue.hpp: In member function ‘<a class="missing wiki">ConstIterator</a> boost::lockfree::detail::ringbuffer_base&lt;T&gt;::push(<a class="missing wiki">ConstIterator</a>, <a class="missing wiki">ConstIterator</a>, T*, boost::lockfree::detail::ringbuffer_base&lt;T&gt;::size_t)’: /usr/src/boost_1_67_0/boost/lockfree/spsc_queue.hpp:140:43: error: ‘next’ is not a member of ‘boost’ </p> <blockquote> <p> const <a class="missing wiki">ConstIterator</a> last = boost::next(begin, input_count); </p> <blockquote> <p> <sup><del>~ </del></sup></p> </blockquote> </blockquote> <p> This didn't occur in boost 1.66. </p> Riot <rain.backnet@…> https://svn.boost.org/trac10/ticket/13497 https://svn.boost.org/trac10/ticket/13497 Report #13496: ASIO: Ability to do a synchronous read with timeout on a socket Wed, 28 Mar 2018 07:11:19 GMT Wed, 28 Mar 2018 07:11:19 GMT <p> This is a restatement of the issue <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2832" title="#2832: Bugs: Asio sync IO functions need timeout parameters (closed: wontfix)">#2832</a>, in a different form. </p> <p> It's clear there is an appetite to be able to perform a synchronous read with a timeout using asio. Issue <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2832" title="#2832: Bugs: Asio sync IO functions need timeout parameters (closed: wontfix)">#2832</a> raised this issue. The main objection there seemed to be the form in which the functionality was proposed. I don't think there was a fundamental objection to the requirement. </p> <p> Similar functionality DOES exist on the basic_socket_streambuf. You can set an "expiry". The read functionality in that class mirrors the code in the socket_opts::sync_recv, it just adds a timeout to the poll call (though it does also remove the initial blocking wait, but that would be easy to conditionalise). To me, this gives an obvious route for implementation within the socket class. </p> <p> Note that although I talk about sockets here, I suspect the same would/should apply to other forms. I have only been looking at this from a socket perspective as it's what I'm trying to do, and I have specifically been trying to solve the situation for sockets. I don't know whether this applies equally or not to other I/O types. </p> <p> Note that although the boost library is called "asio", the N4656 specification is more open, and is a more general networking library description, and doesn't use "asynchronous" in its name. </p> <p> Could consideration be given to this? At the moment for example, I don't believe that it's possible to use boost::asio to write something like a fully synchronous, thread-per-connection HTTP server that implemented a keepalive, since that would have to perform a blocking read for another request for the keepalive interval before terminating the connection. Now you may say, well you should be writing is asynchronously, but for some applications this much simpler model is more appropriate (low volumes of requests where each request is a POST that takes considerable time to process for example). And any general networking library ought to support being able to write such an application. </p> tom@… https://svn.boost.org/trac10/ticket/13496 https://svn.boost.org/trac10/ticket/13496 Report #13495: wrong comments in newline.hpp Wed, 28 Mar 2018 01:00:11 GMT Wed, 28 Mar 2018 01:00:11 GMT <p> From newline.hpp: </p> <pre class="wiki">const int posix = 1; // Use CR as line separator. const int mac = 2; // Use LF as line separator. </pre><p> Expected: vice versa (LF / CR). </p> <p> The code seems to be correct but these comments (cited in online docs as well) are misleading. </p> axch@… https://svn.boost.org/trac10/ticket/13495 https://svn.boost.org/trac10/ticket/13495 Report #13494: polygon intersection fails Tue, 27 Mar 2018 13:21:11 GMT Tue, 27 Mar 2018 13:21:11 GMT <p> Hello, </p> <p> executing the following polygon intersection produces an empty result although the second operand is completely inside the first. </p> <p> Code snippet: </p> <blockquote> <p> using point_type = boost::geometry::model::d2::point_xy&lt;double&gt;; using polygon = boost::geometry::model::polygon&lt;point_type&gt;; using multi_polygon = boost::geometry::model::multi_polygon&lt;polygon&gt;; </p> </blockquote> <blockquote> <p> polygon op1, op2; multi_polygon result; </p> </blockquote> <p> </p> <blockquote> <p> boost::geometry::read_wkt("POLYGON((-1.99900000000000011 -0.889961757413527343,-1.99900000000000011 -1.12178395051169733,-1.89792526415373097 -1.49900000000000011,-1.8358086947169705 -1.49900000000000011,-1.99900000000000011 -0.889961757413527343))", op1); boost::geometry::read_wkt("POLYGON((-1.97591538973459313 -1.20793688888334905,-1.92415157993614439 -1.40112205701807624,-1.8661960316547388 -1.38559291465704759,-1.91795984145318754 -1.19240774652231996,-1.97591538973459313 -1.20793688888334905))", op2); boost::geometry::intersection(op1, op2, result); </p> </blockquote> <p> I could track down the problem to the intersection/touch part. We use the intersection code quite heavily and such a constellation can occur frequently in our application. (I could present several more sample data for this bug). Therefore I set this to showstopper. Also I found other entries which look quite similar. </p> lehnert@… https://svn.boost.org/trac10/ticket/13494 https://svn.boost.org/trac10/ticket/13494 Report #13493: boost::regex doesn't accept a regular expression anymore Mon, 26 Mar 2018 12:35:15 GMT Mon, 26 Mar 2018 12:35:15 GMT <p> I recently switched from Boost 1.61 to Boost 1.66 and discovered the following problem with boost::regex in 1.66: A regular expression is recognized as erroneous, i. e. after construction boost::regex::status() returns a value != 0, but the same expression was accepted in previous boost versions. Calling boost::regex_search() with such a erroneous boost::regex object leads to a crash. </p> <p> The expression is: </p> <pre class="wiki">([0-9]*)\.([0-9]*)(\.([0-9]*)(\.([0-9]*))?)? </pre><p> My C++ code looks as follows: </p> <pre class="wiki">static const boost::regex versionRegex( "([0-9]*)\\.([0-9]*)(\\.([0-9]*)(\\.([0-9]*))?)?" ); assert( versionRegex.status() == 0 &amp;&amp; "the regular expression must be valid" ); </pre><p> After switching the boost version to 1.66 the assertion above fails. </p> sebastian.panek@… https://svn.boost.org/trac10/ticket/13493 https://svn.boost.org/trac10/ticket/13493 Report #13490: Compile error when BOOST_FIBERS_NO_ATOMICS is open Fri, 23 Mar 2018 12:30:45 GMT Fri, 23 Mar 2018 12:30:45 GMT <p> It's actually a bug about Boost::fiber but I can't find that component on bug page. </p> <p> include/boost/fiber/context.hpp: ln 392: </p> <p> ctx-&gt;use_count_.fetch_add( 1, std::memory_order_relaxed); </p> <p> While BOOST_FIBERS_NO_ATOMICS was defined, type of ctx-&gt;use_count_ is std::size_t, which is not a object and doesn't have fetch_add method, so this line failed to compile. There are also other compile errors, like remote_ready_hook_ is not defined but used at scheduler.hpp. </p> <p> full compile error is: </p> <pre class="wiki">1&gt;C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(392): error C2228: left of '.fetch_add' must have class/struct/union 1&gt; C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(392): note: type is 'std::size_t' 1&gt;C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(397): error C2228: left of '.fetch_sub' must have class/struct/union 1&gt; C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(397): note: type is 'std::size_t' 1&gt;C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2039: 'remote_ready_hook_': is not a member of 'boost::fibers::context' 1&gt; C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/context.hpp(131): note: see declaration of 'boost::fibers::context' 1&gt;C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2065: 'remote_ready_hook_': undeclared identifier 1&gt;C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/fiber/scheduler.hpp(78): error C2975: 'PtrToMember': invalid template argument for 'boost::intrusive::member_hook', expected compile-time constant expression 1&gt; C:\HunterPackages\_Base\3e2037a\384d6ff\cd778ec\Install\include\boost/intrusive/options.hpp(123): note: see declaration of 'PtrToMember' </pre> tdzl2003 <tdzl2003@…> https://svn.boost.org/trac10/ticket/13490 https://svn.boost.org/trac10/ticket/13490 Report #13489: boykov_kolmogorov_max_flow produces incorrect residual edge capacity Thu, 22 Mar 2018 16:26:50 GMT Thu, 22 Mar 2018 16:26:50 GMT <p> Greetings, </p> <p> With some graphs, the boykov_kolmogorov_max_flow algorithm creates residual edge capacity maps with larger values than the graph edge capacities should allow. </p> <p> I have attached code that creates a small graph to demonstrate this issue and the <a class="missing wiki">GraphViz</a> plot of the automatically-generated .dot graph file for easy visual inspection of the results. </p> <p> In the attached <a class="missing wiki">GraphViz</a> plot, each edge is labeled with (residual capacity)/(capacity). The residual capacity should never be greater than the capacity. Thus, the labels "1/0" and "101/100" are in error. </p> <p> I have run this test in Boost 1.54, 1.66, and 1.67. </p> Nate Bird <nate@…> https://svn.boost.org/trac10/ticket/13489 https://svn.boost.org/trac10/ticket/13489 Report #13488: Detect ICU with pkg-config when possible in bootstrap.sh Thu, 22 Mar 2018 12:24:20 GMT Thu, 22 Mar 2018 12:25:13 GMT <p> bootstrap.sh has some auto-detection code for ICU for the needs of Boost.Regex. It fails to detect ICU installed with the standard package manager on certain Linux distributions, e.g. Ubuntu 14.04. The issue does not exist on newer versions of Ubuntu. </p> <p> The solution is to use more robust detection of ICU with the help of pkg-config. </p> <p> The patch is provided on Github on the metaproject. </p> anonymous https://svn.boost.org/trac10/ticket/13488 https://svn.boost.org/trac10/ticket/13488 Report #13487: Error detecting is_nothrow_move_constructible & is_nothrow_move_assignable Mon, 19 Mar 2018 10:10:30 GMT Mon, 19 Mar 2018 11:40:38 GMT <p> The current type trait implementation of Boost.Move doesn't detect nothrow move construction or assignment. </p> <p> While <code>boost/move/detail/type_traits.hpp</code> defines many macros such as <code>BOOST_MOVE_HAS_NOTHROW_COPY</code>, it never defines <code>BOOST_MOVE_HAS_NOTHROW_MOVE</code> or <code>BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN</code> for any compiler. As a result, <code>boost::move:detail::is_nothrow_move_constructible</code> and <code>is_nothrow_move_assignable</code> fallback to <code>boost::move_detail::is_pod&lt;T&gt;::value</code> which is incorrect for any non-POD type. </p> <p> In my particular instance the result is that <code>boost::circular_buffer</code> chooses copy instead of move in <code>boost::move_if_noexcept()</code> for <code>std::weak_ptr</code> (which is nothrow move constructible and assignable), which in turn results in &gt;10x worse performance of functions such as <code>boost::circular_buffer::erase()</code> in some conditions. It is possible to work around this by manually specializing <code>boost::has_nothrow_move&lt;std::weak_ptr&gt;</code>, but this is not a practical workaround. Another workaround would be to define the trait macros via compiler switches but this is clearly not the intended behavior as all other macros are defined in the header, and it might not be practical as some helper traits may need to be defined too (see <code>libstdc++</code> implementation below). </p> <p> I propose fixing this issue by defining <code>BOOST_MOVE_HAS_NOTHROW_MOVE</code> and <code>BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN</code> for all compilers that support move semantics. <code>libstdc++</code> seems to have the most correct and portable way of doing this - without using compiler intrinsics: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="p">,</span> <span class="k">typename</span><span class="p">...</span> <span class="n">_Args</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="nl">__is_nt_constructible_impl</span> <span class="p">:</span> <span class="k">public</span> <span class="n">integral_constant</span><span class="o">&lt;</span><span class="kt">bool</span><span class="p">,</span> <span class="k">noexcept</span><span class="p">(</span><span class="n">_Tp</span><span class="p">(</span><span class="n">declval</span><span class="o">&lt;</span><span class="n">_Args</span><span class="o">&gt;</span><span class="p">()...))</span><span class="o">&gt;</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="p">,</span> <span class="k">typename</span> <span class="n">_Arg</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nt_constructible_impl</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="n">_Arg</span><span class="o">&gt;</span> <span class="o">:</span> <span class="k">public</span> <span class="n">integral_constant</span><span class="o">&lt;</span><span class="kt">bool</span><span class="p">,</span> <span class="k">noexcept</span><span class="p">(</span><span class="k">static_cast</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="o">&gt;</span><span class="p">(</span><span class="n">declval</span><span class="o">&lt;</span><span class="n">_Arg</span><span class="o">&gt;</span><span class="p">()))</span><span class="o">&gt;</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="p">,</span> <span class="kt">bool</span> <span class="o">=</span> <span class="n">__is_referenceable</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="o">&gt;::</span><span class="n">value</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nothrow_move_constructible_impl</span><span class="p">;</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nothrow_move_constructible_impl</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="nb">false</span><span class="o">&gt;</span> <span class="o">:</span> <span class="k">public</span> <span class="n">false_type</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nothrow_move_constructible_impl</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="nb">true</span><span class="o">&gt;</span> <span class="o">:</span> <span class="k">public</span> <span class="n">is_nothrow_constructible</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="n">_Tp</span><span class="o">&amp;&amp;&gt;</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="p">,</span> <span class="k">typename</span> <span class="n">_Up</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="nl">__is_nt_assignable_impl</span> <span class="p">:</span> <span class="k">public</span> <span class="n">integral_constant</span><span class="o">&lt;</span><span class="kt">bool</span><span class="p">,</span> <span class="k">noexcept</span><span class="p">(</span><span class="n">declval</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">=</span> <span class="n">declval</span><span class="o">&lt;</span><span class="n">_Up</span><span class="o">&gt;</span><span class="p">())</span><span class="o">&gt;</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="p">,</span> <span class="kt">bool</span> <span class="o">=</span> <span class="n">__is_referenceable</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="o">&gt;::</span><span class="n">value</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nt_move_assignable_impl</span><span class="p">;</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nt_move_assignable_impl</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="nb">false</span><span class="o">&gt;</span> <span class="o">:</span> <span class="k">public</span> <span class="n">false_type</span> <span class="p">{</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">_Tp</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">__is_nt_move_assignable_impl</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="p">,</span> <span class="nb">true</span><span class="o">&gt;</span> <span class="o">:</span> <span class="k">public</span> <span class="n">is_nothrow_assignable</span><span class="o">&lt;</span><span class="n">_Tp</span><span class="o">&amp;</span><span class="p">,</span> <span class="n">_Tp</span><span class="o">&amp;&amp;&gt;</span> <span class="p">{</span> <span class="p">};</span> </pre></div></div><p> Visual Studio 14.0's implementation uses the intrinsics <code>__is_nothrow_constructible(T, Args...)</code> and <code>__is_nothrow_assignable(To, From)</code> that are passed an rvalue-reference as the second argument to detect move operations. Sadly, I can't seem to find any documentation on these intrinsics so it might be better to stick to pure C++ for all compilers (or maybe i'm just not looking in the right places). </p> <p> It might also be a good idea to replace the fallback to <code>boost::move_detail::is_pod&lt;T&gt;</code> with more specific and inclusive <code>is_trivially_copy_constructible&lt;T&gt;</code>, <code>is_trivially_copy_assignable&lt;T&gt;</code> type traits. </p> Andrey Glebov <andrey458641387@…> https://svn.boost.org/trac10/ticket/13487 https://svn.boost.org/trac10/ticket/13487 Report #13485: parent_path() edge case returns wrong result on Windows Sat, 17 Mar 2018 04:56:11 GMT Thu, 10 May 2018 16:36:17 GMT <p> The path "C:<br />", while unusual, is legal in Windows and equivalent to "C:\". According to the path decomposition table, that means that </p> <pre class="wiki">parent_path(L"C:\\\\") </pre><p> should return "C:&#34;. However, it returns &#34;C:\". </p> <p> The same is true for every variation with more than one trailing separator (preferred or generic). </p> Alex Weiss <alexweiss86@…> https://svn.boost.org/trac10/ticket/13485 https://svn.boost.org/trac10/ticket/13485 Report #13484: exists doesn't clear no_such_file_or_directory type of error codes Sat, 17 Mar 2018 01:47:44 GMT Sat, 17 Mar 2018 01:47:44 GMT <p> Windows 10, MSVC 19.13.26128. </p> <p> exists() fails when it successfully determines that a file doesn't exist (i.e. it sets the error code to ERROR_FILE_NOT_FOUND or throws in the throwing version). According to the reference and the tutorial example, that should not happen. </p> <p> Code example: </p> <pre class="wiki"> boost::filesystem::path p("c:\\filethatdoesntexist"); boost::system::error_code ec; bool doesExist = boost::filesystem::exists(p, ec); if (ec == boost::system::errc::no_such_file_or_directory) { std::cout &lt;&lt; "shouldn't happen!\n"; } </pre><p> Note that for existing files, exists() works as expected. </p> Alex Weiss <alexweiss86@…> https://svn.boost.org/trac10/ticket/13484 https://svn.boost.org/trac10/ticket/13484 Report #13482: Referenced file in {.tar.gz,.tar.bz2}.json of official source distribution downloads is wrong Thu, 15 Mar 2018 13:45:57 GMT Fri, 21 Sep 2018 09:06:51 GMT <p> The official source distribution files (.tar.gz, .tar.bz2, .zip, .7z) provided at <a class="ext-link" href="https://dl.bintray.com/boostorg/release/1.66.0/source/"><span class="icon">​</span>https://dl.bintray.com/boostorg/release/1.66.0/source/</a> are accompanied by .json files holding meta information as the actual source distribution file name and the SHA256 of the source distribution file. </p> <p> However, at least boost_1_66_0.tar.gz.json and boost_1_66_0.tar.bz2.json reference the data files for the RC2 of 1.66.0. </p> <p> This makes it impossible to use the JSON files as source for script-based downloads and verification of the Boost source distribution. </p> t.klatt.oss+boost@… https://svn.boost.org/trac10/ticket/13482 https://svn.boost.org/trac10/ticket/13482 Report #13481: Strict aliasing is causing SIGSEGV on ARM Cortex-A15 when using GCC6 Wed, 14 Mar 2018 08:43:54 GMT Wed, 04 Apr 2018 07:41:16 GMT <p> Hello, I've been tracking a crach after upgrading GCC to 6.4 which was caused by corruption of the object stored inside <code>boost::function</code>. </p> <p> I think that the root cause for this is in the <code>function_buffer</code> storage. You see, there is a char member there with the intention of "relax aliasing constraints" as it states in the comment but if my understanding of the standard is correct, it doesn't really do that. Quote from the C++: </p> <pre class="wiki">If a program attempts to access the stored value of an object through a glvalue of other than one of the following types the behavior is undefined: 52 — the dynamic type of the object, — a cv-qualified version of the dynamic type of the object, — a type similar (as defined in 4.4) to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to the dynamic type of the object, — a type that is the signed or unsigned type corresponding to a cv-qualified version of the dynamic type of the object, — an aggregate or union type that includes one of the aforementioned types among its elements or non- static data members (including, recursively, an element or non-static data member of a subaggregate or contained union), — a type that is a (possibly cv-qualified) base class type of the dynamic type of the object, — a char or unsigned char type. </pre><p> There is indeed a <code>char</code> type along other things that may be aliased safely, but <code>function_buffer</code> is an <code>union</code> with <code>char</code> member so it falls into: </p> <pre class="wiki">an aggregate or union type that includes one of the **aforementioned** types </pre><p> so the <code>function_buffer</code> itself can't be aliased. There was similar bug on GCC: 77686 (I'm unable to put links here) which was fixed by applying <code>may_alias</code> attribute on their <code>function_buffer</code> counterpart. Seems reasonable but after applying it to <code>function_buffer</code> it was still failing but after reading GCC docs I think I've found out why: </p> <pre class="wiki">may_alias Accesses through **pointers to types** with this attribute are not subject to type- based alias analysis, but are instead assumed to be able to alias any other type of objects. In the context of section 6.5 paragraph 7 of the C99 standard, an lvalue expression dereferencing such a pointer is treated like having a character type. </pre><p> and there is <code>BOOST_FUNCTION_FUNCTION::move_assign</code> function which does: </p> <pre class="wiki">if (this-&gt;has_trivial_copy_and_destroy()) this-&gt;functor = f.functor; </pre><p> and as it doesn't operate on the pointers, <code>may_alias</code> seems to be simply ignored. So two things seems to fixing it (I hope they fix it, since the bug if quite "delicate" and it's easy to hide it by changing the code that doesn't seem relevant): </p> <p> 1) use <code>gnu::may_alias</code> on <code>function_buffer</code> and assign it trough some helper like this instead of <code>union</code>s assign operator: </p> <pre class="wiki">template&lt;class T&gt; void alias_safe_assign(T &amp; dst, T &amp; src) { dst = src; } </pre><p> there is Richard's comment on GCC bugtracker: 77686#c12 where he's noted about <code>std::swap</code> having a references so it seems to matter. </p> <p> 2) operate on <code>data</code> member directly since it has relaxed aliasing requirements by being a <code>char</code>. This doesn't even require GNU extensions.: </p> <pre class="wiki">std::memcpy(this-&gt;functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer)); </pre><p> Of course, putting a <code>may_alias</code> on the functor type itself (the one that I'm assigning to <code>boost::function</code> object) or putting this type into <code>function_buffer</code> also fixes this. </p> <hr /> <p> I'm compiling the attached testcase using </p> <pre class="wiki">arm-cortexa15-linux-gnueabihf-g++ (GCC) 6.4.1 20170811 </pre><p> and <code>-O2 -fPIC</code> </p> <p> Br, Piotr. </p> Piotr Podusowski <piotr.podusowski@…> https://svn.boost.org/trac10/ticket/13481 https://svn.boost.org/trac10/ticket/13481 Report #13477: Initializing boost::asio socket after constructor failed Tue, 13 Mar 2018 07:24:42 GMT Tue, 15 May 2018 03:17:49 GMT <p> I create a class to broadcast UDP messages as in the attached socket.cpp file. It works fine. Then, I wish to initialize the socket after the class constructor is initialized (to allow user input). So, I change from using socket to a socket pointer as in the socketPtr.cpp. </p> <p> It is a solution suggested by this post (<a class="ext-link" href="https://stackoverflow.com/questions/31371214/initializing-boostasio-sockets-after-constructor"><span class="icon">​</span>https://stackoverflow.com/questions/31371214/initializing-boostasio-sockets-after-constructor</a>). </p> <p> The replacements are as follows, where io_service is wrapped as boost::ref(io_service): </p> <p> <em>boost::asio::ip::udp::socket socket; boost::shared_ptr&lt;udp::socket&gt; socketPtr; </em></p> <p> <em>boost::asio::ip::udp::socket socket(io_service, endpoint.protocol()); </em>socket.set_option(boost::asio::ip::udp::socket::reuse_address(true)); socketPtr = boost::make_shared&lt;udp::socket&gt;(boost::ref(io_service), endpoint.protocol()); socketPtr-&gt;set_option(boost::asio::ip::udp::socket::reuse_address(true)); </p> <p> <em>socket.async_send_to(boost::asio::buffer(message), endpoint, [this](boost::system::error_code ec, std::size_t /*length*/) socketPtr-&gt;async_send_to(boost::asio::buffer(message), endpoint, [this](boost::system::error_code ec, std::size_t /*length*/) </em></p> <p> Just one thing with the modification: it doesn't work. I keep poring over the code, and could not find the reason why it shouldn't work. Could someone please help? </p> nguyen.tnhoang@… https://svn.boost.org/trac10/ticket/13477 https://svn.boost.org/trac10/ticket/13477 Report #13475: boost_1_66_0, Windows 10, mingw-w4, bootstrap fails - cannot write AppData\Local\Temp file Mon, 12 Mar 2018 17:31:19 GMT Thu, 02 Aug 2018 11:15:48 GMT <p> Have successfully built a couple versions of boost (most recently 1_65_1), but was unable to build 1_66_0 using mingw-w64. "bootstrap gcc" returns multiple fatal errors of the form: </p> <p> cc1.exe: fatal error: can't open 'C:\Users\Owner\<a class="missing wiki">AppData</a>\Local\Temp\ccA01VU9.s' for writing: Permission denied compilation terminated. </p> <p> Noted file is actually created somewhere during this, so unclear where/why the failure happens. </p> <p> I attempted to re-build 1_65_1 (using a couple versions of mingw), with identical results. </p> <p> Any suggestions where to look? </p> mhkelley2017@… https://svn.boost.org/trac10/ticket/13475 https://svn.boost.org/trac10/ticket/13475 Report #13474: Weighted Graphs for Betweennness Centrality Sun, 11 Mar 2018 20:59:50 GMT Thu, 10 May 2018 12:13:19 GMT <p> Graph edges' weights are not taken into account for the calculation of the Betweenness Centrality. </p> <p> I implementing a graph definition with weighted edges similar to the one below: </p> <p> <a class="ext-link" href="http://boost.2283326.n4.nabble.com/Some-help-for-betweenness-centrality-for-undirected-weighted-graph-td4682926.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/Some-help-for-betweenness-centrality-for-undirected-weighted-graph-td4682926.html</a> </p> <p> the betweenness centrality factors for the edges do not change when I change the edges' weights. </p> <p> Boost docs (<a href="http://www.boost.org/doc/libs/1_66_0/libs/graph/doc/betweenness_centrality.html">http://www.boost.org/doc/libs/1_66_0/libs/graph/doc/betweenness_centrality.html</a>) describe that Beetweenness Centrality algorithm can also operate on weighted graphs. </p> <p> Could you please help? </p> <p> I used Boost 1.66 </p> abertzouanis@… https://svn.boost.org/trac10/ticket/13474 https://svn.boost.org/trac10/ticket/13474 Report #13473: asio::basic_repeating_timer broken by 1.66.0 Sat, 10 Mar 2018 16:21:55 GMT Sun, 18 Mar 2018 09:17:25 GMT <p> The third-party header basic_repeating_timer.hpp, "Developed 2007 by David C. Wyles (<a class="ext-link" href="http:///www.codegorilla.co.uk"><span class="icon">​</span>http:///www.codegorilla.co.uk</a>)", no longer compiles with boost::asio 1.66.0: </p> <p> In file included from test1.cpp:1:0: ../Third_Party_Code/basic_repeating_timer.hpp:31:52: error: ‘deadline_timer_service’ in namespace ‘boost::asio’ does not name a template type </p> <blockquote> <p> typename <a class="missing wiki">TimerService</a> = boost::asio::deadline_timer_service&lt;Time, <a class="missing wiki">TimeTraits</a>&gt; &gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> ../Third_Party_Code/basic_repeating_timer.hpp:31:74: error: expected ‘&gt;’ before ‘&lt;’ token </p> <blockquote> <p> typename <a class="missing wiki">TimerService</a> = boost::asio::deadline_timer_service&lt;Time, <a class="missing wiki">TimeTraits</a>&gt; &gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from test1.cpp:1:0: ../Third_Party_Code/basic_repeating_timer.hpp:205:59: error: template argument 3 is invalid </p> <blockquote> <p> typedef basic_repeating_timer&lt;boost::posix_time::ptime&gt; repeating_timer; </p> </blockquote> Mike Haben <michael.haben@…> https://svn.boost.org/trac10/ticket/13473 https://svn.boost.org/trac10/ticket/13473 Report #13471: Documentation warnings in Xcode 9.2 Thu, 08 Mar 2018 15:03:08 GMT Thu, 08 Mar 2018 15:03:08 GMT <p> Xcode shows documentation warnings when I include &lt;boost/process.hpp&gt; screenshot : <a class="ext-link" href="https://imgur.com/Uq6BsMu"><span class="icon">​</span>https://imgur.com/Uq6BsMu</a> </p> <p> Belows are my xcode project settings. </p> <p> Hearder Search Paths /usr/local/include/ Library Search Paths /usr/local/lib/ Other Linker Flags = -lboost_system -lboost_filesystem </p> pointerphile@… https://svn.boost.org/trac10/ticket/13471 https://svn.boost.org/trac10/ticket/13471 Report #13469: Getting lot of warnings for simple code which is using boost::Intersection Tue, 06 Mar 2018 12:05:28 GMT Tue, 06 Mar 2018 12:05:28 GMT <p> The simple code below is generating a lot of warnings in boost 1_61_0 version. </p> <pre class="wiki"> #include &lt;boost/geometry/core/cs.hpp&gt; #include &lt;boost/geometry/geometries/register/point.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/geometries/register/ring.hpp&gt; #include &lt;boost/geometry.hpp&gt; struct Vertex2D { double X; double Y; }; BOOST_GEOMETRY_REGISTER_POINT_2D(Vertex2D, double, cs::cartesian, X, Y); typedef std::vector&lt;Vertex2D&gt; Ring; BOOST_GEOMETRY_REGISTER_RING(Ring); typedef boost::geometry::model::polygon&lt;Vertex2D&gt; Polygon; int main() { Polygon p1; Polygon p2; std::vector&lt;Polygon&gt; intersections; boost::geometry::intersection(p1, p2, intersections); return 0; } </pre> sumanth.kaliki@… https://svn.boost.org/trac10/ticket/13469 https://svn.boost.org/trac10/ticket/13469 Report #13468: asio receive buffer overwritten before handler called Tue, 06 Mar 2018 10:47:26 GMT Tue, 06 Mar 2018 10:47:26 GMT <p> I am developing on linux CentOS6.8 </p> <p> Whilst using boost::asio::ip::udp::socket::async_receive_from, I have found that if packets arrive too quickly the receive buffer is overwritten before the handler is called, resulting in a loss of data. </p> <p> In order to resolve this in my implementation I have modified epoll_reactor::descriptor_state::perform_io to only process one entry from the EPOLLIN queue as below marked +++ </p> <pre class="wiki">operation* epoll_reactor::descriptor_state::perform_io(uint32_t events) { mutex_.lock(); perform_io_cleanup_on_block_exit io_cleanup(reactor_); mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock); // Exception operations must be processed first to ensure that any // out-of-band data is read before normal data. static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI }; for (int j = max_ops - 1; j &gt;= 0; --j) { if (events &amp; (flag[j] | EPOLLERR | EPOLLHUP)) { try_speculative_[j] = true; while (reactor_op* op = op_queue_[j].front()) { if (reactor_op::status status = op-&gt;perform()) { op_queue_[j].pop(); io_cleanup.ops_.push(op); if (status == reactor_op::done_and_exhausted) { try_speculative_[j] = false; break; } +++ if ((events &amp; EPOLLIN) &amp;&amp; (flag[j] == EPOLLIN)) +++ { +++ // only read one packet at a time +++ break; +++ } } else break; } } } </pre><blockquote> <p> <em> The first operation will be returned for completion now. The others will </em> be posted for later by the io_cleanup object's destructor. io_cleanup.first_op_ = io_cleanup.ops_.front(); io_cleanup.ops_.pop(); return io_cleanup.first_op_; </p> </blockquote> <p> } </p> Gary Bayliss <gary.bayliss@…> https://svn.boost.org/trac10/ticket/13468 https://svn.boost.org/trac10/ticket/13468 Report #13467: RTTI issue with non-polymorphic types in debug mode Mon, 05 Mar 2018 18:09:14 GMT Mon, 05 Mar 2018 18:09:14 GMT <p> While serializing non-polymorphic types without RTTI in debug mode you get compiler warnings and execution crashes. In release mode everything works fine. This is because dynamic_cast is used for debugging purposes. The code is in smart_cast.hpp, starting in line 87: </p> <pre class="wiki"> #if ! defined(NDEBUG) \ || defined(__MWERKS__) // do a checked dynamic cast return cross::cast(u); #else </pre><p> I believe the first line could be replaced with: </p> <pre class="wiki"> #if (! defined(NDEBUG) &amp;&amp; ! defined(BOOST_NO_RTTI) ) \ </pre><p> This solved the issue for me. </p> jlodos@… https://svn.boost.org/trac10/ticket/13467 https://svn.boost.org/trac10/ticket/13467 Report #13466: Security vulnerability in Boost Interprocess Mon, 05 Mar 2018 10:16:39 GMT Sun, 01 Jul 2018 21:04:16 GMT <p> Greetings, </p> <p> Our security team has flagged: if(SetSecurityDescriptorDacl(&amp;sd, true, 0, false)) in interprocess\detail\win32_api.hpp as a "high-priority" vulnerability citing: </p> <p> "Objects that have null DACLs can have their security descriptors altered by malicious users so that no one has access to the object. Even if everyone needs access to an object, the object should be secured so that only administrators can alter its security". </p> <p> We've been told to bring this to your attention; Can you please let us know when it would be feasible to fix? </p> Corelogic RiskModel <riskmodel-all.india@…> https://svn.boost.org/trac10/ticket/13466 https://svn.boost.org/trac10/ticket/13466 Report #13464: Boost failed to compile test in graph lib due to the error C2499. Mon, 05 Mar 2018 02:55:29 GMT Tue, 06 Mar 2018 03:01:47 GMT <p> We tried to build and run graph test for Boost. It failed to build due to the error C2499: 'boost::array_binary_tree_node&lt;<a class="missing wiki">RandomAccessIterator</a>,ID&gt;::children_type::iterator': a class cannot be its own base class. Could you please help take a look at this? Thanks! </p> <p> <strong>Reproduce steps:</strong> </p> <ol><li>git clone -c core.autocrlf=true --recursive <a class="ext-link" href="https://github.com/boostorg/boost.git"><span class="icon">​</span>https://github.com/boostorg/boost.git</a> D:\Boost\src </li><li>Open a VS 2015 x86 command prompt and browse to D:\Boost\src </li><li>.\bootstrap </li><li>.\b2 headers variant=release --build-dir=..\out\Release --address-model=32 </li><li>.\b2 variant=release --build-dir=..\out\Release --address-model=32 </li><li>.\b2 -j4 variant=release --build-dir=..\out\x86rel libs\graph\test </li></ol><p> <strong>Expected result:</strong> </p> <p> All tests passed </p> <p> <strong>Actual result:</strong> </p> <p> C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\include\xlocale(315): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc .\boost/graph/detail/array_binary_tree.hpp(46): <strong>error C2499: 'boost::array_binary_tree_node&lt;<a class="missing wiki">RandomAccessIterator</a>,ID&gt;::children_type::iterator': a class cannot be its own base class</strong> .\boost/graph/detail/array_binary_tree.hpp(72): note: see reference to class template instantiation 'boost::array_binary_tree_node&lt;<a class="missing wiki">RandomAccessIterator</a>,ID&gt;::children_type::iterator' being compiled .\boost/graph/detail/array_binary_tree.hpp(94): note: see reference to class template instantiation 'boost::array_binary_tree_node&lt;<a class="missing wiki">RandomAccessIterator</a>,ID&gt;::children_type' being compiled .\boost/graph/detail/array_binary_tree.hpp(162): note: see reference to class template instantiation 'boost::array_binary_tree_node&lt;<a class="missing wiki">RandomAccessIterator</a>,ID&gt;' being compiled .\boost/graph/detail/array_binary_tree.hpp(46): error C2143: syntax error: missing ',' before '&lt;' </p> 1518134125@… https://svn.boost.org/trac10/ticket/13464 https://svn.boost.org/trac10/ticket/13464 Report #13463: Boost UDP multicast sender not using correct port Sun, 04 Mar 2018 01:12:13 GMT Sun, 04 Mar 2018 02:41:14 GMT <p> I follow this code to create a UDP multicast receiver: <a href="http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/sender.cpp">http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/sender.cpp</a> </p> <p> I modify the code with these for predefined values: </p> <p> class receiver: </p> <blockquote> <p> short multicast_port = 13000; </p> </blockquote> <p> in main(): </p> <blockquote> <p> <em>if (argc != 2) and the code for argv that follows are commented out </em></p> </blockquote> <blockquote> <p> sender s(io_context, boost::asio::ip::make_address("192.168.0.255")); </p> </blockquote> <p> The first 3 octets match that of the local network. I check with Wireshark. It shows me that the packages are sent with source port of 53916, and destination port 0. Running the code again gives a source port of 59483, and destination port 0. </p> <p> What is causing the source port to be different from specified value? How can I force it to use the specified port number? Thanks. </p> anonymous https://svn.boost.org/trac10/ticket/13463 https://svn.boost.org/trac10/ticket/13463 Report #13462: set_option: The requested address is not valid in its context Sat, 03 Mar 2018 22:08:17 GMT Sat, 03 Mar 2018 22:08:17 GMT <p> I follow this code to create a UDP multicast receiver: <a href="http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/receiver.cpp">http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/multicast/receiver.cpp</a> </p> <p> I modify the code with these for predefined values: </p> <p> class receiver: </p> <blockquote> <p> short multicast_port = 13; </p> </blockquote> <p> in main(): </p> <blockquote> <p> <em>if (argc != 3) and the code for argv that follows are commented out </em></p> </blockquote> <blockquote> <p> receiver r(io_context, boost::asio::ip::make_address("127.0.0.1"), boost::asio::ip::make_address("127.0.0.1")); </p> </blockquote> <p> This error is thrown: </p> <blockquote> <p> set_option: The requested address is not valid in its context </p> </blockquote> <p> I have tried "0.0.0.0" and "127.0.0.1" and other values. Still get the same error. Could someone please help me figuring out what went wrong? </p> nguyen.tnhoang@… https://svn.boost.org/trac10/ticket/13462 https://svn.boost.org/trac10/ticket/13462 Report #13461: C++ Boost UDP multicast errors out with socket.set_option() Sat, 03 Mar 2018 04:30:29 GMT Sat, 03 Mar 2018 05:34:15 GMT <p> I am following an example of Boost UDP multicast sending and receiving here(<a class="ext-link" href="https://stackoverflow.com/questions/12708558/c-multiple-multicast-receiver-with-boost-asio/12749727#12749727"><span class="icon">​</span>https://stackoverflow.com/questions/12708558/c-multiple-multicast-receiver-with-boost-asio/12749727#12749727</a>). I make some modifications to predefine IP and port: </p> <p> #include &lt;ctime&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/array.hpp&gt; #include &lt;boost/bind.hpp&gt; #include &lt;boost/shared_ptr.hpp&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/lexical_cast.hpp&gt; #include &lt;boost/thread.hpp&gt; using boost::asio::ip::udp; using std::cout; using std::cin; using std::endl; </p> <p> void read(boost::asio::ip::udp::socket&amp; socket) { </p> <blockquote> <p> boost::asio::ip::udp::endpoint sender; std::vector&lt;char&gt; buffer; std::size_t bytes_readable = 0; for (int i = 0; i &lt; 3; ++i) { </p> <blockquote> <p> <em> Poll until data is available. while (!bytes_readable) { </em></p> <blockquote> <p> <em> Issue command to socket to get number of bytes readable. boost::asio::socket_base::bytes_readable num_of_bytes_readable(true); socket.io_control(num_of_bytes_readable); </em></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> <em> Get the value from the command. bytes_readable = num_of_bytes_readable.get(); </em></p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> <em> If there is no data available, then sleep. if (!bytes_readable) { </em></p> <blockquote> <p> boost::this_thread::sleep(boost::posix_time::seconds(1)); </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Resize the buffer to store all available data. buffer.resize(bytes_readable); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Read available data. socket.receive_from( </em></p> <blockquote> <p> boost::asio::buffer(buffer, bytes_readable), sender); </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Extract data from the buffer. std::string message(buffer.begin(), buffer.end()); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Output data. std::cout &lt;&lt; "Received message: "; std::cout &lt;&lt; message &lt;&lt; std::endl; </em></p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> void write(boost::asio::ip::udp::socket&amp; socket, boost::asio::ip::udp::endpoint&amp; destination) { </p> <blockquote> <p> std::string message; for (unsigned int i = 0; i &lt; 3; ++i) { </p> <blockquote> <p> std::ostringstream stream; stream &lt;&lt; i; message = stream.str(); socket.send_to(boost::asio::buffer(message), destination); std::cout &lt;&lt; "Sent message: " &lt;&lt; message &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> <em> ============================================================================================================ bool receiver = false; boost::asio::ip::address address = boost::asio::ip::address::from_string("127.0.0.1"); unsigned short port = boost::lexical_cast&lt;unsigned short&gt;("13"); </em></p> </blockquote> <blockquote> <p> <em> Create socket. using boost::asio::ip::udp; boost::asio::io_service service; udp::socket socket(service); socket.open(boost::asio::ip::udp::v4()); </em></p> </blockquote> <blockquote> <p> <em> Allow other processes to reuse the address, permitting other processes on </em> the same machine to use the multicast address. socket.set_option(udp::socket::reuse_address(true)); </p> </blockquote> <blockquote> <p> <em> Guarantee the loopback is enabled so that multiple processes on the same </em> machine can receive data that originates from the same socket. socket.set_option(boost::asio::ip::multicast::enable_loopback(true)); socket.bind(udp::endpoint(boost::asio::ip::address_v4::any(), port)); udp::endpoint destination(address, port); </p> </blockquote> <blockquote> <p> <em> Join group. namespace ip = boost::asio::ip; socket.set_option(ip::multicast::join_group(address)); </em> Start read or write loops based on command line options. if (receiver) read(socket); else write(socket, destination); </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> An error is thrown here: </p> <blockquote> <p> socket.set_option(ip::multicast::join_group(address)); </p> </blockquote> <p> with this detail: </p> <p> Microsoft C++ exception: boost::exception_detail::clone_impl &gt; at memory location 0x0040F470. occurred </p> <p> Can someone please tell me what went wrong? Thanks. </p> nguyen.tnhoang@… https://svn.boost.org/trac10/ticket/13461 https://svn.boost.org/trac10/ticket/13461 Report #13460: broken shared build. Thu, 01 Mar 2018 10:07:53 GMT Thu, 01 Mar 2018 10:07:53 GMT <p> hi, </p> <p> i'm using a boost with a custom namespace (e.g. bcp --namespace=<strong>foobar</strong> --namespace-alias ...). for such configuration the current version of program_options doesn't export symbols from shared library. </p> <p> afaics the current boost build system defines in such configuration -D<strong>FOOBAR</strong>_PROGRAM_OPTIONS_DYN_LINK=1 macro which doesn't match the boost/program_options/config.hpp:37 #ifdef: </p> <table class="wiki"> <tr>#if defined(BOOST_ALL_DYN_LINK) <td> defined(<strong>BOOST</strong>_PROGRAM_OPTIONS_DYN_LINK) </td></tr></table> <p> finally, the BOOST_PROGRAM_OPTIONS_DECL macro is empty. </p> <p> this is a regression from boost-1.64.0. </p> pawels@… https://svn.boost.org/trac10/ticket/13460 https://svn.boost.org/trac10/ticket/13460 Report #13459: boost/regex/v4/perl_matcher_non_recursive.hpp infinite loop bug Wed, 28 Feb 2018 15:09:26 GMT Wed, 28 Feb 2018 15:09:26 GMT <h2 class="section" id="description">description</h2> <p> {{{ do </p> <blockquote> <p> { </p> <blockquote> <p> --position; --count; ++state_count; </p> </blockquote> <p> }while(count &amp;&amp; !can_start(*position, rep-&gt;_map, mask_skip)); </p> </blockquote> <p> }}}<br /> It performs a continuous loop at this point. <br /> </p> <h2 class="section" id="StepstoReproduce">Steps to Reproduce</h2> <p> {{{<a class="missing ticket">#0</a> boost::re_detail_106600::perl_matcher&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::unwind_greedy_single_repeat (this=0x7fffffffc600, r=0x0) </span></p> <blockquote> <p> at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:1411 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x00000000006a2ec3 in boost::re_detail_106600::perl_matcher&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::unwind (this=0x7fffffffc600, have_match=0x0) </span></p> <blockquote> <p> at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:1266 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x00000000006a92c3 in boost::re_detail_106600::perl_matcher&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::match_all_states (this=0x7fffffffc600) </span></p> <blockquote> <p> at ./boost_1_66_0/boost/regex/v4/perl_matcher_non_recursive.hpp:214 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x00000000006a25d9 in boost::re_detail_106600::perl_matcher&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::match_prefix (this=0x7fffffffc600) </span></p> <blockquote> <p> at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:336 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x00000000005ed580 in boost::re_detail_106600::perl_matcher&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::match_imp (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:220 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x00000000005ecb5f in boost::re_detail_106600::perl_matcher&lt;</span>gnu_cxx::<span class="underline">normal_iterator&lt;char const*, std::</span>cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt;::match (this=0x7fffffffc600) at ./boost_1_66_0/boost/regex/v4/perl_matcher_common.hpp:193 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00000000004f353f in boost::regex_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;char const*, std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, char, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt; (first=0x0, last=0x0, m=..., e=..., flags=boost::regex_constants::match_partial) </span></p> <blockquote> <p> at ./boost_1_66_0/boost/regex/v4/regex_match.hpp:50 </p> </blockquote> <p> Python Exception &lt;class 'gdb.error'&gt; There is no member named _M_dataplus.: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x00000000004f20f4 in boost::regex_match&lt;std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, std::allocator&lt;boost::sub_match&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;, char, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt; (s=, m=..., e=..., flags=boost::regex_constants::match_partial) at ./boost_1_66_0/boost/regex/v4/regex_match.hpp:82 }}} </p> komad <tlagyqls7@…> https://svn.boost.org/trac10/ticket/13459 https://svn.boost.org/trac10/ticket/13459 Report #13456: Object tracking fails with pointer to variant's content Sat, 24 Feb 2018 14:06:05 GMT Sun, 25 Feb 2018 02:22:03 GMT <p> Object tracking fails with a pointer to an object contained into a variant that is an element of a container which loads the value_type into a local object. For example a map with a variant as a mapped_type. </p> <p> There is a pull request: <a class="ext-link" href="https://github.com/boostorg/serialization/pull/96"><span class="icon">​</span>https://github.com/boostorg/serialization/pull/96</a> </p> <p> Demo: </p> <pre class="wiki">struct Foo { int i; template&lt;typename Archive&gt; void serialize(Archive&amp; ar, const unsigned int version) { ar &amp; i; } }; int main() { using map_t = std::unordered_map&lt;std::string, boost::variant&lt;Foo, float&gt;&gt;; std::string testfile{"/tmp/serialized"}; { map_t map{{"key", Foo{5}}}; auto ptr = &amp;boost::strict_get&lt;Foo&gt;(map.begin()-&gt;second); std::ofstream os(testfile); boost::archive::text_oarchive oa(os); oa &lt;&lt; map; oa &lt;&lt; ptr; } { std::ifstream is(testfile, (std::ios_base::openmode)0); boost::archive::text_iarchive ia(is, 0); map_t map; Foo* ptr; ia &gt;&gt; map; ia &gt;&gt; ptr; assert(ptr-&gt;i == 5); } } </pre> Ricardo Calheiros de Miranda Cosme <ricardo.cosme@…> https://svn.boost.org/trac10/ticket/13456 https://svn.boost.org/trac10/ticket/13456 Report #13454: universal 32/64 bits build broken on macOS (worked until 1.65.1) Tue, 20 Feb 2018 13:53:59 GMT Thu, 22 Feb 2018 20:35:57 GMT <p> Since boost 1.66.0, when configured with <code>architecture=x86 address-model=32_64</code>, the build system forgets to add <code>-arch i386 -arch x86_54</code> to the compilation flags (although they are still present in the link flags). The resulting libraries thus contain only the build arch. </p> <p> Boost 1.65.1 correctly builds universal libraries. </p> <p> to reproduce: </p> <pre class="wiki">./bootstrap.sh --without-libraries=mpi --without-libraries=context --without-libraries=coroutine ./b2 -d2 --debug-configuration architecture=x86 address-model=32_64 </pre><p> see also: <a class="ext-link" href="https://trac.macports.org/ticket/55857"><span class="icon">​</span>https://trac.macports.org/ticket/55857</a> </p> Frédéric Devernay <frederic.devernay@…> https://svn.boost.org/trac10/ticket/13454 https://svn.boost.org/trac10/ticket/13454 Report #13453: add serialize/ deserialize functionality Tue, 20 Feb 2018 08:38:43 GMT Tue, 20 Feb 2018 08:38:43 GMT <p> also added here: <a class="ext-link" href="https://github.com/boostorg/accumulators/issues/13"><span class="icon">​</span>https://github.com/boostorg/accumulators/issues/13</a> (not sure if github issues are reviewed) </p> <p> This was also discussed here: <a class="ext-link" href="https://stackoverflow.com/questions/32289719/how-to-serialize-boostaccumulatorsaccumulator-set"><span class="icon">​</span>https://stackoverflow.com/questions/32289719/how-to-serialize-boostaccumulatorsaccumulator-set</a> </p> <p> The ability to store the internal state of an object, as well as to initialize it with state is would be very useful, as this would eliminate the need to store the actual data point. Currently the different classes cannot be extended by inheritance, since their internal state is private. Anyway, since serialization and deserialization does not have any size/speed impact on the class, it is probably better to add this to the class and not to inherited version of it. Probably good to use the boost serialization library, to assure that the output is portable (serialize on one machine and deserialize on another). </p> Yuval Lifshitz <yuvalif@…> https://svn.boost.org/trac10/ticket/13453 https://svn.boost.org/trac10/ticket/13453 Report #13452: Use of std deprecated code in C++17 in MSCV 2017 Tue, 20 Feb 2018 06:42:09 GMT Tue, 20 Feb 2018 06:42:09 GMT <p> In Microsoft Visual C++ 2017 you have the possibility to compile with C++17 enabled. (Have to enable this to be able to use std::optional). This give a lot of warnings for deprecated stuff. The std::allocator&lt;void&gt; is deprecated (<a class="ext-link" href="http://en.cppreference.com/w/cpp/memory/allocator"><span class="icon">​</span>http://en.cppreference.com/w/cpp/memory/allocator</a>) and the std::result_of has changed to std::invoke_result (<a class="ext-link" href="http://en.cppreference.com/w/cpp/types/result_of"><span class="icon">​</span>http://en.cppreference.com/w/cpp/types/result_of</a>). I compile with treat warning as errors, so this make is difficult to use the asio library. </p> r.undheim@… https://svn.boost.org/trac10/ticket/13452 https://svn.boost.org/trac10/ticket/13452 Report #13450: boost_beast tests are failing on Windows with Intel's compiler due to incorrect boost_asio config.hpp file Fri, 16 Feb 2018 09:25:57 GMT Fri, 16 Feb 2018 09:25:57 GMT <pre class="wiki">$ cd boost_1_66_0/libs/beast/test/beast $ C:/Users/ikelarev/test5/boost_1_66_0/b2 toolset=intel-18_0-vc14.1 address-model=64 --hash --disable-icu --reconfigure -d+1 -d+2 cflags=" " core ... icl @"..\..\..\..\bin.v2\libs\beast\test\beast\core.test\907320e2b6757701b88c115bc51c431a\core.obj.rsp" ... ../../../../boost/beast/core/detail/bind_handler.hpp(109): error: namespace "boost::asio" has no member "associated_allocator_t" boost::asio::associated_allocator_t&lt;Handler&gt;; ^ ../../../../boost/beast/core/detail/bind_handler.hpp(109): error: expected a ";" boost::asio::associated_allocator_t&lt;Handler&gt;; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(53): error: namespace "boost::asio" has no member "associated_allocator_t" boost::asio::associated_allocator_t&lt;Handler&gt;; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(53): error: expected a ";" boost::asio::associated_allocator_t&lt;Handler&gt;; ^ ../../../../boost/beast/core/impl/buffered_read_stream.ipp(62): error: namespace "boost::asio" has no member "associated_executor_t" boost::asio::associated_executor_t&lt;Handler, decltype( ^ compilation aborted for core.cpp (code 4) </pre><p> associated_allocator_t is defined in boost/asio/associated_allocator.hpp header file: </p> <pre class="wiki">#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) template &lt;typename T, typename Allocator = std::allocator&lt;void&gt; &gt; using associated_allocator_t = typename associated_allocator&lt;T, Allocator&gt;::type; #endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) </pre><p> This means that associated_allocator_t will not be defined if BOOST_ASIO_HAS_ALIAS_TEMPLATES macro is not defined. This macro definition is arranged in boost/asio/detail/config.hpp header file: </p> <pre class="wiki">// Support alias templates on compilers known to allow it. #if !defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) # if !defined(BOOST_ASIO_DISABLE_ALIAS_TEMPLATES) ... # if defined(BOOST_ASIO_MSVC) # if (_MSC_VER &gt;= 1900) # define BOOST_ASIO_HAS_ALIAS_TEMPLATES 1 # endif // (_MSC_VER &gt;= 1900) # endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_ALIAS_TEMPLATES) #endif // !defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) </pre><p> This means that BOOST_ASIO_MSVC macro is required for BOOST_ASIO_HAS_ALIAS_TEMPLATES definition. BOOST_ASIO_MSVC definition is arranged in the same file before. </p> <pre class="wiki">// Microsoft Visual C++ detection. #if !defined(BOOST_ASIO_MSVC) # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) &amp;&amp; defined(BOOST_MSVC) # define BOOST_ASIO_MSVC BOOST_MSVC # elif defined(_MSC_VER) &amp;&amp; (defined(__INTELLISENSE__) \ || (!defined(__MWERKS__) &amp;&amp; !defined(__EDG_VERSION__))) # define BOOST_ASIO_MSVC _MSC_VER # endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) &amp;&amp; defined(BOOST_MSVC) #endif // defined(BOOST_ASIO_MSVC) </pre><p> It's obvious from the code that BOOST_ASIO_HAS_BOOST_CONFIG and BOOST_MSVC macros are required for BOOST_ASIO_MSVC macro definition. BOOST_ASIO_HAS_BOOST_CONFIG macro is actually defined but BOOST_MSVC macro is defined only for Microsoft cl compiler. For Intel's icl compiler BOOST_MSVC macro is not defined and BOOST_INTEL macro is defined instead. </p> <p> As a result BOOST_ASIO_MSVC and BOOST_ASIO_HAS_ALIAS_TEMPLATES macros will not be defined. And finally 'namespace "boost::asio" has no member "associated_allocator_t"' error appears. </p> <p> One of possible solutions is to add this code into boost/asio/detail/config.hpp file: </p> <pre class="wiki"> #if !defined(BOOST_ASIO_MSVC) # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) &amp;&amp; defined(BOOST_MSVC) # define BOOST_ASIO_MSVC BOOST_MSVC +# elif defined(BOOST_ASIO_HAS_BOOST_CONFIG) &amp;&amp; defined(BOOST_INTEL) +# define BOOST_ASIO_MSVC BOOST_INTEL # elif defined(_MSC_VER) &amp;&amp; (defined(__INTELLISENSE__) \ || (!defined(__MWERKS__) &amp;&amp; !defined(__EDG_VERSION__))) # define BOOST_ASIO_MSVC _MSC_VER </pre> Ivan Kelarev <ivan.kelarev@…> https://svn.boost.org/trac10/ticket/13450 https://svn.boost.org/trac10/ticket/13450 Report #13449: Execution of boost_mpl_preprocess.py fails if $(boost_root) path contains the string "linux" Thu, 15 Feb 2018 08:59:29 GMT Thu, 15 Feb 2018 09:27:31 GMT <p> <strong>How to reproduce:</strong> </p> <p> Build System: Ubuntu 16.04.0 LTS GCC: all </p> <p> Let's say that we have the boost sources in <code>/tmp/boost-linux/boost_1_X_X</code> </p> <p> The important thing is to have the string <code>linux</code> in the <code>boost-root</code> variable. </p> <p> <strong>Error log:</strong> </p> <pre class="wiki">python boost_mpl_preprocess.py In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector40.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector70.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. In file included from /tmp/boost-linux/boost_1_63_0/libs/mpl/preprocessed/vector/vector30.cpp:15:0: /tmp/boost-linux/boost_1_63_0/boost/config.hpp:30:29: fatal error: /tmp/boost-1/boost_1_63_0/libs/mpl/preprocessed/include/plain/user.hpp: No such file or directory compilation terminated. </pre><p> <strong>Problem:</strong> This appears because in <code>preprocess.cmd</code> gcc is invoked with include files included with angle brackets, so if we have the string <code>linux</code> it will be evaluated to <code>1</code> because it is a macro </p> Mihai Pop <mihaipop11@…> https://svn.boost.org/trac10/ticket/13449 https://svn.boost.org/trac10/ticket/13449 Report #13448: Json Property tree throwing error when a node has interger value greater than INT_MAX of int32 Thu, 15 Feb 2018 07:56:40 GMT Thu, 10 May 2018 12:08:18 GMT <p> When I have Json with a node having value greater than INT_MAX of int32 { "a" :3140000000 } </p> <p> When I access any node in that json, it throws error saying "No such Node" </p> tejaveda.2008@… https://svn.boost.org/trac10/ticket/13448 https://svn.boost.org/trac10/ticket/13448 Report #13447: BOOST_PP_VARIADICS should be 1 for NVCC Wed, 14 Feb 2018 17:13:14 GMT Tue, 26 Jun 2018 22:20:50 GMT <p> Hi, </p> <p> I just run into the problem that my boost preprocessor using code was not running because <code>BOOST_PP_VARIADIC</code> in /boost/preprocessor/config/config.hpp is set to 0 for <code>__CUDACC__</code> in <a class="ext-link" href="https://github.com/boostorg/preprocessor/blob/develop/include/boost/preprocessor/config/config.hpp#L74"><span class="icon">​</span>line 74</a>. </p> <p> However for my application variadic macros as working great with the nvidia compiler. What is needed to accept the nvidia compiler as <code>tested compiler</code> as stated in line 73 of the same file? </p> Alexander Matthes <a.matthes@…> https://svn.boost.org/trac10/ticket/13447 https://svn.boost.org/trac10/ticket/13447 Report #13446: \R does not match \v and \n when combined with flag no_escape_in_lists Wed, 14 Feb 2018 10:50:10 GMT Wed, 14 Feb 2018 10:50:10 GMT <p> The following code </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/regex.hpp&gt; int main(int argc, char** argv) { auto backslashR = boost::regex("\\R", boost::regex_constants::no_escape_in_lists); std::cout &lt;&lt; std::boolalpha; std::cout &lt;&lt; "regex='\\R', text='\\r', match found: " &lt;&lt; boost::regex_search("\r", backslashR) &lt;&lt; std::endl; std::cout &lt;&lt; "regex='\\R', text='\\n', match found: " &lt;&lt; boost::regex_search("\n", backslashR) &lt;&lt; std::endl; std::cout &lt;&lt; "regex='\\R', text='\\v', match found: " &lt;&lt; boost::regex_search("\v", backslashR) &lt;&lt; std::endl; return 0; } </pre><p> outputs </p> <pre class="wiki">regex='\R', text='\r', match found: true regex='\R', text='\n', match found: true regex='\R', text='\v', match found: true </pre><p> using boost regex v1.55 and v1.64. Using version 1.66 I get this: </p> <pre class="wiki">regex='\R', text='\r', match found: true regex='\R', text='\n', match found: false regex='\R', text='\v', match found: false </pre><p> Compiler: Visual Studio 2017, toolset=v141, VC15.5.1 </p> youcef.l@… https://svn.boost.org/trac10/ticket/13446 https://svn.boost.org/trac10/ticket/13446 Report #13445: Manual entry for abs function of vector space algebra differs from implementation Tue, 13 Feb 2018 11:39:46 GMT Tue, 13 Feb 2018 11:39:46 GMT <p> The manual entry for a vector space algebra definition in boost odeint states that the return value of the abs function necessary for controlled steppers must be of state type. <a href="http://www.boost.org/doc/libs/1_66_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/odeint_in_detail/state_types__algebras_and_operations.html#boost_numeric_odeint.odeint_in_detail.state_types__algebras_and_operations.algebras_and_operations.vector_space_algebra">http://www.boost.org/doc/libs/1_66_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/odeint_in_detail/state_types__algebras_and_operations.html#boost_numeric_odeint.odeint_in_detail.state_types__algebras_and_operations.algebras_and_operations.vector_space_algebra</a> This works only for fundamental types as described in the following stackoverflow entry. <a class="ext-link" href="https://stackoverflow.com/questions/44566641/boost-odeint-controlled-stepper-with-custom-class-and-vector-space-algebra"><span class="icon">​</span>https://stackoverflow.com/questions/44566641/boost-odeint-controlled-stepper-with-custom-class-and-vector-space-algebra</a> For custom types it only compiles when the return value of the abs function is of value type. This would also correspond to the mathematical understanding of the absolute value defined in a vector space. </p> jan@… https://svn.boost.org/trac10/ticket/13445 https://svn.boost.org/trac10/ticket/13445 Report #13444: boost::geometry::buffer returns only partial result (regression over 1.63.0) Fri, 09 Feb 2018 10:44:56 GMT Sat, 17 Feb 2018 17:53:03 GMT <p> using boost::geometry::buffer with multilinestring, only 1 of expected 3 polygons are returned. </p> <p> The fix ist to buffer each linestring separately and union_ them into one multipolygon. This also turned out to be much faster. </p> <p> I do not have a simple example, but a rather complex one, which I will attach. </p> <p> Version 1.63.0 returned all 3 polygons, but was also rather slow when compared with the workaround. </p> andre.meyer@… https://svn.boost.org/trac10/ticket/13444 https://svn.boost.org/trac10/ticket/13444 Report #13442: pmr::synchronized_pool_resource is affected by thread priority inversion Wed, 07 Feb 2018 09:41:11 GMT Fri, 09 Feb 2018 17:17:32 GMT <p> In our setup, we have several high priority threads that occasionally need to allocate memory using <code>synchronized_pool_resource::allocate</code>. Such memory is later released by a lower priority thread using <code>synchronized_pool_resource::deallocate</code>. </p> <p> It might sometimes happen that several <code>allocate</code> calls happen simultaneously with <code>deallocate</code>. Because of the spinlock implementation used by dlmalloc, the high priority threads are in a busy loop trying to acquire the lock, but the kernel might have no resources left to awake the "cleaner" thread that is currently holding the lock. </p> <p> Attached is a minimum example that Linux <code>SCHED_FIFO</code> scheduler. Running the program, on my system I can see: </p> <blockquote> <p> 1) The program prints 'failed' several times, meaning that some calls to <code>allocate</code> blocked for more than a second. </p> </blockquote> <blockquote> <p> 2) The total execution time is approximately 120 times slower than a version that does not use any thread priority. </p> </blockquote> <p> Inspecting the program with <code>perf</code> one can see that most of the time is spent inside <code>boost_cont_sync_lock</code>, in particular in <code>sched_yield</code>. </p> <p> A possible solution could be to switch to a pure pthread implementation by defining <code>USE_SPIN_LOCKS=0</code> before including <code>dlmalloc_2_8_6.c</code> </p> <p> System: <code>Linux SPC-LT48 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3 (2017-12-03) x86_64 GNU/Linux</code> </p> enniobarbaro@… https://svn.boost.org/trac10/ticket/13442 https://svn.boost.org/trac10/ticket/13442 Report #13441: Boos.Locale message formating exception if 'ß' used in translation file Wed, 07 Feb 2018 07:49:19 GMT Wed, 07 Feb 2018 07:49:19 GMT <p> If I use a 'ß' in the translation and load this resource file i get an debug error. </p> <pre class="wiki">boost::locale::generator gen; gen.add_messages_domain("MyDomain"); const auto de = gen("de_DE"); // debug error </pre> mattias.eppler@… https://svn.boost.org/trac10/ticket/13441 https://svn.boost.org/trac10/ticket/13441 Report #13440: Paths to boost libraries contain colons on OS X 10.13 (xcode 9) with Intel's compiler Tue, 06 Feb 2018 14:43:35 GMT Thu, 15 Feb 2018 13:51:56 GMT <p> After some changes in build system in boost 1.66 many tests started to fail on Mac OS with Intel's compiler due to colon in paths to boost libraries. With Clang compiler or on Linux this problem does not appear. OS X example: </p> <pre class="wiki">$ pwd /export/users/ikelarev/test3/boost_1_66_0/libs/array/test $ ../../../b2 toolset=intel-darwin array0 ... testing.capture-output ../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0.run /bin/sh: line 9: 26781 Abort trap: 6 "../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0" &gt; "../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0.output" 2&gt;&amp;1 &lt; /dev/null ====== BEGIN OUTPUT ====== dyld: Library not loaded: libboost_unit_test_framework.dylib Referenced from: /export/users1/ikelarev/test3/boost_1_66_0/libs/array/test/../../../bin.v2/libs/array/test/array0.test/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin/array0 Reason: image not found EXIT STATUS: 134 ====== END OUTPUT ====== DYLD_LIBRARY_PATH="/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/system/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/test/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/timer/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin:/nfs/igk/proj/icl/archive/deploy_mainline/efi2mac/20180206_000000/build/mac_prod/mac/bin/lib:/nfs/igk/proj/icl/archive/deploy_mainline/efi2mac/20180206_000000/build/mac_prod/mac/lib/intel64:$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH ... </pre><p> DYLD_LIBRARY_PATH contains paths like <code>/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin:linker-type-darwin</code> but colon is the path separator and this path will be broken into two parts - <code>/export/users1/ikelarev/test3/boost_1_66_0/bin.v2/libs/chrono/build/intel-darwin/debug/threadapi-pthread/toolset-intel-darwin</code> and <code>linker-type-darwin</code>. As a result any library which is placed there will be not found. </p> <p> With Clang compiler paths look like <code>../../../bin.v2/libs/chrono/build/darwin-darwin-4.2.1/debug/threadapi-pthread</code> without "toolset-intel-darwin:linker-type-darwin" part or something similar. </p> Ivan Kelarev <ivan.kelarev@…> https://svn.boost.org/trac10/ticket/13440 https://svn.boost.org/trac10/ticket/13440 Report #13439: boost:::filesystem:::copy_file : The File Exist Tue, 06 Feb 2018 14:31:28 GMT Wed, 07 Feb 2018 06:18:33 GMT <p> I'm using an insurance using BOOST library to copy files into the NAS </p> <p> We migrated to SSD NAS with high throughput, since we have this issue the system return an error boost:::filesystem:::copy_file : The File Exist </p> <p> If I comeback to SATA NAS it works </p> anonymous https://svn.boost.org/trac10/ticket/13439 https://svn.boost.org/trac10/ticket/13439 Report #13437: array.hpp and boost_array.hpp share the same header guard Tue, 06 Feb 2018 00:46:27 GMT Tue, 06 Feb 2018 01:03:22 GMT <p> Both array.hpp and boost_array.hpp use BOOST_SERIALIZATION_ARRAY_HPP as header guard. </p> christof.krueger@… https://svn.boost.org/trac10/ticket/13437 https://svn.boost.org/trac10/ticket/13437 Report #13433: b2 emits strange error message when building 1.66.0 on windows 10 against very new visual studio Wed, 31 Jan 2018 22:08:49 GMT Fri, 02 Feb 2018 18:30:56 GMT <p> Hello, I am try to build boost against the latest version of visual studio (15.5.5, I know that 15.5.6 is out though, shouldn't be too different) and I am getting this error </p> <p> failed to write command file! </p> <p> when running this command </p> <p> b2.exe --hash address-model=32 debug --stagedir=bin\v141\Win32\ -a --toolset=msvc-14.1 cxxflags="/D"_WIN32_WINNT=0x0600" /std:c++17 /Qspectre /D"_HAS_AUTO_PTR_ETC=1"" </p> <p> It has passed sometimes however it frequently doesn't. Its unclear what exactly I am doing that causes this error </p> <p> Here are the things I've done step by step </p> <p> 1: Download boost source code and unzip it </p> <p> 2: run bootstrap.bat </p> <p> 3: run above cmd line from the visual studio developer command prompt (this has failed when using powershell too) </p> <p> this was the last few things that were printed Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message. msvc.archive bin.v2\libs\date_time\build\a1668ad3e8cba9b190515cabd106a4cf\libboost_date_time-vc141-mt-gd-x32-1_66.lib common.copy bin\v141\Win32\lib\libboost_date_time-vc141-mt-gd-x32-1_66.lib bin.v2\libs\date_time\build\a1668ad3e8cba9b190515cabd106a4cf\libboost_date_time-vc141-mt-gd-x32-1_66.lib </p> <blockquote> <p> 1 file(s) copied. </p> </blockquote> <p> compile-c-c++ bin.v2\libs\exception\build\a1668ad3e8cba9b190515cabd106a4cf\clone_current_exception_non_intrusive.obj clone_current_exception_non_intrusive.cpp Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message. failed to write command file! </p> <p> I am unsure what is causing this. I don't think I am passing in parameters to the cxx flags incorrectly. I am filing a ticket because I suspect there might be a bug in b2 or bjam. </p> ivandavid14@… https://svn.boost.org/trac10/ticket/13433 https://svn.boost.org/trac10/ticket/13433 Report #13432: Remove RCS Tags from MPL component Wed, 31 Jan 2018 21:03:56 GMT Wed, 31 Jan 2018 21:03:56 GMT <p> The comment blocks at the top of several of the sources in the MPL component contain antiquated RCS tags that should likely be removed as they cause merge issues on some version control systems. </p> Grayson Lang <graysonlang@…> https://svn.boost.org/trac10/ticket/13432 https://svn.boost.org/trac10/ticket/13432 Report #13431: ncurses.h and boost.asio problem Wed, 31 Jan 2018 17:05:53 GMT Tue, 22 May 2018 04:13:35 GMT <p> Hi, I got the latest boost library (1.66) and tried to compile my old project. The file that I have the errors has #include &lt;ncurses.h&gt; I get a bunch of errors related to timeout() call. To reproduce: </p> <p> #include &lt;boost/asio.hpp&gt; #include &lt;ncurses.h&gt; </p> <p> /boost_release_1_66/include/boost/asio/basic_socket_streambuf.hpp:586:7: error: ‘stdscr’ is not a type </p> <blockquote> <p> int timeout() const </p> </blockquote> <p> Looking to the history I see that it was a similar issue but was fixed, and now in the latest release this issue is back. </p> Adrian Rapiteanu <adrian.rapiteanu@…> https://svn.boost.org/trac10/ticket/13431 https://svn.boost.org/trac10/ticket/13431 Report #13430: boost::optional C++98 and C++11 compatability breaks in boost 1.66.0 Tue, 30 Jan 2018 16:20:38 GMT Tue, 30 Jan 2018 16:20:38 GMT <p> Hi, </p> <p> I have an application that links both C++98 and C++11 libraries, this has worked fine up to and including boost 1.65.1 </p> <p> The issue is caused by a shared header from the C++98 library that uses boost::optional, when compiled by the C++11 code it gets a different class layout of boost::optional to the C++98 code and this is causing binary incompatibilities and seg faults. </p> <p> Observed on both a Mac with clang 9.0.0 and RHEL with gcc 4.8.5. Windows does not have this issue. </p> <p> A simple example is a C++98 class Test98 as follows (test98.hpp) </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; class Test98 { public: Test98 (boost::optional&lt;bool&gt; o = boost::none); private: boost::optional&lt;bool&gt; o_; }; </pre><p> with implementation (test98.cpp) </p> <pre class="wiki">#include "test98.hpp" Test98::Test98 (boost::optional&lt;bool&gt; o) : o_(o) {} </pre><p> Then a main program (main11.cpp) </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/make_shared.hpp&gt; int main () { boost::shared_ptr&lt;Test98&gt; t98 = boost::make_shared&lt;Test98&gt;(); std::cout &lt;&lt; "OK" &lt;&lt; std::endl; return 0; } </pre><p> When I compile test98.cpp as C++98 and main11.cpp as C++11, e.g. with a Makefile </p> <pre class="wiki">boost=/Users/niall/dev/boost_1_66_0 all: main11 clean: rm *.o main11 test98.o: test98.cpp g++ -c -Wall -g -O0 -I${boost} $&lt; -o $@ main11.o: main11.cpp g++ -c -std=c++11 -g -O0 -Wall -I${boost} $&lt; -o $@ main11: main11.o test98.o g++ $^ -o $@ </pre><p> it causes a seg fault, in a debugger I can see the problem is the boost::optional constructor at optional.hpp:946 </p> <pre class="wiki"> 945 #else -&gt; 946 optional ( optional const&amp; rhs ) : base( static_cast&lt;base const&amp;&gt;(rhs) ) {} 947 #endif </pre><p> One might argue that it is wrong to attempt to mix 98 and 11 like this, the two preprocessor runs above are generating different versions of test98.hpp, but it works previously so is a regression issue for me. </p> <p> Regards, Niall. </p> nialljosullivan@… https://svn.boost.org/trac10/ticket/13430 https://svn.boost.org/trac10/ticket/13430 Report #13429: Typo in Boost.Regex error message Tue, 30 Jan 2018 14:21:13 GMT Sun, 11 Feb 2018 20:11:09 GMT <p> The attached patch fixes the typo "uninitialzed". </p> Peter Klotz <peter.klotz@…> https://svn.boost.org/trac10/ticket/13429 https://svn.boost.org/trac10/ticket/13429 Report #13428: Windows: "is_symlink" for drive letter (without trailing directory separator) returns the wrong result Tue, 30 Jan 2018 13:39:23 GMT Tue, 30 Jan 2018 13:39:23 GMT <p> Suppose you have a normal directory <code>Dir</code> and a symlink named <code>SymlinkToDir</code> which points to <code>Dir</code> on drive <code>C:\</code>. </p> <p> The following two tests lead to different results: </p> <pre class="wiki">boost::filesystem::path fsPathToSymlink("C:\\SymlinkToDir"); boost::filesystem::path fsPathToDrive("C:"); current_path(fsPathToDrive + "\\"); bool b1 = is_symlink(fsPathToDrive); assert( b1 == false ); current_path(fsPathToSymlink); bool b2 = is_symlink(fsPathToDrive); assert( b2 == true ); </pre><p> It seems that Windows differentiates between <code>C:</code> and <code>C:\</code>. The first form seems to denote the current directory on drive <code>C:\</code> while the second form seems to denote drive <code>C:\</code> itself. This also can be observed in the Windows command promt. </p> <p> <code>is_symlink</code> internally uses <code>GetFileAttributesW</code> to determine the symlink status. <code>GetFileAttributes("C:")</code> returns the file attributes of <code>C:\\SymlinkToDir</code> instead of <code>C:\</code>. </p> <p> The function <code>is_symlink</code> is used to implement other functions, so this problem also effects at least the following other functions, possibly even many more: </p> <ul><li><code>canonical</code> returns <code>BOOST_ERROR_NOT_SUPPORTED</code> for an absolute path, if compiled for Windows versions earlier than Windows Vista (<code>_WIN32_WINNT &lt; 0x0600</code>) and the current directory represents a symlink. </li></ul><ul><li><code>weakly_canonical</code> in the same scenario as above, because this utilizes <code>canonical</code>. </li></ul> m.kosch@… https://svn.boost.org/trac10/ticket/13428 https://svn.boost.org/trac10/ticket/13428 Report #13427: Boost::binomial_heap - decrease bug Tue, 30 Jan 2018 12:45:35 GMT Tue, 30 Jan 2018 12:45:35 GMT <p> Hello. I was messing around with boost::binomial_heap today and I think I may have found a bug. Essentially, when I construct a min-heap with binomial_heap, insert elements, and decrease an element to become the smallest, it's not at the top. </p> <p> I've attached a small enough reproducer. Here's the result on execution: <a class="ext-link" href="http://coliru.stacked-crooked.com/a/28fe3afdedda9d76"><span class="icon">​</span>http://coliru.stacked-crooked.com/a/28fe3afdedda9d76</a> </p> <p> As you may see, the output should be: </p> <p> -1 1 1 2 3 4 </p> <p> Indeed, this is the output in the case of boost::fibonacci_heap and boost::pairing_heap. However, in the case of boost::binomial_heap, the output is: </p> <p> 1 -1 1 2 3 4 </p> adtac https://svn.boost.org/trac10/ticket/13427 https://svn.boost.org/trac10/ticket/13427 Report #13426: path::concat should ideally take a value_type Tue, 30 Jan 2018 00:36:48 GMT Tue, 30 Jan 2018 00:36:48 GMT <p> Hello, </p> <p> It'd be great if the concat function on filesystem::path would take a value_type so that it is in line with the filesystem spec. This would also allow .concat(fs::path::preferred_separator) as an easy way to append the separator to the path. </p> ethan@… https://svn.boost.org/trac10/ticket/13426 https://svn.boost.org/trac10/ticket/13426 Report #13425: bug in boost polygon resize Mon, 29 Jan 2018 04:15:12 GMT Tue, 30 Jan 2018 01:07:50 GMT <p> The function: </p> <p> void handleResizingEdge45() in polygon_45_set_data.hpp:943 </p> <p> When resizing a vertical/horizontal edge, the code construct a rectangle_data&lt;int&gt; directly instead of using Unit template. When the coordinate_traits&lt;int64_t&gt; is specialized, this easily causes the integer overflow and lead to bogus result. </p> <p> Change int to Unit would be the simple fix. </p> <p> Thanks, </p> leoyin@… https://svn.boost.org/trac10/ticket/13425 https://svn.boost.org/trac10/ticket/13425 Report #13424: incorect path separator in filesystem::weakly_canonical Sun, 28 Jan 2018 22:34:18 GMT Sun, 28 Jan 2018 22:34:18 GMT <p> On windows for this code: </p> <p> path t = "."; cout &lt;&lt; weakly_canonical(t) &lt;&lt; endl; </p> <p> I got: C:/test\boost_test </p> ajcekg@… https://svn.boost.org/trac10/ticket/13424 https://svn.boost.org/trac10/ticket/13424 Report #13421: boost::polygon::euclidean_distance(segment, point) returns 0 if the segment is of length 0 Thu, 25 Jan 2018 05:31:36 GMT Thu, 25 Jan 2018 05:31:36 GMT <p> On line 658 of segment_concept.hpp it returns 0 if the length of the segment (squared) is 0. It should just return the distance to one of the endpoints instead. </p> <p> In such a case param is also 0 which is why we end up there. </p> daniel@… https://svn.boost.org/trac10/ticket/13421 https://svn.boost.org/trac10/ticket/13421 Report #13419: Dinkum STL requires std::sprintf() with <cstdio> Wed, 24 Jan 2018 19:41:25 GMT Wed, 24 Jan 2018 19:41:25 GMT <p> sprintf() used in global scope in recent update. </p> <p> Corrected in <a class="ext-link" href="https://github.com/boostorg/asio/pull/54"><span class="icon">​</span>https://github.com/boostorg/asio/pull/54</a> </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/13419 https://svn.boost.org/trac10/ticket/13419 Report #13417: ASIO should support VxWorks Tue, 23 Jan 2018 18:37:49 GMT Tue, 23 Jan 2018 18:41:30 GMT <p> ASIO is popular library with embedded engineers using <a class="missing wiki">VxWorks</a>. However they must modify the code themselves to compile on the embedded target system. And then design a test harness to verify the functionality. To stop the repeated porting of ASIO to <a class="missing wiki">VxWorks</a> I've prepared the following pull request : </p> <p> <a class="ext-link" href="https://github.com/boostorg/asio/pull/54"><span class="icon">​</span>https://github.com/boostorg/asio/pull/54</a> </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/13417 https://svn.boost.org/trac10/ticket/13417 Report #13416: ASIO does not cross compile because it uses obsolete <os> vs. <target-os> Tue, 23 Jan 2018 18:30:22 GMT Tue, 23 Jan 2018 18:40:37 GMT <p> ASIO jam based build suffers from "host pollution" and compile options intended for the target operating system are designated with <strong>&lt;os&gt;</strong> rather than <strong>&lt;target-os&gt;</strong> which is the current syntax. This prevents ASIO being cross-compiled using b2 in many cases as the libraries and compile options not supported by the target OS are added to the build options. </p> <p> This is corrected as part of the following pull request <a class="ext-link" href="https://github.com/boostorg/asio/pull/54"><span class="icon">​</span>https://github.com/boostorg/asio/pull/54</a> </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/13416 https://svn.boost.org/trac10/ticket/13416 Report #13415: Every time I interact with trac for the first time, it claims my email is a sign of spam Tue, 23 Jan 2018 05:17:48 GMT Tue, 23 Jan 2018 05:17:48 GMT <p> This is the third annoyance I've found when dealing with your issue tracker. </p> <p> *EVERY* time I try to comment on an issue when using your tracker in a new web browser, on a new machine, or on a machine that hasn't been connected to trac in some time, it *INSISTS* that my email is flagged as "a source of spam" and that I have to verify myself through a captcha. </p> <p> You give me no recourse to dispute the assertion that my email is one of a spammer, so I'm left permanently accused of guilt with no way to prove my innocence. </p> <p> I've had my email address for over 25 years. In the early days of spam, they would take other people's legitimate email address and forge spam in their name by using someone else's address as the From: field. This may be how my email address ended up on someone's "spam" list. </p> <p> Yet only boost's ancient trac issue tracker is having a hard time with this. I can report issues on github all day long and have no such problems. </p> <p> Having an annoying bug tracker is detrimental to building a useful community. It makes me want to just not bother reporting issues against boost libraries and use something else. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/13415 https://svn.boost.org/trac10/ticket/13415 Report #13414: "Reported by me" doesn't show my tickets Tue, 23 Jan 2018 05:13:23 GMT Tue, 23 Jan 2018 05:13:23 GMT <p> I fill out the preferences and do the "Issues I reported" report, but instead I get issues filed by Niall Douglas. If you look at the URL generated by the redirect: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac10/query?status=assigned&amp;status=new&amp;status=reopened&amp;reporter=~ned14&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component&amp;order=priority&amp;report=49"><span class="icon">​</span>https://svn.boost.org/trac10/query?status=assigned&amp;status=new&amp;status=reopened&amp;reporter=~ned14&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component&amp;order=priority&amp;report=49</a> </p> <p> The URL before redirect is </p> <p> <a class="ext-link" href="https://svn.boost.org/trac10/report/49"><span class="icon">​</span>https://svn.boost.org/trac10/report/49</a> </p> <p> This makes it really difficult to find issues I have reported. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/13414 https://svn.boost.org/trac10/ticket/13414 Report #13413: ticket urls in emails are wrong Mon, 22 Jan 2018 20:48:48 GMT Mon, 22 Jan 2018 20:48:48 GMT <p> For instance </p> <blockquote> <p> Date: Mon, 22 Jan 2018 19:48:39 -0000 </p> </blockquote> <blockquote> <blockquote> <p> To: undisclosed-recipients: ; cc: boost-bugs@… </p> </blockquote> </blockquote> <blockquote> <p> From: "Boost C++ Libraries" &lt;noreply@…&gt; </p> </blockquote> <p> Reply-To: </p> <blockquote> <p> Subject: Re: [Boost C++ Libraries] <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/13388" title="#13388: Bugs: boost.test doesn't recognize VS 2017 (closed: worksforme)">#13388</a>: boost.test doesn't recognize VS 2 </p> <blockquote> <p> 017 </p> </blockquote> <p> Re: &lt;064.e6e39a12f4ecd2b7b4662c5b22774588@…&gt; </p> </blockquote> <blockquote> <blockquote> <p> Id: &lt;079.42a6af0375edd2d14082408474e705d9@…&gt; </p> </blockquote> <p> Spam: YES </p> </blockquote> <hr /> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/13388" title="#13388: Bugs: boost.test doesn't recognize VS 2017 (closed: worksforme)">#13388</a>: boost.test doesn't recognize VS 2017 </p> <hr /> <blockquote> <p> Reporter: Richard &lt;legalize@...&gt; | Owner: Gennadiy Rozental </p> <blockquote> <p> Type: Bugs | Status: new </p> </blockquote> </blockquote> <blockquote> <p> Milestone: To Be Determined | Component: test </p> <blockquote> <p> Version: Boost 1.66.0 | Severity: Problem </p> </blockquote> </blockquote> <p> Resolution: | Keywords: </p> <hr /> <p> Comment (by Raffi Enficiaud): </p> <blockquote> <p> Kind reminder </p> </blockquote> <p> -- Ticket URL: &lt;<a class="ext-link" href="https://svn.boost.org/trac10/boost/ticket/13388#comment:2"><span class="icon">​</span>https://svn.boost.org/trac10/boost/ticket/13388#comment:2</a>&gt; Boost C++ Libraries &lt;<a href="http://www.boost.org/">http://www.boost.org/</a>&gt; Boost provides free peer-reviewed portable C++ source libraries. </p> <p> Ticket URL is wrong. </p> <p> URL should be </p> <p> <a class="ext-link" href="https://svn.boost.org/trac10/ticket/13388"><span class="icon">​</span>https://svn.boost.org/trac10/ticket/13388</a> </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/13413 https://svn.boost.org/trac10/ticket/13413 Report #13412: Boost ver1.64.0 doesnt have asio/asoiciated_allocator.hpp Mon, 22 Jan 2018 11:38:57 GMT Thu, 10 May 2018 12:03:37 GMT <p> I am using boost v 1.64.0 along with beast on ubuntu machine. I am facing issues while compiling that boost/asio/associated_allocator.hpp file doesnt exist. i tried with v1.65.1 as well, getting similar issues. I need to know which version of boost supports associated_allocator.hpp </p> anonymous https://svn.boost.org/trac10/ticket/13412 https://svn.boost.org/trac10/ticket/13412 Report #13411: boost::container::small_vector move constructor/assignop not noexcept Sun, 21 Jan 2018 13:03:22 GMT Sun, 21 Jan 2018 13:03:22 GMT <p> Move-constructing or assigning a <code>small_vector</code> should be <code>noexcept</code>, if the <code>value_type</code> permits it (being itself nothrow move constructible). This will make small_vectors more efficient, and more usable in call sites that require nothrow moves. </p> avi@… https://svn.boost.org/trac10/ticket/13411 https://svn.boost.org/trac10/ticket/13411 Report #13410: Build failure: function_template.hpp:159:33: error: called object type 'nullptr_t' is not a function or function pointer Sun, 21 Jan 2018 06:14:53 GMT Sat, 24 Feb 2018 11:54:28 GMT <p> RStudio-1.1.409_1 fails to build with clang on FreeBSD-12: </p> <pre class="wiki">/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp In file included from /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp:16: In file included from /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/include/core/system/Process.hpp:25: In file included from /usr/local/include/boost/function.hpp:70: In file included from /usr/local/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:57: In file included from /usr/local/include/boost/function/detail/function_iterate.hpp:14: In file included from /usr/local/include/boost/function/detail/maybe_include.hpp:29: /usr/local/include/boost/function/function_template.hpp:159:33: error: called object type 'nullptr_t' is not a function or function pointer BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS)); ^~~~ /usr/local/include/boost/function/function_template.hpp:81:36: note: expanded from macro 'BOOST_FUNCTION_RETURN' # define BOOST_FUNCTION_RETURN(X) X ^ /usr/local/include/boost/function/function_template.hpp:925:53: note: in instantiation of member function 'boost::detail::function::void_function_obj_invoker2&lt;nullptr_t, void, bool, bool&gt;::invoke' requested here { { &amp;manager_type::manage }, &amp;invoker_type::invoke }; ^ /usr/local/include/boost/function/function_template.hpp:716:13: note: in instantiation of function template specialization 'boost::function2&lt;void, bool, bool&gt;::assign_to&lt;nullptr_t&gt;' requested here this-&gt;assign_to(f); ^ /usr/local/include/boost/function/function_template.hpp:1061:5: note: in instantiation of function template specialization 'boost::function2&lt;void, bool, bool&gt;::function2&lt;nullptr_t&gt;' requested here base_type(f) ^ /usr/local/include/boost/function/function_template.hpp:1114:5: note: in instantiation of function template specialization 'boost::function&lt;void (bool, bool)&gt;::function&lt;nullptr_t&gt;' requested here self_type(f).swap(*this); ^ /wrkdirs/usr/ports/devel/RStudio/work/rstudio-1.1.409/src/cpp/core/system/Process.cpp:239:21: note: in instantiation of function template specialization 'boost::function&lt;void (bool, bool)&gt;::operator=&lt;nullptr_t&gt;' requested here cb.onHasSubprocs = NULL; ^ </pre> yuri <yuri@…> https://svn.boost.org/trac10/ticket/13410 https://svn.boost.org/trac10/ticket/13410 Report #13409: Logging For Static Methods At Runtime Fri, 19 Jan 2018 14:34:06 GMT Mon, 22 Jan 2018 01:44:44 GMT <p> Hi, We've been logging with Boost Library in the application. We defined a dynamic class which can be configured differently to write on file, console and server by inheriting from Boost Log library classes. There are other 3rd party libraries in the application we use, and one of them includes <strong>static classes and methods</strong>. In some scenarios of the application, these static methods are called. Our goal is to be able to log for static methods when they are called <strong>at runtime</strong>. </p> <p> As you may also know, the static methods are linked at compile time. So, I can not use our dynamic class for logging. Is there any simple approach I can apply for this purpose ? </p> <p> Thanks in advance, Kind Regards </p> cranberriess89@… https://svn.boost.org/trac10/ticket/13409 https://svn.boost.org/trac10/ticket/13409 Report #13408: Boost Library Possible memory Leak Fri, 19 Jan 2018 14:30:46 GMT Sat, 14 Apr 2018 06:37:19 GMT <p> Hi, </p> <p> We have been using Boost library in the project. I've made analysis by using Valgrind tool to be able to find possible memory leaks. According to the result, there is a memory leak in Boost library. </p> <pre class="wiki">==7535== 24 bytes in 1 blocks are still reachable in loss record 2 of 6 ==7535== at 0x4C2B0E0: operator new(unsigned long) (vg_replace_malloc.c:324) ==7535== by 0x4E430A3: boost::detail::make_external_thread_data() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x4E433DB: boost::detail::add_new_tss_node(void const*, boost::shared_ptr&lt;boost::detail::tss_cleanup_function&gt;, void*) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x4E4408C: boost::detail::set_tss_data(void const*, boost::shared_ptr&lt;boost::detail::tss_cleanup_function&gt;, void*, bool) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.55.0) ==7535== by 0x54CAC0C: boost::log::v2_mt_posix::core::add_thread_attribute(boost::log::v2_mt_posix::attribute_name const&amp;, boost::log::v2_mt_posix::attribute const&amp;) </pre><p> It seems like the allocated memory is not deallocated, so it causes memory leak. Here is the definition of relevant event ; </p> <pre class="wiki"> thread_data_base* make_external_thread_data() { thread_data_base* const me(detail::heap_new&lt;externally_launched_thread&gt;()); me-&gt;self.reset(me); set_current_thread_data(me); return me; } thread_data_base* get_or_make_current_thread_data() { thread_data_base* current_thread_data(get_current_thread_data()); if(!current_thread_data) { current_thread_data=make_external_thread_data(); } return current_thread_data; } </pre><p> I've made some research if there is any post which states that this event causes memory leak, but could not find any. Is there any fix for the problem stated above? If there is any, could you please state the relevant patch ? </p> <p> Thanks in advance, </p> <p> Kind Regards </p> anonymous https://svn.boost.org/trac10/ticket/13408 https://svn.boost.org/trac10/ticket/13408 Report #13406: Boost 1.65.1 : Boost filesystem error codes for non existent files seems to be incorrect Fri, 19 Jan 2018 05:23:24 GMT Fri, 19 Jan 2018 06:33:53 GMT <p> Boost::filesystem::equivalent() when called on two non-existent files , error codes generated seems to be incorrect. </p> <p> I am attaching simple test case which calls boost::filesystem::equivalent() on two non-existent files. </p> <p> #include "boost/filesystem/operations.hpp" #include &lt;iostream&gt; int main() { </p> <blockquote> <p> boost::filesystem::path path1("foo"); boost::filesystem::path path2("bar"); boost::system::error_code ec; if(!boost::filesystem::equivalent(path1,path2,ec)) { </p> <blockquote> <p> std::cout&lt;&lt;"error code: " &lt;&lt; ec &lt;&lt; std::endl;; std::cout&lt;&lt;"error message: " &lt;&lt; ec.message() &lt;&lt; std::endl;; </p> </blockquote> </blockquote> <blockquote> <p> } return 0; </p> </blockquote> <p> } </p> <p> The output of the test case with boost 1.56 is </p> <p> <strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong> error code: system:2 error message: No such file or directory </strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong> </p> <p> The output of the test case with boost 1.65 is </p> <p> <strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong>* error code: system:1 error message: Operation not permitted </strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong>* </p> <p> Is this change an intentional one or a bug? </p> sudhanshu.gupta05@… https://svn.boost.org/trac10/ticket/13406 https://svn.boost.org/trac10/ticket/13406 Report #13405: Tree-based containers have troubles with move-only types. Wed, 17 Jan 2018 17:34:52 GMT Wed, 17 Jan 2018 17:40:11 GMT <p> Specifically, move assignment doesn't work. </p> <p> E.g. test.cpp: </p> <pre class="wiki">#include &lt;boost/container/set.hpp&gt; #include &lt;memory&gt; int main() { boost::container::set&lt;std::unique_ptr&lt;int&gt;&gt; set1, set2; set2 = std::move(set1); } </pre><p> Compiling with clang 5: </p> <pre class="wiki">$ clang++-5.0 ~/tmp/test.cpp -std=c++14 -o test -stdlib=libc++ -isystem ./boost_1_66_0 In file included from /home/brd/tmp/test.cpp:1: In file included from ./boost_1_66_0/boost/container/set.hpp:28: In file included from ./boost_1_66_0/boost/container/detail/tree.hpp:25: ./boost_1_66_0/boost/container/allocator_traits.hpp:415:51: error: call to implicitly-deleted copy constructor of 'std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;' { ::new((void*)p, boost_container_new_t()) T(::boost::forward&lt;Args&gt;(args)...); } ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./boost_1_66_0/boost/container/allocator_traits.hpp:360:28: note: in instantiation of function template specialization 'boost::container::allocator_traits&lt;boost::container::new_allocator&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt;::priv_construct&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, const std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &amp;&gt;' requested here allocator_traits::priv_construct(flag, a, p, ::boost::forward&lt;Args&gt;(args)...); ^ ./boost_1_66_0/boost/container/detail/node_alloc_holder.hpp:168:36: note: in instantiation of function template specialization 'boost::container::allocator_traits&lt;boost::container::new_allocator&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt;::construct&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, const std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &amp;&gt;' requested here allocator_traits&lt;NodeAlloc&gt;::construct ^ ./boost_1_66_0/boost/container/detail/tree.hpp:389:26: note: in instantiation of function template specialization 'boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;::create_node&lt;const std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &amp;&gt;' requested here return m_holder.create_node(other.m_data); ^ ./boost_1_66_0/boost/intrusive/detail/node_cloner_disposer.hpp:65:42: note: in instantiation of member function 'boost::container::container_detail::RecyclingCloner&lt;boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;, true&gt;::operator()' requested here node_ptr n = traits_-&gt;to_node_ptr(*base_t::get()(v)); ^ ./boost_1_66_0/boost/intrusive/rbtree_algorithms.hpp:59:20: note: in instantiation of member function 'boost::intrusive::detail::node_cloner&lt;boost::container::container_detail::RecyclingCloner&lt;boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;, true&gt;, boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, boost::intrusive::algo_types::RbTreeAlgorithms, false&gt;::operator()' requested here node_ptr n = base_t::get()(p); ^ ./boost_1_66_0/boost/intrusive/bstree_algorithms.hpp:1943:55: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) node_ptr insertion_point = target_sub_root = cloner(current); ^ ./boost_1_66_0/boost/intrusive/bstree.hpp:1040:27: note: in instantiation of function template specialization 'boost::intrusive::rbtree_algorithms&lt;boost::intrusive::rbtree_node_traits&lt;void *, true&gt; &gt;::clone&lt;boost::intrusive::detail::node_cloner&lt;boost::container::container_detail::RecyclingCloner&lt;boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;, true&gt;, boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, boost::intrusive::algo_types::RbTreeAlgorithms, false&gt;, boost::intrusive::detail::node_disposer&lt;boost::container::container_detail::allocator_destroyer&lt;boost::container::new_allocator&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt;, boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, boost::intrusive::algo_types::RbTreeAlgorithms&gt; &gt;' requested here node_algorithms::clone ^ ./boost_1_66_0/boost/intrusive/rbtree.hpp:240:18: note: in instantiation of function template specialization 'boost::intrusive::bstree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, boost::intrusive::algo_types::RbTreeAlgorithms, void&gt;::clone_from&lt;boost::container::container_detail::RecyclingCloner&lt;boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;, true&gt;, boost::container::container_detail::allocator_destroyer&lt;boost::container::new_allocator&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt; &gt;' requested here { tree_type::clone_from(BOOST_MOVE_BASE(tree_type, src), cloner, disposer); } ^ ./boost_1_66_0/boost/container/detail/tree.hpp:759:24: note: in instantiation of function template specialization 'boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt;::clone_from&lt;boost::container::container_detail::RecyclingCloner&lt;boost::container::container_detail::node_alloc_holder&lt;boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::bhtraits&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::rbtree_node_traits&lt;void *, true&gt;, boost::intrusive::link_mode_type::normal_link, boost::intrusive::dft_tag, 3&gt;, void, boost::container::value_to_node_compare&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt;, boost::intrusive::tree_value_compare&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; *, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, true&gt; &gt;, unsigned long, true, void&gt; &gt;, true&gt;, boost::container::container_detail::allocator_destroyer&lt;boost::container::new_allocator&lt;boost::container::container_detail::tree_node&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, void *, boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt; &gt;' requested here this-&gt;icont().clone_from ^ ./boost_1_66_0/boost/container/set.hpp:360:46: note: in instantiation of member function 'boost::container::container_detail::tree&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, boost::move_detail::identity&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt;::operator=' requested here { return static_cast&lt;set&amp;&gt;(this-&gt;base_t::operator=(BOOST_MOVE_BASE(base_t, x))); } ^ /home/brd/tmp/test.cpp:7:10: note: in instantiation of member function 'boost::container::set&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;, std::__1::less&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::container::new_allocator&lt;std::__1::unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt; &gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt;::operator=' requested here set2 = std::move(set1); ^ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/memory:2388:3: note: copy constructor is implicitly deleted because 'unique_ptr&lt;int, std::__1::default_delete&lt;int&gt; &gt;' has a user-declared move constructor unique_ptr(unique_ptr&amp;&amp; __u) noexcept ^ 1 error generated. </pre> Mikhail Kremniov <mkremniov@…> https://svn.boost.org/trac10/ticket/13405 https://svn.boost.org/trac10/ticket/13405 Report #13404: boost::container::container_detail::forward_as_tuple conflicts with std::forward_as_tuple Wed, 17 Jan 2018 17:06:13 GMT Wed, 17 Jan 2018 17:06:13 GMT <p> Internals of libc++ make unqualified calls to forward_as_tuple; this may result in the "call ... is ambiguous" error if boost::container::container_detail is one of the associated namespaces for the call. </p> <p> E.g. test.cpp: </p> <pre class="wiki">#include &lt;boost/container/set.hpp&gt; #include &lt;tuple&gt; int main() { boost::container::set&lt;int&gt; set; std::tuple_cat(std::make_tuple(set)); } </pre><p> The terminal: </p> <pre class="wiki">$ clang++-5.0 ~/tmp/test.cpp -std=c++14 -o test -stdlib=libc++ -isystem ./boost_1_66_0 In file included from /home/brd/tmp/test.cpp:1: In file included from ./boost_1_66_0/boost/container/set.hpp:28: In file included from ./boost_1_66_0/boost/container/detail/tree.hpp:36: In file included from ./boost_1_66_0/boost/container/detail/node_alloc_holder.hpp:30: In file included from ./boost_1_66_0/boost/container/detail/allocator_version_traits.hpp:26: In file included from ./boost_1_66_0/boost/container/throw_exception.hpp:27: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string:470: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string_view:169: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/__string:56: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/algorithm:643: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/memory:653: /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1318:16: error: call to 'forward_as_tuple' is ambiguous return forward_as_tuple(_VSTD::forward&lt;_Types&gt;(_VSTD::get&lt;_I0&gt;(__t))..., ^~~~~~~~~~~~~~~~ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1348:12: note: in instantiation of function template specialization 'std::__1::__tuple_cat&lt;std::__1::tuple&lt;&gt;, std::__1::__tuple_indices&lt;&gt;, std::__1::__tuple_indices&lt;0&gt; &gt;::operator()&lt;std::__1::tuple&lt;boost::container::set&lt;int, std::__1::less&lt;int&gt;, boost::container::new_allocator&lt;int&gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt; &gt;' requested here return __tuple_cat&lt;tuple&lt;&gt;, __tuple_indices&lt;&gt;, ^ /home/brd/tmp/test.cpp:8:10: note: in instantiation of function template specialization 'std::__1::tuple_cat&lt;std::__1::tuple&lt;boost::container::set&lt;int, std::__1::less&lt;int&gt;, boost::container::new_allocator&lt;int&gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt; &gt;&gt;' requested here std::tuple_cat(std::make_tuple(set)); ^ ./boost_1_66_0/boost/container/detail/variadic_templates_tools.hpp:81:20: note: candidate function [with Values = &lt;boost::container::set&lt;int, std::__1::less&lt;int&gt;, boost::container::new_allocator&lt;int&gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt;&gt;] tuple&lt;Values&amp;&amp;...&gt; forward_as_tuple(Values&amp;&amp;... values) ^ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1114:1: note: candidate function [with _Tp = &lt;boost::container::set&lt;int, std::__1::less&lt;int&gt;, boost::container::new_allocator&lt;int&gt;, boost::container::tree_opt&lt;boost::container::tree_type_enum::red_black_tree, true&gt; &gt;&gt;] forward_as_tuple(_Tp&amp;&amp;... __t) _NOEXCEPT ^ 1 error generated. </pre><p> P.S. I wonder, why is boost::container::container_detail::forward_as_tuple needed at all, since it doesn't seem to be used outside of tests. Can it be removed? </p> Mikhail Kremniov <mkremniov@…> https://svn.boost.org/trac10/ticket/13404 https://svn.boost.org/trac10/ticket/13404 Report #13402: Log format JUNIT generates invalid XML files with incorrect encoding Wed, 17 Jan 2018 07:46:06 GMT Mon, 02 Jul 2018 11:26:26 GMT <p> The encoding of the written JUNIT XML file is CP1252 compiled on Windows with Visual Studio 2013, but the encoding in XML is 'encoding="UTF-8"'. The output should be always converted to 'UTF-8' or the XML encoding in JUNIT file should be replaced by the encoding of the stream. </p> <p> Example output file: </p> <pre class="wiki">&lt;?xml version="1.0" **encoding="UTF-8"**?&gt; &lt;testsuite tests="0" skipped="0" errors="1" failures="2" id="0" name="Master_Test_Suite" time="44.222"&gt; &lt;properties&gt; &lt;property name="platform" value="Win32" &lt;property name="compiler" value="Microsoft Visual C++ version 12.0" &lt;property name="stl" value="Dinkumware standard library version 610" &lt;property name="boost" value="1.66.0" &lt;/properties&gt; </pre> gallien@… https://svn.boost.org/trac10/ticket/13402 https://svn.boost.org/trac10/ticket/13402 Report #13401: Specialization of consuming_buffers for null_buffers declares wrong interface Tue, 16 Jan 2018 21:23:04 GMT Tue, 16 Jan 2018 21:23:04 GMT <p> The specialization for null_buffers has a typo on the name of the method total_consumed, it misses the final "d". </p> <p> Pull request with the fix: <a class="ext-link" href="https://github.com/boostorg/asio/pull/78"><span class="icon">​</span>https://github.com/boostorg/asio/pull/78</a> </p> Juan Ramirez <jrami> https://svn.boost.org/trac10/ticket/13401 https://svn.boost.org/trac10/ticket/13401 Report #13400: boost::archive::xml_iarchive Exception in destructor: "input stream error-No error" Tue, 16 Jan 2018 14:09:06 GMT Sat, 17 Feb 2018 15:34:36 GMT <p> The sample code: </p> <p> #include &lt;unordered_map&gt; #include &lt;boost/serialization/unordered_map.hpp&gt; #include &lt;boost/serialization/vector.hpp&gt; #include &lt;boost/serialization/nvp.hpp&gt; #include &lt;boost/archive/xml_oarchive.hpp&gt; #include &lt;boost/archive/xml_iarchive.hpp&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; </p> <blockquote> <p> std::ifstream ifs("commandKeyToAction.xml"); auto newCommandKeyToAction = std::unordered_map&lt;std::string, std::unordered_map&lt;std::string, std::vector&lt;std::string&gt;&gt;&gt;(); </p> </blockquote> <p> </p> <blockquote> <p> boost::archive::xml_iarchive xmlIn(ifs); xmlIn &gt;&gt; boost::serialization::make_nvp("options", newCommandKeyToAction); </p> </blockquote> Andrei Bryleuski <andrey-brilevskiy@…> https://svn.boost.org/trac10/ticket/13400 https://svn.boost.org/trac10/ticket/13400 Report #13399: pthread_create segfaults when program is restarted after some time Tue, 16 Jan 2018 08:35:32 GMT Tue, 16 Jan 2018 09:14:23 GMT <p> Hi, </p> <p> We are using boost 1.56 version on CentOS 7.4.1708 (Core) </p> <p> This bug happens from time to time when we are restating application, while simulated multiple clients send message to the server. </p> <pre class="wiki">[Switching to Thread 0x7fffeb6ac700 (LWP 27894)] processMessageImpl ( data_="STRING DATA"...) at main.cpp:564 564 if (!client-&gt;connected) (gdb) bt full #0 processMessageImpl ( data_="CONTENT DATA DELETED"...) at main.cpp:564 parseSucc = &lt;optimized out&gt; dataStream = {&lt;std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&gt; = {&lt;std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&gt; = {&lt;std::ios_base&gt; = {_vptr.ios_base = 0x7fffeb6ac700, static boolalpha = std::_S_boolalpha, static dec = std::_S_dec, static fixed = std::_S_fixed, static hex = std::_S_hex, static internal = std::_S_internal, static left = std::_S_left, static oct = std::_S_oct, static right = std::_S_right, static scientific = std::_S_scientific, static showbase = std::_S_showbase, static showpoint = std::_S_showpoint, static showpos = std::_S_showpos, static skipws = std::_S_skipws, static unitbuf = std::_S_unitbuf, static uppercase = std::_S_uppercase, static adjustfield = std::_S_adjustfield, static basefield = std::_S_basefield, static floatfield = std::_S_floatfield, static badbit = std::_S_badbit, static eofbit = std::_S_eofbit, static failbit = std::_S_failbit, static goodbit = std::_S_goodbit, static app = std::_S_app, static ate = std::_S_ate, static binary = std::_S_bin, static in = std::_S_in, static out = std::_S_out, static trunc = std::_S_trunc, static beg = std::_S_beg, static cur = std::_S_cur, static end = std::_S_end, _M_precision = 0, _M_width = 0, _M_flags = 3825362640, _M_exception = (std::_S_badbit | std::_S_eofbit | std::_S_failbit | unknown: 32760), _M_streambuf_state = (unknown: 3825235264), _M_callbacks = 0x6ee9a0, _M_word_zero = { _M_pword = 0x7fffeb6abb30, _M_iword = 7268672}, _M_local_word = {{_M_pword = 0x0, _M_iword = 4528892}, {_M_pword = 0x0, _M_iword = 140737018779704}, {_M_pword = 0x0, _M_iword = 140737351885008}, {_M_pword = 0x6ea448, _M_iword = 140737018597424}, {_M_pword = 0x0, _M_iword = 152}, {_M_pword = 0x100007f27820002, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 140733193388032}, {_M_pword = 0x4517b0 &lt;tcpServer::handle_accept(session*, boost::system::error_code const&amp;)&gt;, _M_iword = 0}}, _M_word_size = 7268672, _M_word = 0x7fffe40266d0, _M_ios_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0xffffffff, static _S_classic = 0x7ffff667be00 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_global = 0x7ffff667be00 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_categories = 0x7ffff665f900 &lt;__gnu_cxx::category_names&gt;, static _S_once = 2}}, _M_tie = 0x7fffe40ca4c0, _M_fill = 30 '\036', _M_fill_init = false, _M_streambuf = 0x7fffeb6abbe0, _M_ctype = 0x6bf770, _M_num_put = 0x49182c &lt;void boost::function1&lt;void, std::string&amp;&gt;::assign_to&lt;void (*)(std::string)&gt;(void (*)(std::string))::stored_vtable+12&gt;, _M_num_get = 0x1}, _vptr.basic_istream = 0x7fffeb6ac700, _M_gcount = 0}, _M_stringbuf = {&lt;std::basic_streambuf&lt;char, std::char_traits&lt;char&gt; &gt;&gt; = {_vptr.basic_streambuf = 0x0, _M_in_beg = 0x7fffe40266d0 "", _M_in_cur = 0x7fffe4007540 "0\321I", _M_in_end = 0x6ee9a0 "\200\027", _M_out_beg = 0x7fffeb6abb30 "\002", _M_out_cur = 0x6ee940 "p\327k", _M_out_end = 0x0, _M_buf_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x451afc &lt;tcpServer::handle_accept(session*, boost::system::error_code const&amp;)+844&gt;, static _S_classic = 0x7ffff667be00 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_global = 0x7ffff667be00 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_categories = 0x7ffff665f900 &lt;__gnu_cxx::category_names&gt;, static _S_once = 2}}, _M_mode = (unknown: 0), _M_string = ""}} tree = {m_data = &lt;error reading variable: Cannot access memory at address 0x98&gt;, m_children = 0x9} spId = &lt;error reading variable: Cannot access memory at address 0x26f8&gt; url = "" client = 0x0 v1_9Flag = &lt;optimized out&gt; #1 0x0000000000434c8a in operator()&lt;void (*)(std::basic_string&lt;char&gt;), boost::_bi::list0&gt; (f=@0x7fffeb6abc70: 0x42f490 &lt;processMessageImpl(std::string)&gt;, a=&lt;synthetic pointer&gt;, this=0x7fffeb6abc78) at /usr/local/include/boost/bind/bind.hpp:253 No locals. #2 operator() (this=0x7fffeb6abc70) at /usr/local/include/boost/bind/bind_template.hpp:20 No locals. #3 asio_handler_invoke&lt;boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_bi::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt; &gt; (function=...) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69 No locals. #4 invoke&lt;boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_bi::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt;, boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_bi::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt; &gt; (context=..., function=...) at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37 No locals. #5 boost::asio::detail::completion_handler&lt;boost::_bi::bind_t&lt;void, void (*)(std::string), boost::_bi::list1&lt;boost::_bi::value&lt;std::string&gt; &gt; &gt; &gt;::do_complete (owner=0x6bf770, base=&lt;optimized out&gt;) at /usr/local/include/boost/asio/detail/completion_handler.hpp:68 h = &lt;optimized out&gt; p = {h = &lt;optimized out&gt;, v = 0x0, p = 0x0} handler = {f_ = 0x42f490 &lt;processMessageImpl(std::string)&gt;, l_ = {&lt;boost::_bi::storage1&lt;boost::_bi::value&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;&gt; = {a1_ = { t_ = "CONTENT DATA DELETED"...}}, &lt;No data fields&gt;}} #6 0x000000000043ca00 in complete (bytes_transferred=&lt;optimized out&gt;, ec=..., owner=..., this=&lt;optimized out&gt;) at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38 No locals. #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372 task_result = &lt;optimized out&gt; on_exit = {task_io_service_ = 0x6bf770, lock_ = 0x7fffeb6abcc0, this_thread_ = 0x7fffeb6abd30} more_handlers = true #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149 this_thread = {&lt;boost::asio::detail::thread_info_base&gt; = {&lt;boost::asio::detail::noncopyable&gt; = {&lt;No data fields&gt;}, reusable_memory_ = 0x7fffe40983b0}, private_op_queue = {&lt;boost::asio::detail::noncopyable&gt; = {&lt;No data fields&gt;}, front_ = 0x0, back_ = 0x0}, private_outstanding_work = 0} ctx = {&lt;boost::asio::detail::noncopyable&gt; = {&lt;No data fields&gt;}, key_ = 0x6bf770, value_ = 0x7fffeb6abd30, next_ = 0x0} lock = {&lt;boost::asio::detail::noncopyable&gt; = {&lt;No data fields&gt;}, mutex_ = @0x6bf7a0, locked_ = false} n = 70 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770 &lt;io_service&gt;) at /usr/local/include/boost/asio/impl/io_service.ipp:59 ec = {m_val = 0, m_cat = 0x7ffff7dda0d0 &lt;boost::system::system_category()::system_category_const&gt;} s = &lt;optimized out&gt; #10 0x00007ffff6ed030a in thread_proxy () from /lib64/libboost_thread.so.1.56.0 No symbol table info available. #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at pthread_create.c:308 __res = &lt;optimized out&gt; pd = 0x7fffeb6ac700 </pre><pre class="wiki">// Some comments here #0 processMessageImpl ( data_="{\"CONTENT DATA DELETED"...) at main.cpp:564 #1 0x0000000000434c8a in operator()&lt;void (*)(std::basic_string&lt;char&gt;), boost::_bi::list0&gt; (f=@0x7fffeb6abc70: 0x42f490 &lt;processMessageImpl(std::string)&gt;, a=&lt;synthetic pointer&gt;, this=0x7fffeb6abc78) at /usr/local/include/boost/bind/bind.hpp:253 #2 operator() (this=0x7fffeb6abc70) at /usr/local/include/boost/bind/bind_template.hpp:20 #3 asio_handler_invoke&lt;boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_bi::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt; &gt; (function=...) at /usr/local/include/boost/asio/handler_invoke_hook.hpp:69 #4 invoke&lt;boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_bi::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt;, boost::_bi::bind_t&lt;void, void (*)(std::basic_string&lt;char&gt;), boost::_b i::list1&lt;boost::_bi::value&lt;std::basic_string&lt;char&gt; &gt; &gt; &gt; &gt; (context=..., function=...) at /usr/local/include/boost/asio/detail/handler_invoke_helpers.hpp:37 #5 boost::asio::detail::completion_handler&lt;boost::_bi::bind_t&lt;void, void (*)(std::string), boost::_bi::list1&lt;boost::_bi::value&lt;std::string&gt; &gt; &gt; &gt;::do_complete (owner=0x6bf770, base=&lt;optimized out&gt;) at /usr/local/include/boost/asio/detail/completion_handler.hpp:68 #6 0x000000000043ca00 in complete (bytes_transferred=&lt;optimized out&gt;, ec=..., owner=..., this=&lt;optimized out&gt;) at /usr/local/include/boost/asio/detail/task_io_service_operation.hpp:38 #7 do_run_one (ec=..., this_thread=..., lock=..., this=0x6bf770) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:372 #8 boost::asio::detail::task_io_service::run (this=0x6bf770, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:149 #9 0x000000000043ffb5 in boost::asio::io_service::run (this=0x6bd770 &lt;io_service&gt;) at /usr/local/include/boost/asio/impl/io_service.ipp:59 #10 0x00007ffff6ed030a in thread_proxy () from /lib64/libboost_thread.so.1.56.0 #11 0x00007ffff77bae25 in start_thread (arg=0x7fffeb6ac700) at pthread_create.c:308 #12 0x00007ffff5b9234d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113 </pre> ttomas.mikalauskas@… https://svn.boost.org/trac10/ticket/13399 https://svn.boost.org/trac10/ticket/13399 Report #13392: deadline_timer -> endless handler recursion, if it should have been cancelled. Thu, 11 Jan 2018 10:25:23 GMT Thu, 11 Jan 2018 10:57:32 GMT <p> Following <a href="http://www.boost.org/doc/libs/1_65_0/doc/html/boost_asio/reference/deadline_timer.html">http://www.boost.org/doc/libs/1_65_0/doc/html/boost_asio/reference/deadline_timer.html</a> example, I made a modification to do a cyclic timer: </p> <pre class="wiki">void MyClass::on_timeout() { // Here I rely on the documentation, which states that: // basic_deadline_timer::expires_at (2 of 3 overloads) : // // **Any pending asynchronous wait operations will be cancelled.** // // that is no need for // // if (error) // { // return; // } mTimer.expires_at(mTimer.expires_at() + boost::posix_time::seconds(2)); mTimer.async_wait(on_timeout); mIoService.post(boost::bind(&amp;MyClass::mDoWorkCallback, this)); } </pre><p> Further I have </p> <pre class="wiki">void MyClass::Restart() { // Here I rely on the documentation, which states that: // basic_deadline_timer::expires_from_now (2 of 3 overloads) : // // **Any pending asynchronous wait operations will be cancelled.** // mTimer.expires_from_now(boost::posix_time::seconds(2)); mTimer.async_wait(on_timeout); } </pre><p> What happens is not what I expect. If I don't call <em>Restart()</em> everything works fine, i.e.<em> asyn_wait(handlers)</em> are interrupted. But If I call once <em>Restart()</em>, and after the call <em>expires_from_now</em> is executed inside, the <em>on_timeout</em> handler is called in an endless recursion regardless the time value of the timer. For example, value is 5 seconds, but the handler is called many times in a millisecond (with <em>operation aborted(995)</em> as an error argument, i.e. its been continuously cancelled). </p> <p> I also get <strong>once</strong> an error message when calling <em>expires_from_now</em> : </p> <pre class="wiki">operation aborted(995) The I/O operation has been aborted because of either a thread exit or an application request </pre><p> which would mean OK to me : the handler was canceled. But nevertheless it continues to be executed. </p> <p> The above behavior doesn't occur if I uncomment following code in the handler </p> <p> if (error) { </p> <blockquote> <p> return; </p> </blockquote> <p> } </p> <p> The above seems to me buggy. And to you ? </p> HeinrichBoost <heinrich_nbongo@…> https://svn.boost.org/trac10/ticket/13392 https://svn.boost.org/trac10/ticket/13392 Report #13391: Typo in documentation Thu, 11 Jan 2018 08:20:59 GMT Thu, 11 Jan 2018 08:34:21 GMT <p> Hello all, </p> <p> This is small fix for doubled "between" in offset_ptr documentation. </p> <pre class="wiki">Index: boost/interprocess/offset_ptr.hpp =================================================================== --- boost/interprocess/offset_ptr.hpp (revision 86799) +++ boost/interprocess/offset_ptr.hpp (working copy) @@ -214,7 +214,7 @@ } //namespace ipcdetail { /// @endcond -//!A smart pointer that stores the offset between between the pointer and the +//!A smart pointer that stores the offset between the pointer and the //!the object it points. This allows offset allows special properties, since //!the pointer is independent from the address address of the pointee, if the //!pointer and the pointee are still separated by the same offset. This feature </pre><p> ---<br /> Kind regards,<br /> Valeriy Kireev &lt;valeriykireev at gmail.com&gt;,<br /> Developer -- TuneIT Company. </p> valeriykireev@… https://svn.boost.org/trac10/ticket/13391 https://svn.boost.org/trac10/ticket/13391 Report #13390: Bootstrapping Boost 1.66 fails on Windows 10 using wingw gcc Thu, 11 Jan 2018 04:46:31 GMT Tue, 23 Jan 2018 00:33:21 GMT <p> I'm attempting to bootstrap boost 1.66 on a Windows 10 machine so I can use it with Code::Blocks and wxWidgets </p> <p> It fails when running ./bootstrap.bat gcc </p> <p> It appears to be failing to find two functions: <a class="missing wiki">UnregisterWait</a> and <a class="missing wiki">RegisterWaitForSingleObject</a> </p> <p> Please see the attached images for error message and generated log </p> hepler@… https://svn.boost.org/trac10/ticket/13390 https://svn.boost.org/trac10/ticket/13390 Report #13389: rbtree_best_fit.hpp:grow() if condition error Thu, 11 Jan 2018 01:57:50 GMT Thu, 11 Jan 2018 01:57:50 GMT <p> in file boost/interprocess/mem_algo/rbtree_best_fit.hpp:480 func: </p> <pre class="wiki">void rbtree_best_fit&lt;MutexFamily, VoidPointer, MemAlignment&gt;::grow(size_type extra_size) { ... if((m_header.m_size - old_border_offset) &lt; MinBlockUnits){ return; } ... } </pre><p> condition error. the if condition should be : </p> <pre class="wiki"> if((m_header.m_size - old_border_offset) &lt; MinBlockUnits*Alignment) { return; } </pre> jakciehan <hanchengxi0423@…> https://svn.boost.org/trac10/ticket/13389 https://svn.boost.org/trac10/ticket/13389 Report #13385: Docs for for_each() should be clearer about forbidding "any non-constant operation" Tue, 09 Jan 2018 12:19:51 GMT Tue, 09 Jan 2018 12:19:51 GMT <p> The docs for Range's (single-range) <code>for_each()</code> function specify the requirement: </p> <blockquote class="citation"> <p> UnaryFunction does not apply any non-constant operation through its argument. </p> </blockquote> <p> I think this wording could it be clearer. Does it mean that the it mustn't modify the value passed to it? If not, I think it would benefit from rewording. If so, isn't that quite different to <code>std::for_each()</code>. If that's deliberate, I suggest it's worth a brief note highlighting and justifying the difference. Otherwise, I suggest it's worth fixing. </p> <p> Thanks very much. </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/13385 https://svn.boost.org/trac10/ticket/13385 Report #13384: Captcha rejected all my attempts; ticket text lost Tue, 09 Jan 2018 11:47:17 GMT Wed, 17 Jan 2018 12:08:57 GMT <p> I just tried to create a new ticket. It had external links so I was forced to a captcha. I tried the captcha about 6 times and then gave up. It's quite possible I'm very bad at captcha but I didn't think I was *that* bad. </p> <p> Also, it's very vexing to lose all the text you've just crafted. Please can the captcha pages include the plain text you're trying to submit below the captcha? </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/13384 https://svn.boost.org/trac10/ticket/13384 Report #13383: Doc for is_sorted() incorrectly states the predicate defaults to std::less_equal Tue, 09 Jan 2018 11:32:09 GMT Tue, 09 Jan 2018 11:50:46 GMT <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/algorithm/cxx11/is_sorted.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span> <span class="p">()</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span> <span class="p">};</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;default : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">boolalpha</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">algorithm</span><span class="o">::</span><span class="n">is_sorted</span><span class="p">(</span> <span class="n">a</span> <span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;less : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">boolalpha</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">algorithm</span><span class="o">::</span><span class="n">is_sorted</span><span class="p">(</span> <span class="n">a</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">less</span> <span class="o">&lt;&gt;</span><span class="p">{}</span> <span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;less_equal: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">boolalpha</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">algorithm</span><span class="o">::</span><span class="n">is_sorted</span><span class="p">(</span> <span class="n">a</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">less_equal</span><span class="o">&lt;&gt;</span><span class="p">{}</span> <span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/13383 https://svn.boost.org/trac10/ticket/13383 Report #13382: Bug in polygon OR operation with collinear points Mon, 08 Jan 2018 15:14:40 GMT Thu, 10 May 2018 15:58:37 GMT <p> When OR operation is performed between 2 non-overlapping polygons that contain collinear points with the same y coordinate, the resulting set is empty. However, if collinear points are removed, the resulting set contains the 2 polygons. </p> <p> If generic polygon_set_data objects are used, the OR operation works fine. The problem appears when polygon_90_set_data objects are used in order to increase efficiency of boolean operations. </p> k.daloukas@… https://svn.boost.org/trac10/ticket/13382 https://svn.boost.org/trac10/ticket/13382 Report #13379: covered_by not implemented for (Box, MultiPolygon) Thu, 04 Jan 2018 14:27:36 GMT Thu, 14 Jun 2018 10:34:24 GMT <p> If I remember correctly, Barend mentioned in some email conversation that this should actually be implemented. </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/13379 https://svn.boost.org/trac10/ticket/13379 Report #13375: Crash with python 3.6 on Mac OS X 10.12 (Sierra) Wed, 03 Jan 2018 11:41:51 GMT Wed, 03 Jan 2018 11:41:51 GMT <p> Hello All, </p> <p> I'm experiencing a crash in boost-python with python 3.6 on OS X. </p> <p> I'm trying to wrap the open-source image processing library pink (www.pinkhq.com). This has been working well for some time with python 2.7 (on OS X, but also Linux and Windows), but I'd like to move to python 3.x </p> <p> I've successfully wrapped this library with python 3.6 on Linux, but it crashes on OS X : </p> <pre class="wiki">Process: python3.6 [98793] Path: /opt/anaconda/*/python3.6 Identifier: python3.6 Version: ??? Code Type: X86-64 (Native) Parent Process: ??? [98792] Responsible: python3.6 [98793] User ID: 501 Date/Time: 2018-01-03 12:09:43.172 +0100 OS Version: Mac OS X 10.12.6 (16G29) Report Version: 12 Anonymous UUID: 87D66E9B-D5BC-7C41-9079-8F7CB5C5E1DF Time Awake Since Boot: 240000 seconds System Integrity Protection: enabled Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x00000000000000a9 Exception Note: EXC_CORPSE_NOTIFY Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [0] VM Regions Near 0xa9: --&gt; __TEXT 000000010f87a000-000000010fb25000 [ 2732K] r-x/rwx SM=COW /opt/anaconda/*/*.6 Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 python 0x000000010fa4f28d visit_decref + 13 1 python 0x000000010f920947 tupletraverse + 55 2 python 0x000000010fa4e0f3 collect + 291 3 python 0x000000010fa4f8b6 _PyObject_GC_Alloc + 310 4 python 0x000000010f9217d5 PyTuple_New + 277 5 libboost_python3.dylib 0x0000000113664d2a boost::python::objects::function::function(boost::python::objects::py_function const&amp;, boost::python::detail::keyword const*, unsigned int) + 714 (errors.hpp:44) </pre><p> This crash seems to indicate the problem is in libboost_python ; Unfortunately I cannot do much more at this point because gdb is not allowing me to set breakpoints and I don't know why. </p> <p> However, does this ring a bell with anyone ? can anyone offer suggestions ? All the best. </p> Hugues Talbot <hugues.talbot@…> https://svn.boost.org/trac10/ticket/13375 https://svn.boost.org/trac10/ticket/13375 Report #13374: Boykov Kolmogorov warning with float Wed, 03 Jan 2018 11:22:25 GMT Wed, 03 Jan 2018 11:22:25 GMT <p> In boykov_kolmogorov_max_flow.hpp, some values put in property_map are integer : </p> <pre class="wiki">l.176 put(m_res_cap_map, from_source, 0); l.190 put(m_dist_map, current_node, 1); l.196 put(m_res_cap_map, to_sink, 0); l.202 put(m_dist_map, current_node, 1); l.208 put(m_res_cap_map, from_source, 0); l.217 put(m_dist_map, current_node, 1); l.228 put(m_dist_map, current_node, 1); </pre><p> It causes a C4244 warning in property_map/property_map.hpp (l.310) when using floating distance and floating cost. An easy way to prevent this is to patch as follow: </p> <pre class="wiki">l.176 put(m_res_cap_map, from_source, tEdgeVal(0)); l.190 put(m_dist_map, current_node, tDistanceVal(1)); l.196 put(m_res_cap_map, to_sink, tEdgeVal(0)); l.202 put(m_dist_map, current_node, tDistanceVal(1)); l.208 put(m_res_cap_map, from_source, 0); l.217 put(m_dist_map, current_node, tDistanceVal(1)); l.228 put(m_dist_map, current_node, tDistanceVal(1)); </pre><p> Compiler: VS2017 </p> cyril.novel@… https://svn.boost.org/trac10/ticket/13374 https://svn.boost.org/trac10/ticket/13374 Report #13372: Boost Preprocessing: compiler error: macro "BOOST_PP_VARIADIC_ELEM_2" requires 4 arguments, but only 2 given Mon, 01 Jan 2018 19:30:49 GMT Sat, 27 Jan 2018 09:10:21 GMT <p> The following code produces the following compiler error when compiled with gcc 7.2.0 or clang 3.8.0 </p> <pre class="wiki">error: macro "BOOST_PP_VARIADIC_ELEM_2" requires 4 arguments, but only 2 given </pre><pre class="wiki">#include &lt;boost/preprocessor.hpp&gt; #define CREATE_ENUM_ELEMENT(elementTuple) \ BOOST_PP_IF(BOOST_PP_EQUAL(BOOST_PP_TUPLE_SIZE(elementTuple), 3), \ BOOST_PP_TUPLE_ELEM(0, elementTuple) = BOOST_PP_TUPLE_ELEM(2, elementTuple), \ BOOST_PP_TUPLE_ELEM(0, elementTuple) \ ), enum class MyEnum { CREATE_ENUM_ELEMENT((El1)) }; int main() { return 0; } </pre><p> (online demo: <a class="ext-link" href="http://coliru.stacked-crooked.com/a/f01351ee7a0ca55d"><span class="icon">​</span>http://coliru.stacked-crooked.com/a/f01351ee7a0ca55d</a> ) </p> Dmitrii B <d4qcdes@…> https://svn.boost.org/trac10/ticket/13372 https://svn.boost.org/trac10/ticket/13372 Report #13369: [Windows] Cannot handle symbolic links Sat, 30 Dec 2017 07:26:05 GMT Fri, 08 Jun 2018 21:31:31 GMT <p> I wanted to port my application from Linux to Windows, but shortcut handling is not working. </p> <p> Symlink creation, resolution and detection is not possible on my Windows 10 (Version 1709). </p> <p> Tested with Boost 1.66.0 and 1.64.0. </p> <p> Compiled the Boost Libraries with MSVC (Version 19.10.25019 for x86 and x64). </p> <p> Getting the exception "boost::filesystem::create_symlink: A required privilege is not held by the client" </p> <p> Example: </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; namespace fs = boost::filesystem; int main(){ try{ fs::create_symlink("/path/to_target", "/path/to/link"); } catch(const std::exception&amp; err){ std::cerr &lt;&lt; err.what() &lt;&lt; '\n'; } } </pre><p> Also boost::fileystem::canonical() is not working for me. Tested with extensions ".lnk" and ".url" and without extension, gives me the path to the symbolic link itself (with .lnk), otherwise path not found. </p> <pre class="wiki">int main(){ fs::path path = "/path/to/shortcut"; for(const auto&amp; ext : {"", ".lnk", ".url"}){ try{ std::cout &lt;&lt; fs::canonical(path.string() + ext) &lt;&lt; '\n'; } catch(const std::exception&amp; err){ std::cerr &lt;&lt; err.what() &lt;&lt; '\n'; } } </pre><p> Also symlinks cannot be detected by fs::is_symlink() on my Windows system. </p> <pre class="wiki">int main(){ fs::path path = "/path/to/shortcut"; for(const auto&amp; ext : {"", ".lnk", ".url"}){ auto s = fs::symlink_status(path.string() + ext); std::cout &lt;&lt; (s.type() == fs::file_type::symlink_file) &lt;&lt; ',' &lt;&lt; fs::is_symlink(s) &lt;&lt; '\n'; } } </pre><p> Returns always false. </p> 0x0c0ff33.1523@… https://svn.boost.org/trac10/ticket/13369 https://svn.boost.org/trac10/ticket/13369 Report #13368: consuming_buffers.hpp: parse error in template argument list Thu, 28 Dec 2017 15:34:31 GMT Tue, 08 May 2018 10:08:21 GMT <pre class="wiki">.../boost/boost/boost/asio/detail/consuming_buffers.hpp: In member function ‘boost::asio::detail::consuming_buffers&lt;Buffer, Buffers, Buffer_Iterator&gt;::prepared_buffers_type boost::asio::detail::consuming_buffers&lt;Buffer, Buffers, Buffer_Iterator&gt;::prepare(std::size_t)’: .../boost/boost/boost/asio/detail/consuming_buffers.hpp:105:50: erreur: parse error in template argument list while (next != end &amp;&amp; max_size &gt; 0 &amp;&amp; result.count &lt; result.max_buffers) ^ </pre><p> Context: Upgrade from 1_65_1 to 1_66 </p> <ul><li>Ubuntu 16.04 LTS / g++ v 5.4.0 </li><li>CentOS 7 / g++ v 4.8.5 </li></ul> anonymous https://svn.boost.org/trac10/ticket/13368 https://svn.boost.org/trac10/ticket/13368 Report #13367: lockfree need update Tue, 26 Dec 2017 06:50:35 GMT Tue, 26 Dec 2017 06:51:51 GMT <p> The latest lockfree contains the fix: <a class="ext-link" href="https://github.com/boostorg/lockfree/commit/582b27bf0b56a64af16ceda0a275cea2c87381ad"><span class="icon">​</span>https://github.com/boostorg/lockfree/commit/582b27bf0b56a64af16ceda0a275cea2c87381ad</a>, need update the reference in boost. </p> PhoebeHui https://svn.boost.org/trac10/ticket/13367 https://svn.boost.org/trac10/ticket/13367 Report #13364: xxx please delete - it was my fault xxx Mon, 25 Dec 2017 23:52:32 GMT Tue, 26 Dec 2017 21:30:57 GMT <p> The steady_timer is working fine when it is started in the executeable. By starting the steady_timer in the dll, the timer expires immediately. I think this is a bug, isn't it? </p> anonymous https://svn.boost.org/trac10/ticket/13364 https://svn.boost.org/trac10/ticket/13364 Report #13363: locale not compatible(not compilable) with c++17 mode in VS2017 Sun, 24 Dec 2017 14:56:21 GMT Sun, 24 Dec 2017 14:56:21 GMT <p> Trying config and compile boost 1.66 with c++17 mode in vs2017 (v15.5.2), got a lot of errors in build locale lib. </p> <p> There is config for config c++17 mode for vs2017 </p> <pre class="wiki">b2 --stagedir=./stage/win32 --without-mpi --without-python --without-coroutine --build-type=complete --toolset=msvc-14.1 cxxstd=17 -j8 </pre> aleksander.matveyev@… https://svn.boost.org/trac10/ticket/13363 https://svn.boost.org/trac10/ticket/13363 Report #13361: Host boost.org using HTTPS Sun, 24 Dec 2017 13:56:12 GMT Thu, 10 May 2018 11:59:50 GMT <p> For security reasons, it would be good if all Boost websites are hosted using HTTPS so that all traffic is encrypted and authenticated. </p> anonymous https://svn.boost.org/trac10/ticket/13361 https://svn.boost.org/trac10/ticket/13361 Report #13360: std::numeric_limits<multiprecision::float128> methods fail to compile in C++11 mode Sun, 24 Dec 2017 12:37:40 GMT Thu, 28 Dec 2017 21:16:49 GMT <p> The following code compiles fine in C++03 mode, but fails in C++11 mode. This happens in boost 1.66.0, but didn't happen in 1.63.0. </p> <pre class="wiki">#include &lt;boost/multiprecision/float128.hpp&gt; int main() { std::numeric_limits&lt;boost::multiprecision::float128&gt;::min(); } </pre><p> Similar problem with some other methods — those which return without explicit construction of <code>number_type</code>. </p> <p> I'm compiling with g++ using the following command line: </p> <pre class="wiki">g++ -std=c++11 boost-test.cpp -o boost-test -fext-numeric-literals -lquadmath </pre><p> The compiler prints the following error: </p> <pre class="wiki">In file included from boost-test.cpp:1:0: /usr/include/boost/multiprecision/float128.hpp: In instantiation of ‘static std::numeric_limits&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt; &gt;::number_type std::numeric_limits&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt; &gt;::min() [with boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; std::numeric_limits&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, ExpressionTemplates&gt; &gt;::number_type = boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, (boost::multiprecision::expression_template_option)0u&gt;]’: boost-test.cpp:4:59: required from here /usr/include/boost/multiprecision/float128.hpp:645:55: error: could not convert ‘3.3621031431120935062626778173217526e-4932’ from ‘__float128’ to ‘std::numeric_limits&lt;boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, (boost::multiprecision::expression_template_option)0u&gt; &gt;::number_type {aka boost::multiprecision::number&lt;boost::multiprecision::backends::float128_backend, (boost::multiprecision::expression_template_option)0u&gt;}’ static number_type (min)() BOOST_NOEXCEPT { return 3.36210314311209350626267781732175260e-4932Q; } ^ </pre> b7.10110111@… https://svn.boost.org/trac10/ticket/13360 https://svn.boost.org/trac10/ticket/13360 Report #13359: windows_intermodule_singleton.hpp line 118, for version 1.62 throws warning error for possible loss of data Fri, 22 Dec 2017 18:10:01 GMT Thu, 10 May 2018 11:59:21 GMT <p> It happens for vs12 compiler, for windows_intermodule_singleton.hpp line 118. Fix is simple, just mask it appropriately: initial_count = boost::uint32_t(caster.addr_uint64 &amp; 0xFFFFFFFF); </p> anonymous https://svn.boost.org/trac10/ticket/13359 https://svn.boost.org/trac10/ticket/13359 Report #13358: boost::process on_exit fails when using multiple processes Fri, 22 Dec 2017 15:30:28 GMT Fri, 22 Dec 2017 20:34:26 GMT <pre class="wiki">int main() { boost::asio::io_service ios; boost::asio::io_service::work working(ios); proc::child c1("/bin/sleep 1", ios, proc::on_exit=[](int exit, const std::error_code&amp; ec_in){std::cout&lt;&lt;"11111"&lt;&lt;std::endl;}); proc::child c2("/bin/sleep 4", ios, proc::on_exit=[](int exit, const std::error_code&amp; ec_in){std::cout&lt;&lt;"44444"&lt;&lt;std::endl;}); proc::child c3("/bin/sleep 2", ios, proc::on_exit=[](int exit, const std::error_code&amp; ec_in){std::cout&lt;&lt;"22222"&lt;&lt;std::endl;}); ios.run(); return 0; } </pre><p> prints </p> <pre class="wiki">22222 44444 11111 </pre><p> while it should prints 11111, 22222 and then 44444. However, 22222 is printed after 1 second, 44444 after 2s, and 11111 after 4s. </p> <p> The same error happen if you use: </p> <pre class="wiki"> boost::process::async_system(ios, [](boost::system::error_code, int){std::cout &lt;&lt; "11111" &lt;&lt; std::endl;}, "/bin/sleep 1"); </pre><p> This was observed on an up-to-date Archlinux (as of 2017-12-22) with gcc 7.2.1 and clang 5.0.0. </p> david.glesser@… https://svn.boost.org/trac10/ticket/13358 https://svn.boost.org/trac10/ticket/13358 Report #13357: boost::iterator_range<boost::counting_iterator<uint64_t>>::back() returns reference to temporary Fri, 22 Dec 2017 14:00:47 GMT Fri, 22 Dec 2017 14:02:04 GMT <p> boost::iterator_range&lt;boost::counting_iterator&lt;uint64_t&gt;&gt;::back() returns reference to temporary </p> <p> it's created by </p> <pre class="wiki">using RangeRawType = std::uint64_t; inline Range makeRange( RangeRawType begin, RangeRawType end = std::numeric_limits&lt;RangeRawType&gt;::max()) { return boost::counting_range&lt;RangeRawType&gt;(begin, end); } </pre><p> After investigation code of back() it probably returns reference to temporary value: </p> <pre class="wiki"> reference back() const { BOOST_ASSERT(!this-&gt;empty()); return *boost::prior(this-&gt;m_End); } </pre><p> So it returns just a junk (or rather this reference points to some random data). </p> <p> Code is the same in the newest boost (1.66 at time of writing). </p> Mikołaj Milej <mmilej@…> https://svn.boost.org/trac10/ticket/13357 https://svn.boost.org/trac10/ticket/13357 Report #13354: xml_iarchive destructor calls abort() Wed, 20 Dec 2017 13:52:47 GMT Sat, 17 Feb 2018 15:31:08 GMT <p> In the following Unit Test from VS2017 15.5.2 with Boost 1.66.0 from vcpkg, boost::archive::xml_iarchive() is successfully used to load an integer. When it goes out of scope, its destructor calls abort(). </p> <pre class="wiki">#include "stdafx.h" #include "CppUnitTest.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; #include &lt;boost/archive/archive_exception.hpp&gt; #include &lt;boost/serialization/variant.hpp&gt; #include &lt;boost/archive/xml_iarchive.hpp&gt; #include &lt;boost/archive/xml_oarchive.hpp&gt; #include &lt;boost/serialization/split_member.hpp&gt; namespace UtilityLibTest { class XmlArchiveTest { public: XmlArchiveTest() { m_value = 4; } int Value() const { return m_value; } void Value(const int v) { m_value = v; } private: friend class boost::serialization::access; void load(boost::archive::xml_iarchive &amp; ar, unsigned int version) { ar &amp; BOOST_SERIALIZATION_NVP(m_value); } void save(boost::archive::xml_oarchive &amp; ar, unsigned int version) const { ar &amp; BOOST_SERIALIZATION_NVP(m_value); } BOOST_SERIALIZATION_SPLIT_MEMBER() protected: int m_value; }; TEST_CLASS(UnitTest1) { public: TEST_METHOD(XmlArchive_SaveLoad) { XmlArchiveTest store; // save block std::stringstream xml(std::stringstream::out); boost::archive::xml_oarchive archive(xml); archive &amp; BOOST_SERIALIZATION_NVP(store); xml.flush(); auto xml1 = xml.str(); store.Value(234); // load block std::stringstream xml2; xml2 &lt;&lt; xml1; boost::archive::xml_iarchive archive2(xml2); archive2 &amp; BOOST_SERIALIZATION_NVP(store); Assert::AreEqual(4, store.Value(), L"4 != store.Value"); } }; } </pre><p> Call stack </p> <pre class="wiki">&gt; ucrtbased.dll!issue_debug_notification(const wchar_t * const message) Line 28 C++ Non-user code. Symbols loaded. ucrtbased.dll!__acrt_report_runtime_error(const wchar_t * message) Line 154 C++ Non-user code. Symbols loaded. ucrtbased.dll!abort() Line 51 C++ Non-user code. Symbols loaded. ucrtbased.dll!terminate() Line 59 C++ Non-user code. Symbols loaded. vcruntime140d.dll!FindHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, _CONTEXT * pContext, void * pDC, const _s_FuncInfo * pFuncInfo, unsigned char recursive, int CatchDepth, EHRegistrationNode * pMarkerRN) Line 627 C++ Non-user code. Symbols loaded. vcruntime140d.dll!__InternalCxxFrameHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, _CONTEXT * pContext, void * pDC, const _s_FuncInfo * pFuncInfo, int CatchDepth, EHRegistrationNode * pMarkerRN, unsigned char recursive) Line 347 C++ Non-user code. Symbols loaded. vcruntime140d.dll!__CxxFrameHandler(EHExceptionRecord * pExcept, EHRegistrationNode * pRN, void * pContext, void * pDC) Line 219 C++ Non-user code. Symbols loaded. ntdll.dll!ExecuteHandler2@20() Unknown Non-user code. Symbols loaded. ntdll.dll!ExecuteHandler@20() Unknown Non-user code. Symbols loaded. ntdll.dll!_KiUserExceptionDispatcher@8() Unknown Non-user code. Symbols loaded. KernelBase.dll!_RaiseException@16() Unknown Non-user code. Symbols loaded. vcruntime140d.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 136 C++ Non-user code. Symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fe82f45() Unknown No symbols loaded. [Frames below may be incorrect and/or missing, no symbols loaded for boost_serialization-vc141-mt-gd-x32-1_66.dll] Annotated Frame boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec45ad() Unknown No symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec72fc() Unknown No symbols loaded. boost_serialization-vc141-mt-gd-x32-1_66.dll!0fec7d33() Unknown No symbols loaded. UnitTestsUtilityLib.dll!boost::archive::xml_iarchive::~xml_iarchive() Line 129 C++ Symbols loaded. UnitTestsUtilityLib.dll!UtilityLibTest::UnitTest1::XmlArchive_SaveLoad() Line 72 C++ Symbols loaded. </pre> anonymous https://svn.boost.org/trac10/ticket/13354 https://svn.boost.org/trac10/ticket/13354 Report #13353: Distance segment-box wrong result for spherical CS Wed, 20 Dec 2017 13:07:53 GMT Wed, 20 Dec 2017 13:07:53 GMT <p> The distance algorithm for segment-box for spherical CS does not treat correctly some cases. For example when the segment endpoints are not inside the box but the segment intersects it (because of curvature, segment follow a geodesic/great circle but box horizontal segment not). An example code follows: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; namespace bg = boost::geometry; template &lt;typename point, typename CT&gt; void test_all_geometry_types(CT radius_multiplier) { bg::model::segment&lt;point&gt; s; bg::model::box&lt;point&gt; b; std::cout.precision(15); { bg::read_wkt("SEGMENT(10 9.99, 20 9.99)", s); bg::read_wkt("BOX(10 10, 20 20)", b); std::cout &lt;&lt; "dist=" &lt;&lt; bg::distance(b, s) * radius_multiplier &lt;&lt; std::endl; std::cout &lt;&lt; "disj=" &lt;&lt; bg::disjoint(b, s) &lt;&lt; std::endl; } { bg::read_wkt("SEGMENT(10 10, 20 10)", s); bg::read_wkt("BOX(10 10, 20 20)", b); std::cout &lt;&lt; "dist=" &lt;&lt; bg::distance(b, s) * radius_multiplier &lt;&lt; std::endl; std::cout &lt;&lt; "disj=" &lt;&lt; bg::disjoint(b, s) &lt;&lt; std::endl; } } int main() { typedef double CT; std::cout &lt;&lt; "Cartesian" &lt;&lt; std::endl; typedef bg::model::point&lt;CT, 2, bg::cs::cartesian &gt; cpoint; test_all_geometry_types&lt;cpoint&gt;(1); std::cout &lt;&lt; "Spherical" &lt;&lt; std::endl; typedef bg::model::point&lt;CT, 2, bg::cs::spherical_equatorial&lt;bg::degree&gt; &gt; spoint; test_all_geometry_types&lt;spoint&gt;(bg::formula::mean_radius&lt;CT&gt;(bg::srs::spheroid&lt;CT&gt;())); return 0; } </pre><p> the output in my system (i.e. gcc version 4.8.5 (Ubuntu 4.8.5-2ubuntu1~14.04.1)) is </p> <pre class="wiki">Cartesian dist=0.00999999999999979 disj=1 dist=0 disj=0 Spherical dist=63710.0877141492 disj=0 dist=0 disj=0 </pre><p> the case where dist=63710.0877141492 and disj=0 is wrong since the objects intersect but the distance is not 0. </p> Vissarion Fisikopoulos <fisikop@…> https://svn.boost.org/trac10/ticket/13353 https://svn.boost.org/trac10/ticket/13353 Report #13352: 1.66 i686-w64-mingw32-g++-win32 Tue, 19 Dec 2017 15:19:04 GMT Tue, 13 Feb 2018 21:18:28 GMT <p> i'm using boost 1.65.1 for a project in which the new beast framework v124 is used as an internal webserver. building using gcc on linux and gcc-mingw targeting win32 works in this setup. </p> <p> today, i've tried upgrade to boost 1.66, skipping the need for the external beast v124 source. still, gcc+linux build works, but my gcc-mingw build fails with alot of errors about the use of futures in asio. </p> <p> attached is a stripped output of the errors. </p> Martin Kjær Jørgensen <mkj@…> https://svn.boost.org/trac10/ticket/13352 https://svn.boost.org/trac10/ticket/13352 Report #13350: build error non_blocking_io Tue, 19 Dec 2017 10:11:08 GMT Tue, 19 Dec 2017 10:11:08 GMT <p> build error, no find boost::asio::socket_base::non_blocking_io </p> <p> error C2039: “non_blocking_io”: 不是“boost::asio::socket_base”的成员 </p> iewj <iewj@…> https://svn.boost.org/trac10/ticket/13350 https://svn.boost.org/trac10/ticket/13350 Report #13349: sregex not thread-safe when copied Mon, 18 Dec 2017 15:44:34 GMT Mon, 18 Dec 2017 15:44:34 GMT <p> The following code does fail about every other execution: </p> <div class="wiki-code"><div class="code"><pre> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/xpressive/xpressive.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/thread.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">xpressive</span><span class="p">;</span> <span class="k">struct</span> <span class="n">MyRegexContainer</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">xpressive</span><span class="o">::</span><span class="n">sregex</span> <span class="n">myPatterns</span><span class="p">[</span><span class="mi">20</span><span class="p">];</span> <span class="n">MyRegexContainer</span><span class="p">()</span> <span class="p">{</span> <span class="n">myPatterns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">sregex</span><span class="o">::</span><span class="n">compile</span><span class="p">(</span><span class="s">&quot;[-]?[0-9]+</span><span class="se">\\</span><span class="s">.[0-9]{2}&quot;</span><span class="p">);</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">20</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="n">myPatterns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">myPatterns</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span> <span class="p">}</span> <span class="p">}</span> <span class="kt">void</span> <span class="n">match</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">wert</span><span class="p">,</span> <span class="kt">int</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">regex_match</span><span class="p">(</span><span class="n">wert</span><span class="p">,</span> <span class="n">myPatterns</span><span class="p">[</span><span class="n">index</span><span class="p">])){</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Index &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">index</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; did not match value &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">wert</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">};</span> <span class="k">namespace</span> <span class="p">{</span> <span class="kt">void</span> <span class="n">testSREGEXMultithreadedTASK</span><span class="p">()</span> <span class="p">{</span> <span class="k">static</span> <span class="k">const</span> <span class="n">MyRegexContainer</span> <span class="n">a</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">10000</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="n">a</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="s">&quot;33.00&quot;</span><span class="p">,</span> <span class="n">i</span><span class="o">%</span><span class="mi">20</span><span class="p">);</span> <span class="n">a</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="s">&quot;1.11&quot;</span><span class="p">,</span> <span class="n">i</span><span class="o">%</span><span class="mi">20</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span> <span class="cp">#ifdef BOOST_DISABLE_THREADS</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;BOOST_DISABLE_THREADS == TRUE&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">wert</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="cp">#endif</span> <span class="n">boost</span><span class="o">::</span><span class="n">thread_group</span> <span class="n">tgroup</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="n">tgroup</span><span class="p">.</span><span class="n">create_thread</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">testSREGEXMultithreadedTASK</span><span class="p">));</span> <span class="p">}</span> <span class="n">tgroup</span><span class="p">.</span><span class="n">join_all</span><span class="p">();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> wave@… https://svn.boost.org/trac10/ticket/13349 https://svn.boost.org/trac10/ticket/13349 Report #13346: SFINAE-friendly range_value Sun, 17 Dec 2017 19:53:47 GMT Sun, 17 Dec 2017 19:53:47 GMT <p> This code compiles: </p> <pre class="wiki">#include &lt;boost/range/value_type.hpp&gt; #include &lt;utility&gt; #include &lt;iterator&gt; template&lt;class T&gt; void f(std::pair&lt;T,T&gt;){} template&lt;class T&gt; auto f(T) -&gt; typename std::iterator_traits&lt;typename boost::range_iterator&lt;T&gt;::type&gt;::value_type {} int main(){ std::pair&lt;int,int&gt; p; f(p); } </pre><p> However, if I change the return type to the more readable <code>typename boost::range_value&lt;T&gt;::type</code>, it now fails to compile because the broken typedef in iterator_value is not in the immediate context. The standard noticed that this was useful and made iterator_traits SFINAE-friendly, it would be nice if boost could do the same for the various range meta-functions. </p> marc.glisse@… https://svn.boost.org/trac10/ticket/13346 https://svn.boost.org/trac10/ticket/13346 Report #13345: Possible misses of comma operator Sun, 17 Dec 2017 14:08:58 GMT Thu, 10 May 2018 19:56:17 GMT <p> When compiling my project with boost 1.65.1 i got the warning: "Possible misses of comma operator here" for a few files. Please use brackets to avoid the warning. </p> <p> file/linenumber </p> <p> array.hpp/186 </p> <p> feed_args.hpp/56 </p> <p> os_file_functions.hpp/546 </p> <p> macOS: 10.13.2 Xcode: 9.2 (9C40b) </p> dev@… https://svn.boost.org/trac10/ticket/13345 https://svn.boost.org/trac10/ticket/13345 Report #13342: Support out-of-tree builds Thu, 14 Dec 2017 10:46:55 GMT Thu, 14 Dec 2017 10:46:55 GMT <p> Currently when you run <code>./boostrap.sh</code> it builds b2 in the source tree. There doesn't seem to be any way to change this. </p> <p> If possible it would be nice to support fully out-of-source trees so that you can do a build without modifying the source tree at all. </p> <p> One way to do this would be to switch from b2 to CMake (two birds etc). </p> tdhutt@… https://svn.boost.org/trac10/ticket/13342 https://svn.boost.org/trac10/ticket/13342 Report #13340: ptr_vector::c_array is not compiling when boost::nullable is used. Thu, 14 Dec 2017 10:15:13 GMT Thu, 14 Dec 2017 10:15:13 GMT <p> Hi, </p> <p> Using c_array() when nullable is in interface, triggers compile error. Fallowing code is not compiling. </p> <pre class="wiki">boost::ptr_vector&lt;boost::nullable&lt;int&gt;&gt; p; p.c_array(); //compile error </pre><p> It looks like inside c_array reinterpret_cast should to <code>value_type*</code> not <code>T**</code>. </p> <pre class="wiki">T** res = reinterpret_cast&lt;T**&gt;( &amp;this-&gt;begin().base()[0] ); </pre> przemek.wos@… https://svn.boost.org/trac10/ticket/13340 https://svn.boost.org/trac10/ticket/13340 Report #13339: boost::filesystem segfaults under simple use... Thu, 14 Dec 2017 00:58:54 GMT Thu, 14 Dec 2017 00:58:54 GMT <p> Centos - 7 3.10.0-693.el7.x86_64 devtools-6 installed (g++ 6.3.1) Attempted using Boost 1_65_1 Failed Segfault Attempted using Boost 1_54_0 Passed </p> <p> Simple program... Statically linked after building boost. #include &lt;boost/filesystem.hpp&gt; #include &lt;iostream&gt; </p> <p> int main() { </p> <blockquote> <p> boost::filesystem::path path("/tmp"); if ( boost::filesystem::exists( path ) ) { </p> </blockquote> <p> <em> std::cout &lt;&lt; "TEST"; </em> } else { <em> std::cout &lt;&lt; "TEST2"; </em></p> <blockquote> <p> } return 0; </p> </blockquote> <p> } </p> <p> Segfaults on the "boost::filesystem::exists" </p> Robert H Whitcher <robert@…> https://svn.boost.org/trac10/ticket/13339 https://svn.boost.org/trac10/ticket/13339 Report #13338: checked_delete问题 Wed, 13 Dec 2017 08:50:05 GMT Wed, 13 Dec 2017 08:50:05 GMT <p> 环境: Visual studio 2017 boost库编译选项: msvc141,multi,win64,debug,shared demo工程设置: debug, win32 </p> <p> 问题源: 《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()程序结束时才报一个异常错误。 很奇怪的地方啊!看来是编译器工作方式的不同导致的吧。。。 </p> <p> code like this: </p> <p> <em> deleter.h class to_be_deleted; class deleter { public: </em></p> <blockquote> <p> void delete_it(to_be_deleted* p); void do_it(to_be_deleted* p); </p> </blockquote> <p> }; <em> deleter.cpp </em>#include "deleter.h" #include "boost/checked_delete.hpp" void deleter::delete_it(to_be_deleted* p) { </p> <blockquote> <p> delete p; </p> </blockquote> <p> } void deleter::do_it(to_be_deleted* p) { </p> <blockquote> <p> boost::checked_delete(p); <em> typedef char type_must_be_complete[sizeof(T)]; 所有代码放入一个文件,这句居然能编译通过?? </em></p> </blockquote> <p> } <em> to_be_deleted.h #include &lt;iostream&gt; class to_be_deleted { public: </em></p> <blockquote> <p> ~to_be_deleted() { </p> <blockquote> <p> std::cout &lt;&lt; </p> <blockquote> <p> "I'd like to say important things here, please."; </p> </blockquote> </blockquote> <p> } </p> </blockquote> <p> }; <em> Test application </em>#include "deleter.h" <em>#include "to_be_deleted.h" int main() { </em></p> <blockquote> <p> to_be_deleted* p = new to_be_deleted; deleter d; d.delete_it(p); d.do_it(p); </p> </blockquote> <p> } </p> linzhongzi@… https://svn.boost.org/trac10/ticket/13338 https://svn.boost.org/trac10/ticket/13338 Report #13337: io_service::stop() behavior on MSVC contradicts documentation Tue, 12 Dec 2017 11:10:01 GMT Tue, 12 Dec 2017 11:10:39 GMT <p> The io_service::stop() documentation says: </p> <blockquote class="citation"> <blockquote> <p> [...] All invocations of this run() or run_one() member functions should return as soon as possible [...] </p> </blockquote> </blockquote> <p> This is the behavior observed on GCC but not on MSVC. </p> <p> Reproducer code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/asio.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;thread&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="o">::</span><span class="n">chrono_literals</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">io_service</span> <span class="n">s</span><span class="p">;</span> <span class="n">s</span><span class="p">.</span><span class="n">post</span><span class="p">([]</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">sleep_for</span><span class="p">(</span><span class="mi">5</span><span class="n">ms</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">});</span> <span class="n">s</span><span class="p">.</span><span class="n">post</span><span class="p">([]</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">sleep_for</span><span class="p">(</span><span class="mi">5</span><span class="n">ms</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;2</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">});</span> <span class="n">s</span><span class="p">.</span><span class="n">post</span><span class="p">([]</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">sleep_for</span><span class="p">(</span><span class="mi">5</span><span class="n">ms</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;3</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">});</span> <span class="n">std</span><span class="o">::</span><span class="kr">thread</span> <span class="n">th</span><span class="p">([</span><span class="o">&amp;</span><span class="p">]</span> <span class="p">{</span> <span class="n">s</span><span class="p">.</span><span class="n">run</span><span class="p">();</span> <span class="p">});</span> <span class="n">std</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">sleep_for</span><span class="p">(</span><span class="mi">1</span><span class="n">ms</span><span class="p">);</span> <span class="n">s</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span> <span class="n">th</span><span class="p">.</span><span class="n">join</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> This prints "1" on <a class="ext-link" href="https://wandbox.org/permlink/N02wy78yFGX1eJRl"><span class="icon">​</span>GCC</a> but "1 2 3" on <a class="ext-link" href="http://rextester.com/FHNW43260"><span class="icon">​</span>MSVC</a> </p> <p> This bug was concretized by an Stack Overflow user while he investigated <a class="new ticket" href="https://svn.boost.org/trac10/ticket/13317" title="#13317: Bugs: io_service behaviour difference between ubuntu and msvc-14 (new)">#13317</a>. See <a class="ext-link" href="https://stackoverflow.com/a/47733861/4999407"><span class="icon">​</span>his answer</a> for more information. </p> Diego Barrios Romero <eldruin@…> https://svn.boost.org/trac10/ticket/13337 https://svn.boost.org/trac10/ticket/13337 Report #13336: vs2013 build my project with so many boost header errors Tue, 12 Dec 2017 09:39:16 GMT Thu, 10 May 2018 11:10:56 GMT <p> 错误 1809 error C2628: “boost::mpl::intunsigned”后面接“char”是非法的(是否忘记了“;”?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 43 1 libccm_cppbase.a 错误 1810 error C2226: 语法错误 : 意外的“boost::mpl::intunsigned”类型 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1811 error C2143: 语法错误 : 缺少“;”(在“{”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1812 error C2447: “{”: 缺少函数标题(是否是老式的形式表?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 1813 error C2039: “intunsigned”: 不是“boost::mpl”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1814 error C2144: 语法错误:“char”的前面应有“;” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1816 error C2143: 语法错误 : 缺少“;”(在“&lt;”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1817 error C2988: 不可识别的模板声明/定义 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1818 error C2059: 语法错误:“&lt;” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1819 error C2039: “value”: 不是“`global namespace'”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 1820 error C2143: 语法错误 : 缺少“;”(在“}”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 88 1 libccm_cppbase.a 错误 1821 error C2143: 语法错误 : 缺少“;”(在“:”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 1822 error C2334: “:”的前面有意外标记;跳过明显的函数体 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 1823 error C2039: “type_info”: 不是“boost::typeindex::stl_type_index”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 116 1 libccm_cppbase.a 错误 1824 error C2059: 语法错误:“return” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 1825 error C2238: 意外的标记位于“;”之前 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 1826 error C2628: “boost::typeindex::stl_type_index”后面接“char”是非法的(是否忘记了“;”?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1827 error C2039: “raw_name”: 不是“boost::typeindex::stl_type_index”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1828 error C2270: “raw_name”: 非成员函数上不允许修饰符 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 1829 error C2065: “data_”: 未声明的标识符 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 123 1 libccm_cppbase.a 错误 1830 error C2509: “name”: 成员函数没有在“boost::typeindex::stl_type_index”中声明 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 1831 error C1903: 无法从以前的错误中恢复;正在停止编译 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 2732 error C2628: “boost::mpl::intunsigned”后面接“char”是非法的(是否忘记了“;”?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 43 1 libccm_cppbase.a 错误 2733 error C2226: 语法错误 : 意外的“boost::mpl::intunsigned”类型 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2734 error C2143: 语法错误 : 缺少“;”(在“{”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2735 error C2447: “{”: 缺少函数标题(是否是老式的形式表?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 44 1 libccm_cppbase.a 错误 2736 error C2039: “intunsigned”: 不是“boost::mpl”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2737 error C2144: 语法错误:“char”的前面应有“;” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2739 error C2143: 语法错误 : 缺少“;”(在“&lt;”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2740 error C2988: 不可识别的模板声明/定义 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2741 error C2059: 语法错误:“&lt;” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2742 error C2039: “value”: 不是“`global namespace'”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 85 1 libccm_cppbase.a 错误 2743 error C2143: 语法错误 : 缺少“;”(在“}”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\mpl\aux_\integral_wrapper.hpp 88 1 libccm_cppbase.a 错误 2744 error C2143: 语法错误 : 缺少“;”(在“:”的前面) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 2745 error C2334: “:”的前面有意外标记;跳过明显的函数体 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 88 1 libccm_cppbase.a 错误 2746 error C2039: “type_info”: 不是“boost::typeindex::stl_type_index”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 116 1 libccm_cppbase.a 错误 2747 error C2059: 语法错误:“return” D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 2748 error C2238: 意外的标记位于“;”之前 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 117 1 libccm_cppbase.a 错误 2749 error C2628: “boost::typeindex::stl_type_index”后面接“char”是非法的(是否忘记了“;”?) D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2750 error C2039: “raw_name”: 不是“boost::typeindex::stl_type_index”的成员 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2751 error C2270: “raw_name”: 非成员函数上不允许修饰符 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 121 1 libccm_cppbase.a 错误 2752 error C2065: “data_”: 未声明的标识符 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 123 1 libccm_cppbase.a 错误 2753 error C2509: “name”: 成员函数没有在“boost::typeindex::stl_type_index”中声明 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a 错误 2754 error C1903: 无法从以前的错误中恢复;正在停止编译 D:\<a class="missing wiki">MediaService</a>\external\boost_1_66_0\boost\type_index\stl_type_index.hpp 129 1 libccm_cppbase.a </p> anonymous https://svn.boost.org/trac10/ticket/13336 https://svn.boost.org/trac10/ticket/13336 Report #13335: When using unix domain socket (boost::asio::local::stream_protocol), synchronous write may not respond sometimes on macOS Mon, 11 Dec 2017 06:48:39 GMT Mon, 11 Dec 2017 06:48:39 GMT <p> In very intermittent situations, synchronous write does not wake up in the following situations: </p> <ol><li>The server application uses a unix domain socket and accepts and reads asynchronously. </li><li>The client application uses a unix domain socket, and there is a thread that performs synchronous write repeatedly. Disconnect and reconnect at any time. </li></ol><p> There is no issue when checking on Windows / Mac with tcp socket. UDS (boost::asio::local::stream_protocol) has issue when checking on Mac. </p> <p> When testing with boost library 1.62.0 and 1.65.0 in macOS 10.12 environment, I confirmed that an issue occurred. </p> <p> The source code of the function with no response is as follows. </p> <pre class="wiki">int poll_write (socket_type s, state_type state, boost :: system :: error_code &amp; ec) {   if (s == invalid_socket)   {     ec = boost :: asio :: error :: bad_descriptor;     return socket_error_retval;   } #if defined (BOOST_ASIO_WINDOWS) \   || defined (__ CYGWIN__) \   || defined (__ SYMBIAN32__) ... #else // defined (BOOST_ASIO_WINDOWS)       // || defined (__ CYGWIN__)       // || defined (__ SYMBIAN32__)   pollfd fds;   fds.fd = s;   FDS.Events = POLLOUT;   FDS.revents = 0;   int timeout = (state &amp; user_set_non_blocking)? 0: -1;   clear_last_error ();   int result = error_wrapper (:: poll (&amp; fds, 1, timeout), ec); //!!! ::poll is not wakeup even if socket cancelled and closed #endif // defined (BOOST_ASIO_WINDOWS)        // || defined (__ CYGWIN__)        // || defined (__ SYMBIAN32__) ... } </pre><p> Attached test project. (xcode 8.3 project) </p> <p> The following settings should be changed as appropriate. </p> <ul><li>Modify the "Link Binary With Libraries" of "Build Phases" as appropriate for both server / client projects. </li><li>Modify the "Header Search Paths" and "Library Search Path" of the Build Settings as appropriate for both server / client projects. </li></ul><p> I do not speak English well so I used Google translation. Therefore, the contents may be awkward. I hope you understand. And, I hope this issue is resolved. </p> <p> <em>Note. I used the compiled library. Compilation builds version 1.65.0 using the ofxOSXBoost (on <a class="missing wiki">GitHub</a>) script (build-libc ++ withBitcode).</em> </p> seungrye@… https://svn.boost.org/trac10/ticket/13335 https://svn.boost.org/trac10/ticket/13335 Report #13334: MSVC ARM64 Fri, 08 Dec 2017 19:16:56 GMT Fri, 08 Dec 2017 19:16:56 GMT <p> Visual Studio 2017 recently gained support for the ARM64 architecture (/MACHINE:ARM64), which has desktop, phone and store APIs. </p> <p> It would be nice if this were supported as a target. </p> Simon Richter <Simon.Richter@…> https://svn.boost.org/trac10/ticket/13334 https://svn.boost.org/trac10/ticket/13334 Report #13333: Child processes started with boost::process have incorrect argv if executable path contains spaces Fri, 08 Dec 2017 16:54:21 GMT Sun, 04 Mar 2018 19:24:18 GMT <p> If an executable to start has spaces in its path, the process started with either boost::process::child or boost::process::system will have a strange argv. Specifically, the segments of the executable's path will be individual elements in the argv array. </p> <p> To demonstrate this problem, the following program dumps argv: </p> <pre class="wiki"> #include &lt;iostream&gt; int main(int argc, char* argv[]) { // Dump the command line arguments. std::cout &lt;&lt; argc &lt;&lt; std::endl; for (int i = 0; i &lt; argc; ++i) std::cout &lt;&lt; argv[i] &lt;&lt; std::endl; return 0; } </pre><p> Compile this and place the resulting <a class="missing wiki">DumpCmdLine</a>.exe in "c:\dir with space\" and "c:\dirwithoutspace\". </p> <p> The following program runs this executable using boost::process, and demonstrates the problem: </p> <pre class="wiki">#include "stdafx.h" #include &lt;boost/process.hpp&gt; #include &lt;boost/filesystem.hpp&gt; int main() { boost::filesystem::path toRun{ "c:\\dir with space\\DumpCmdLine.exe" }; auto child = boost::process::child(toRun, L"realArgument"); child.wait(); return 0; } </pre><p> The child process argv contains 4 elements, "c:\dir", "with", "space\<a class="missing wiki">DumpCmdLine</a>.exe", and "realArgument". </p> <p> When there is no space in the executable path, the child process argv contains 2 elements: "c:\dirwithoutspace\<a class="missing wiki">DumpCmdLine</a>.exe", and "realArgument". </p> <p> When <a class="missing wiki">DumpCmdLine</a>.exe is called from the command line, it receives the same 2 arguments. The command line I used is: </p> <pre class="wiki">"c:\dir with space\DumpCmdLine.exe" realArgument </pre><p> This was observed on a Windows 10 system, 64 bit build both debug and release configurations. Visual Studio 2017 (15.4.3) was used to build. </p> Jonathan Jaloszynski <Jon_Jaloszynski@…> https://svn.boost.org/trac10/ticket/13333 https://svn.boost.org/trac10/ticket/13333 Report #13332: Boost 1.65.1 seems to be missing boost graph fixes from 1.64 Fri, 08 Dec 2017 11:02:48 GMT Thu, 10 May 2018 14:17:11 GMT <p> I am getting compile errors using VS2017 in boost 1.65.1 </p> <p> boost\graph\named_function_params.hpp </p> <pre class="wiki">template &lt;class Tag, typename Args&gt; inline const typename lookup_named_param_def&lt;Tag, Args, param_not_found&gt;::type&amp; get_param(const Args&amp; p, Tag) { return lookup_named_param_def&lt;Tag, Args, param_not_found&gt;::get(p, param_not_found()); } </pre><p> This was fixed in 1.64 apparently. </p> <p> #if _MSC_VER &gt;=1900 #pragma warning( push ) #pragma warning( disable : 4172 ) #endif template &lt;class Tag, typename Args&gt; inline const typename lookup_named_param_def&lt;Tag, Args, param_not_found&gt;::type&amp; </p> <blockquote> <p> get_param(const Args&amp; p, Tag) { </p> </blockquote> <p> return lookup_named_param_def&lt;Tag, Args, param_not_found&gt;::get(p, param_not_found()); } #if _MSC_VER &gt;= 1900 #pragma warning( pop ) #endif </p> <p> I found another example of this: </p> <pre class="wiki">explicit two_bit_color_map(std::size_t n, const IndexMap&amp; index = IndexMap()) : n(n), index(index), data(new unsigned char[(n + elements_per_char - 1) / elements_per_char]) { // Fill to white std::fill(data.get(), data.get() + (n + elements_per_char - 1) / elements_per_char, 0); } </pre><p> in this case the int 0 being passed to std::fill needs to be casted to a char to compile. Also fixed in 1.64. Has something gone wrong here in the 1.65.1 release? </p> jckooijman@… https://svn.boost.org/trac10/ticket/13332 https://svn.boost.org/trac10/ticket/13332 Report #13330: IMM架构输入法的ime中引入filesystem模块,导致xp上无法加载ime Thu, 07 Dec 2017 10:35:24 GMT Thu, 07 Dec 2017 10:35:24 GMT <p> 在输入法工程中引入filesystem模块(#include &lt;boost/filesystem.hpp&gt;),导致生成的ime在xp上加载失败。 </p> <p> 开发IDE环境: vs2015 14.0.25431.01 update3 编译工程的平台工具集:v140_xp 运行库:/MTd 输出文件类型:dll VERSION:VFT_DRV VFT2_DRV_INPUTMETHOD </p> <p> 运行环境: windowsXP sp3 </p> 376098946@… https://svn.boost.org/trac10/ticket/13330 https://svn.boost.org/trac10/ticket/13330 Report #13329: BOOST_ASIO_ENABLE_CANCELIO must be globally defined Wed, 06 Dec 2017 19:23:40 GMT Wed, 06 Dec 2017 19:23:40 GMT <p> Today I spent several hours debugging a problem, that was caused by <code>#define BOOST_ASIO_ENABLE_CANCELIO</code> </p> <p> I added this #define only in those source files, where I had compiler warnings about cancel() failing on windows XP. </p> <p> This resulted in async_connect() failing. </p> <p> The problem was in boost::Casio::Detail::win_iocp_socket_service::async_accept(): </p> <div class="wiki-code"><div class="code"><pre> <span class="n">start_accept_op</span><span class="p">(</span><span class="n">impl</span><span class="p">,</span> <span class="n">peer</span><span class="p">.</span><span class="n">is_open</span><span class="p">(),</span> <span class="n">p</span><span class="p">.</span><span class="n">p</span><span class="o">-&gt;</span><span class="n">new_socket</span><span class="p">(),</span> <span class="n">impl</span><span class="p">.</span><span class="n">protocol_</span><span class="p">.</span><span class="n">family</span><span class="p">(),</span> <span class="n">impl</span><span class="p">.</span><span class="n">protocol_</span><span class="p">.</span><span class="n">type</span><span class="p">(),</span> <span class="n">impl</span><span class="p">.</span><span class="n">protocol_</span><span class="p">.</span><span class="n">protocol</span><span class="p">(),</span> <span class="n">p</span><span class="p">.</span><span class="n">p</span><span class="o">-&gt;</span><span class="n">output_buffer</span><span class="p">(),</span> <span class="n">p</span><span class="p">.</span><span class="n">p</span><span class="o">-&gt;</span><span class="n">address_length</span><span class="p">(),</span> <span class="n">p</span><span class="p">.</span><span class="n">p</span><span class="p">);</span> </pre></div></div><p> When I inspected the value if impl.protocol_.family_, the correct value was shown in the debugger. But when I stepped into impl.protocol_.family(), an incorrect value was shown. </p> <p> I found out, that in impl.protocol_.family(), the member family_ had a different address, then in the calling method async_accept(). </p> <p> This seems to be caused by the following code in boost::asio::detail::win_iocp_socket_service_base: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#if defined(BOOST_ASIO_ENABLE_CANCELIO)</span> <span class="c1">// The ID of the thread from which it is safe to cancel asynchronous</span> <span class="c1">// operations. 0 means no asynchronous operations have been started yet.</span> <span class="c1">// ~0 means asynchronous operations have been started from more than one</span> <span class="c1">// thread, and cancellation is not supported for the socket.</span> <span class="n">DWORD</span> <span class="n">safe_cancellation_thread_id_</span><span class="p">;</span> <span class="cp">#endif </span><span class="c1">// defined(BOOST_ASIO_ENABLE_CANCELIO)</span> </pre></div></div><p> This makes the size of this class (and therefore the offsets of all member variables of derived classes depend on wether BOOST_ASIO_ENABLE_CANCELIO is defined or not. </p> <p> This only works, if BOOST_ASIO_ENABLE_CANCELIO is either defined or not in <strong>all</strong> sources, #include'ing boost/asio.hpp. </p> <p> If it is only #define'ed in those source files, where the compiler emits the warning about cancel() failing on windows XP, this problem may occur. </p> <p> I was not able to find any hint about this fact in the documentation of boost asio. </p> <p> I would just unconditionally declare the member variable safe_cancellation_thread_id_. I am no sure, whether this might trigger compiler warnings about an unused or uninitialized variable, but it should be possible to suppress these warnings. </p> Mario Klebsch <mario@…> https://svn.boost.org/trac10/ticket/13329 https://svn.boost.org/trac10/ticket/13329 Report #13328: transitive_reduction.hpp in the Graph component contains two lines that use "not" instead of "!" Wed, 06 Dec 2017 13:48:33 GMT Wed, 06 Dec 2017 13:48:33 GMT <p> Lines 108 and 110 of graph/transitive_reduction.hpp (current as of Boost 1.65.1) include expressions represent logical negation via the word "not" rather than the correct "!". As expected, this causes a compilation error. None of the other Graph template/header files have this issue, as far as I could tell, so I don't believe it's simply failing to include a header that sets "#define not !". Currently, in order to use transitive_reduction.hpp, one must define that macro in their source file before including the header, and that should not be necessary. The simple solution, of course, is to change "not" to "!" in those two locations. The altered lines read as follows: </p> <p> 108: if( ! edge_in_closure[i][j] ) { </p> <p> 110: if( ! edge_in_closure[i][k] ) { </p> cjfred01@… https://svn.boost.org/trac10/ticket/13328 https://svn.boost.org/trac10/ticket/13328 Report #13327: Issue with boost::property_tree::ptree inside lambda with a capture using Visual Studio 2017 Wed, 06 Dec 2017 10:11:34 GMT Wed, 06 Dec 2017 10:11:34 GMT <p> We are running into an issue with Boost 1.56.0, in boost::property_tree:: ptree, when using it inside lambda function with a capture using Visual Studio 2017. </p> <p> I get the following errors from line 4 and line 6 when compiling the attached file. </p> <p> boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): error C2440: '&lt;function-style-cast&gt;': cannot convert from 'boost::multi_index::detail::bidir_node_iterator&lt;boost::multi_index::detail::sequenced_index_node&lt;Super&gt;&gt;' to 'boost::property_tree::basic_ptree&lt;std::string,std::string,std::less&lt;Key&gt;&gt;::const_iterator' </p> <blockquote> <p> with [ </p> <blockquote> <p> Super=boost::multi_index::detail::ordered_index_node&lt;boost::multi_index::detail::index_node_base&lt;std::pair&lt;const std::string,boost::property_tree::basic_ptree&lt;std::string,std::string,std::less&lt;std::string&gt;&gt;&gt;,std::allocator&lt;std::pair&lt;const std::string,boost::property_tree::basic_ptree&lt;std::string,std::string,std::less&lt;std::string&gt;&gt;&gt;&gt;&gt;&gt; </p> </blockquote> <p> ] and [ </p> <blockquote> <p> Key=std::string </p> </blockquote> <p> ] </p> </blockquote> <p> boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): note: No constructor could take the source type, or constructor overload resolution was ambiguous </p> <p> note: see reference to function template instantiation 'boost::property_tree::basic_ptree&lt;std::string,std::string,std::less&lt;Key&gt;&gt;::const_iterator boost::property_tree::basic_ptree&lt;Key,std::string,std::less&lt;Key&gt;&gt;::begin(void) const' being compiled </p> <blockquote> <p> with [ </p> <blockquote> <p> Key=std::string </p> </blockquote> <p> ] </p> </blockquote> <p> The workaround that we have is to use auto instead of the actual types for the const_iterator returned from begin(). See attached cpp file. </p> shubham.srivastava@… https://svn.boost.org/trac10/ticket/13327 https://svn.boost.org/trac10/ticket/13327 Report #13326: linking with program_options has unresolved symbols on MSVC Wed, 06 Dec 2017 09:59:32 GMT Sat, 07 Jul 2018 11:57:52 GMT <p> I'm developing a simple command line client application against boost::program_options. Everything works fine on Linux with gcc-4.8, gcc-5.3 and gcc-6.3, on Darwin with XCode 7 and on Windows with MinGW-w64. But on Windows with MSVC Build Tools 2017 x64 I get two unresolved symbols: </p> <pre class="wiki">LightBISClientCMDLine.cc.obj : error LNK2001: unresolved external symbol "class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; boost::program_options::arg" (?arg@program_options@boost@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) LightBISClientCMDLine.cc.obj : error LNK2001: unresolved external symbol "public: static unsigned int const boost::program_options::options_description::m_default_line_length" (?m_default_line_length@options_description@program_options@boost@@2IB) </pre><p> I checked program_options.dll and I am under the impression that those two symbols are defined there. I get exact matches for <code>?arg@program_options@boost@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A</code> and <code>?m_default_line_length@options_description@program_options@boost@@2IB</code>. Also all other symbols from program_options are resolved correctly. Here is the details build log with a verbose linker message: <a class="ext-link" href="http://data.biodataanalysis.de/tmp/boost_program_options_linker_error_emmenlau.txt"><span class="icon">​</span>http://data.biodataanalysis.de/tmp/boost_program_options_linker_error_emmenlau.txt</a> </p> <p> I am explictily setting preprocessor defines for debug, and I set to code to build for C++14. Is that possibly related? </p> Mario Emmenlauer <mario@…> https://svn.boost.org/trac10/ticket/13326 https://svn.boost.org/trac10/ticket/13326 Report #13325: boost::numeric::odeint::dense_output_runge_kutta call a non-existign function "resize" Tue, 05 Dec 2017 00:25:46 GMT Tue, 05 Dec 2017 00:25:46 GMT <p> I failed the compile of the following code. </p> <div class="wikipage" style="font-size: 80%"><p> source: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span><span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="cp">#include</span><span class="cpf">&lt;boost/numeric/odeint.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">odeint</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">odeint</span><span class="p">;</span> <span class="k">using</span> <span class="n">state_type</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">auto</span> <span class="n">Stepper</span> <span class="o">=</span> <span class="n">odeint</span><span class="o">::</span><span class="n">make_dense_output</span><span class="p">(</span><span class="mf">0.001</span><span class="p">,</span> <span class="mf">0.001</span><span class="p">,</span> <span class="n">odeint</span><span class="o">::</span><span class="n">runge_kutta_dopri5</span><span class="o">&lt;</span><span class="n">state_type</span><span class="o">&gt;</span><span class="p">());</span> <span class="n">state_type</span> <span class="n">State</span><span class="p">{</span> <span class="mf">1.0</span><span class="p">,</span><span class="mf">1.0</span> <span class="p">};</span> <span class="n">Stepper</span><span class="p">.</span><span class="n">adjust_size</span><span class="p">(</span><span class="n">State</span><span class="p">);</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> output: </p> <div class="wiki-code"><div class="code"><pre><span class="n">error</span> <span class="nl">C2039</span><span class="p">:</span> <span class="err">&#39;</span><span class="n">resize</span><span class="err">&#39;</span><span class="o">:</span> <span class="err">&#39;</span><span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">odeint</span><span class="o">::</span><span class="n">runge_kutta_dopri5</span><span class="o">&lt;</span><span class="n">state_type</span><span class="p">,</span><span class="kt">double</span><span class="p">,</span><span class="n">State</span><span class="p">,</span><span class="n">Value</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">odeint</span><span class="o">::</span><span class="n">algebra_dispatcher_sfinae</span><span class="o">&lt;</span><span class="n">StateType</span><span class="p">,</span><span class="kt">void</span><span class="o">&gt;::</span><span class="n">algebra_type</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">odeint</span><span class="o">::</span><span class="n">operations_dispatcher_sfinae</span><span class="o">&lt;</span><span class="n">StateType</span><span class="p">,</span><span class="kt">void</span><span class="o">&gt;::</span><span class="n">operations_type</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">odeint</span><span class="o">::</span><span class="n">initially_resizer</span><span class="o">&gt;</span><span class="err">&#39;</span> <span class="n">is</span> <span class="n">not</span> <span class="n">a</span> <span class="n">member</span><span class="p">.</span> </pre></div></div></div><p> This seems to be caused because odeint::dense_output_runge_kutta calls a non-existing function "resize" instead of "adjust_size" of the base stepper. </p> <div class="wikipage" style="font-size: 80%"><p> boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp </p> <div class="wiki-code"><div class="code"><pre> <span class="c1">//boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp</span> <span class="c1">//Line 378-383</span> <span class="k">template</span><span class="o">&lt;</span> <span class="k">class</span> <span class="nc">StateType</span> <span class="o">&gt;</span> <span class="kt">void</span> <span class="n">adjust_size</span><span class="p">(</span> <span class="k">const</span> <span class="n">StateType</span> <span class="o">&amp;</span><span class="n">x</span> <span class="p">)</span> <span class="p">{</span> <span class="n">resize</span><span class="p">(</span> <span class="n">x</span> <span class="p">);</span> <span class="n">m_stepper</span><span class="p">.</span><span class="n">stepper</span><span class="p">().</span><span class="n">resize</span><span class="p">(</span> <span class="n">x</span> <span class="p">);</span> <span class="c1">//not resize but adjust_size?</span> <span class="p">}</span> </pre></div></div></div> Koichi https://svn.boost.org/trac10/ticket/13325 https://svn.boost.org/trac10/ticket/13325 Report #13324: not able to link the path to some files of boost library like boost::interprocess::detail has not been declared Mon, 04 Dec 2017 22:45:50 GMT Mon, 04 Dec 2017 22:45:50 GMT <p> Hi, </p> <p> I keep getting </p> <p> Error boost::interprocess::detail has not been declared in cent7 on Boost 1.53, code works in 1.41 version of boost - cent6. </p> <p> Have boost-devel installed already to avoid include and linker flags and other dependencies. </p> kartikay1110@… https://svn.boost.org/trac10/ticket/13324 https://svn.boost.org/trac10/ticket/13324 Report #13323: Passing a vector of arguments to boost::process (boost::fusion) Mon, 04 Dec 2017 14:57:30 GMT Thu, 10 May 2018 11:09:26 GMT <p> I'm trying to create a <code>boost::process</code> from a vector of string arguments: </p> <pre class="wiki"> void runProcess( const std::string&amp; exe, const std::vector&lt;std::string&gt;&amp; args ) { bp::ipstream out; bp::child c(exe, args, std_out &gt; out); ... } </pre><p> This apparently works, but I'm getting the following warning with Visual Studio 2015: </p> <blockquote class="citation"> <p> warning C4503: 'boost::fusion::detail::for_each_linear': decorated name length exceeded, name was truncated </p> </blockquote> <p> It diseappears if passing arguments one by one <code>bp::child c(exe, "param1", "param2", std_out &gt; out);</code>. </p> jpo38 <jean.porcherot@…> https://svn.boost.org/trac10/ticket/13323 https://svn.boost.org/trac10/ticket/13323 Report #13322: boost::process reports ERROR_INVALID_HANDLE instead of ERROR_FILE_NOT_FOUND when program cannot be found Mon, 04 Dec 2017 11:33:58 GMT Thu, 10 May 2018 11:09:08 GMT <p> Under Windows, the following program outputs "Error is 6" (6 means ERROR_INVALID_HANDLE), while it should report "Error is 2" (2 means ERROR_FILE_NOT_FOUND). </p> <pre class="wiki"> #include &lt;boost/process.hpp&gt; #include &lt;iostream&gt; int main( int argc, char* argv[] ) { try { boost::process::child p( "foo" ); p.terminate(); } catch ( boost::process::process_error err ) { std::cout &lt;&lt; "Error is " &lt;&lt; err.code().value(); } return 0; } </pre> jpo38 <jean.porcherot@…> https://svn.boost.org/trac10/ticket/13322 https://svn.boost.org/trac10/ticket/13322 Report #13321: boost::process: executable extension is required to create a process. Mon, 04 Dec 2017 11:29:49 GMT Tue, 05 Dec 2017 07:15:06 GMT <p> The following code does not assert under Windows: </p> <pre class="wiki">int main( int argc, char* argv[] ) { try { boost::process::child p( "cmd" ); p.terminate(); } catch (...) { assert( false ); } try { boost::process::child p( "cmd.exe" ); p.terminate(); } catch (...) { assert( false ); } return 0; } </pre><p> So, apparently, .exe does not need to be specified. </p> <p> However, the following code does assert when .exe is not specified: </p> <pre class="wiki">int main( int argc, char* argv[] ) { if ( argc == 1 ) { std::string exe = argv[0]; try { std::string exeNoExt = exe.substr(0, exe.find_last_of(".")); boost::process::child p( exeNoExt, "foo" ); p.terminate(); } catch (...) { assert( false ); // asserts } try { boost::process::child p( exe, "foo" ); p.terminate(); } catch (...) { assert( false ); // does not assert } } </pre><p> boost::process::child p( exeNoExt, "foo" ); should work and executable extention should be silently added, like it is for cmd. </p> <p> Note that boost::process::search_path( "myprg" ) returns "myprg.exe" if found, so here, extension is added correctly. But it's unsafe to systematically call this function priori to creating a child as it only works with program names (calling it with "Myfolder/myprg" returns ""). </p> jpo38 <jean.porcherot@…> https://svn.boost.org/trac10/ticket/13321 https://svn.boost.org/trac10/ticket/13321 Report #13320: It would be nice if boost::process could provide an API to get all running processes Mon, 04 Dec 2017 11:21:21 GMT Thu, 10 May 2018 11:08:38 GMT <p> There is no Xplatform API to get all running processes, it would be noce to have one. </p> <p> Possible implementation: </p> <pre class="wiki"> typedef struct ProcessDescr { /** \brief Constructor * \param _sModuleName program's name * \param _pid program's PID */ ProcessDescr( const std::string&amp; _sModuleName, int _pid ) : sModuleName( _sModuleName ), pid( _pid ) { } /** \brief program's name */ std::string sModuleName; /** \brief program's PID */ int pid; } ProcessDescr; /** \brief List of processus descriptions */ typedef std::vector&lt;ProcessDescr&gt; ProcessList; #if defined(BOOST_WINDOWS_API) void addProcessDescr( ProcessList&amp; processes, DWORD processID ) { TCHAR szProcessName[MAX_PATH] = TEXT("&lt;unknown&gt;"); // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &amp;hMod, sizeof(hMod), &amp;cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } } // Print the process name and identifier. processes.push_back( ProcessDescr( szProcessName, processID ) ); // Release the handle to the process. CloseHandle( hProcess ); } #endif void GetAllProcesses( ProcessList&amp; processes ) { #if defined(BOOST_POSIX_API) #ifdef SDE_MOBILE #ifdef SDE_ANDROID DIR *d = opendir("/proc"); if ( d != NULL ) { struct dirent * de; while((de = readdir(d)) != 0){ int pid = -1; // to be tested!!! if(isdigit(de-&gt;d_name[0])){ pid = atoi(de-&gt;d_name); } processes.push_back( ProcessDescr( de-&gt;d_name , pid ) ); } closedir(d); } #else assert( false ); #warning Unsupported platform #endif #else struct task_struct *task; for_each_process(task) { processes.push_back( ProcessDescr( task-&gt;comm , task-&gt;pid ) ); } #endif #elif defined(BOOST_WINDOWS_API) DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( EnumProcesses( aProcesses, sizeof(aProcesses), &amp;cbNeeded ) ) { // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i &lt; cProcesses; i++ ) { if( aProcesses[i] != 0 ) { addProcessDescr( processes, aProcesses[i] ); } } } #else #error Unknown platform #endif } </pre> jpo38 <jean.porcherot@…> https://svn.boost.org/trac10/ticket/13320 https://svn.boost.org/trac10/ticket/13320 Report #13319: Boost.Asio.SSL write_some cause 'decryption failed or bad record mac' on large (~1MB) transmissions Mon, 04 Dec 2017 09:38:35 GMT Mon, 04 Dec 2017 09:38:35 GMT <p> When we send large amount of data (1MB) using boost::asio::ssl::stream the boost closes the connection after some transmission and reports encryption error : 'decryption failed or bad record mac'. </p> <p> The reason of it is a write_some function. </p> <p> Shortly it uses boost::asio::write to send encrypted data to TCP socket (boost_1_57_0\boost\asio\ssl\detail\io.hpp:60, see details below), but the amount of really sent data is ignored. Instead of it, the amount of handled by OpenSSL user application buffer is returned to the user application. In case of 'would block' operation the amount of really sent data is less than reported to user application. </p> <p> Details: If the socket is unblocking, the write_some has to try to send something over the socket and has to return the amount of the data it is able to send. The application has to retry next time for the rest of the output data, taking in account the amount of just sent data. </p> <p> The SSL implementation uses paired BIO of OpenSSL to allow sending encrypted data not directly to a TCP socket but in a memory buffers. The Boost uses this buffers to integrate SSL in its engine implementing asynchronous socket operation. </p> <p> In other words, boost internally works with TCP sockets using its mechanisms of direct or asynchronous data operation getting data from OpenSSL buffer. </p> <p> For the write operation the sequence is the following: </p> <ol><li> User application calls boost::asio::ssl::stream::write_some operation and gives it the buffer with initial data. </li><li> This operation calls the engine detail::io function. This function has to encrypt data using OpenSSL, read the encrypted data from the coupled OpenSSL BIO buffer and then send it out using TCP socket. </li><li> First the engine io function calls the detail::write_op. This operation (in subroutines) calls the ::SSL_write. This function uses a BIO buffer to store encrypted data and returns the amount of handled initial data. The current buffer size is 17KB. In case of large outgoing message, the size will be about 16+KB. </li><li> The size of the handled initial data is stored to bytes_transfered and then is used as a return value of sent amount to the user application. </li><li> After this operation the SSL_get_error returns what OpenSSL wants – send the encrypted data through real socket or read raw data from the socket. </li><li> In our case normally the Open SSL just want to send the portion of encrypted data. </li><li> The detail::io execute the case engine::want_output:. It calls boost::asio::write(next_layer, core.engine_.get_output(core.output_buffer_), ec); </li><li> This function read the encrypted data from OpenSSL buffer and transmit it using usual boost write operation. </li><li> The problem is that the return of this function is not checked. The amount of the send data by this function can be less than required (16KB). But the user application is notified that that write_some function have sent 16+K. </li><li> This leads to the unsynchronized state of SSL on both sides. The sender consider it sends +16KB, but receiver has gotten say only 4KB. Other data are lost. </li><li> The user application makes next send skipping the 16KB. And after some send operation OpenSSL recognize the error state. It reports the error and boost closes the socket. </li><li> The reason of why write operation can send not the entire encrypted portion (16KB) is the following: </li><li> It tries sending the full buffer, but in case of large data stream the corresponding socket can get stacked, and the output buffer can overflow. </li><li> In this case the socket operation has the following options </li><li> Block in send operation in case of blocking socked </li><li> Return “would block” error in case of nonblocking socket. </li><li> In our case we have nonblocking socket and write operation stops execution in this case and returns the amount of really sent data. But this value is just ignored. </li></ol><p> Workaround: don't use write_some with ssl. </p> Andrey Borisov <andrey.borisov@…> https://svn.boost.org/trac10/ticket/13319 https://svn.boost.org/trac10/ticket/13319 Report #13318: key_of_value now changes the type in the priority comparison for intrusive::treap_set Mon, 04 Dec 2017 08:03:30 GMT Mon, 04 Dec 2017 23:55:03 GMT <p> Setting the <code>key_of_value</code> option now changes the type used in the priority comparison, which makes it impossible to use <code>key_of_value</code> when the priority is entirely separate to the primary key. </p> <p> The example below uses a comparison functor; a similar problem occurs with <code>priority_compare(T const&amp;, T const&amp;)</code> function. </p> <p> This worked in 1.59, fails to compile in 1.65.1. </p> <pre class="wiki">#include &lt;boost/intrusive/treap_set.hpp&gt; using namespace boost::intrusive; struct Test : public bs_set_base_hook&lt;&gt; { Test(int k, int p) : m_key(k), m_priority(p) {} int m_key; int m_priority; }; struct TestKey { using type = int; int const&amp; operator()(Test const&amp; t) const { return t.m_key; } }; struct PriorityCompare { bool operator()(Test const&amp; t1, Test const&amp; t2) const { return t1.m_priority &lt; t2.m_priority; } }; using Container = treap_set&lt;Test, key_of_value&lt;TestKey&gt;, priority&lt;PriorityCompare&gt;&gt;; int main() { Test t1(1, 2); Container c; c.insert(t1); } </pre> Jan Martin Mikkelsen <janm@…> https://svn.boost.org/trac10/ticket/13318 https://svn.boost.org/trac10/ticket/13318 Report #13317: io_service behaviour difference between ubuntu and msvc-14 Fri, 01 Dec 2017 16:54:35 GMT Tue, 12 Dec 2017 11:14:07 GMT <p> When implementing a basic thread pool using boost::asio::io_service, I am observing some differences in how queued tasks are handled when stopping the io_service. </p> <p> On MSVC 14 (MS Visual Studio 2015), for some reason the queued tasks which were not started yet are not dropped when stopping the io_service but are run nonetheless. These tasks are dropped when running this on Ubuntu 16.04 (GCC 5.4.0). </p> <p> I have simplified and cleaned up the original tests and put them in a single file (attached) which only depends on boost and uses some sleeps to demonstrate the problem. You can build it with the CMakeLists.txt attached if you wish. </p> <p> The output on Ubuntu is as expected: </p> <pre class="wiki">checkAllWorkIsProcessedBeforeDestruction passed. passed. passed. checkWorkCanBeCancelled passed. passed. passed. checkWorkCanBeInterrupted passed. passed. passed. checkUninterruptableWorkIsNotInterruptedButCanBeDropped passed. passed. passed. passed. </pre><p> This is the output on MSVC 14: </p> <pre class="wiki">checkAllWorkIsProcessedBeforeDestruction passed. passed. passed. checkWorkCanBeCancelled Error: functor 1 call expected: false current: true Error: functor 2 call expected: false current: true Error: running time expected: 150 current: 402 checkWorkCanBeInterrupted passed. passed. passed. checkUninterruptableWorkIsNotInterruptedButCanBeDropped passed. Error: functor 2 call expected: false current: true passed. Error: running time expected: 250 current: 404 </pre><p> Am I doing something wrong? </p> Diego Barrios Romero <eldruin@…> https://svn.boost.org/trac10/ticket/13317 https://svn.boost.org/trac10/ticket/13317 Report #13314: warning in graph/transitive_closure.hpp Tue, 28 Nov 2017 13:46:17 GMT Thu, 10 May 2018 11:08:17 GMT <p> line 92 of graph/include/boost/graph/transitive_closure.hpp </p> <blockquote> <p> int num_scc = strong_components(g, component_number, </p> <blockquote> <p> vertex_index_map(index_map)); </p> </blockquote> </blockquote> <p> should be </p> <blockquote> <p> size_type num_scc = strong_components(g, component_number, </p> <blockquote> <p> vertex_index_map(index_map)); </p> </blockquote> </blockquote> <p> otherwise there is a warning in case of size_t used in <a class="missing wiki">EdgeProperties</a> </p> o.tristan@… https://svn.boost.org/trac10/ticket/13314 https://svn.boost.org/trac10/ticket/13314 Report #13313: Problem when mixing repeat with epsilon parser Tue, 28 Nov 2017 02:46:24 GMT Tue, 05 Dec 2017 18:36:38 GMT <p> Mixing lazy repeats with epsilon parser (with action) is not working as expected. The attributes are not synthesized as expected. The following example fails: </p> <pre class="wiki"> std::string s; size_t c = 0; BOOST_TEST(test_attr("aaaaaaaa", repeat(val(8))[char_ &gt;&gt; eps[ref(c)++]], s) &amp;&amp; s == "aaaaaaaa" &amp;&amp; c == 8); </pre><p> It failed because <em>s</em> is empty (which I don't think it should) </p> <p> I have made some variation of the same operations (no actions, no lazy operations) and they all works except for this particular case. </p> <p> See the complete example that I have made from the repeat.cpp test (only the last test fails): </p> <pre class="wiki"> { using boost::spirit::qi::eps; using boost::phoenix::val; using boost::phoenix::ref; std::string s; size_t c = 0; s.clear(); BOOST_TEST(test_attr("aaaaaaaa", repeat[char_ &gt;&gt; eps], s) &amp;&amp; s == "aaaaaaaa"); s.clear(); BOOST_TEST(test_attr("aaaaaaaa", repeat(8)[char_ &gt;&gt; eps], s) &amp;&amp; s == "aaaaaaaa"); s.clear(); BOOST_TEST(test_attr("aaaaaaaa", repeat(val(8))[char_ &gt;&gt; eps], s) &amp;&amp; s == "aaaaaaaa"); s.clear(); c = 0; BOOST_TEST(test_attr("aaaaaaaa", repeat[char_ &gt;&gt; eps[ref(c)++]], s) &amp;&amp; s == "aaaaaaaa" &amp;&amp; c == 8); s.clear(); c = 0; BOOST_TEST(test_attr("aaaaaaaa", repeat(8)[char_ &gt;&gt; eps[ref(c)++]], s) &amp;&amp; s == "aaaaaaaa" &amp;&amp; c == 8); s.clear(); c = 0; BOOST_TEST(test_attr("aaaaaaaa", repeat(val(8))[char_ &gt;&gt; eps[ref(c)++]], s) &amp;&amp; s == "aaaaaaaa" &amp;&amp; c == 8); } </pre> Sebastien Matte https://svn.boost.org/trac10/ticket/13313 https://svn.boost.org/trac10/ticket/13313 Report #13312: boost::locale::conv and secure memory buffers Mon, 27 Nov 2017 15:07:09 GMT Mon, 27 Nov 2017 15:07:09 GMT <p> Sometimes it is useful to convert passwords from one encoding to another to guess the right encoding (for example to import certificates which have been exported with broken software). </p> <p> For such (and maybe other cases) it would be nice if from_utf and to_utf had an option to specify the output memory buffer. I guess this would be best done via a template specialization. </p> <p> I realize that this is a somewhat obscure concern. The benefit of trying to keep a password in secure memory is discussed even among experts. There are many other places higher (pipes, keyboard buffers) and lower (cpu caches) in the stack where password traces can remain. On the other hand, scanning the swap space for key material and passwords in the clear is a basic security check. For me, this is something that should be fixed if it is easy to do. </p> <p> Right now, I am using this pattern, which at best relies on RVO and leaves a small race: </p> <pre class="wiki"> std::string convertedpw_ = boost::locale::conv::from_utf&lt;char&gt;(password, charset); Botan::secure_vector&lt;uint8_t&gt; convertedpw(convertedpw_.size()); memcpy(convertedpw.data(), convertedpw_.data(), convertedpw_.size()); /* Best effort. */ Botan::secure_scrub_memory((void *)convertedpw_.data(), convertedpw_.size()); </pre><p> Anyway, thanks a lot for a great library! </p> Marcus Brinkmann <marcus.brinkmann@…> https://svn.boost.org/trac10/ticket/13312 https://svn.boost.org/trac10/ticket/13312 Report #13310: boost::filesystem::exists(".") fails on Mac OS Sierra Thu, 23 Nov 2017 21:42:10 GMT Thu, 23 Nov 2017 22:29:33 GMT <p> I installed Boost 1.65.1 on Mac OS Sierra 10.12.6 using mac port. When I run the program tut1.cpp from the Boost Filesystem tutorial, the program fails to find files and directories that exist. The following simple test code returns 1 on linux and 0 on Mac OS: </p> <p> #include &lt;iostream&gt; #include &lt;boost/filesystem.hpp&gt; </p> <p> int main() { </p> <blockquote> <p> <em> This line should print 1 but it prints 0 on Mac OS std::cout &lt;&lt; boost::filesystem::exists(".") &lt;&lt; std::endl; </em></p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> anonymous https://svn.boost.org/trac10/ticket/13310 https://svn.boost.org/trac10/ticket/13310 Report #13309: function_address_holder::get_module/::get implementations are not thread-safe Wed, 22 Nov 2017 22:33:11 GMT Wed, 22 Nov 2017 22:36:40 GMT <p> The discussion in the git review <a class="ext-link" href="https://github.com/boostorg/filesystem/pull/59#discussion_r152524074"><span class="icon">​</span>https://github.com/boostorg/filesystem/pull/59#discussion_r152524074</a> showed that the implementations of <code>function_address_holder::get_module</code> and <code>function_address_holder::get</code> are not completely atomic, because the loop conditions </p> <pre class="wiki">for(unsigned i = 0; ModuleStates[id] &lt; 2; ++i){ </pre><p> and </p> <pre class="wiki">for(unsigned i = 0; FunctionStates[id] &lt; 2; ++i){ </pre><p> are not using a read barrier for the variables <code>ModuleStates[id]</code> and <code>FunctionStates[id]</code>. </p> <p> It seems that proper thread-safety using interlocked operations could be realized by emulating an interlocked read-acquire operation via the <code>BOOST_INTERLOCKED_COMPARE_EXCHANGE(&amp;N, 0, 0)</code> idiom. </p> <p> I can make a concrete pull request if agreement exists on the approach </p> Daniel Krügler <daniel.kruegler@…> https://svn.boost.org/trac10/ticket/13309 https://svn.boost.org/trac10/ticket/13309 Report #13308: Asio symbols are exported even when they should not Wed, 22 Nov 2017 09:36:26 GMT Wed, 22 Nov 2017 09:36:26 GMT <p> Since the changeset 382804a4325b0e3b90d07f6563f5c6fd13a38052 (Use default visibility everywhere), the asio symbols are always exported on macOS even with visibility=hidden. I.e. contary what the changeset comment says. Not only it gives a bigger footprint (see ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/12722" title="#12722: Bugs: asio visibility pragmas bloat .dynstr segment (new)">#12722</a>), but it also has functional impliciations on macOS: When multiple modules export the same symbol, the <strong>macOS</strong> somehow randomly determines which instance of the symbol will be used by which module that needs it. I.e. <strong>when modules A and B export the same symbol, and module A needs to call it, then it can happen that the module A actually calls the symbol exported from B. Weird things begin to happen not only when A and B were built with different versions of boost.</strong> In practice, we are hitting this issue with our <strong>plugins</strong> for Adobe Illustrator. Illustrator itself was built with boost of some (unknown) version which is probably different in different releases of Illustrator. Our plugins are built with boost 1.59, 1.61, 1.64 and we are getting almost identical issues with all of them: the macOS decides to link our plugins to the boost symbols exported by Adobe Illustrator although our plugins carry all the required functions. The symptoms are that our plugins hang because some boost functions are called inside our plugin and some inside Illustrator itself leading to inconstistent state, esp. when different boost versions are used. <strong>The solution here is to really hide the boost asio symbols when building with visibility=hidden</strong> which is the way we build our plugins. In the attachment you can find a solution for the issue: the symbol visibility of asio now really follows the default visibility. </p> Jan Patera <japa@…> https://svn.boost.org/trac10/ticket/13308 https://svn.boost.org/trac10/ticket/13308 Report #13306: Bimap uses std::unary_function/std::binary_function which are removed in c++17 Tue, 21 Nov 2017 11:26:47 GMT Tue, 21 Nov 2017 11:26:47 GMT <p> Some code, which uses boost::bimap does not compile on Windows 10 with Visual Studio 2017 Professional using the compiler flag /std:c++latest (which enables the C++17 standard). </p> <p> This is due to std::unary_function (and similar templates) being removed in C++17. </p> <p> A number of structures in the underlying code of boost::bimap (e.g. bimaps::container_adaptor::detail::comparison_adaptor, bimaps::relation::support::data_extractor_implementation) derive from std::unary_function or std::binary_function. </p> Andy Vincent <andrew.vincent@…> https://svn.boost.org/trac10/ticket/13306 https://svn.boost.org/trac10/ticket/13306 Report #13305: memory leaks Tue, 21 Nov 2017 08:35:05 GMT Tue, 21 Nov 2017 08:35:05 GMT <p> I create a logger in the main thread. If the logger is called from another std::thread there are no problems, but if it's called from the concurrency::create_task - there are lot of memory leaks. Visual Studio 2015, Boost versions: 1.57 and 1.65.1. For example: </p> <pre class="wiki">Dumping objects -&gt; {887} normal block at 0x00B6A0F8, 128 bytes long. Data: &lt; TimeStamp: 2017&gt; 00 54 69 6D 65 53 74 61 6D 70 3A 20 32 30 31 37 </pre><p> Best regards, Victor. </p> <p> The sample code: </p> <pre class="wiki">// ConsoleApplication_wo_MFC.cpp : Defines the entry point for the console application. // #define _CRT_SECURE_NO_WARNINGS #define BOOST_SYSTEM_NO_DEPRECATED #define BOOST_LIB_DIAGNOSTIC #define CGAL_LIB_DIAGNOSTIC #include &lt;stdio.h&gt; #include &lt;tchar.h&gt; #include &lt;windows.h&gt; #include &lt;ppltasks.h&gt; #include &lt;thread&gt; #define _CRTDBG_MAP_ALLOC #include &lt;stdlib.h&gt; #include &lt;crtdbg.h&gt; #include &lt;boost/log/core.hpp&gt; #include &lt;boost/log/expressions.hpp&gt; #include &lt;boost/log/attributes.hpp&gt; #include &lt;boost/log/utility/setup/common_attributes.hpp&gt; #include &lt;boost/log/sources/severity_channel_logger.hpp&gt; #include &lt;boost/log/trivial.hpp&gt; #include &lt;boost/log/support/date_time.hpp&gt; #include &lt;boost/log/utility/setup/console.hpp&gt; #include &lt;boost\log\sinks\text_file_backend.hpp&gt; #include &lt;boost/locale/localization_backend.hpp&gt; #if !defined(BOOST_LOG_NO_THREADS) #include &lt;boost/thread/locks.hpp&gt; #include &lt;boost/thread/mutex.hpp&gt; #endif // !defined(BOOST_LOG_NO_THREADS) using namespace std; namespace logging = boost::log; namespace src = boost::log::sources; namespace sinks = boost::log::sinks; namespace keywords = boost::log::keywords; namespace expr = boost::log::expressions; BOOST_LOG_ATTRIBUTE_KEYWORD(a_channel, "Channel", std::string) int main() { int nRetCode = 0; _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); typedef sinks::synchronous_sink&lt;sinks::text_file_backend&gt; file_sink; src::severity_channel_logger_mt&lt;boost::log::trivial::severity_level&gt; logger(keywords::channel = "L"); boost::shared_ptr&lt;file_sink&gt; sinkT(new file_sink(keywords::file_name = "logs\\TestLogger_%6N.log")); sinkT-&gt;set_formatter ( expr::stream &lt;&lt; " TimeStamp: " &lt;&lt; expr::format_date_time&lt; boost::posix_time::ptime &gt;("TimeStamp", "%Y-%m-%d %H:%M:%S") &lt;&lt; " ThreadID: " &lt;&lt; expr::attr&lt;logging::thread_id&gt;("ThreadID") &lt;&lt; " Message: " &lt;&lt; expr::smessage ); logging::core::get()-&gt;add_sink(sinkT); sinkT-&gt;set_filter(a_channel == "L"); logging::add_common_attributes(); BOOST_LOG(logger) &lt;&lt; L"A message from the MAIN thread"; std::thread testTthread([&amp;]() { BOOST_LOG(logger) &lt;&lt; L"A message from the std::thread"; }); testTthread.join(); auto task = concurrency::create_task([&amp;]() { // Produces memory leaks BOOST_LOG(logger) &lt;&lt; L"A message from the concurrency::create_task thread"; }); task.wait(); BOOST_LOG(logger) &lt;&lt; L"Is concurrency::create_task done: " &lt;&lt; task.is_done(); return nRetCode; } </pre> vgtinenko@… https://svn.boost.org/trac10/ticket/13305 https://svn.boost.org/trac10/ticket/13305 Report #13298: boost_1_65_1 Thu, 16 Nov 2017 15:22:51 GMT Fri, 15 Dec 2017 07:11:33 GMT <p> boost_1_65_1 does not build out of the box in MSVS2010. It fails to compile with about 20 errors starting in "strings.c(195)..." I will simply move to VS2015. I do not see how to upload bootstrap.log, but here are a few lines of it: strings.c(195) : error C2143: syntax error : missing ';' before 'type' strings.c(196) : error C2065: 'p' : undeclared identifier strings.c(196) : error C2065: 'p' : undeclared identifier strings.c(196) : warning C4047: '&gt;=' : 'int' differs in levels of indirection from 'char *' </p> jaime.oliva@… https://svn.boost.org/trac10/ticket/13298 https://svn.boost.org/trac10/ticket/13298 Report #13297: Coroutine-Context linker error on Cygwin, but not on Linux Wed, 15 Nov 2017 10:59:19 GMT Wed, 15 Nov 2017 10:59:19 GMT <p> Hi, </p> <p> I'm attempting to port a inherited project from Linux to Cygwin on Windows. Even though I'm using Boost 1.65.1 on both systems (both compiled from source), I seem to get a Linker error on Cygwin, but not on Linux. The only difference I can see between my two system setups is the compiler: </p> <p> Cygwin runs g++ 6.4.0, x86_64-pc-cygwin. Linux runs g++ 6.3.0, x86_64-linux-gnu. </p> <p> Both compiled the boost library with the following commands: </p> <pre class="wiki">./bootstrap.sh --prefix=compiled ./b2 cxxflags="-std=c++11" ./b2 install </pre><p> I've reduced my project to only the troublesome code module, and scrapped as much as possible, you can find it attached to this ticket as well. Compiling is performed with: </p> <pre class="wiki">g++ -std=c++11 main.cpp -I/usr/local/include/ -L/usr/local/lib/ -lm -lboost_context -lboost_regex -lboost_coroutine -lboost_system -lboost_chrono -lboost_thread </pre><p> The two latter libraries (chrono and thread), only seem to be necessary for the Linux-version. The output from above command on Linux is non-existent, since it succeeds. The output on Cygwin however informs me of a linker error: </p> <pre class="wiki">/tmp/ccOwuqNr.o:main.cpp:(.text$_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_[_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_]+0x11): undefined reference to `boost::context::stack_traits::default_size()' /tmp/ccOwuqNr.o:main.cpp:(.text$_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_[_ZN5boost11coroutines26detail14push_coroutineIvEC1IZN4TaskC4ERKSt8functionIFvvEEEUlRNS1_14pull_coroutineIvEEE_vEEOT_]+0x11): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `boost::context::stack_traits::default_size()' collect2: error: ld returned 1 exit status </pre><p> To me it seems that the linking between coroutine and context failed at some point. Since the error message is not entirely obvious as to what has gone wrong, I'm not sure if this is a bug within Cygwin or boost. Maybe it's not a bug at all, and I've just missed some configuration step for Cygwin. Any help investigating this would be appreciated! </p> lars@… https://svn.boost.org/trac10/ticket/13297 https://svn.boost.org/trac10/ticket/13297 Report #13296: The directory-separator indicating the root-directory incorrectly handled by lexically_normal on windows Wed, 15 Nov 2017 08:33:48 GMT Wed, 15 Nov 2017 08:33:48 GMT <p> According to the documentation the result for lexically_normal should contain backslashes on windows. This is not the case for the directory-separator representing the root-directory. </p> <p> Examples: </p> <pre class="wiki">cout &lt;&lt; path("/tmp/abc/def).lexically_normal() &lt;&lt; endl; cout &lt;&lt; path("c:\\abc/def").lexically_normal() &lt;&lt; endl; </pre><p> Output: </p> <pre class="wiki">/tmp\abc\def c:/abc\def </pre> peter@… https://svn.boost.org/trac10/ticket/13296 https://svn.boost.org/trac10/ticket/13296 Report #13295: Error during building boost Wed, 15 Nov 2017 03:04:11 GMT Thu, 10 May 2018 11:05:00 GMT <p> Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. </p> <p> C:\Users\varsha&gt;cd C:\Users\varsha\Downloads\boost_1_65_1 </p> <p> C:\Users\varsha\Downloads\boost_1_65_1&gt;bootstrap Building Boost.Build engine cl : Command line warning D9035 : option 'GZ' has been deprecated and will be re moved in a future release cl : Command line warning D9036 : use 'RTC1' instead of 'GZ' cl : Command line warning D9002 : ignoring unknown option '/MLd' </p> <p> Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. </p> <p> You can try to obtain a prebuilt binary from </p> <blockquote> <p> <a class="ext-link" href="http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941"><span class="icon">​</span>http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941</a> </p> </blockquote> <p> Also, you can file an issue at <a class="ext-link" href="http://svn.boost.org"><span class="icon">​</span>http://svn.boost.org</a> Please attach bootstrap.log in that case. </p> <p> C:\Users\varsha\Downloads\boost_1_65_1&gt; </p> anonymous https://svn.boost.org/trac10/ticket/13295 https://svn.boost.org/trac10/ticket/13295 Report #13294: Boost(1.57).Asio crashes after ssl stream is closed and stream is deleted. Mon, 13 Nov 2017 23:17:41 GMT Mon, 13 Nov 2017 23:17:41 GMT <p> The issue is found in boost asio v1.57 and is presents in 1.65.1. Windows, Visual Studio 2015 </p> <p> Our library uses boost asio ssl stream for secure TCP connection. We use dynamically created context and ssl stream: </p> <div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">ssl_context</span><span class="o">&gt;</span> <span class="n">m_context</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">ssl_stream</span><span class="o">&gt;</span> <span class="n">m_stream</span><span class="p">;</span> <span class="p">...</span> <span class="n">m_context</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o">&lt;</span><span class="n">ssl_context</span><span class="o">&gt;</span><span class="p">(</span><span class="n">TM_NS_ASIO</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">tlsv12</span><span class="p">);</span> <span class="n">m_stream</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">make_shared</span><span class="o">&lt;</span><span class="n">ssl_stream</span><span class="o">&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">io_service</span><span class="p">,</span> <span class="o">*</span><span class="n">m_context</span><span class="p">);</span> </pre></div></div><p> after handshake we start reading asynchronously: </p> <div class="wiki-code"><div class="code"><pre><span class="n">m_stream</span><span class="o">-&gt;</span><span class="n">async_read_some</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">readHandler</span><span class="p">);</span> </pre></div></div><p> After that we just close the connection and remove objects: </p> <div class="wiki-code"><div class="code"><pre><span class="n">m_stream</span><span class="o">-&gt;</span><span class="n">shutdown</span><span class="p">(</span><span class="n">ec</span><span class="p">);</span> <span class="n">m_stream</span><span class="o">-&gt;</span><span class="n">lowest_layer</span><span class="p">().</span><span class="n">close</span><span class="p">(</span><span class="n">ec</span><span class="p">);</span> </pre></div></div><p> Than we destroy the stream and context: </p> <div class="wiki-code"><div class="code"><pre><span class="n">m_stream</span><span class="p">.</span><span class="n">reset</span><span class="p">();</span> <span class="n">m_context</span><span class="p">.</span><span class="n">reset</span><span class="p">();</span> </pre></div></div><p> Close and destroy operation are performed in a context of io_service thread. And after the stream deletion the io_service gets the break assertion: </p> <div class="wiki-code"><div class="code"><pre><span class="o">&gt;</span> <span class="n">msvcp140d</span><span class="p">.</span><span class="n">dll</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Debug_message</span><span class="p">(</span><span class="k">const</span> <span class="kt">wchar_t</span> <span class="o">*</span> <span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">wchar_t</span> <span class="o">*</span> <span class="n">file</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">line</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">17</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_const_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;::</span><span class="k">operator</span><span class="o">*</span><span class="p">()</span> <span class="n">Line</span> <span class="mi">73</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;::</span><span class="k">operator</span><span class="o">*</span><span class="p">()</span> <span class="n">Line</span> <span class="mi">332</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;::</span><span class="k">operator</span><span class="p">()()</span> <span class="n">Line</span> <span class="mi">532</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Invoker_functor</span><span class="o">::</span><span class="n">_Call</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;&gt;</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;</span> <span class="n">_Obj</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">1377</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">invoke</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;&gt;</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;</span> <span class="n">_Obj</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">1443</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Invoke_ret</span><span class="o">&lt;</span><span class="kt">void</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;&gt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">_Forced</span><span class="o">&lt;</span><span class="kt">void</span><span class="p">,</span><span class="mi">1</span><span class="o">&gt;</span> <span class="n">__formal</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&amp;</span> <span class="o">&lt;</span><span class="n">_Vals_0</span><span class="o">&gt;</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">1461</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Func_impl</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_debug_check</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_val</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">_Simple_types</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">,</span><span class="n">std</span><span class="o">::</span><span class="n">allocator</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">,</span><span class="kt">void</span><span class="o">&gt;::</span><span class="n">_Do_call</span><span class="p">()</span> <span class="n">Line</span> <span class="mi">212</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">std</span><span class="o">::</span><span class="n">_Func_class</span><span class="o">&lt;</span><span class="kt">void</span><span class="o">&gt;::</span><span class="k">operator</span><span class="p">()()</span> <span class="n">Line</span> <span class="mi">279</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_cast_helper</span><span class="p">(</span><span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffer</span> <span class="o">&amp;</span> <span class="n">b</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">146</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">buffer_cast</span><span class="o">&lt;</span><span class="kt">void</span> <span class="k">const</span> <span class="o">*&gt;</span><span class="p">(</span><span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffer</span> <span class="o">&amp;</span> <span class="n">b</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">427</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">buffer_sequence_adapter</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffer</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffers_1</span><span class="o">&gt;::</span><span class="n">validate</span><span class="p">(</span><span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffers_1</span> <span class="o">&amp;</span> <span class="n">buffer_sequence</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">207</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_socket_recv_op</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffers_1</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">io_op</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">basic_stream_socket</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">stream_socket_service</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">&gt;</span> <span class="o">&gt;</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">read_op</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">mutable_buffers_1</span><span class="o">&gt;</span><span class="p">,</span><span class="n">std</span><span class="o">::</span><span class="n">function</span><span class="o">&lt;</span><span class="kt">void</span> <span class="kr">__cdecl</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">,</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;::</span><span class="n">do_complete</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_io_service</span> <span class="o">*</span> <span class="n">owner</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_operation</span> <span class="o">*</span> <span class="n">base</span><span class="p">,</span> <span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="o">&amp;</span> <span class="n">result_ec</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">bytes_transferred</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">72</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_operation</span><span class="o">::</span><span class="n">complete</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_io_service</span> <span class="o">&amp;</span> <span class="n">owner</span><span class="p">,</span> <span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="o">&amp;</span> <span class="n">ec</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">bytes_transferred</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">46</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_io_service</span><span class="o">::</span><span class="n">do_one</span><span class="p">(</span><span class="kt">bool</span> <span class="n">block</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">409</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">win_iocp_io_service</span><span class="o">::</span><span class="n">run</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">164</span> <span class="n">C</span><span class="o">++</span> <span class="n">tls_test</span><span class="p">.</span><span class="n">exe</span><span class="o">!</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">io_service</span><span class="o">::</span><span class="n">run</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="n">Line</span> <span class="mi">67</span> <span class="n">C</span><span class="o">++</span> </pre></div></div><p> It occurs that completion operation is called after the stream and underlined socket was closed and deleted. The operation is a dynamically object, created by read_some, but it contains link to buffers that application set to it. In case of raw socket the buffers are user application buffers without checkers. In case of ssl the stream uses its internal buffer for TLS operations. And at the moment of the completion operation the stream and its buffers are not exist. </p> Andrey Borisov <andrey.borisov@…> https://svn.boost.org/trac10/ticket/13294 https://svn.boost.org/trac10/ticket/13294 Report #13292: Using Boost.Asio's POSIX-specific features makes programs not compile Sun, 12 Nov 2017 15:58:57 GMT Sun, 12 Nov 2017 15:58:57 GMT <p> When using ASIO I get the following error message upon trying to compile on POSIX: </p> <pre class="wiki">In file included from /usr/include/boost/asio/basic_socket_iostream.hpp:24:0, from /usr/include/boost/asio.hpp:29, from boost_bug.cpp:1: /usr/include/boost/asio/basic_socket_streambuf.hpp: In instantiation of ‘boost::asio::basic_socket_streambuf&lt;Protocol, StreamSocketService, Time, TimeTraits, TimerService&gt;* boost::asio::basic_socket_streambuf&lt;Protocol, StreamSocketService, Time, TimeTraits, TimerService&gt;::connect(T ...) [with T = {const char*}; Protocol = boost::asio::local::stream_protocol; StreamSocketService = boost::asio::stream_socket_service&lt;boost::asio::local::stream_protocol&gt;; Time = boost::posix_time::ptime; TimeTraits = boost::asio::time_traits&lt;boost::posix_time::ptime&gt;; TimerService = boost::asio::deadline_timer_service&lt;boost::posix_time::ptime, boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;]’: /usr/include/boost/asio/basic_socket_iostream.hpp:167:32: required from ‘boost::asio::basic_socket_iostream&lt;Protocol, StreamSocketService, Time, TimeTraits, TimerService&gt;::basic_socket_iostream(T ...) [with T = {const char*}; Protocol = boost::asio::local::stream_protocol; StreamSocketService = boost::asio::stream_socket_service&lt;boost::asio::local::stream_protocol&gt;; Time = boost::posix_time::ptime; TimeTraits = boost::asio::time_traits&lt;boost::posix_time::ptime&gt;; TimerService = boost::asio::deadline_timer_service&lt;boost::posix_time::ptime, boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;]’ boost_bug.cpp:4:74: required from here /usr/include/boost/asio/basic_socket_streambuf.hpp:204:41: error: no type named ‘resolver’ in ‘class boost::asio::local::stream_protocol’ typedef typename Protocol::resolver resolver_type; </pre><p> The following is an example source file that reproduces the bug: </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; int main() { boost::asio::local::stream_protocol::iostream stream("/tmp/test_sock"); } </pre> arsenarsentmc@… https://svn.boost.org/trac10/ticket/13292 https://svn.boost.org/trac10/ticket/13292 Report #13291: read_until won't compile with Visual Studio 2017 using regex Thu, 09 Nov 2017 10:10:57 GMT Wed, 02 May 2018 10:58:16 GMT <p> Compiling following code will produce compiler error </p> <pre class="wiki">#include &lt;boost/asio/io_service.hpp&gt; #include &lt;boost/asio/ip/tcp.hpp&gt; #include &lt;boost/asio/read_until.hpp&gt; #include &lt;boost/asio/streambuf.hpp&gt; #include &lt;boost/regex.hpp&gt; int main() { boost::asio::io_service ios; boost::asio::ip::tcp::socket s(ios); boost::asio::streambuf b; boost::system::error_code e; boost::asio::read_until(s, b, boost::regex("i am just a regex"), e); } </pre><pre class="wiki">1&gt;d:\source\boost\boost\asio\impl\read_until.hpp(273): error C2664: 'size_t boost::asio::basic_streambuf&lt;std::allocator&lt;char&gt;&gt;::read_size_helper(boost::asio::basic_streambuf&lt;std::allocator&lt;char&gt;&gt; &amp;,::size_t)': cannot convert argument 1 from 'boost::asio::basic_streambuf_ref&lt;Allocator&gt;' to 'boost::asio::basic_streambuf&lt;std::allocator&lt;char&gt;&gt; &amp;' 1&gt; with 1&gt; [ 1&gt; Allocator=std::allocator&lt;char&gt; 1&gt; ] 1&gt;d:\source\boost\boost\asio\impl\read_until.hpp(404): note: see reference to function template instantiation 'size_t boost::asio::read_until&lt;SyncReadStream,boost::asio::basic_streambuf_ref&lt;Allocator&gt;&gt;(SyncReadStream &amp;,DynamicBuffer &amp;&amp;,const boost::regex &amp;,boost::system::error_code &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; SyncReadStream=boost::asio::ip::tcp::socket, 1&gt; Allocator=std::allocator&lt;char&gt;, 1&gt; DynamicBuffer=boost::asio::basic_streambuf_ref&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt;c:\users\????\error.cpp(12): note: see reference to function template instantiation 'size_t boost::asio::read_until&lt;boost::asio::ip::tcp::socket,std::allocator&lt;char&gt;&gt;(SyncReadStream &amp;,boost::asio::basic_streambuf&lt;std::allocator&lt;char&gt;&gt; &amp;,const boost::regex &amp;,boost::system::error_code &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; SyncReadStream=boost::asio::ip::tcp::socket 1&gt; ] </pre><p> This can be solved by using same calculation as other methods use </p> <pre class="wiki"> // Need more data. std::size_t bytes_to_read = std::min&lt;std::size_t&gt;( std::max&lt;std::size_t&gt;(512, b.capacity() - b.size()), std::min&lt;std::size_t&gt;(65536, b.max_size() - b.size())); </pre><p> instead of </p> <pre class="wiki"> std::size_t bytes_to_read = read_size_helper(b, 65536); </pre> Ville-Pekka Vahteala <vahtis@…> https://svn.boost.org/trac10/ticket/13291 https://svn.boost.org/trac10/ticket/13291 Report #13289: Generating default locale from envronment variables (LC_ALL, LANG) is in wrong order Mon, 06 Nov 2017 13:47:43 GMT Mon, 06 Nov 2017 14:56:36 GMT <p> When generating locale with empty string, we infer the locale from the environment variables. The current order is </p> <ol><li>LC_CTYPE </li><li>LC_ALL </li><li>LANG </li></ol><p> As per POSIX, see chapter 8.2, and linux man-pages, see man locale.7 (can't post links, the system forbids) the order should be </p> <ol><li>LC_ALL </li><li>LC_CTYPE </li><li>LANG </li></ol><p> The fix is trivial in the function <code>boost::locale::util::get_system_locale()</code> </p> Dimitrij Mijoski <dmjpp@…> https://svn.boost.org/trac10/ticket/13289 https://svn.boost.org/trac10/ticket/13289 Report #13287: Broken wchar EQUAL Sat, 04 Nov 2017 22:07:01 GMT Sat, 04 Nov 2017 22:07:01 GMT <p> boost: boost_1_65_1-msvc-14.1-32.exe </p> <p> Problem description: BOOST_REQUIRE_EQUAL does not work with unicode arguments on windows platform with official boost dlls. </p> <p> Namely does not </p> <p> 1) compile with std::wstring (see example 1 below) </p> <p> 2) link with wchar_t* (see example 2 below) </p> <p> arguments on windows platform with official boost dlls. </p> <p> Some analysis from my side. </p> <p> Could not test static libraries, as could not figure out how to link against official static libs. </p> <p> I was able to build static boost test lib manually as described at <a href="http://www.boost.org/doc/libs/1_65_1/libs/test/doc/html/boost_test/adv_scenarios/static_lib_customizations/entry_point.html">http://www.boost.org/doc/libs/1_65_1/libs/test/doc/html/boost_test/adv_scenarios/static_lib_customizations/entry_point.html</a>. I.e. b2 --with-test link=static define=BOOST_TEST_NO_MAIN define=BOOST_TEST_ALTERNATIVE_INIT_API </p> <p> and make BOOST_REQUIRE_EQUAL to accept wchar_t. See example 3 below. Unfortunately example 3 did not compile with official binaries (?!) </p> <p> boost::test_tools::tt_detail::equal_impl(wchar_t const *,wchar_t const *) is lost in dlls, but available in static lib. In boost_1_54_0-msvc-11.0-32.exe however, equal_impl(wchar_t const *,wchar_t const *) is available in boost_unit_test_framework-vc110-1_54.dll. </p> <p> --- Example 1 --- </p> <pre class="wiki"> #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;string&gt; #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_DYN_LINK #define BOOST_TEST_NO_MAIN #include &lt;boost/test/unit_test.hpp&gt; BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { std::wstring v1(L"a"); std::wstring v2(L"a"); BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main( &amp;init_unit_test, argc, argv ); } </pre><p> Error: </p> <pre class="wiki">D:\LIBS\boost\boost-1_65_1\boost/test/tools/detail/print_helper.hpp(52): error C2338: Type has to implement operator&lt;&lt; to be printable D:\LIBS\boost\boost-1_65_1\boost/test/tools/detail/print_helper.hpp(61): note: see reference to function template instantiation 'std::ostream &amp;boost::test_tools::tt_detail::impl::boost_test_print_type&lt;R&gt;(std::ostream &amp;,const T &amp;)' being compiled with [ R=std::wstring, T=std::wstring ] </pre><p> --- Example 2 --- </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;string&gt; #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_DYN_LINK #define BOOST_TEST_NO_MAIN #include &lt;boost/test/unit_test.hpp&gt; BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { const wchar_t* v1 = L"a"; const wchar_t* v2 = L"a"; BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main( &amp;init_unit_test, argc, argv ); } </pre><p> Error: </p> <pre class="wiki"> error LNK2001: unresolved external symbol "__declspec(dllimport) class boost::test_tools::assertion_result __cdecl boost::test_tools::tt_detail::equal_impl(wchar_t const *,wchar_t const *)" (__imp_?equal_impl@tt_detail@test_tools@boost@@YA?AVassertion_result@23@PB_W0@Z) </pre><p> -- Example 3 -- </p> <pre class="wiki"> #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;string&gt; #define BOOST_TEST_MODULE test_module_name #define BOOST_TEST_NO_MAIN #define BOOST_TEST_ALTERNATIVE_INIT_API #include &lt;boost/test/unit_test.hpp&gt; BOOST_AUTO_TEST_SUITE( boost_my_test ); BOOST_AUTO_TEST_CASE(boost_my_test_1) { const wchar_t* v1 = L"a"; const wchar_t* v2 = L"a"; BOOST_REQUIRE_EQUAL(v1, v2); } BOOST_AUTO_TEST_SUITE_END(); int main(int argc, char* argv[], char* envp[]) { return boost::unit_test::unit_test_main(init_unit_test, argc, argv); } </pre> stier08@… https://svn.boost.org/trac10/ticket/13287 https://svn.boost.org/trac10/ticket/13287 Report #13286: warning C4141: 'dllexport': used more than once Sat, 04 Nov 2017 21:03:18 GMT Mon, 30 Apr 2018 20:39:47 GMT <p> The following warnings are emitted by Visual Studio 2017 when using boost/serialization as a shared library (and defining BOOST_ALL_DYN_LINK when using the library): </p> <pre class="wiki">C:\...\boost\include\boost-1_65_1\boost/archive/codecvt_null.hpp(68): warning C4141: 'dllexport': used more than once C:\...\boost\include\boost-1_65_1\boost/archive/codecvt_null.hpp(78): warning C4141: 'dllexport': used more than once C:\...\boost\include\boost-1_65_1\boost/serialization/singleton.hpp(94): warning C4141: 'dllexport': used more than once </pre><p> The problem is use of BOOST_*_DECL and BOOST_DLLEXPORT at the same time. Removing the BOOST_DLLEXPORT macro from those lines as done in the following patch fixes the problem. </p> <pre class="wiki">diff --git a/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp b/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp index 7bce2b9b..332ae9f9 100644 --- a/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp +++ b/boost/include/boost-1_65_1/boost/archive/codecvt_null.hpp @@ -65,7 +65,7 @@ public: template&lt;&gt; class BOOST_SYMBOL_VISIBLE codecvt_null&lt;wchar_t&gt; : public std::codecvt&lt;wchar_t, char, std::mbstate_t&gt; { - virtual BOOST_WARCHIVE_DECL BOOST_DLLEXPORT std::codecvt_base::result + virtual BOOST_WARCHIVE_DECL std::codecvt_base::result do_out( std::mbstate_t &amp; state, const wchar_t * first1, @@ -75,7 +75,7 @@ class BOOST_SYMBOL_VISIBLE codecvt_null&lt;wchar_t&gt; : public std::codecvt&lt;wchar_t, char * last2, char * &amp; next2 ) const BOOST_USED; - virtual BOOST_WARCHIVE_DECL BOOST_DLLEXPORT std::codecvt_base::result + virtual BOOST_WARCHIVE_DECL std::codecvt_base::result do_in( std::mbstate_t &amp; state, const char * first1, diff --git a/boost/include/boost-1_65_1/boost/serialization/singleton.hpp b/boost/include/boost-1_65_1/boost/serialization/singleton.hpp index b50afedb..b9e470fa 100644 --- a/boost/include/boost-1_65_1/boost/serialization/singleton.hpp +++ b/boost/include/boost-1_65_1/boost/serialization/singleton.hpp @@ -91,7 +91,7 @@ class BOOST_SYMBOL_VISIBLE singleton_module : public boost::noncopyable { private: - BOOST_SERIALIZATION_DECL BOOST_DLLEXPORT static bool &amp; get_lock() BOOST_USED; + BOOST_SERIALIZATION_DECL static bool &amp; get_lock() BOOST_USED; public: BOOST_DLLEXPORT static void lock(){ get_lock() = true; </pre> tsondergaard@… https://svn.boost.org/trac10/ticket/13286 https://svn.boost.org/trac10/ticket/13286 Report #13285: clang-tidy analyzer complains about uninitialized variable Fri, 03 Nov 2017 23:19:19 GMT Fri, 03 Nov 2017 23:19:19 GMT <p> Clang tidy complains about uninitialized variable here: </p> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:169:17: error: 1st function call argument is an uninitialized value [clang-analyzer-core.<a class="missing wiki">CallAndMessage</a>,-warnings-as-errors] </p> <blockquote> <p> _exit_status-&gt;store(code); <sup> </sup></p> </blockquote> <p> /code/core/source/cpp/private/libs/SensorInterface/Velodyne/tests/PacketDecoderTest.cc:96:13: note: Calling constructor for 'child' </p> <blockquote> <p> bp::child call_script(bp::search_path("bash"), get_res_script); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/child.hpp:35:13: note: Calling 'execute_impl' </p> <blockquote> <p> : child(::boost::process::detail::execute_impl(std::forward&lt;Args&gt;(args)...)) {} </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/execute_impl.hpp:275:12: note: Calling 'basic_execute_impl' </p> <blockquote> <p> return basic_execute_impl&lt;req_char_type&gt;( </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/execute_impl.hpp:267:12: note: Calling 'executor::operator()' </p> <blockquote> <p> return exec(); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:312:16: note: Calling 'executor::invoke' </p> <blockquote> <p> return invoke(has_ignore_error(), shall_use_vfork()); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:371:9: note: Assuming the condition is false </p> <blockquote> <p> if (::pipe(p) == -1) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:371:5: note: Taking false branch </p> <blockquote> <p> if (::pipe(p) == -1) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:376:9: note: Assuming the condition is false </p> <blockquote> <p> if (::fcntl(p<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>, F_SETFD, FD_CLOEXEC) == -1) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:376:5: note: Taking false branch </p> <blockquote> <p> if (::fcntl(p<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>, F_SETFD, FD_CLOEXEC) == -1) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:384:5: note: Taking false branch </p> <blockquote> <p> if (_ec) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:391:9: note: Assuming the condition is false </p> <blockquote> <p> if (pid == -1) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:391:5: note: Taking false branch </p> <blockquote> <p> if (pid == -1) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:400:14: note: Assuming the condition is false </p> <blockquote> <p> else if (pid == 0) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:400:10: note: Taking false branch </p> <blockquote> <p> else if (pid == 0) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:428:5: note: Taking true branch </p> <blockquote> <p> if (_ec) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/executor.hpp:431:22: note: Calling '~child' </p> <blockquote> <p> return child(); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:13: note: Left side of '&amp;&amp;' is true </p> <blockquote> <p> if (_attached &amp;&amp; !_exited() &amp;&amp; running(ec)) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:13: note: Left side of '&amp;&amp;' is true /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:93:40: note: Calling 'child::running' </p> <blockquote> <p> if (_attached &amp;&amp; !_exited() &amp;&amp; running(ec)) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:164:13: note: Left side of '&amp;&amp;' is true </p> <blockquote> <p> if (valid() &amp;&amp; !_exited()) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:164:9: note: Taking true branch </p> <blockquote> <p> if (valid() &amp;&amp; !_exited()) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:166:13: note: 'code' declared without an initial value </p> <blockquote> <p> int code; <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:167:24: note: Calling 'is_running' </p> <blockquote> <p> auto res = boost::process::detail::api::is_running(_child_handle, code, ec); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:47:9: note: Assuming the condition is true </p> <blockquote> <p> if (ret == -1) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:47:5: note: Taking true branch </p> <blockquote> <p> if (ret == -1) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:49:13: note: Assuming the condition is false </p> <blockquote> <p> if (errno != ECHILD) <em>because it no child is running, than this one isn't either, obviously. </em></p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/include/x86_64-linux-gnu/bits/errno.h:54:18: note: expanded from macro 'errno' # define errno (*<span class="underline">errno_location ()) </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/posix/is_running.hpp:49:9: note: Taking false branch </p> <blockquote> <p> if (errno != ECHILD) <em>because it no child is running, than this one isn't either, obviously. <sup> </sup></em></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:167:24: note: Returning from 'is_running' </p> <blockquote> <p> auto res = boost::process::detail::api::is_running(_child_handle, code, ec); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:168:17: note: Left side of '&amp;&amp;' is true </p> <blockquote> <p> if (!res &amp;&amp; !_exited()) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:168:13: note: Taking true branch </p> <blockquote> <p> if (!res &amp;&amp; !_exited()) <sup> </sup></p> </blockquote> <p> /usr/local/boost-1.64.0/include/boost/process/detail/child_decl.hpp:169:17: note: 1st function call argument is an uninitialized value </p> <blockquote> <p> _exit_status-&gt;store(code); <sup> </sup></p> </blockquote> Evgeny Televitckiy <stelek@…> https://svn.boost.org/trac10/ticket/13285 https://svn.boost.org/trac10/ticket/13285 Report #13282: Allocator compilation problems with gcc 4.8.1 Tue, 31 Oct 2017 18:08:27 GMT Tue, 31 Oct 2017 18:08:27 GMT <p> Hello all, </p> <p> thanks for providing this great software. Just a remark, when I tried to use the allocators with gcc 4.8.x it fails during the instantiation. </p> <pre class="wiki">#include &lt;set&gt; #include &lt;boost/container/allocator.hpp&gt; #include &lt;boost/container/adaptive_pool.hpp&gt; int foo() { using myset= std::set&lt;int, std::less&lt;int&gt;, boost::container::allocator&lt;int&gt;&gt;; myset test_set; return 1; } </pre><p> fails with </p> <pre class="wiki">In file included from /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/set:60:0, from &lt;source&gt;:1: /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h: In instantiation of 'void std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_M_destroy_node(std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_Link_type) [with _Key = int; _Val = int; _KeyOfValue = std::_Identity&lt;int&gt;; _Compare = std::less&lt;int&gt;; _Alloc = boost::container::allocator&lt;int&gt;; std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_Link_type = std::_Rb_tree_node&lt;int&gt;*]': /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:1127:23: required from 'void std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_M_erase(std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_Link_type) [with _Key = int; _Val = int; _KeyOfValue = std::_Identity&lt;int&gt;; _Compare = std::less&lt;int&gt;; _Alloc = boost::container::allocator&lt;int&gt;; std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::_Link_type = std::_Rb_tree_node&lt;int&gt;*]' /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:671:28: required from 'std::_Rb_tree&lt;_Key, _Val, _KeyOfValue, _Compare, _Alloc&gt;::~_Rb_tree() [with _Key = int; _Val = int; _KeyOfValue = std::_Identity&lt;int&gt;; _Compare = std::less&lt;int&gt;; _Alloc = boost::container::allocator&lt;int&gt;]' /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_set.h:90:11: required from here /opt/compiler-explorer/gcc-4.8.5/include/c++/4.8.5/bits/stl_tree.h:421:2: error: 'std::_Rb_tree&lt;int, int, std::_Identity&lt;int&gt;, std::less&lt;int&gt;, boost::container::allocator&lt;int&gt; &gt;::_Node_allocator' has no member named 'destroy' _M_get_Node_allocator().destroy(__p); ^ Compiler exited with result code 1 </pre> apmanol@… https://svn.boost.org/trac10/ticket/13282 https://svn.boost.org/trac10/ticket/13282 Report #13281: How to build with NDK Mon, 30 Oct 2017 19:52:23 GMT Mon, 30 Oct 2017 19:52:23 GMT <p> Hi, I use to VS2017 for Cross platform c++. NDK version rb13. Visual stuido start build use to arm-linux-androideabi-gcc.exe but Boost build start not use arm-linux-androideabi-gcc.exe.boost is how use to arm-linux-androideabi-gcc.exe </p> salih.yucel@… https://svn.boost.org/trac10/ticket/13281 https://svn.boost.org/trac10/ticket/13281 Report #13278: interprocess_sharable_mutex::unlock_sharable() bug when counter is already equal to 0 Fri, 27 Oct 2017 16:10:32 GMT Fri, 27 Oct 2017 16:10:32 GMT <p> The patch provided fixes a bug on interprocess sharable mutex. The sharable counter is wrap around when unlock_sharable function is called and counter is already equal to 0. </p> arnaud.gody@… https://svn.boost.org/trac10/ticket/13278 https://svn.boost.org/trac10/ticket/13278 Report #13277: State explicitly in the docs that Boost.Containers don't allocate in the default constructor Fri, 27 Oct 2017 08:14:15 GMT Fri, 27 Oct 2017 08:14:15 GMT <p> The docs are not explicit about this, so I believe it would be an improvement to clarify this explicitly stating that Boost.Containers don't allocate in the default constructor. </p> dariomt@… https://svn.boost.org/trac10/ticket/13277 https://svn.boost.org/trac10/ticket/13277 Report #13276: circular_buffer pulls in exception handling code Thu, 26 Oct 2017 19:08:26 GMT Thu, 26 Oct 2017 19:11:29 GMT <p> <code>circular_buffer</code> as shipped doesn't work for embedded applications - it ends up adding EH (and thus <code>printf</code>, etc.), which adds unacceptable bloat for devices without much flash. The problem is that, even if you create a non-throwing allocator, <code>circular_buffer::allocate(size_type n)</code> still first checks <code>n</code> against the allocator's <code>max_size()</code>, and throws if it is too large. </p> <p> As I understand it, an allocator should throw/assert anyway (depending on whether it's using EH or not) if you try to <code>allocate()</code> more than <code>max_size()</code>, so I've been patching by deleting the involved lines: </p> <pre class="wiki">- if (n &gt; max_size()) - throw_exception(std::length_error("circular_buffer")); </pre><p> These lines should at least get excluded from compilation, or replaced with an assert, if <code>BOOST_NOEXCEPT</code> is defined. </p> anonymous https://svn.boost.org/trac10/ticket/13276 https://svn.boost.org/trac10/ticket/13276 Report #13275: flat_map's allocator_type constructor could potentially produce invalid output in optimization Wed, 25 Oct 2017 19:49:59 GMT Fri, 27 Oct 2017 11:18:19 GMT <p> In class flat_map, we have constructor: </p> <pre class="wiki">BOOST_CONTAINER_FORCEINLINE explicit flat_map(const allocator_type&amp; a) : m_flat_tree(container_detail::force&lt;const impl_allocator_type&gt;(a)) {} </pre><p> This could cause a problem. </p> <p> Impl_allocator_type is </p> <pre class="wiki">typedef typename impl_tree_t::allocator_type impl_allocator_type; </pre><p> And impl_tree_t is </p> <pre class="wiki">typedef container_detail::flat_tree&lt; container_detail::pair&lt;Key, T&gt;, container_detail::select1st&lt;Key&gt;, Compare, typename allocator_traits&lt;Allocator&gt;::template portable_rebind_alloc &lt;container_detail::pair&lt;Key, T&gt; &gt;::type&gt; impl_tree_t; </pre><p> container_detail::force() is doing an reinterpret_cast essentially. Let's say argument a is </p> <pre class="wiki">allocator&lt; std::pair&lt;Key, T&gt; &gt; </pre><p> Then if we are calling that constructor, we are actually reinterpret_cast argument 'a' from </p> <pre class="wiki">allocator&lt; std::pair&lt;Key, T&gt; &gt; </pre><p> to </p> <pre class="wiki">allocator&lt; container_detail::pair&lt;Key, T&gt; &gt; </pre><p> While the program could run fine in no-opt because <strong>std::pair</strong> and<strong> container_detail::pair</strong> could be very similar and swappable, the program could produce invalid result when compiler turn on optimization. Compiler would find no alias information between <strong>allocator&lt;std::pair&lt;Key, T&gt;&gt;</strong> and <strong>allocator&lt;container_detail::pair&lt;Key, T&gt;&gt;</strong>, and think they are not related and move things around to produce invalid result. </p> jasonliu.development@… https://svn.boost.org/trac10/ticket/13275 https://svn.boost.org/trac10/ticket/13275 Report #13274: boost.filesystem compile problem on Android Wed, 25 Oct 2017 08:48:40 GMT Thu, 01 Mar 2018 20:46:10 GMT <p> Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. </p> <pre class="wiki">/usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include/stdio.h:36:25: error: invalid token at start of a p reprocessor expression #if __USE_FILE_OFFSET64 &amp;&amp; __ANDROID_API__ &lt; __ANDROID_API_N__ </pre><p> This happens because filesystem defines a "harmless" macro: </p> <pre class="wiki">libs/filesystem/src/operations.cpp:18:9: warning: '__USE_FILE_OFFSET64' macro redefined [-Wmacro-redefined] #define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX ^ </pre><p> While this check was <code>#if defined(__USE_FILE_OFFSET64)</code> in previous android versions, it seems to have changed when they introduced unified headers. It's probably more "harmless" to define an integer value in boost.filesystem rather than persuade Google to fix their code. </p> Berkus <berkus@…> https://svn.boost.org/trac10/ticket/13274 https://svn.boost.org/trac10/ticket/13274 Report #13273: boost.program_options compile problems on Android Wed, 25 Oct 2017 08:44:11 GMT Wed, 25 Oct 2017 12:56:44 GMT <p> Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. </p> <pre class="wiki">clang-darwin.compile.c++ android-build/boost/bin.v2/ libs/program_options/build/clang-darwin-5.0~x86/debug/ address-model-32/link-stati c/target-os-android/threading-multi/cmdline.o libs/program_options/src/cmdline.cpp:104:41: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror ,-Wshadow] cmdline::init(const vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:508:48: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror ,-Wshadow] cmdline::parse_long_option(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:545:49: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_short_option(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:611:47: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_dos_option(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:632:58: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_disguised_long_option(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:663:47: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::parse_terminator(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ libs/program_options/src/cmdline.cpp:683:55: error: declaration shadows a field of 'boost::program_options::detail::cmdline' [-Werror,-Wshadow] cmdline::handle_additional_parser(vector&lt;string&gt;&amp; args) ^ ./boost/program_options/detail/cmdline.hpp:139:34: note: previous declaration is here std::vector&lt;std::string&gt; args; ^ 7 errors generated. "/usr/local/opt/android-ndk/android-ndk-r16-beta1// toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" "-DBOOST_AC_USE_PTHREADS" "-DBOOST_SP_USE_PTHREADS" "-fvisibility=hidden" "-fvisibility-inlines-hidden" "-Wno-unused-local-typedef" -x c++ -std=c++14 -O0 -g -O0 -fno-inline -Wall -g --target=i686-none-linux-android --gcc-toolchain=/usr/local/opt/android-ndk/android-ndk- r16-beta1//toolchains/x86-4.9/prebuilt/darwin-x86_64 --sysroot=/usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sources/cxx-stl/llvm-libc++/include -isystem /usr/local/opt/android-ndk/ android-ndk-r16-beta1//sources/cxx-stl/llvm-libc++abi/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot/usr/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sysroot/usr/include/i686-linux-android -DANDROID -D__ANDROID_API__=21 -ffunction-sections -funwind-tables -fstack-protector-strong -fno-limit-debug-info -fPIC -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -Wall -Werror -Wshadow -march=i686 -DBOOST_ALL_NO_LIB=1 -D_LITTLE_ENDIAN -I"." -c -o "android-build/boost/bin.v2/libs/program_options/build/ clang-darwin-5.0~x86/debug/address-model-32/link-static/ target-os-android/threading-multi/cmdline.o" "libs/program_options/src/ cmdline.cpp" </pre> Berkus <berkus@…> https://svn.boost.org/trac10/ticket/13273 https://svn.boost.org/trac10/ticket/13273 Report #13272: boost.serialization compile problem on Android Wed, 25 Oct 2017 08:42:43 GMT Wed, 25 Oct 2017 12:58:00 GMT <p> Hello, in attempt to build boost for android with more or less reasonable strict settings (-Werror) I uncovered some bugs which I cannot report on github because these projects have Issues disabled. </p> <pre class="wiki">clang-darwin.compile.c++ android-build/boost/bin.v2/ libs/serialization/build/clang-darwin-5.0~x86/debug/ address-model-32/link-static/target-os-android/threading- multi/polymorphic_iarchive.o In file included from libs/serialization/src/polymorphic_iarchive.cpp:20: In file included from ./boost/archive/polymorphic_iarchive.hpp:32: ./boost/archive/detail/iserializer.hpp:69:7: error: macro expansion producing 'defined' has undefined behavior [-Werror,-Wexpansion-to-defined] #if ! DONT_USE_HAS_NEW_OPERATOR ^ ./boost/archive/detail/iserializer.hpp:63:12: note: expanded from macro 'DONT_USE_HAS_NEW_OPERATOR' || defined(__SUNPRO_CC) &amp;&amp; (__SUNPRO_CC &lt; 0x590) \ ^ ./boost/archive/detail/iserializer.hpp:212:9: error: macro expansion producing 'defined' has undefined behavior [-Werror,-Wexpansion-to-defined] #if DONT_USE_HAS_NEW_OPERATOR ^ ./boost/archive/detail/iserializer.hpp:63:12: note: expanded from macro 'DONT_USE_HAS_NEW_OPERATOR' || defined(__SUNPRO_CC) &amp;&amp; (__SUNPRO_CC &lt; 0x590) \ ^ 2 errors generated. "/usr/local/opt/android-ndk/android-ndk-r16-beta1// toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++" "-DBOOST_AC_USE_PTHREADS" "-DBOOST_SP_USE_PTHREADS" "-fvisibility=hidden" "-fvisibility-inlines-hidden" "-Wno-unused-local-typedef" -x c++ -ftemplate-depth-255 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++14 -O0 -g -O0 -fno-inline -Wall -g --target=i686-none-linux-android --gcc-toolchain=/usr/local/opt/android-ndk/android-ndk- r16-beta1//toolchains/x86-4.9/prebuilt/darwin-x86_64 --sysroot=/usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sources/cxx-stl/llvm-libc++/include -isystem /usr/local/opt/android-ndk/ android-ndk-r16-beta1//sources/cxx-stl/llvm-libc++abi/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sources/android/support/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1//sysroot/usr/include -isystem /usr/local/opt/android-ndk/android-ndk-r16-beta1// sysroot/usr/include/i686-linux-android -DANDROID -D__ANDROID_API__=21 -ffunction-sections -funwind-tables -fstack-protector-strong -fno-limit-debug-info -fPIC -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -Wall -Werror -Wshadow -march=i686 -DBOOST_ALL_NO_LIB=1 -D_LITTLE_ENDIAN -I"." -c -o "android-build/boost/bin.v2/libs/serialization/build/ clang-darwin-5.0~x86/debug/address-model-32/link-static/ target-os-android/threading-multi/polymorphic_iarchive.o" "libs/serialization/src/polymorphic_iarchive.cpp" </pre> Berkus <berkus@…> https://svn.boost.org/trac10/ticket/13272 https://svn.boost.org/trac10/ticket/13272 Report #13270: BOOST_CLASS_EXPORT(some_template<>) fails to load pointers Mon, 23 Oct 2017 09:13:31 GMT Mon, 23 Oct 2017 09:32:06 GMT <p> After upgrading from 1.56.0 to 1.65.1 loading pointers with xml_warchive to a template with default template arguments no longer works. </p> <pre class="wiki"> BOOST_EXPORT_CLASS(some_template&lt;&gt;) ptr *some_base_class; ar &amp; make_nvp("ptr", ptr); </pre><p> Saving works okay, loading fails =&gt; the type cannot be found. The problem seems to be related to the &lt;&gt; characters in the default template argument of the BOOST_CLASS_EXPORT. Debugging the serialization code I see that the serialization internal key[] now reads <code>some_template&amp;lt&lt;&gt;</code>. Note the "&amp;lt" and the "&lt;" character. I haven't checked 1.56.0, but my guess is that it was probably <code>some_template&amp;lt&amp;gt</code>. </p> <p> At any rate, having <code>&amp;lt&lt;</code> is definitely wrong, as &amp;lt is, of course, escaped &lt;. </p> <p> Changing BOOST_CLASS_EXPORT to BOOST_CLASS_EXPORT_GUID and specifying the correct key seems to work okay. </p> Hajo Kirchhoff <boost@…> https://svn.boost.org/trac10/ticket/13270 https://svn.boost.org/trac10/ticket/13270 Report #13269: Wrong docu for uniform_real-distribution Sun, 22 Oct 2017 19:47:20 GMT Sun, 22 Oct 2017 19:47:20 GMT <p> The documentation for the params of uniform real distribution states "min &lt;= max" as the requirement: <a class="ext-link" href="https://github.com/boostorg/random/blob/b58774fd5449609ede3ff80d4b82574c8e9094c6/include/boost/random/uniform_real_distribution.hpp#L99"><span class="icon">​</span>https://github.com/boostorg/random/blob/b58774fd5449609ede3ff80d4b82574c8e9094c6/include/boost/random/uniform_real_distribution.hpp#L99</a> </p> <p> This should be "min &lt; max". </p> Flamefire https://svn.boost.org/trac10/ticket/13269 https://svn.boost.org/trac10/ticket/13269 Report #13268: Exception thrown: write access violation. Sat, 21 Oct 2017 10:18:08 GMT Sun, 22 Oct 2017 00:30:49 GMT <p> I'm using boost::interprocess to make an asynchronous queue for IPC. I put the source code at <a class="ext-link" href="https://github.com/wronso/AsyncQue"><span class="icon">​</span>https://github.com/wronso/AsyncQue</a>. However, it sometimes throws write access violation exception. The environment is given as below: </p> <ul><li>OS: Windows 10 Pro, Version:1709, Build:16299.19 </li><li>Compiler: Visual Studio Professional 2017, Version 15.4.1 </li><li>Boost Version: 1.65.1 </li></ul><p> Reproduce Steps: </p> <ol><li>Git clone and open ipc.sln </li><li>Build Develop | x64 </li><li>Run </li></ol><p> Results: It sometimes throws write access violation exception. </p> <p> And I'm seeing 2 kinds of call stacks when the exception occurs. I've attached them as file: exception1.txt and exception2.txt </p> wronso <wronso@…> https://svn.boost.org/trac10/ticket/13268 https://svn.boost.org/trac10/ticket/13268 Report #13267: b2 doesn't recognize ZLIB options other than ZLIB_SOURCE Fri, 20 Oct 2017 13:16:09 GMT Fri, 20 Oct 2017 13:21:29 GMT <p> Building Boost 1.65.1 on Windows with msvc-12.0. </p> <p> b2 doesn't detect zlib with the command line below: </p> <pre class="wiki">b2 toolset=msvc-12.0 --with-iostreams -sZLIB_INCLUDE=D:/Libraries/zlib-1.2.11/stage/x86/include -sZLIB_LIBRARY_PATH=D:/Libraries/zlib-1.2.11/stage/x86/lib -sZLIB_NAME=zlib variant=debug link=shared --stagedir=stage/x86 stage </pre><p> and the following line is emitted: </p> <pre class="wiki"> - zlib : no (cached) </pre><p> b2 detects zlib only when ZLIB_SOURCE is specified. However, since I built zlib with CMake and INSTALLed on different directory, zconf.h doesn't exist on the directory under the source directory from which Boost is about to include the file from. A workaround is to copy zconf.h from the actual include directory into the source directory when I run b2 and delete it after building is finished. </p> Shintaro Sakahara <shintaro-sakahara@…> https://svn.boost.org/trac10/ticket/13267 https://svn.boost.org/trac10/ticket/13267 Report #13265: boost atomic lib memory_order error Thu, 19 Oct 2017 11:08:26 GMT Thu, 19 Oct 2017 11:08:26 GMT <p> boost atomic lib memory_order error. </p> <p> someone deleted memory_order_release/memory_order_acquire code, which should be translate to sfence/lfence , but now you see that they were removed. </p> <p> BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { </p> <blockquote> <p> if (order == memory_order_seq_cst) { </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> </blockquote> </blockquote> <table class="wiki"> <tr>#if defined(<span class="underline">x86_64</span>) <td> defined(<span class="underline">SSE2</span>) </td></tr></table> <blockquote> <p> "mfence\n" </p> </blockquote> <p> #else </p> <blockquote> <p> "lock; addl $0, (%%esp)\n" </p> </blockquote> <p> #endif </p> <blockquote> <p> ::: "memory" </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <blockquote> <p> } else if ((order &amp; (memory_order_acquire | memory_order_release)) != 0) { </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ("" ::: "memory"); </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> I suggest code is: </p> <p> BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT { </p> <blockquote> <p> if (order == memory_order_seq_cst) { </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> </blockquote> </blockquote> <table class="wiki"> <tr>#if defined(<span class="underline">x86_64</span>) <td> defined(<span class="underline">SSE2</span>) </td></tr></table> <blockquote> <p> "mfence\n" </p> </blockquote> <p> #else </p> <blockquote> <p> "lock; addl $0, (%%esp)\n" </p> </blockquote> <p> #endif </p> <blockquote> <p> ::: "memory" </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <blockquote> <p> return; } </p> </blockquote> <blockquote> <p> if ((order &amp; (memory_order_acquire )!=0 ){ </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> </blockquote> </blockquote> <table class="wiki"> <tr>#if defined(<span class="underline">x86_64</span>) <td> defined(<span class="underline">SSE2</span>) </td></tr></table> <blockquote> <p> "lfence\n" </p> </blockquote> <p> #else </p> <blockquote> <p> "lock; addl $0, (%%esp)\n" </p> </blockquote> <p> #endif </p> <blockquote> <p> ::: "memory" </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <blockquote> <p> return; } </p> </blockquote> <blockquote> <p> if ((order &amp; (memory_order_release )!=0 ){ </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> </blockquote> </blockquote> <table class="wiki"> <tr>#if defined(<span class="underline">x86_64</span>) <td> defined(<span class="underline">SSE2</span>) </td></tr></table> <blockquote> <p> "sfence\n" </p> </blockquote> <p> #else </p> <blockquote> <p> "lock; addl $0, (%%esp)\n" </p> </blockquote> <p> #endif </p> <blockquote> <p> ::: "memory" </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <blockquote> <p> } </p> </blockquote> <p> } </p> <p> Linux system do not delete lfence and sfence code, but why C++ lib deleted, this will cause error in multi_thread programe. </p> haisql@… https://svn.boost.org/trac10/ticket/13265 https://svn.boost.org/trac10/ticket/13265 Report #13263: error in boost lockfree 1.58 documentation Tue, 17 Oct 2017 23:39:37 GMT Tue, 17 Oct 2017 23:39:37 GMT <p> <a href="http://www.boost.org/doc/libs/1_58_0/doc/html/boost/lockfree/spsc_queue.html">http://www.boost.org/doc/libs/1_58_0/doc/html/boost/lockfree/spsc_queue.html</a> </p> <p> For 'read_available', the doc incorrectly states that this should only be called by the producer thread. </p> <p> Similarly for 'write_available' (s/b producer, and not consumer, thread) </p> anonymous https://svn.boost.org/trac10/ticket/13263 https://svn.boost.org/trac10/ticket/13263 Report #13261: managed_shared_memory construction fail after PC-Cleaning tools were used on the machine Fri, 13 Oct 2017 14:33:55 GMT Fri, 13 Oct 2017 14:35:13 GMT <p> Hi, </p> <p> because managed_shared_memory use windows_bootstamp, the creation of this object fails when events log were cleaned on the machine. </p> <p> In detail, I've found this behaviour after using tools like "CCleaner". </p> <p> Is this acceptable? </p> <p> Can I ask why boost does not use named shared memory or Pipe for Windows IPC? </p> <p> Thanks, Marco </p> m.fornaro6@… https://svn.boost.org/trac10/ticket/13261 https://svn.boost.org/trac10/ticket/13261 Report #13259: seg fault at cleanup time, __run_exit_handlers Thu, 12 Oct 2017 12:00:35 GMT Thu, 12 Oct 2017 12:00:35 GMT <p> I am getting a segfault at <span class="underline">run_exit_handlers time with 1.66 develop commit id d21a064a69663faf106ea363bf4785904bfd44d1 (Oct 6) using build command </span></p> <p> <code>~/boost/libs/serialization/test$ ../../../b2 toolset=clang test_dll_exported -q</code>: </p> <pre class="wiki">==13247== Invalid free() / delete / delete[] / realloc() ==13247== at 0x4C2F25B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A097F: __gnu_cxx::new_allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::deallocate(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*, unsigned long) (new_allocator.h:110) ==13247== by 0x50A092F: __gnu_cxx::__alloc_traits&lt;std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::deallocate(std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;&amp;, std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*, unsigned long) (alloc_traits.h:133) ==13247== by 0x50A07CB: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_put_node(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*) (stl_tree.h:509) ==13247== by 0x50A071B: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_drop_node(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*) (stl_tree.h:576) ==13247== by 0x50A127B: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_erase_aux(std::_Rb_tree_const_iterator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;) (stl_tree.h:2275) ==13247== by 0x50A1234: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::erase(std::_Rb_tree_const_iterator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;) (stl_tree.h:1057) ==13247== by 0x509FF64: std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::erase(std::_Rb_tree_const_iterator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;) (stl_multiset.h:571) ==13247== by 0x509FB97: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (extended_type_info_typeid.cpp:108) ==13247== by 0x4205E4: boost::serialization::extended_type_info_typeid&lt;polymorphic_derived2&gt;::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==13247== by 0x420134: boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;polymorphic_derived2&gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (singleton.hpp:117) ==13247== by 0x601B26F: __run_exit_handlers (exit.c:83) ==13247== Address 0x63b9d80 is 0 bytes inside a block of size 40 free'd ==13247== at 0x4C2F25B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A097F: __gnu_cxx::new_allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::deallocate(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*, unsigned long) (new_allocator.h:110) ==13247== by 0x50A092F: __gnu_cxx::__alloc_traits&lt;std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::deallocate(std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;&amp;, std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*, unsigned long) (alloc_traits.h:133) ==13247== by 0x50A07CB: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_put_node(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*) (stl_tree.h:509) ==13247== by 0x50A071B: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_drop_node(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*) (stl_tree.h:576) ==13247== by 0x50A0647: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_erase(std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;*) (stl_tree.h:1640) ==13247== by 0x50A05BE: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::~_Rb_tree() (stl_tree.h:873) ==13247== by 0x50A0584: std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::~multiset() (stl_multiset.h:92) ==13247== by 0x50A0414: boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (singleton.hpp:117) ==13247== by 0x601B5E9: __cxa_finalize (cxa_finalize.c:56) ==13247== by 0x5087F12: ??? (in /home/jking/boost/bin.v2/libs/serialization/build/clang-gnu-linux-4.0.0/debug/threadapi-pthread/libboost_serialization.so.1.66.0) ==13247== by 0x4011109: _dl_fini (dl-fini.c:235) ==13247== Block was alloc'd at ==13247== at 0x4C2E19F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==13247== by 0x50A0FC0: __gnu_cxx::new_allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::allocate(unsigned long, void const*) (new_allocator.h:104) ==13247== by 0x50A0F6B: __gnu_cxx::__alloc_traits&lt;std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::allocate(std::allocator&lt;std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;&amp;, unsigned long) (alloc_traits.h:130) ==13247== by 0x50A0E43: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_get_node() (stl_tree.h:505) ==13247== by 0x50A0DFF: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_create_node(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&amp;) (stl_tree.h:527) ==13247== by 0x50A0D8F: std::_Rb_tree_node&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;* std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_Alloc_node::operator()&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&amp;) const (stl_tree.h:473) ==13247== by 0x50A0BDB: std::_Rb_tree_iterator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_insert_&lt;std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_Alloc_node&gt;(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&amp;, std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_Alloc_node&amp;) (stl_tree.h:1535) ==13247== by 0x50A09FC: std::_Rb_tree&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::extended_type_info_typeid_0 const*, std::_Identity&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt;, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::_M_insert_equal(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&amp;) (stl_tree.h:1918) ==13247== by 0x509FE2C: std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt;::insert(boost::serialization::typeid_system::extended_type_info_typeid_0 const* const&amp;) (stl_multiset.h:474) ==13247== by 0x509FA68: boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&amp;) (extended_type_info_typeid.cpp:91) ==13247== by 0x4201CA: boost::serialization::extended_type_info_typeid&lt;polymorphic_derived2&gt;::extended_type_info_typeid() (extended_type_info_typeid.hpp:91) ==13247== by 0x4200FE: boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;polymorphic_derived2&gt; &gt;::get_instance()::singleton_wrapper::singleton_wrapper() (singleton.hpp:117) </pre><p> In gdb it looks like this, not sure if it's the same thing however: </p> <pre class="wiki">(gdb) r Starting program: /home/jking/boost/bin.v2/libs/serialization/test/test_dll_exported.test/clang-gnu-linux-4.0.0/debug/threadapi-pthread/test_dll_exported No errors detected. Program received signal SIGSEGV, Segmentation fault. 0x00007ffff71f79b6 in std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&amp;) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (gdb) bt #0 0x00007ffff71f79b6 in std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&amp;) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #1 0x00007ffff793564b in std::_Rb_tree&lt;boost::serialization::extended_type_info const*, boost::serialization::extended_type_info const*, std::_Identity&lt;boost::serialization::extended_type_info const*&gt;, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt;::_M_erase_aux ( this=0x7ffff7b9e948 &lt;boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::extended_type_info const*, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt; &gt;::get_instance()::t&gt;, __position=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h:2272 #2 0x00007ffff7935615 in std::_Rb_tree&lt;boost::serialization::extended_type_info const*, boost::serialization::extended_type_info const*, std::_Identity&lt;boost::serialization::extended_type_info const*&gt;, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt;::erase ( this=0x7ffff7b9e948 &lt;boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::extended_type_info const*, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt; &gt;::get_instance()::t&gt;, __position=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_tree.h:1057 #3 0x00007ffff7934395 in std::multiset&lt;boost::serialization::extended_type_info const*, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt;::erase ( this=0x7ffff7b9e948 &lt;boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::extended_type_info const*, boost::serialization::detail::key_compare, std::allocator&lt;boost::serialization::extended_type_info const*&gt; &gt; &gt;::get_instance()::t&gt;, __position=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_multiset.h:571 #4 0x00007ffff7933ec9 in boost::serialization::extended_type_info::key_unregister (this=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at ../../../libs/serialization/src/extended_type_info.cpp:136 #5 0x000000000041fed7 in boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt;::~extended_type_info_no_rtti ( this=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at ../../../boost/serialization/extended_type_info_no_rtti.hpp:107 #6 0x000000000041fa05 in boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() ( this=0x631870 &lt;boost::serialization::singleton&lt;boost::serialization::extended_type_info_no_rtti&lt;polymorphic_base&gt; &gt;::get_instance()::t&gt;) at ../../../boost/serialization/singleton.hpp:117 #7 0x00007ffff68a3270 in __run_exit_handlers (status=0, listp=0x7ffff6c2a5d8 &lt;__exit_funcs&gt;, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:83 #8 0x00007ffff68a32ca in __GI_exit (status=&lt;optimized out&gt;) at exit.c:105 #9 0x00007ffff68893f8 in __libc_start_main (main=0x414660 &lt;main(int, char**)&gt;, argc=1, argv=0x7fffffffe2e8, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fffffffe2d8) at ../csu/libc-start.c:325 #10 0x00000000004143ca in _start () at ../../../boost/serialization/singleton.hpp:155 </pre><p> I don't think either of these issues specifically describes the memory leak in <a class="new ticket" href="https://svn.boost.org/trac10/ticket/13186" title="#13186: Bugs: Memory leak in serialization 1.65 (new)">#13186</a> (valgrind is reporting that too) which is why I am opening a new defect for it. </p> James E. King, III https://svn.boost.org/trac10/ticket/13259 https://svn.boost.org/trac10/ticket/13259 Report #13258: boost/archive/text_iarchive.hpp memory leaks with MFC! Thu, 12 Oct 2017 05:56:51 GMT Thu, 12 Oct 2017 05:56:51 GMT <p> visual studio 2017 community edition; boost c++, 1.65 installed through vcpkg; </p> <p> reproducing steps. </p> <ol><li>install vcpkg; vcpkg install boost </li><li>create a new project with mfc shared support; </li><li>add #include &lt;boost/archive/text_iarchive.hpp&gt; to stdafx.h </li><li>build -&gt; run -&gt; exit </li><li>visual studio will generate messages like: </li></ol><pre class="wiki">Detected memory leaks! Dumping objects -&gt; {180} normal block at 0x01546820, 8 bytes long. Data: &lt; L &gt; E8 F1 4C 01 00 00 00 00 {179} normal block at 0x01546510, 20 bytes long. Data: &lt; eT eT eT &gt; 10 65 54 01 10 65 54 01 10 65 54 01 01 01 CD CD {178} normal block at 0x01546AC0, 8 bytes long. Data: &lt; L &gt; D0 F1 4C 01 00 00 00 00 {177} normal block at 0x01546790, 20 bytes long. Data: &lt; gT gT gT &gt; 90 67 54 01 90 67 54 01 90 67 54 01 01 01 CD CD {176} normal block at 0x0153B948, 8 bytes long. Data: &lt;` L &gt; 60 F1 4C 01 00 00 00 00 {175} normal block at 0x01546190, 20 bytes long. Data: &lt; aT aT aT &gt; 90 61 54 01 90 61 54 01 90 61 54 01 01 01 CD CD {174} normal block at 0x0153BA98, 8 bytes long. Data: &lt;H L &gt; 48 F1 4C 01 00 00 00 00 {173} normal block at 0x015435A8, 20 bytes long. Data: &lt; 5T 5T 5T &gt; A8 35 54 01 A8 35 54 01 A8 35 54 01 01 01 CD CD {172} normal block at 0x0153B8A0, 8 bytes long. Data: &lt;0 L &gt; 30 F1 4C 01 00 00 00 00 {171} normal block at 0x01543568, 20 bytes long. Data: &lt;h5T h5T h5T &gt; 68 35 54 01 68 35 54 01 68 35 54 01 01 01 CD CD {170} normal block at 0x0153BA28, 8 bytes long. Data: &lt; L &gt; 18 F1 4C 01 00 00 00 00 {169} normal block at 0x01543528, 20 bytes long. </pre><p> I can finally nail down to these two headers; If they exist in stdafx.h at the same time, there will be memory leakage errors. </p> <pre class="wiki">#include &lt;afxwin.h&gt; // MFC core and standard components #include &lt;boost/archive/text_iarchive.hpp&gt; </pre> LL L <lll@…> https://svn.boost.org/trac10/ticket/13258 https://svn.boost.org/trac10/ticket/13258 Report #13257: Log attributes passed as arguments to open_record are ignored Wed, 11 Oct 2017 19:19:04 GMT Mon, 16 Oct 2017 12:26:31 GMT <p> Why does boost::log::sources::basic_logger::open_record_unlocked(ArgsT const&amp;) ignore its argument when calling boost::log::core::open_record()? </p> <div class="wiki-code"><div class="code"><pre> <span class="cm">/*!</span> <span class="cm"> * Unlocked \c open_record</span> <span class="cm"> */</span> <span class="k">template</span><span class="o">&lt;</span> <span class="k">typename</span> <span class="n">ArgsT</span> <span class="o">&gt;</span> <span class="n">record</span> <span class="n">open_record_unlocked</span><span class="p">(</span><span class="n">ArgsT</span> <span class="k">const</span><span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">m_pCore</span><span class="o">-&gt;</span><span class="n">open_record</span><span class="p">(</span><span class="n">m_Attributes</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> The boost::log::sources::logger_mt::open_record() eventually passes the attributes to this function where they are summarily ignored. How is something as fundamental to the Boost Log library as BOOST_LOG_WITH_PARAMETERS() supposed to work! It doesn't, by the way. </p> Thomas M. Bernal <tbernal@…> https://svn.boost.org/trac10/ticket/13257 https://svn.boost.org/trac10/ticket/13257 Report #13256: regex '([|&])\1?' with backreference fails to compile if regex::nosub flag used Wed, 11 Oct 2017 09:06:39 GMT Wed, 11 Oct 2017 09:08:00 GMT <p> when compiling a regex with regex::nosubs flag set, a regex with a back reference fails with: </p> <p> Invalid back reference: specified capturing group does not exist. The error occurred while parsing the regular expression: '([|&amp;])&gt;&gt;&gt;HERE&gt;&gt;&gt;\1?'. </p> <p> Test program: </p> <p> #include &lt;boost/regex.hpp&gt; #include &lt;iostream&gt; #include &lt;exception&gt; </p> <p> using namespace std; </p> <p> int main(int argc, char <strong>argv) { </strong></p> <blockquote> <p> try { </p> <blockquote> <p> boost::regex::flag_type flags = boost::regex::ECMAScript; flags |= boost::regex::nosubs; boost::regex theRegex("([|&amp;])<br />1?", flags); cout &lt;&lt; "ok\n"; return 0; </p> </blockquote> <p> } catch (exception &amp;e) { </p> <blockquote> <p> cerr &lt;&lt; "exception: " &lt;&lt; e.what() &lt;&lt; "\n"; return 1; </p> </blockquote> <p> } </p> </blockquote> <p> } g++ -std=c++11 test-boost-regex-bug.cpp -o test-boost-regex-bug -l boost_regex </p> Gene Thomas <gene@…> https://svn.boost.org/trac10/ticket/13256 https://svn.boost.org/trac10/ticket/13256 Report #13253: RFC 4180 CSV separator Tue, 10 Oct 2017 00:21:26 GMT Tue, 10 Oct 2017 15:38:52 GMT <p> It would be useful to have a RFC 4180 CSV separator alternative to <code>escaped_list_separator</code>. The RFC 4180 CSV format is more compatible with popular spreadsheet software. It really is a different format: </p> <ol><li>Putting quotes around a field allows commas only if the initial quote is at the beginning of the field. </li><li>Quotes can be embedded in a quoted field if they are repeated. For example: <pre class="wiki">field 1,"embedded "" in field 2",field 3 </pre></li><li>Newlines can be embedded in a quoted field. </li><li>There is no escape character (except for the special case of a repeated quote). </li></ol><p> It is easy to write a tokenizer function that parses this format, except for the embedded newlines. I have some working code that could be cleaned up and submitted. </p> tom_becker@… https://svn.boost.org/trac10/ticket/13253 https://svn.boost.org/trac10/ticket/13253 Report #13252: Bootstrap.bat gcc throws compilation error (code is not c90 complilant) Mon, 09 Oct 2017 21:16:47 GMT Mon, 13 Nov 2017 18:32:08 GMT <p> Trying to compile the new Boost 1.65.1 with Mingw w64 (gcc 4.8.3) on a Windows 10. </p> <p> While running <code>bootstrap.bat gcc</code> I get: </p> <pre class="wiki">... \boost_1_65_1\tools\build\src\engine&gt;.\bootstrap\jam0 -f build.jam --toolset=gcc "--toolset-root= " ...found 161 targets... ...updating 3 targets... [MKDIR] bin.ntx86_64 [COMPILE] bin.ntx86_64\b2.exe debugger.c: In function 'debug_start_child': debugger.c:1128:5: error: 'for' loop initial declarations are only allowed in C99 mode for ( int i = 1; i &lt; argc; ++i ) ^ debugger.c:1128:5: note: use option -std=c99 or -std=gnu99 to compile your code strings.c: In function 'string_rtrim': strings.c:195:5: warning: ISO C90 forbids mixed declarations and code [-Wpedantic] char * p = self-&gt;value + self-&gt;size - 1; ^ ... </pre><p> So making a small modification (declare the <em>i</em> variable outside the for-loop) into <code>boost_1_65_1\tools\build\src\engine\debugger.c:1128</code> I can make it compile perfectly. </p> <p> I guess adding <code>--std=c99</code> or <code>--std=c11</code> into <code>boost_1_65_1\tools\build\src\engine\config_toolset.bat:204</code> could been even better. </p> carlos.federico005@… https://svn.boost.org/trac10/ticket/13252 https://svn.boost.org/trac10/ticket/13252 Report #13250: bootstrap.bat fails for toolset mingw Sun, 08 Oct 2017 17:38:22 GMT Sun, 08 Oct 2017 17:38:22 GMT <p> See also ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/12997" title="#12997: Bugs: bootstarp.bat MinGW failed to build boost engine (new)">#12997</a> </p> <p> Have successfully built several versions of boost going back about 2 years. Each build fails until I appropriately tweak the bootstrap and config scripts. For 1.65.1, the fix was pretty easy, requiring only a simply manual addition to </p> <p> ..tools/build/src/engine/config_toolset.bat </p> <p> Near the end of that script (the last toolset it checks) is mingw. Unfortunately, jam doesn't understand toolset mingw, so the toolset needs to be set to gcc. It doesn't work to call bootstrap.bat with gcc because then subsequent scripts assume either visual studior or msvc. The fix is to insert the line </p> <p> set "BOOST_JAM_TOOLSET=gcc" </p> <p> immediately after the line :Skip_INTEL_WIN32 </p> <p> then run b2 with toolset=gcc. </p> Michael H Kelley <mhkelley2017@…> https://svn.boost.org/trac10/ticket/13250 https://svn.boost.org/trac10/ticket/13250 Report #13248: test_hyperexponential_distribution fails in debug builds on travis CI osx any xcode level (clang 4.2.1 for example) Sun, 08 Oct 2017 11:50:07 GMT Sun, 08 Oct 2017 11:50:07 GMT <p> Appears to be platform related as debug builds on linux with clang (any version) do not fail this way. </p> <p> <a class="ext-link" href="https://travis-ci.org/jeking3/random/builds/284931646"><span class="icon">​</span>https://travis-ci.org/jeking3/random/builds/284931646</a> </p> <pre class="wiki">testing.capture-output bin.v2/libs/random/test/test_hyperexponential_distribution.test/clang-darwin-darwin-4.2.1/debug/threadapi-pthread/test_hyperexponential_distribution.run ====== BEGIN OUTPUT ====== Running 7 test cases... libs/random/test/test_hyperexponential_distribution.cpp:275: error: in "test_streaming": check param == check_param has failed [[0.25 0.25 0.25 0.25] [1 2 3 4] != [1] [1]] libs/random/test/test_hyperexponential_distribution.cpp:294: error: in "test_streaming": check param == check_param has failed [[0.1 0.2 0.3 0.4] [1 1 1 1] != [1] [1]] *** 2 failures are detected in the test module "Master Test Suite" EXIT STATUS: 201 ====== END OUTPUT ====== bin.v2/libs/random/test/test_hyperexponential_distribution.test/clang-darwin-darwin-4.2.1/debug/threadapi-pthread/test_hyperexponential_distribution.run... </pre> James E. King, III https://svn.boost.org/trac10/ticket/13248 https://svn.boost.org/trac10/ticket/13248 Report #13247: test_independent_bits32 fails unit test in release mode only at -O2 and higher under clang 3.8, 3.9, 4.0, 5.0 Sun, 08 Oct 2017 04:13:39 GMT Tue, 10 Oct 2017 16:10:23 GMT <p> I'm working on adding CI support to Boost.Random and I found that the clang build jobs are failing on this test as follows. To reproduce, use Boost.Random from the test directory with ubuntu zesty and clang 4.0: </p> <pre class="wiki">passes: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags="-O0" test_independent_bits32 passes: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags="-O1" test_independent_bits32 fails: ../../../b2 toolset=clang variant=release test_independent_bits32 clean ../../../b2 toolset=clang variant=release cxxflags="-O2" test_independent_bits32 </pre><p> No versions of gcc at any optimization level seem to fail and ubsan testing also does not fail (but it is a debug build) so this needs further investigation to understand if it is a clang optimizer bug that's been around for a while or if the test is wrong for clang somehow. </p> <pre class="wiki">testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-3.9.0/release/threadapi-pthread/test_independent_bits32.run ====== BEGIN OUTPUT ====== Running 13 test cases... libs/random/test/test_generator.ipp(246): error: in "validate": check urng() == 4123659995U has failed [0 != 4123659995] libs/random/test/test_generator.ipp(256): error: in "validate_seed_seq": check urng() == 666528879U has failed [0 != 666528879] libs/random/test/test_generator.ipp(268): error: in "validate_iter": check urng() == 3408548740U has failed [0 != 3408548740] libs/random/test/test_generator.ipp(278): error: in "test_generate": check { actual, actual + N } == { expected, expected + N } has failed. Mismatch at position 0: 0 != 3499211612 Mismatch at position 1: 0 != 581869302 Mismatch at position 2: 0 != 3890346734 Mismatch at position 3: 0 != 3586334585 *** 4 failures are detected in the test module "Master Test Suite" EXIT STATUS: 201 ====== END OUTPUT ====== ...failed testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-3.9.0/release/threadapi-pthread/test_independent_bits32.run... </pre><pre class="wiki">testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-5.0.1/release/threadapi-pthread/test_independent_bits32.run ====== BEGIN OUTPUT ====== Running 13 test cases... libs/random/test/test_generator.ipp(246): error: in "validate": check urng() == 4123659995U has failed [0 != 4123659995] libs/random/test/test_generator.ipp(256): error: in "validate_seed_seq": check urng() == 666528879U has failed [0 != 666528879] libs/random/test/test_generator.ipp(268): error: in "validate_iter": check urng() == 3408548740U has failed [0 != 3408548740] libs/random/test/test_generator.ipp(278): error: in "test_generate": check { actual, actual + N } == { expected, expected + N } has failed. Mismatch at position 0: 0 != 3499211612 Mismatch at position 1: 0 != 581869302 Mismatch at position 2: 0 != 3890346734 Mismatch at position 3: 0 != 3586334585 *** 4 failures are detected in the test module "Master Test Suite" EXIT STATUS: 201 ====== END OUTPUT ====== ...failed testing.capture-output bin.v2/libs/random/test/test_independent_bits32.test/clang-gnu-linux-5.0.1/release/threadapi-pthread/test_independent_bits32.run... </pre> James E. King, III https://svn.boost.org/trac10/ticket/13247 https://svn.boost.org/trac10/ticket/13247 Report #13245: Coroutines2: Crashes Visual Studio when attached with a debugger (on Windows x86) Wed, 04 Oct 2017 13:50:24 GMT Thu, 30 Nov 2017 06:38:12 GMT <p> Hi, </p> <p> In my application I'm using coroutine2 to generate some objects which I have to decode from a stream. These objects are generated using coroutines. My problem is that as soon as I reach the end of the stream and would theoretically throw std::ios_base::failure my application crashes under certain conditions. </p> <p> The function providing this feature is implemented in C++, exported as a C function and called from C#. This all happens on a 32bit process on Windows 10 x64. Unfortunately it only reliably crashes when I start my test from C# in debugging mode WITHOUT the native debugger attached. As soon as I attach the native debugger everything works like expected. </p> <p> Here is a small test application to reproduce this issue: </p> <p> Api.h </p> <pre class="wiki">#pragma once extern "C" __declspec(dllexport) int __cdecl test(); </pre><p> Api.cpp </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;sstream&gt; #include "Api.h" #define BOOST_COROUTINES2_SOURCE #include &lt;boost/coroutine2/coroutine.hpp&gt; int test() { using coro_t = boost::coroutines2::coroutine&lt;bool&gt;; coro_t::pull_type source([](coro_t::push_type&amp; yield) { std::vector&lt;char&gt; buffer(200300, 0); std::stringstream stream; stream.write(buffer.data(), buffer.size()); stream.exceptions(std::ios_base::eofbit | std::ios_base::badbit | std::ios_base::failbit); try { std::vector&lt;char&gt; dest(100100, 0); while (stream.good() &amp;&amp; !stream.eof()) { stream.read(&amp;dest[0], dest.size()); std::cerr &lt;&lt; "CORO: read: " &lt;&lt; stream.gcount() &lt;&lt; std::endl; } } catch (const std::exception&amp; ex) { std::cerr &lt;&lt; "CORO: caught ex: " &lt;&lt; ex.what() &lt;&lt; std::endl; } catch (...) { std::cerr &lt;&lt; "CORO: caught unknown exception." &lt;&lt; std::endl; } }); std::cout &lt;&lt; "SUCCESS" &lt;&lt; std::endl; return 0; } </pre><p> c#: </p> <pre class="wiki">using System; using System.Runtime.InteropServices; namespace CoroutinesTest { class Program { [DllImport("ConsoleApplication1.dll", EntryPoint = "test", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] internal static extern Int32 test(); static void Main(string[] args) { test(); Console.WriteLine("SUCCESS"); } } } </pre><p> Some details: </p> <ul><li>We are using Visual Studio 2015 14 and dynamically link the c++ runtime. </li><li>The test library statically links Boost 1.63.0. </li><li>We also tried to reproduce this behaviour with calling the functionallity directly from c++ and from python. Both tests have not been successful so far. </li><li>If you start the c# code with CTRL F5 (meaning without the .net debugger) everything will also be fine. Only if you start it with F5 (meaning the .NET Debugger attached) the visual studio instance will crash. Also be sure not to enable the native debugger! </li><li>Note: If we don't use the exceptions in the stream, everything seams to be fine as well. Unfortunately the code decoding my objects makes use of them and therefore I cannot avoid this. </li></ul><p> Would be amazing if you had some additional hints on what might go wrong here or a solution. </p> <p> Thanks in advance! Best Regards, Michael </p> Michael Eiler <michael.eiler@…> https://svn.boost.org/trac10/ticket/13245 https://svn.boost.org/trac10/ticket/13245 Report #13243: error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {} gives warning in Visual Studio 2010 Tue, 03 Oct 2017 10:50:51 GMT Tue, 03 Oct 2017 10:53:08 GMT <p> \boost_1_65_1-64\boost\system\error_code.hpp line: 255: error_category() BOOST_SYSTEM_NOEXCEPT: std_cat_( this ) {} </p> <p> When called from a file that is complied with Visual Studio 2010, this lines gives: warning C4355: 'this' : used in base member initializer list </p> anonymous https://svn.boost.org/trac10/ticket/13243 https://svn.boost.org/trac10/ticket/13243 Report #13238: Typo in Boost.Move Sun, 01 Oct 2017 14:01:11 GMT Tue, 03 Oct 2017 00:49:26 GMT <p> There is no warning 4675 for the MS compiler. </p> <p> Compiling gives </p> <pre class="wiki">boost/move/detail/config_begin.hpp(17): warning C4619: #pragma warning: there is no warning number '4675' </pre><p> warning C4619 is (level 3) so visible in most cases. </p> <p> My compiler: </p> <pre class="wiki">Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25508.2 for x64 </pre> Jerker Bäck <jerker.back@…> https://svn.boost.org/trac10/ticket/13238 https://svn.boost.org/trac10/ticket/13238 Report #13235: Wrong "Getting Started" link Fri, 29 Sep 2017 07:56:18 GMT Fri, 29 Sep 2017 07:56:18 GMT <p> Hi, </p> <p> In <a class="ext-link" href="https://svn.boost.org/trac10/wiki/ModularBoost"><span class="icon">​</span>https://svn.boost.org/trac10/wiki/ModularBoost</a>, the getting stated link points to the wrong page (which can be obtained to following the link). </p> <p> Thanks </p> anonymous https://svn.boost.org/trac10/ticket/13235 https://svn.boost.org/trac10/ticket/13235 Report #13233: address sanitize dumps error Fri, 29 Sep 2017 03:16:34 GMT Tue, 20 Feb 2018 15:21:01 GMT <p> When compiler user code with -fsanitize=address -fsanitize=undefined,it dumps: </p> <pre class="wiki">/usr/local/include/boost/smart_ptr/detail/shared_count.hpp:426:36: runtime error: member call on address 0x6030000134b0 which does not point to an object of type 'sp_counted_base' 0x6030000134b0: note: object is of type 'boost::detail::sp_counted_impl_p&lt;boost::log::v2_mt_posix::core&gt;' 03 00 80 6a 40 2a 4f fb b6 7f 00 00 05 00 00 00 01 00 00 00 b0 ed 00 00 20 60 00 00 00 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::detail::sp_counted_impl_p&lt;boost::log::v2_mt_posix::core&gt;' /usr/local/include/boost/log/attributes/attribute_value.hpp:200:37: runtime error: member call on address 0x60400000cad0 which does not point to an object of type 'impl' 0x60400000cad0: note: object is of type 'boost::log::v2_mt_posix::attributes::attribute_value_impl&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' 01 00 00 43 88 2a 4f fb b6 7f 00 00 01 00 00 00 be be be be b0 22 01 00 30 60 00 00 1d 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::log::v2_mt_posix::attributes::attribute_value_impl&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' </pre><p> could you fix it?It may caused by logging::core instance </p> anonymous https://svn.boost.org/trac10/ticket/13233 https://svn.boost.org/trac10/ticket/13233 Report #13232: u32regex_replace - None of these prototypes have callback formatter capability Thu, 28 Sep 2017 21:08:28 GMT Thu, 28 Sep 2017 21:08:28 GMT <p> I've had to do a workaround using a u32regex_iterator.<br /> This one takes parameters wstring, u32regex, and function address.<br /> (Internally it converts the wstring to u32string and does<br /> the replacement with the user callback). </p> <p> I just have to add more prototypes for the different forms<br /> needed, but it would be nice if I didn't have to do this. </p> <pre class="wiki">void U_Regex_Replace_Callback( X_string&amp; strSrc, U_X_regex&amp; Rx, X_32string (*func)(X_u32smatch) ) { X_32string str32Src, str32Repl, str32Out; WstrToU32string( strSrc, str32Src ); str32Out.clear(); boost::u32regex_iterator&lt;std::u32string::const_iterator&gt; i(boost::make_u32regex_iterator( str32Src, Rx)), j; U32SITR last = str32Src.begin(); while(i != j) { str32Out.append( (*i).prefix() ); str32Out.append( func( (*i) ) ) ; last = (*i)[0].second; ++i; } str32Out.append( last, str32Src.end() ); U32stringToWstr( str32Out, strSrc ); } </pre> robic@… https://svn.boost.org/trac10/ticket/13232 https://svn.boost.org/trac10/ticket/13232 Report #13231: u32regex_replace() for std::u32string (UTF-32) won't compile Wed, 27 Sep 2017 23:24:52 GMT Thu, 28 Sep 2017 20:46:16 GMT <p> Note - This pertains to input UTF-32 strings. </p> <p> Compiler: VS2015 , VC++ Boost version: 1.64 </p> <p> The u32regex_search() works fine and as expected </p> <p> ================================= </p> <p> Problem description: Intellisence detects proper input<br /> parameters using the u32string parameter, but throws many<br /> errors when compiling. </p> <p> The errors start with<br /> </p> <blockquote class="citation"> <p> boost_1_64_0\boost/functional/hash/extensions.hpp(262): error C2664: 'size_t boost::hash_value(std::type_index)': cannot convert argument 1 from 'const char32_t' to 'std::type_index'<br /> </p> </blockquote> <p> and end with<br /> </p> <blockquote class="citation"> <blockquote> <p> <a class="missing wiki">RxReplace</a>.cpp(9255): note: see reference to function template instantiation 'std::basic_string&lt;char32_t,std::char_traits&lt;char32_t&gt;,std::allocator&lt;char32_t&gt;&gt; boost::u32regex_replace&lt;char32_t&gt;(const std::basic_string&lt;char32_t,std::char_traits&lt;char32_t&gt;,std::allocator&lt;char32_t&gt;&gt; &amp;,const boost::u32regex &amp;,const std::basic_string&lt;char32_t,std::char_traits&lt;char32_t&gt;,std::allocator&lt;char32_t&gt;&gt; &amp;,boost::regex_constants::match_flag_type)' being compiled </p> </blockquote> </blockquote> <p> with about 20 errors in between. <br /> </p> <p> I hope this is just a problem with extensions.hpp<br /> and maybe there is a quick fix (or it has already been fixed).<br /> I desperately need this to work with <em>std::u32string</em> types<br /> as <a class="missing wiki">UnicodeString</a> just won't cut it for my purposes. </p> <p> <em>From the documentation:<br /> u32regex_replace<br /> <br /> For each regex_replace algorithm defined by<br /> &lt;boost/regex.hpp&gt;, then &lt;boost/regex/icu.hpp&gt; defines an overloaded algorithm that takes the same arguments, but which is called u32regex_replace, and which will accept UTF-8, UTF-16 or UTF-32 encoded data, as well as an ICU <a class="missing wiki">UnicodeString</a> as input. </em> </p> <p> The code below reproduces the compile errors </p> <pre class="wiki"> // rxconst.h // ============================== typedef std::u32string X_32string; typedef std::wstring X_string; typedef boost::u32regex U_X_regex; typedef boost::u32match X_u32match; typedef std::u32string::const_iterator U32SITR; #define U_MAKEREGEX(str,options) make_u32regex(str,options) #define U_REGEX_SEARCH boost::u32regex_search #define U_REGEX_REPLACE boost::u32regex_replace // RxReplace.cpp ( won't compile ) // ============================== #include "rxconst.h"; U_X_regex uRx = U_MAKEREGEX( _T("[trgt]+"), regex_constants::perl ); X_32string sTarget, sFmt, sOutput; WstrToU32string( X_string(_T("target")), sTarget ); WstrToU32string( X_string(_T("")), sFmt ); sOutput = U_REGEX_REPLACE( sTarget, uRx, sFmt ); // &lt;-- Won't compile // RxSearch.cpp ( compiles and runs as expected ) // ============================== #include "rxconst.h"; U_X_regex uRx = U_MAKEREGEX( _T("[abce]+"), regex_constants::perl ); X_32string sSrc; WstrToU32string( X_string(_T("source")), sSrc ); U32SITR SitrStart = sSrc.begin(); U32SITR start = SitrStart; U32SITR end = sSrc.end(); X_u32match _M; while ( U_REGEX_SEARCH( start, end, _M, uRx, Flags, SitrStart ) ) { // ... } </pre> robic@… https://svn.boost.org/trac10/ticket/13231 https://svn.boost.org/trac10/ticket/13231 Report #13230: _FILE_OFFSET_BITS=64 breaks compilation with Android NDK r15 and API<24 Wed, 27 Sep 2017 18:09:30 GMT Mon, 19 Mar 2018 16:44:01 GMT <p> Behavior of <code>_FILE_OFFSET_BITS</code> in Android NDK is described at android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md </p> <blockquote class="citation"> <p> Android support for <code>_FILE_OFFSET_BITS=64</code> (which turns off_t into <code>off64_t</code> and replaces each <code>off_t</code> function with its <code>off64_t</code> counterpart, such as <code>lseek</code> in the source becoming <code>lseek64</code> at runtime) was added late. Even when it became available for the platform, it wasn‘t available from the NDK until r15. Before NDK r15, <code>_FILE_OFFSET_BITS=64</code> silently did nothing: all code compiled with that was actually using a 32-bit <code>off_t</code>. With a new enough NDK, the situation becomes complicated. If you’re targeting an API before 21, almost all functions that take an <code>off_t</code> become unavailable. You‘ve asked for their 64-bit equivalents, and none of them (except <code>lseek</code>/<code>lseek64</code>) exist. As you increase your target API level, you’ll have more and more of the functions available. API 12 adds some of the <code>&lt;unistd.h&gt;</code> functions, API 21 adds mmap, and by API 24 you have everything including <code>&lt;stdio.h&gt;</code>. </p> </blockquote> <p> In <code>filesystem/src/operations.cpp</code> <code>_FILE_OFFSET_BITS</code> is unconditionally defined to <code>64</code> in hope that </p> <blockquote class="citation"> <p> at worst, these defines may have no effect </p> </blockquote> <p> It actually breaks compilation with Android NDK r15 if <code>__ANDROID_API__</code> is less than 24. </p> d.mikhirev@… https://svn.boost.org/trac10/ticket/13230 https://svn.boost.org/trac10/ticket/13230 Report #13228: argument parsing errors when unit_test_main() is called in a loop more than ones Thu, 21 Sep 2017 19:54:40 GMT Fri, 22 Sep 2017 20:49:19 GMT <p> I want to run my test suit in a loop to detect race conditions in a multi threading environment. You may see at my example test suit. </p> <p> The problems does not occur with long options! </p> <pre class="wiki">Claus-MBP:AgentProV4 clausklein$ ./demo_test -l all -2 loops requested: 2 0: ./demo_test 1: -l 2: all Running 1 test case... Entering test module "Demo" demo_test.cpp:11: Entering test case "QueuedThreadPoolLoad_test" simple compare demo_test.cpp:16: info: check i == 0 has passed demo_test.cpp:11: Leaving test case "QueuedThreadPoolLoad_test"; testing time: 88us Leaving test module "Demo"; testing time: 133us *** No errors detected 0: ./demo_test 1: -l 2: all loops left: 1 Boost.Test WARNING: token "all" does not correspond to the Boost.Test argument and should be placed after all Boost.Test arguments and the -- separator. For example: demo_test --random -- all Boost.Test WARNING: token "all" does not correspond to the Boost.Test argument and should be placed after all Boost.Test arguments and the -- separator. For example: demo_test --random -- all Running 1 test case... *** No errors detected Claus-MBP:AgentProV4 clausklein$ ./demo_test --random --run_test=QueuedThreadPoolLoad_test -2 loops requested: 2 0: ./demo_test 1: --random 2: --run_test=QueuedThreadPoolLoad_test Running 1 test case... *** No errors detected 0: ./demo_test 1: --random 2: --run_test=QueuedThreadPoolLoad_test loops left: 1 Running 1 test case... *** No errors detected Claus-MBP:AgentProV4 clausklein$ ./demo_test -i 0: ./demo_test 1: -i Running 1 test case... Platform: Mac OS Compiler: Clang version 8.0.0 (clang-800.0.42.1) STL : libc++ version 3700 Boost : 1.65.1 *** No errors detected Claus-MBP:AgentProV4 clausklein$ </pre> claus.klein@… https://svn.boost.org/trac10/ticket/13228 https://svn.boost.org/trac10/ticket/13228 Report #13227: exception.hpp : disable false warning C4265 given by Visual Studio Thu, 21 Sep 2017 18:30:26 GMT Thu, 21 Sep 2017 18:30:26 GMT <p> Hi, </p> <p> MSVC falsely report a missing virtual destructor inside exception.hpp Would it be possible to add a "pragma warning (disable:4265)" in this file ? This will *not* happen with the default settings of Visual Studio : it happens when trying to raise the warning level (/we4265 : treat "misssing virtual destructor" as an error) </p> <p> Steps to reproduce the problem : </p> <ul><li>Compile the following program: <pre class="wiki"> #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;boost/optional/optional.hpp&gt; int main(int argc, char **argv) { boost::optional&lt;std::string&gt; name; if (argc &gt; 1) name.reset(argv[1]); if (name.is_initialized()) std::cout &lt;&lt; "Hello, " &lt;&lt; name.get() &lt;&lt; "\n"; else std::cout &lt;&lt; "Hello, world \n"; return 0; } </pre></li></ul><ul><li>With the following command line : <pre class="wiki"> cl hello.cpp /Iboost_1_64_0 /EHa /W3 /we4265 </pre></li></ul><p> outputs </p> <pre class="wiki"> c:\tmp&gt;cl hello.cpp /Iboost_1_64_0 /EHa /W3 /we4265 Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.cpp boost_1_64_0\boost/exception/exception.hpp(176): error C4265: 'boost::exception_detail::error_info_container': class has virtual functions, but destructor is not virtual instances of this class may not be destructed correctly </pre><p> For more details, please also refer to <a class="ext-link" href="https://github.com/ivsgroup/boost_warnings_minimal_demo"><span class="icon">​</span>https://github.com/ivsgroup/boost_warnings_minimal_demo</a> </p> <p> The problem occurs with boost 1.64 and 1.62. </p> <p> Thanks &amp; regards ! </p> Pascal Thomet <pthomet@…> https://svn.boost.org/trac10/ticket/13227 https://svn.boost.org/trac10/ticket/13227 Report #13225: operator != fails in classes derived from boost::rational Thu, 21 Sep 2017 14:47:48 GMT Thu, 21 Sep 2017 14:47:48 GMT <p> In a class derived from boost::rational operator != seems to return "false" always. </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/rational.hpp&gt; struct RationalNumber : public boost::rational&lt;int&gt; { RationalNumber(int n, int d) : boost::rational&lt;int&gt;(n, d) {} }; using namespace std; template &lt;typename T&gt; void check() { T r(2, 3); T q(2, 3); T s(2, 4); cout &lt;&lt; (r!=q) &lt;&lt; " " &lt;&lt; (r!=s) &lt;&lt; endl; } int main() { check&lt;boost::rational&lt;long long&gt;&gt;(); // works cout &lt;&lt; "---------------" &lt;&lt; endl; check&lt;RationalNumber&gt;(); // fails for boost version &gt; 1_63_0 return 0; } </pre><p> Bug appears since boost version 1_64_0 and is present in current development trunk (git repository on 20170921) still. </p> Michael Hanrath <Michael.Hanrath@…> https://svn.boost.org/trac10/ticket/13225 https://svn.boost.org/trac10/ticket/13225 Report #13224: Error compiling odeint with nvcc CUDA 9 error in ublas Thu, 21 Sep 2017 12:44:14 GMT Tue, 02 Jan 2018 09:30:17 GMT <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): warning: invalid friend declaration </p> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(640): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(641): note: see reference to class template instantiation 'boost::numeric::ublas::vector&lt;T,A&gt;::const_iterator ' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(826): note: see reference to class template instantiation 'boost::numeric::ublas::vector&lt;T,A&gt;' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1418): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1419): note: see reference to class template instantiation 'boost::numeric::ublas::fixed_vector&lt;T,N,A&gt;::const_iterator' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(1604): note: see reference to class template instantiation 'boost::numeric::ublas::fixed_vector&lt;T,N,A&gt;' being </p> <blockquote> <p> compiled </p> </blockquote> <p> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2780): error C2039: 'iterator': is not a member of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(37): note: see declaration of 'boost::numeric::ublas' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2781): note: see reference to class template instantiation 'boost::numeric::ublas::c_vector&lt;T,N&gt;::const_iterator' being compiled C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin/../include\boost/numeric/ublas/vector.hpp(2950): note: see reference to class template instantiation 'boost::numeric::ublas::c_vector&lt;T,N&gt;' being compiled </p> jorge_221@… https://svn.boost.org/trac10/ticket/13224 https://svn.boost.org/trac10/ticket/13224 Report #13222: Documentation for header-only libraries inaccurate Thu, 21 Sep 2017 09:00:25 GMT Thu, 21 Sep 2017 09:02:27 GMT <p> The documentation at </p> <p> <a href="http://www.boost.org/doc/libs/1_65_1/more/getting_started/unix-variants.html#header-only-libraries">http://www.boost.org/doc/libs/1_65_1/more/getting_started/unix-variants.html#header-only-libraries</a> </p> <p> lists the libraries which must be be compiled separately. </p> <p> Executing the following on the command line </p> <blockquote class="citation"> <p> ./bootstrap.sh --show-libraries </p> </blockquote> <p> however, produces a different list (see below). It seems the docu is missing the libraries: </p> <p> <em>atomic, container, coroutine, fiber, metaparse, stacktrace and type_erasure</em> </p> <p> which I suggested should be added to the (html) documentation </p> <blockquote class="citation"> <p> ./bootstrap.sh --show-libraries </p> </blockquote> <p> </p> <blockquote> <p> The Boost libraries requiring separate building and installation are: </p> </blockquote> <ul><li>atomic </li><li>chrono </li><li>container </li><li>context </li><li>coroutine </li><li>date_time </li><li>exception </li><li>fiber </li><li>filesystem </li><li>graph </li><li>graph_parallel </li><li>iostreams </li><li>locale </li><li>log </li><li>math </li><li>metaparse </li><li>mpi </li><li>program_options </li><li>python </li><li>random </li><li>regex </li><li>serialization </li><li>signals </li><li>stacktrace </li><li>system </li><li>test </li><li>thread </li><li>timer </li><li>type_erasure </li><li>wave </li></ul> Declan Moran <dec1@…> https://svn.boost.org/trac10/ticket/13222 https://svn.boost.org/trac10/ticket/13222 Report #13218: Xcode 8/9 static analyzer warning in socket_ops.ipp:2023:5: function 'strcat' is insecure. CWE-119 Tue, 19 Sep 2017 21:03:31 GMT Tue, 19 Sep 2017 21:03:31 GMT <p> The warning generated on macOS by the Xcode 9 static analyzer for files that #include asio.hpp is: </p> <p> In file included from /mnt/boost/asio.hpp:21: In file included from /mnt/boost/asio/basic_datagram_socket.hpp:21: In file included from /mnt/boost/asio/datagram_socket_service.hpp:30: In file included from /mnt/boost/asio/detail/reactive_socket_service.hpp:30: In file included from /mnt/boost/asio/detail/reactive_socket_accept_op.hpp:24: In file included from /mnt/boost/asio/detail/socket_holder.hpp:20: In file included from /mnt/boost/asio/detail/socket_ops.hpp:333: /mnt/boost/asio/detail/impl/socket_ops.ipp:2023:5: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 </p> <p> Since a lot of our files include asio.hpp, we see this warning over and over again. And unfortunately I know of no way to suppress this issue, so I'm hoping you can adjust the implementation to use strlcpy. Some of the other layers in Boost seem to have done this already, so maybe you don't have to re-invent the wheel. </p> mark_hastings@… https://svn.boost.org/trac10/ticket/13218 https://svn.boost.org/trac10/ticket/13218 Report #13217: remove_all(const path& p, system::error_code& ec) is not supposed to throw filesystem_error, but still can Tue, 19 Sep 2017 20:17:47 GMT Thu, 10 May 2018 10:57:57 GMT <p> I will be submitting a github pull request in association with this ticket. </p> <p> According to the documentation, uintmax_t remove_all(const path&amp; p, system::error_code&amp; ec) is not supposed to throw filesystem_error. However, when the directory_iterator used in the loop inside the implementation helper function remove_all_aux() is incremented, it's not done in a way that considers the ec argument. So, when incrementing the iterator fails, the operator++() on the directory_iterator throws, which leads to remove_all() incorrectly throwing. </p> <p> To fix this, it seems that one can take the same approach as the recent changes for Fix <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7307" title="#7307: Bugs: boost::filesystem::remove_all(dirname,ec) throws on write protected ... (closed: fixed)">#7307</a> (commit 4e4374336c640c2717f6a1b168406e11bdf7d6f1) and replace the ++itr call in the loop with an explicit call to either directory_iterator::increment(system::error_code&amp; ec) whenever an ec argument is in effect. This should prevent remove_all() from throwing in such cases and thus allow it to conform to its interface specification. </p> <p> BTW I also found these possibly related tickets in Trac: </p> <ul><li><a class="new ticket" href="https://svn.boost.org/trac10/ticket/10380" title="#10380: Bugs: filesystem directory iterator throws on increment (new)">#10380</a> </li><li><a class="new ticket" href="https://svn.boost.org/trac10/ticket/12640" title="#12640: Bugs: is_empty and remove_all may throw even when called with error_code&amp; ... (new)">#12640</a> </li></ul> Brad Spencer <bspencer@…> https://svn.boost.org/trac10/ticket/13217 https://svn.boost.org/trac10/ticket/13217 Report #13216: Failed to build Boost.Build engine Tue, 19 Sep 2017 15:48:26 GMT Thu, 10 May 2018 10:57:25 GMT <p> Failed to build Boost.Build engine. I'm trying to build 1.64 boost in VSC2017 </p> anonymous https://svn.boost.org/trac10/ticket/13216 https://svn.boost.org/trac10/ticket/13216 Report #13215: Polygon union give a different result depending of the order Mon, 18 Sep 2017 16:02:20 GMT Mon, 25 Sep 2017 15:57:02 GMT <p> I found a precision issue with union between polygons and the result vary depending of the order. </p> <p> We add consecutive polygons to a multi-polygon that contains the previous result. The union of polygons (that have only one outer contour) in the following order give an empty union: </p> <pre class="wiki">Polygon[(-5.180416107177734375,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,4.818223476409912109375),(-2.6576340198516845703125,7.19262790679931640625),(-7.35814762115478515625,7.19262790679931640625),(-7.35814762115478515625,4.818223476409912109375),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(-7.35814762115478515625,-1.8333890438079833984375),(-7.35814762115478515625,-5.162303924560546875),(-3.343097686767578125,-5.162303924560546875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343098163604736328125,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-2.6576340198516845703125,4.79442691802978515625),(-5.180416107177734375,4.79442691802978515625),(-7.35814762115478515625,4.79442691802978515625),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(4.4465618133544921875,-5.162303924560546875),(4.4465618133544921875,-1.195319652557373046875),(3.5822856426239013671875,-1.195319652557373046875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343097686767578125,-5.162303924560546875)] Polygon[(3.5822856426239013671875,-1.195319652557373046875),(3.5822856426239013671875,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-3.343098163604736328125,0.4614227116107940673828125),(-3.3430979251861572265625,-1.19531953334808349609375)] Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] Polygon[(-0.0815036296844482421875,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-0.0815036296844482421875,-0.438062191009521484375)] Polygon[(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875),(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-0.0815036296844482421875,-0.438062191009521484375),(-0.0815036296844482421875,0.46142292022705078125)] </pre><p> Same polygons in a different order give the expected result: </p> <pre class="wiki">Polygon[(4.4465618133544921875,-5.162303924560546875),(4.4465618133544921875,-1.195319652557373046875),(3.5822856426239013671875,-1.195319652557373046875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343097686767578125,-5.162303924560546875)] Polygon[(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875),(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-0.0815036296844482421875,-0.438062191009521484375),(-0.0815036296844482421875,0.46142292022705078125)] Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] Polygon[(3.5822856426239013671875,-1.195319652557373046875),(3.5822856426239013671875,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-3.343098163604736328125,0.4614227116107940673828125),(-3.3430979251861572265625,-1.19531953334808349609375)] Polygon[(-0.0815036296844482421875,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,-0.438062191009521484375),(-0.0815036296844482421875,-0.438062191009521484375)] Polygon[(-7.35814762115478515625,-1.8333890438079833984375),(-7.35814762115478515625,-5.162303924560546875),(-3.343097686767578125,-5.162303924560546875),(-3.3430979251861572265625,-1.19531953334808349609375),(-3.343098163604736328125,0.4614227116107940673828125),(-2.6576340198516845703125,0.4614226818084716796875),(-2.6576340198516845703125,4.79442691802978515625),(-5.180416107177734375,4.79442691802978515625),(-7.35814762115478515625,4.79442691802978515625),(-7.35814762115478515625,0.46142292022705078125)] Polygon[(-5.180416107177734375,0.46142292022705078125),(-2.6576340198516845703125,0.46142292022705078125),(-2.6576340198516845703125,4.818223476409912109375),(-2.6576340198516845703125,7.19262790679931640625),(-7.35814762115478515625,7.19262790679931640625),(-7.35814762115478515625,4.818223476409912109375),(-7.35814762115478515625,0.46142292022705078125)] </pre><p> The result: </p> <pre class="wiki">Polygon[(-0.0815036296844482421875,-5.162303924560546875),(-0.0815036296844482421875,-4.110321521759033203125),(-2.6576340198516845703125,-4.110321521759033203125),(-2.6576340198516845703125,-5.162303924560546875)] </pre><p> Notes: </p> <ol><li>We use float </li><li>This issue happens with mingw32, when tested with Visual 2015 (32bits compilation too) everything is good. Both compiler are used with default options for float precision strategy. </li><li>Prints are made with "%.64g" format option of printf to avoid financial round. </li><li>Those polygons are counter clockwise and open, but I also test them reversed and close, it gives the same result. </li></ol> flamaros.xavier@… https://svn.boost.org/trac10/ticket/13215 https://svn.boost.org/trac10/ticket/13215 Report #13214: Boost::process examples fail to compile in Visual studio 2012 Win 7 Mon, 18 Sep 2017 15:25:10 GMT Thu, 10 May 2018 10:57:03 GMT <p> This ticket is related to <a class="ext-link" href="https://svn.boost.org/trac10/ticket/12990"><span class="icon">​</span>#12990</a>, as the compatibility of boost::process is broken with Visual Studio 2012 too. The problem is due to several features of C++11 - C++17 that break the compatibility with VS2012 : </p> <ul><li>noexcept in process/detail/config.hpp (easy to substitute with BOOST_NOEXCEPT) </li><li>constexpr in process/detail/config.hpp and process/detail/handler_base.hpp </li><li>using resource_type = void in process/detail/handler_base.hpp </li><li>#include &lt;initializer_list&gt; in process/detail/traits/cmd_or_exe.hpp (this feature is available in VS2013) </li></ul> daniele.trimarchi@… https://svn.boost.org/trac10/ticket/13214 https://svn.boost.org/trac10/ticket/13214 Report #13210: Signed integer overflow in successive_shortest_path_nonnegative_weights() Wed, 13 Sep 2017 20:33:09 GMT Wed, 13 Sep 2017 20:33:09 GMT <p> Buiding and running the following program with <a class="missing wiki">UndefinedBehaviorSanitizer</a> will generate a report on signed integer overflow error: </p> <pre class="wiki">#include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/read_dimacs.hpp&gt; #include &lt;boost/graph/successive_shortest_path_nonnegative_weights.hpp&gt; #include &lt;iostream&gt; using namespace boost; using Traits = adjacency_list_traits&lt;vecS, vecS, directedS&gt;; using Graph = adjacency_list&lt; vecS, vecS, directedS, no_property, property&lt;edge_capacity_t, int, property&lt;edge_residual_capacity_t, int, property&lt;edge_reverse_t, Traits::edge_descriptor, property&lt;edge_weight_t, int&gt;&gt;&gt;&gt;&gt;; template &lt;typename Map, typename Edge&gt; void fill_capacity(Map &amp;m, Edge e, Edge er, int c) { put(m, e, c); put(m, er, 0); } template &lt;typename Map, typename Edge&gt; void fill_rev(Map &amp;m, Edge e, Edge er) { put(m, e, er); put(m, er, e); } template &lt;typename Map, typename Edge&gt; void fill_weight(Map &amp;m, Edge e, Edge er, int w) { put(m, e, w); put(m, er, -w); } int main() { Graph g(4); auto capacity = get(edge_capacity, g); auto rev = get(edge_reverse, g); auto weight = get(edge_weight, g); auto e0 = add_edge(0, 1, g).first; auto e0r = add_edge(1, 0, g).first; auto e1 = add_edge(0, 2, g).first; auto e1r = add_edge(2, 0, g).first; auto e2 = add_edge(1, 2, g).first; auto e2r = add_edge(2, 1, g).first; // What the weights and capacities are don't really matter as long as they are all positive fill_capacity(capacity, e0, e0r, 1); fill_capacity(capacity, e1, e1r, 1); fill_capacity(capacity, e2, e2r, 1); fill_rev(rev, e0, e0r); fill_rev(rev, e1, e1r); fill_rev(rev, e2, e2r); fill_weight(weight, e0, e0r, 1); fill_weight(weight, e1, e1r, 1); fill_weight(weight, e2, e2r, 1); successive_shortest_path_nonnegative_weights(g, 0, 2); } </pre><p> Here's the stacktrace collected by UBSan (simplified for readability): </p> <pre class="wiki">/usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:104:57: runtime error: signed integer overflow: 2147483647 + 2147483647 cannot be represented in type 'int' #0 0x43fccd in void boost::successive_shortest_path_nonnegative_weights&lt;...&gt;(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:104:57 #1 0x43d7dc in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch3&lt;...&gt;(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:148:5 #2 0x43bf40 in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch2&lt;...&gt;(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:186:5 #3 0x43b2ba in void boost::detail::successive_shortest_path_nonnegative_weights_dispatch1&lt;...&gt;(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:223:5 #4 0x43b018 in void boost::successive_shortest_path_nonnegative_weights&lt;boost::adjacency_list&lt;...&gt;, int, boost::buffer_param_t, boost::no_property&gt;(...) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:238:12 #5 0x42b046 in void boost::successive_shortest_path_nonnegative_weights&lt;...&gt;(boost::adjacency_list&lt;...&gt;&amp;, boost::graph_traits&lt;...&gt;::vertex_descriptor, boost::graph_traits&lt;...&gt;::vertex_descriptor) /usr/include/boost/graph/successive_shortest_path_nonnegative_weights.hpp:255:5 #6 0x42a520 in main /home/grieve/Research/Testing/boost/reduced.cpp:56:3 #7 0x7f7cb22e3f69 in __libc_start_main (/usr/lib/libc.so.6+0x20f69) #8 0x4039b9 in _start (/home/grieve/Research/Testing/boost/reduced+0x4039b9) </pre><p> The problem here is that function successive_shortest_path_nonnegative_weights() does not take into account the fact that its input graph might be disconnected and therefore it is possible for some shortest path distances to be infinity. </p> grievejia@… https://svn.boost.org/trac10/ticket/13210 https://svn.boost.org/trac10/ticket/13210 Report #13209: erdos_renyi_iterator hangs when n is 1 Wed, 13 Sep 2017 18:04:15 GMT Wed, 13 Sep 2017 18:04:15 GMT <p> Running the following program would result in an infinite loop: </p> <pre class="wiki">#include &lt;boost/graph/erdos_renyi_generator.hpp&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;random&gt; using Graph = boost::adjacency_list&lt;&gt;; using ERGen = boost::erdos_renyi_iterator&lt;std::mt19937, Graph&gt;; int main() { std::mt19937 gen; int n = 1; Graph g(ERGen(gen, n, 0.5), ERGen(), n); } </pre><p> This is caused by the while loop inside erdos_renyi_iterator::next(). If n is 1 and allow_self_loops is false, the loop condition will be true forever. A simple change that makes an early exit for the n=1 case would fix the problem. </p> grievejia@… https://svn.boost.org/trac10/ticket/13209 https://svn.boost.org/trac10/ticket/13209 Report #13208: Make boost::optional<T> trivially destructible, copyable and movable if T is Wed, 13 Sep 2017 09:59:39 GMT Wed, 13 Sep 2017 09:59:39 GMT <p> Conceptually there's nothing preventing <code>boost::optional&lt;T&gt;</code> from being trivially destructible, copyable and movable if T is. This could be useful, for instance, to use an <code>boost::optional&lt;T&gt;</code> as a union-member. </p> <p> I have a POC implementation based on Boost 1.64 <a class="ext-link" href="https://github.com/z33ky/trivial_optional/blob/master/optional.hpp"><span class="icon">​</span>here</a>. <br /> I moved <code>m_storage</code> and <code>m_initialized</code> to a new <code>class optional_storage</code>, representing the new base class. Some methods managing those members are move there as well. <code>optional_base</code> indirectly inherits from <code>optional_storage</code> through <code>optional_destroyer</code>, <code>optional_mover</code> and <code>optional_copier</code>, which are templated classes including a boolean parameter to determine whether <code>T</code> is trivially destructible, movable and copyable and use template specialization to provide the respective trivial members. <br /> The implementation relies on defaulting constructors, so without C++11 or newer only trivial destruction is possible. </p> 1zeeky@… https://svn.boost.org/trac10/ticket/13208 https://svn.boost.org/trac10/ticket/13208 Report #13207: boost::spirit::istream_iterator unusable with boost::asio::ip::tcp::iostream Wed, 13 Sep 2017 01:27:53 GMT Sun, 17 Sep 2017 00:23:08 GMT <p> Hi, </p> <p> I'm really looking forward to using boost::spirit in my next project. Unfortunately, I seem to have hit a roadblock in that the boost::spirit::istream_iterator constructor completely locks up when it is passed a boost::asio::ip::tcp::iostream reference. </p> <p> I come from a (much stronger) C background, so perhaps I'm missing the greater picture, but in the "spirit" of a C++ stream-based API, I would have thought that any input stream would work with spirit's forward iterator - at least that's how I interpreted the documentation. </p> <p> A really simple example is the following: </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; #include &lt;boost/spirit/include/support_istream_iterator.hpp&gt; #include &lt;iostream&gt; int main( int argc, char *argv[] ) { static const int port = 443; if ( 2 != argc ) { std::cout &lt;&lt; "usage: " &lt;&lt; argv[ 0 ] &lt;&lt; " &lt;fqdn&gt;" &lt;&lt; std::endl; std::cout &lt;&lt; std::endl; std::cout &lt;&lt; "where &lt;fqdn&gt; is e.g. www.google.ca" &lt;&lt; std::endl; return 0; } std::string fqdn( argv[ 1 ] ); std::cout &lt;&lt; "creating fds.." &lt;&lt; std::endl; boost::asio::ip::tcp::iostream fds( fqdn, std::to_string( port ) ); if ( ! fds ) { std::cerr &lt;&lt; "unable to create fds: " &lt;&lt; fds.error().message() &lt;&lt; std::endl; return 1; } std::cout &lt;&lt; "creating istream_iterator.." &lt;&lt; std::endl; boost::spirit::istream_iterator begin( fds ); std::cout &lt;&lt; "created istream_iterator!" &lt;&lt; std::endl; return 0; } </pre><p> Compile with </p> <p> g++ -std=c++14 -o foo foo.cpp -lboost_system </p> <p> Any thoughts? </p> Christoper Friedt <chrisfriedt@…> https://svn.boost.org/trac10/ticket/13207 https://svn.boost.org/trac10/ticket/13207 Report #13206: regex constructor throws regex_error for simple expression Tue, 12 Sep 2017 12:01:45 GMT Thu, 12 Oct 2017 21:26:05 GMT <p> The code below throws boost::regex_error when creating an instance of boost::regex. I compile with visual studio 2015 and uses boost 1.65 precompiled for 32 bit windows (boost_1_65_1-msvc-14.0-32.exe) </p> <p> #include "stdafx.h" #include &lt;boost/regex.hpp&gt; int main() { </p> <blockquote> <p> try { </p> <blockquote> <p> boost::regex re("[A-Z-.]+"); </p> </blockquote> <p> } catch (...) { assert(false); } </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> Asbjørn Pedersen <ahp@…> https://svn.boost.org/trac10/ticket/13206 https://svn.boost.org/trac10/ticket/13206 Report #13205: Suurballe's algorithm for finding two edge disjoint paths in non-negatively weighted graphs would be a great addition to BGL Mon, 11 Sep 2017 11:43:34 GMT Mon, 11 Sep 2017 11:43:34 GMT <p> Suurballe's algorithm is used to find two edge disjoint paths in non-negatively weighted graphs. This is a often occuring problem when dealing with telecommunication networks, due to resilience constrains. The addition to the BGL tookit would be greatly appreciated (even if the algorithm is not terribly difficult to implement). </p> tobiaskussel@… https://svn.boost.org/trac10/ticket/13205 https://svn.boost.org/trac10/ticket/13205 Report #13204: Warning when compiling with -Wdeprecated-dynamic-exception-spec in clang Sat, 09 Sep 2017 23:44:29 GMT Sat, 09 Sep 2017 23:44:29 GMT <p> When compiling with -Wdeprecated-dynamic-exception-spec in clang we get the following warning </p> <pre class="wiki">/xxx/modular-boost3/boost/smart_ptr/bad_weak_ptr.hpp:50:39: error: dynamic exception specifications are deprecated [-Werror,-Wdeprecated-dynamic-exception-spec] virtual char const * what() const throw() ^~~~~~~ /Users/viboes/github/modular-boost3/boost/smart_ptr/bad_weak_ptr.hpp:50:39: note: use 'noexcept' instead virtual char const * what() const throw() ^~~~~~~ noexcept 1 error generated. </pre><p> I don't know if using instead BOOST_NOEXCEPT_OR_NOTHROW is correct and should resolve the issue. </p> viboes https://svn.boost.org/trac10/ticket/13204 https://svn.boost.org/trac10/ticket/13204 Report #13203: adjacent_filtered lets the first element entry through Sat, 09 Sep 2017 20:40:01 GMT Sat, 09 Sep 2017 20:40:01 GMT <p> <code>adjacent_filtered</code> always lets the first element of the range leak through, even for a predicate that rejects that element as either argument. Eg. </p> <div class="wiki-code"><div class="code"><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span> <span class="p">};</span> <span class="k">auto</span> <span class="n">b</span> <span class="o">=</span> <span class="n">a</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="n">adjacent_filtered</span><span class="p">(</span> <span class="p">[]</span> <span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">x</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">y</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="p">(</span> <span class="p">(</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="mi">2</span> <span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span> <span class="n">y</span> <span class="o">&gt;</span> <span class="mi">2</span> <span class="p">)</span> <span class="p">);</span> <span class="p">}</span> <span class="p">);</span> <span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="k">auto</span> <span class="o">&amp;</span><span class="nl">x</span> <span class="p">:</span> <span class="n">b</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">x</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> …outputs: </p> <pre class="wiki">0 4 5 </pre><p> From what I can see in the code, the predicate is currently only applied in the <code>increment()</code> function, which leaves it too late for the first element to be checked. </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/13203 https://svn.boost.org/trac10/ticket/13203 Report #13202: adjacent_filtered postcondition docs differ from behaviour Sat, 09 Sep 2017 20:29:26 GMT Sat, 09 Sep 2017 20:29:26 GMT <p> I think the documentation for <code>adjacent_filtered</code>'s postcondition, ie: </p> <blockquote class="citation"> <p> For all adjacent elements <code>[x,y]</code> in the returned range, <code>bi_pred(x,y)</code> is <code>true</code>. </p> </blockquote> <p> …isn't quite right. For example, this: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/range/adaptor/adjacent_filtered.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">a</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span> <span class="p">};</span> <span class="k">const</span> <span class="k">auto</span> <span class="n">b</span> <span class="o">=</span> <span class="n">a</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="n">adjacent_filtered</span><span class="p">(</span> <span class="p">[]</span> <span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">x</span><span class="p">,</span> <span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">y</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="p">(</span> <span class="n">y</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span> <span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span> <span class="n">y</span> <span class="o">==</span> <span class="n">x</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">);</span> <span class="p">}</span> <span class="p">);</span> <span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="k">auto</span> <span class="o">&amp;</span><span class="nl">x</span> <span class="p">:</span> <span class="n">b</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">x</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> …outputs: </p> <pre class="wiki">0 1 3 5 </pre><p> Yet two of the pairs of adjacent elements <code>[x,y]</code> in this range fail <code>bi_pred(x,y)</code> (because they differ by 2, not 1). </p> <p> I think it's more like: <code>bi_pred</code> is true on each element in the returned range preceded by the element that preceded it in the <em>original</em> range (not in the <em>returned</em> range). </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/13202 https://svn.boost.org/trac10/ticket/13202 Report #13201: boost::container::small_vector invalid internal capacity Sat, 09 Sep 2017 02:29:48 GMT Sat, 09 Sep 2017 02:29:48 GMT <p> Sometimes the internal capacity of the small_vector is smaller than the specified. Take the following example: </p> <pre class="wiki">#include &lt;boost/container/small_vector.hpp&gt; #include &lt;iostream&gt; int main() { boost::container::small_vector&lt;char, 15&gt; v{ 0 }; boost::container::small_vector&lt;char, 15&gt; v2(15); std::cout &lt;&lt; &amp;v &lt;&lt; ' ' &lt;&lt; (void*)&amp;v[0] &lt;&lt; ' ' &lt;&lt; v.capacity() &lt;&lt; ' ' &lt;&lt; decltype(v)::static_capacity &lt;&lt; '\n'; std::cout &lt;&lt; &amp;v2 &lt;&lt; " " &lt;&lt; (void*)&amp;v2[0] &lt;&lt; ' ' &lt;&lt; v2.capacity() &lt;&lt; ' ' &lt;&lt; decltype(v2)::static_capacity &lt;&lt; '\n'; } </pre><p> Output on amd64 linux (with clang 4.0.1, but gcc exhibits the same behavior): </p> <pre class="wiki">0x7ffe053c4700 0x7ffe053c4718 8 15 0x7ffe053c46c8 0xbbfc20 23 15 </pre><p> On 32-bit (-m32): </p> <pre class="wiki">0xffdfecb0 0xffdfecbc 12 15 0xffdfec88 0x86aea10 27 15 </pre><p> Even though the capacity should be 15, it's 8 on 64-bit and 12 on 32-bit, while static_capacity reports 15. When actually trying to put 15 elements into the vector, it allocates memory from heap. </p> DirtY.iCE.hu@… https://svn.boost.org/trac10/ticket/13201 https://svn.boost.org/trac10/ticket/13201 Report #13200: test_new_operator, develop branch, test '(2 == T::m_new_calls)' failed Fri, 08 Sep 2017 21:35:14 GMT Fri, 08 Sep 2017 21:35:14 GMT <p> Seeing this failure in libs/serialization, develop branch: </p> <pre class="wiki">libs/serialization/test/test_new_operator.cpp(126): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew]' libs/serialization/test/test_new_operator.cpp(134): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew]' libs/serialization/test/test_new_operator.cpp(126): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew1]' libs/serialization/test/test_new_operator.cpp(134): test '(2 == T::m_new_calls)' failed in function 'int test() [with T = ANew1]' </pre><p> Example build jobs showing the issue for which the local changes I made would not be relevant, I tweaked the travis CI build job to run more variants and platforms: </p> <p> <a class="ext-link" href="https://travis-ci.org/jeking3/serialization/builds/273445288"><span class="icon">​</span>https://travis-ci.org/jeking3/serialization/builds/273445288</a> </p> James E. King, III https://svn.boost.org/trac10/ticket/13200 https://svn.boost.org/trac10/ticket/13200 Report #13199: execvpe has not been declared Fri, 08 Sep 2017 13:34:20 GMT Fri, 08 Sep 2017 13:34:20 GMT <p> According to <a class="ext-link" href="https://linux.die.net/man/3/execvpe"><span class="icon">​</span>man</a> execvpe was introduced only since GLIBC v2.11. Attaching patch for boost/process/detail/posix/executor.hpp with more accurate GLIBC check </p> slobodyanukma@… https://svn.boost.org/trac10/ticket/13199 https://svn.boost.org/trac10/ticket/13199 Report #13198: breadth_first_visit crashes on graphs where VertexLists is vecS Thu, 07 Sep 2017 17:04:06 GMT Thu, 07 Sep 2017 17:04:29 GMT <p> breadth_first_search crashes if <a class="missing wiki">VertexLists</a> is vecS. A minimal example is as follows: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/adjacency_list.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/breadth_first_search.hpp&gt;</span><span class="cp"></span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">adjacency_list</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">vecS</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">vecS</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">undirectedS</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">property</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">vertex_color_t</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">default_color_type</span><span class="o">&gt;&gt;</span> <span class="n">GraphType</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="p">;</span> <span class="n">GraphType</span> <span class="n">g</span><span class="p">;</span> <span class="k">auto</span> <span class="n">a</span> <span class="o">=</span> <span class="n">add_vertex</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="k">auto</span> <span class="n">b</span> <span class="o">=</span> <span class="n">add_vertex</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="k">auto</span> <span class="n">c</span> <span class="o">=</span> <span class="n">add_vertex</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="n">add_edge</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">add_edge</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">add_edge</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">property_map</span><span class="o">&lt;</span><span class="n">GraphType</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">vertex_color_t</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">color_map_t</span><span class="p">;</span> <span class="n">color_map_t</span> <span class="n">colorMap</span><span class="p">;</span> <span class="c1">//Create a color map</span> <span class="n">boost</span><span class="o">::</span><span class="n">breadth_first_visit</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="o">*</span><span class="n">boost</span><span class="o">::</span><span class="n">vertices</span><span class="p">(</span><span class="n">g</span><span class="p">).</span><span class="n">first</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">color_map</span><span class="p">(</span><span class="n">colorMap</span><span class="p">));</span> <span class="n">GraphType</span><span class="o">::</span><span class="n">vertex_iterator</span> <span class="n">it</span><span class="p">,</span> <span class="n">itEnd</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">tie</span><span class="p">(</span><span class="n">it</span><span class="p">,</span> <span class="n">itEnd</span><span class="p">)</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">vertices</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">itEnd</span><span class="p">;</span> <span class="n">it</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Color of node &quot;</span> <span class="o">&lt;&lt;</span> <span class="o">*</span><span class="n">it</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; is &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">colorMap</span><span class="p">[</span><span class="o">*</span><span class="n">it</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> The backtrace: </p> <pre class="wiki">#0 0x0000555555556d70 in std::vector&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;::config::stored_vertex, std::allocator&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;::config::stored_vertex&gt; &gt;::operator[] (this=0x18, __n=0) at /usr/include/c++/6/bits/stl_vector.h:781 #1 0x0000555555556674 in boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;*, boost::default_color_type, boost::default_color_type&amp;, boost::vertex_color_t&gt;::operator[] (this=0x7fffffffcb60, v=0) at /usr/include/boost/graph/detail/adjacency_list.hpp:2510 #2 0x0000555555558451 in boost::put&lt;boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;*, boost::default_color_type, boost::default_color_type&amp;, boost::vertex_color_t&gt;, boost::default_color_type&amp;, unsigned long, boost::default_color_type&gt; (pa=..., k=0, v=@0x7fffffffcbcc: boost::gray_color) at /usr/include/boost/property_map/property_map.hpp:309 #3 0x00005555555577b6 in boost::breadth_first_visit&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::queue&lt;unsigned long, std::deque&lt;unsigned long, std::allocator&lt;unsigned long&gt; &gt; &gt;, boost::bfs_visitor&lt;boost::null_visitor&gt;, boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;*, boost::default_color_type, boost::default_color_type&amp;, boost::vertex_color_t&gt;, unsigned long*&gt; ( g=..., sources_begin=0x7fffffffcd28, sources_end=0x7fffffffcd30, Q=..., vis=..., color=...) at /usr/include/boost/graph/breadth_first_search.hpp:75 #4 0x0000555555556c6b in boost::breadth_first_visit&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::queue&lt;unsigned long, std::deque&lt;unsigned long, std::allocator&lt;unsigned long&gt; &gt; &gt;, boost::bfs_visitor&lt;boost::null_visitor&gt;, boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;*, boost::default_color_type, boost::default_color_type&amp;, boost::vertex_color_t&gt; &gt; (g=..., s=0, Q=..., vis=..., color=...) at /usr/include/boost/graph/breadth_first_search.hpp:104 #5 0x00005555555564a0 in boost::breadth_first_visit&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::undirectedS, boost::property&lt;boost::vertex_color_t, boost::default_color_type, boost::no_property&gt;, boost::no_property, boost::no_property, boost::listS&gt;*, boost::default_color_type, boost::default_color_type&amp;, boost::vertex_color_t&gt;, boost::vertex_color_t, boost::no_property&gt; (g=..., s=0, params=...) at /usr/include/boost/graph/breadth_first_search.hpp:370 #6 0x0000555555555cce in main () at test.cpp:24 </pre><p> Changing <code>vecS</code> to <code>listS</code> resolves the issue, but I don't think anywhere in the doc mentions that <code>vecS</code> cannot be used. </p> </div> hong@… https://svn.boost.org/trac10/ticket/13198 https://svn.boost.org/trac10/ticket/13198 Report #13196: buffer produces incorrect corners from linestring with asymmetric distance strategy Thu, 07 Sep 2017 11:19:22 GMT Thu, 07 Sep 2017 11:26:17 GMT <p> buffer() creates incorrect corners, when used on a linestring with an asymmetric distance strategy and the join_miter strategy. This happens when the "inner" distance is bigger than the "outer" distance. </p> <p> See the attached images for the result and the expected result. </p> jan.kleemann@… https://svn.boost.org/trac10/ticket/13196 https://svn.boost.org/trac10/ticket/13196 Report #13195: Parsing a local_date_time with a custom decimal point does not work Tue, 05 Sep 2017 18:43:05 GMT Tue, 05 Sep 2017 18:43:05 GMT <p> local_time_input_facet does not conform to the decimal point specified in the locale. Note that printing with the help of local_time_facet <em>does</em> work. </p> <p> See attached file. Tested on Boost 1.58 and 1.65 </p> Sylvain Rosembly <sylvain.rosembly@…> https://svn.boost.org/trac10/ticket/13195 https://svn.boost.org/trac10/ticket/13195 Report #13193: multiple sockets (reuse_address) + multiple io_service = packages never received Tue, 05 Sep 2017 14:29:28 GMT Tue, 05 Sep 2017 14:36:31 GMT <p> In example program, we open several UDP sockets (each on same address/port - with reuse_address), and they use several io_service. </p> <p> The result is that async_receive_from never reads any data. </p> <p> 1) N sockets (same addr/port), using N various io_service - doe not work 2) N sockets (each own port), using N various io_service - works 3) N sockets (same addr/port), but using same 1 io_service - works 4) 1 socket - works </p> <p> The full test case is in github: </p> <p> <a class="ext-link" href="https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_srv"><span class="icon">​</span>https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_srv</a> </p> <p> if you run "make run" then program starts using "mport" option - each socket gets own port (so no need for the reuse flag) - and program works fine. </p> <p> if you run "make run_bug" then it is started without the "mport" and all sockets listen on port 9000 - and then the program does not work </p> <p> if you run the binary with no options then it shows usage (or grep sources for 'options'). </p> <p> You can test program by sending data to UDP 9000 localhost, or just build test program in other directory up: </p> <p> <a class="ext-link" href="https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_cli"><span class="icon">​</span>https://github.com/rfree-d/cppfuns/tree/79093a5458867ddbf0d36f0170a78465194370a4/asio_udp_cli</a> </p> <p> there "make", and run it with options like "127.0.0.1 9000" it is interactive, to send many data use: </p> <p> aaa 1000 100000 </p> <p> for big packet sent once use </p> <p> aaa 1000 1 </p> <p> to send one packet with string "exit" use </p> <p> exit 1 1 </p> <p> Tested on Linux Debian 8 and 9. </p> rafal2@… https://svn.boost.org/trac10/ticket/13193 https://svn.boost.org/trac10/ticket/13193 Report #13191: undefined reference error when ODR-using boost::ratio::{num,den} Mon, 04 Sep 2017 16:27:37 GMT Fri, 03 Nov 2017 05:30:49 GMT anonymous https://svn.boost.org/trac10/ticket/13191 https://svn.boost.org/trac10/ticket/13191 Report #13190: Boost releases do not include boost/crc.hpp changes Mon, 04 Sep 2017 06:14:14 GMT Mon, 04 Sep 2017 06:14:14 GMT <p> boost/crc.hpp from boost github has a number of changes since at least 22 Dec 2011 that have not been included in any official boost release (up to at least Boost 1.65). </p> <p> Changes include useful corrections to errors in defining crc types (commits c0a10f5 and 328bf50). </p> dave@… https://svn.boost.org/trac10/ticket/13190 https://svn.boost.org/trac10/ticket/13190 Report #13189: copy throws exception from a function defined as noexcept Sun, 03 Sep 2017 13:08:12 GMT Sat, 11 Nov 2017 15:07:31 GMT <p> When <code>copy</code> fails because access to the file specified by <code>from</code> is denied, the corresponding exception reaches a function defined as <code>noexcept</code>. Stack trace: </p> <pre class="wiki">bool &lt;anon. namespace&gt;::error(err_t error_num, const path&amp; p1, const path&amp; p2, error_code* ec, const char* message) void detail::copy_file(const path&amp; from, const path&amp; to, copy_option option, error_code* ec) void copy_file(const path&amp; from, const path&amp; to, BOOST_SCOPED_ENUM(copy_option) option, system::error_code&amp; ec) BOOST_NOEXCEPT void detail::copy(const path&amp; from, const path&amp; to, system::error_code* ec) void copy(const path&amp; from, const path&amp; to) </pre><p> The exception is thrown from <code>error</code>, and isn't caught anywhere along the calling path. The problem is that <code>copy_file</code> is defined as <code>noexcept</code> (<code>BOOST_NOEXCEPT</code> to be precise, but it is resolved as <code>noexcept</code> under a C++11 compliant compiler), and doesn't handle the exception either, which causes program termination by implicitly calling <code>std::terminate</code>. </p> kukkerman@… https://svn.boost.org/trac10/ticket/13189 https://svn.boost.org/trac10/ticket/13189 Report #13188: VS2017 reports typecast error in two_bit_color_map.hpp Fri, 01 Sep 2017 19:36:23 GMT Fri, 01 Sep 2017 19:36:23 GMT <p> line 61 of boost/graph/two_bit_color_map.hpp, final parameter causes an int32 to unsigned char type conversion warning. </p> <p> Maybe resolved by changing line 61 to: </p> <blockquote> <p> std::fill(data.get(), data.get() + (n + elements_per_char - 1) / elements_per_char, static_cast&lt;unsigned char&gt;(white_color)); </p> </blockquote> peter.johnson@… https://svn.boost.org/trac10/ticket/13188 https://svn.boost.org/trac10/ticket/13188 Report #13187: Getting Started guide has wrong information Fri, 01 Sep 2017 13:38:14 GMT Thu, 10 May 2018 10:51:38 GMT <p> On the page <a href="http://www.boost.org/doc/libs/1_65_0/more/getting_started/windows.html">http://www.boost.org/doc/libs/1_65_0/more/getting_started/windows.html</a> under section 1 there is a download link. In Section 2 it mentions a directory structure and claims that there is a "lib" dir in the boost root dir. However there is no "lib" dir with pre-compiled binaries, that only seems to be included with the Windows binary downloads and not in the file/download mentioned in Section 1. </p> <p> Might want to change the wording in the guide to match how things are now. </p> <p> Thanks! </p> anonymous https://svn.boost.org/trac10/ticket/13187 https://svn.boost.org/trac10/ticket/13187 Report #13186: Memory leak in serialization 1.65 Fri, 01 Sep 2017 10:25:46 GMT Fri, 22 Jun 2018 01:17:59 GMT <p> Hi, we are seeing a seg fault seemingly caused by a difference between boost serialization 1.64 and 1.65 (no problems in 1.64 or any other boost we are currently testing &gt;1.48 as part of Chaste computational physiology library). Unfortunately the minimal failing test is a bit complicated I'm afraid, this only seems to show up with a hierarchy of serialization classes. </p> <p> I've attached valgrind memory testing output which should hopefully give all the clues needed to track it down: </p> <pre class="wiki">==20488== Memcheck, a memory error detector ==20488== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==20488== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info ==20488== Command: mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner -malloc_debug -malloc_dump -memory_info ==20488== Parent PID: 20487 ==20488== ==20488== Invalid read of size 8 ==20488== at 0x7E55025: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x4756E6: boost::serialization::extended_type_info_typeid&lt;AbstractTetrahedralMesh&lt;3u, 3u&gt; &gt;::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==20488== by 0x474F02: boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;AbstractTetrahedralMesh&lt;3u, 3u&gt; &gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/garmir/workspace/Chaste/mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== Address 0x17bd1740 is 32 bytes inside a block of size 40 free'd ==20488== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==20488== by 0x7E55572: boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x9E2E539: __cxa_finalize (cxa_finalize.c:56) ==20488== by 0x7E4D402: ??? (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x40108D9: _dl_fini (dl-fini.c:252) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== ==20488== Invalid read of size 8 ==20488== at 0x7E55036: boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x4756E6: boost::serialization::extended_type_info_typeid&lt;AbstractTetrahedralMesh&lt;3u, 3u&gt; &gt;::~extended_type_info_typeid() (extended_type_info_typeid.hpp:96) ==20488== by 0x474F02: boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;AbstractTetrahedralMesh&lt;3u, 3u&gt; &gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/garmir/workspace/Chaste/mesh/build/debug_hostconfig,boost=1-65/TestNodesOnlyMeshRunner) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) ==20488== Address 0x17bd1738 is 24 bytes inside a block of size 40 free'd ==20488== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==20488== by 0x7E55572: boost::serialization::singleton&lt;std::multiset&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*, boost::serialization::typeid_system::type_compare, std::allocator&lt;boost::serialization::typeid_system::extended_type_info_typeid_0 const*&gt; &gt; &gt;::get_instance()::singleton_wrapper::~singleton_wrapper() (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x9E2E539: __cxa_finalize (cxa_finalize.c:56) ==20488== by 0x7E4D402: ??? (in /home/robert/boost_1_65/lib/libboost_serialization.so.1.65.0) ==20488== by 0x40108D9: _dl_fini (dl-fini.c:252) ==20488== by 0x9E2E1A8: __run_exit_handlers (exit.c:82) ==20488== by 0x9E2E1F4: exit (exit.c:104) ==20488== by 0x9E13F4B: (below main) (libc-start.c:321) </pre><p> Incidentally, the consequences are exactly the same as a problem that existed in boost 1.46 and was fixed in 1.48. I don't know if the underlying problem is related. </p> anonymous https://svn.boost.org/trac10/ticket/13186 https://svn.boost.org/trac10/ticket/13186 Report #13185: serialization of null pointer fails in optimized builds Thu, 31 Aug 2017 23:18:18 GMT Thu, 31 Aug 2017 23:21:39 GMT <p> invoke in oserializer.hpp dereferences a pointer (UB for nullptrs), and then checks if it is null on the next line. The optimizer detects this UB and assumes the pointer cannot be null, and optimizes the whole if block out. This affected our code in production (serializing nullptrs was a corner case for us), so I assume it's affecting other folks. </p> <p> Here's a demo of clang trunk performing this optimization (earlier versions didn't perform this optimization): <a class="ext-link" href="https://godbolt.org/g/y6sbZP"><span class="icon">​</span>https://godbolt.org/g/y6sbZP</a> </p> <p> <a class="ext-link" href="https://github.com/boostorg/serialization/blob/6b33d1cd4e11daaf97612561ecd9d4848843897c/include/boost/archive/detail/oserializer.hpp#L468"><span class="icon">​</span>https://github.com/boostorg/serialization/blob/6b33d1cd4e11daaf97612561ecd9d4848843897c/include/boost/archive/detail/oserializer.hpp#L468</a> </p> <pre class="wiki"> template&lt;class TPtr&gt; static void invoke(Archive &amp;ar, const TPtr t){ register_type(ar, * t); if(NULL == t){ basic_oarchive &amp; boa = boost::serialization::smart_cast_reference&lt;basic_oarchive &amp;&gt;(ar); boa.save_null_pointer(); save_access::end_preamble(ar); return; } save(ar, * t); } </pre><p> Modifying the code to this, works as expected (although there's still a dereference of a null): </p> <pre class="wiki"> template&lt;class TPtr&gt; static void invoke(Archive &amp;ar, const TPtr t){ if(NULL == t){ register_type(ar, * t); basic_oarchive &amp; boa = boost::serialization::smart_cast_reference&lt;basic_oarchive &amp;&gt;(ar); boa.save_null_pointer(); save_access::end_preamble(ar); return; } else { register_type(ar, * t); } save(ar, * t); } </pre> tyler@… https://svn.boost.org/trac10/ticket/13185 https://svn.boost.org/trac10/ticket/13185 Report #13184: child move constructor does not set _terminated member Thu, 31 Aug 2017 15:45:35 GMT Sat, 07 Apr 2018 19:38:21 GMT <p> In 'process/include/boost/process/detail/child_decl.hpp' child move constructor does not set '_terminated' member. </p> helmet23 https://svn.boost.org/trac10/ticket/13184 https://svn.boost.org/trac10/ticket/13184 Report #13183: boost wave fails to compile with Clang on Windows Thu, 31 Aug 2017 10:09:12 GMT Thu, 31 Aug 2017 10:11:16 GMT <p> boost wave fails to compile with Clang on Windows, there are a lot of issues of type: \boost/wave/grammars/cpp_expression_grammar.hpp:829:18: error: case value evaluates to -804257404, which cannot be narrowed to type 'unsigned int' [-Wc++11-narrowing] </p> <blockquote> <p> case T_CPPCOMMENT: <em> contains newline </em></p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/13183 https://svn.boost.org/trac10/ticket/13183 Report #13182: Boost.Fiber ignores lambda captures Wed, 30 Aug 2017 00:43:19 GMT Thu, 31 Aug 2017 10:02:15 GMT <p> In version 1.65, the following code doesn't work: </p> <p> boost::fibers::fiber([p=std::make_shared&lt;std::string&gt;("Hi")]{ </p> <blockquote> <p> assert(p); </p> </blockquote> <p> }).detach(); </p> <p> This probably because when you call std::apply(std::move(fn_), std::move( arg_)) in function "worker_context::run_", should have used "fn" and "arg" instead of "fn_" and "arg_". </p> <p> Please look at "boost\fiber\context.hpp" line 428 </p> Sergey Babin <axilmail@…> https://svn.boost.org/trac10/ticket/13182 https://svn.boost.org/trac10/ticket/13182 Report #13180: Loop vectorisation using boost multi_array Mon, 28 Aug 2017 07:08:40 GMT Mon, 28 Aug 2017 07:08:40 GMT <p> Dear all </p> <p> I am trying to optimize a huge code that uses boost multi-arrays. And when I compile the code with the <em>-qopt-report=2 -qopt-report-phase=vec</em> options, I notice in the compilation report that most loops are not vectorized. </p> <p> I thus made a simple program to understand why, and I noticed that a loop that uses C array is vectorized, while the same loop using boost multi array is not (see test_vector.cpp) (see attached .cpp file). I get the following message: </p> <pre class="wiki">LOOP BEGIN at test_vector.cpp(29,5) remark #15520: loop was not vectorized: loop with multiple exits cannot be vectorized unless it meets search loop idiom criteria LOOP END </pre><p> A way to overcome this would be to use the data pointer in combination with the <code>#pragma ivdep</code> statement, but this becomes complicated when working on multimensional arrays. </p> <p> I thus would like to know if I am doing something wrong (for instance in the boost array initialisation), and if there is a way to fix this? </p> <p> I am using the icpc compiler, version 16.0.4, with boost library version 1.65. The program is compiled as follows: </p> <pre class="wiki">icpc -Ilibs/cpp/boost_1_65_0/ -O3 -qopt-report=2 -qopt-report-phase=vec test_vector.cpp </pre><p> Thanks a lot </p> <p> Nicolas Barrier </p> Nicolas Barrier <nicolas.barrier@…> https://svn.boost.org/trac10/ticket/13180 https://svn.boost.org/trac10/ticket/13180 Report #13179: geometry::covered_by and geometry::within not working for certain values Fri, 25 Aug 2017 21:04:11 GMT Tue, 12 Jun 2018 20:09:08 GMT <p> <em>covered_by</em> and <em>within</em> return false even if the point is obviously located within the polygon, as the following code demonstrates: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/version.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry/geometries/point_xy.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry/geometries/polygon.hpp&gt;</span><span class="cp"></span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">d2</span><span class="o">::</span><span class="n">point_xy</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">Point</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">polygon</span><span class="o">&lt;</span><span class="n">Point</span><span class="o">&gt;</span> <span class="n">Polygon</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Running Boost in version &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">BOOST_VERSION</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="n">Polygon</span> <span class="n">polygon</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">Point</span><span class="o">&gt;</span> <span class="n">points</span><span class="p">;</span> <span class="n">points</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="mf">68.3</span><span class="p">,</span> <span class="mf">35.5</span><span class="p">));</span> <span class="n">points</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="mf">68.3</span><span class="p">,</span> <span class="mf">35.6</span><span class="p">));</span> <span class="n">points</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="mf">70.3</span><span class="p">,</span> <span class="mf">35.9</span><span class="p">));</span> <span class="n">points</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="mf">70.3</span><span class="p">,</span> <span class="mf">35.8</span><span class="p">));</span> <span class="n">Point</span> <span class="n">point</span><span class="p">(</span><span class="mf">69.2</span><span class="p">,</span> <span class="mf">35.7</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">assign_points</span><span class="p">(</span><span class="n">polygon</span><span class="p">,</span> <span class="n">points</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Point is covered by polygon: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">covered_by</span><span class="p">(</span><span class="n">point</span><span class="p">,</span> <span class="n">polygon</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Point is within by polygon: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">within</span><span class="p">(</span><span class="n">point</span><span class="p">,</span> <span class="n">polygon</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> which gives: </p> <pre class="wiki">Running Boost in version 106500 Point is covered by polygon: 0 Point is within by polygon: 0 </pre> Stanley <stanley.foerster@…> https://svn.boost.org/trac10/ticket/13179 https://svn.boost.org/trac10/ticket/13179 Report #13177: Possible loss of data warnings Thu, 24 Aug 2017 21:58:45 GMT Thu, 24 Aug 2017 21:58:45 GMT <p> In aggregate_operations.hpp, struct rank_with_rings, there are conversions from signed_size_type to int, there are similar conversions in traversal_intersection_patterns.hpp. This is causing loss of data warnings in the project I work on, which prevent the build from completing due to treating warnings as errors. </p> anonymous https://svn.boost.org/trac10/ticket/13177 https://svn.boost.org/trac10/ticket/13177 Report #13174: boost::property_tree::read_json throws exception (see attachment) Tue, 22 Aug 2017 00:38:04 GMT Tue, 22 Aug 2017 01:02:06 GMT <pre class="wiki">boost::property_tree::ptree tree; std::stringstream ss("{\"name\": \"test\"}"); boost::property_tree::read_json(ss, tree); </pre> anonymous https://svn.boost.org/trac10/ticket/13174 https://svn.boost.org/trac10/ticket/13174 Report #13173: "program_options" build fail. "boost::lambda" is working without any problem. Mon, 21 Aug 2017 19:52:22 GMT Mon, 21 Aug 2017 19:52:22 GMT <p> Hello, </p> <p> "program_options" build fail. "boost::lambda" is working without any problem. </p> <p> This example below doesn't work: </p> <pre class="wiki">#include "boost/program_options.hpp" namespace po = boost::program_options; #include &lt;iostream&gt; #include &lt;iterator&gt; using namespace std; int main(int ac, char* av[]) { try { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ("compression", po::value&lt;double&gt;(), "set compression level"); po::variables_map vm; po::store(po::parse_command_line(ac, av, desc), vm); po::notify(vm); if (vm.count("help")) { cout &lt;&lt; desc &lt;&lt; "\n"; return 0; } if (vm.count("compression")) { cout &lt;&lt; "Compression level was set to " &lt;&lt; vm["compression"].as&lt;double&gt;() &lt;&lt; ".\n"; } else { cout &lt;&lt; "Compression level was not set.\n"; } } catch(exception&amp; e) { cerr &lt;&lt; "error: " &lt;&lt; e.what() &lt;&lt; "\n"; return 1; } catch(...) { cerr &lt;&lt; "Exception of unknown type!\n"; } return 0; } </pre><pre class="wiki">[ 50%] Linking CXX executable mem1 Undefined symbols for architecture x86_64: "boost::program_options::validators::check_first_occurrence(boost::any const&amp;)", referenced from: void boost::program_options::validate&lt;double, char&gt;(boost::any&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, double*, long) in main.cpp.o "boost::program_options::to_internal(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)", referenced from: std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; boost::program_options::to_internal&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt;(std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;) in main.cpp.o "boost::program_options::variables_map::variables_map()", referenced from: _main in main.cpp.o "boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)", referenced from: boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, int) in main.cpp.o "boost::program_options::options_description::add_options()", referenced from: _main in main.cpp.o "boost::program_options::options_description::m_default_line_length", referenced from: _main in main.cpp.o "boost::program_options::options_description::options_description(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned int, unsigned int)", referenced from: _main in main.cpp.o "boost::program_options::invalid_option_value::invalid_option_value(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;)", referenced from: void boost::program_options::validate&lt;double, char&gt;(boost::any&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, double*, long) in main.cpp.o "boost::program_options::error_with_option_name::error_with_option_name(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, int)", referenced from: boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, int) in main.cpp.o "boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)", referenced from: _main in main.cpp.o "boost::program_options::options_description_easy_init::operator()(char const*, char const*)", referenced from: _main in main.cpp.o "boost::program_options::arg", referenced from: boost::program_options::typed_value&lt;double, char&gt;::name() const in main.cpp.o "boost::program_options::store(boost::program_options::basic_parsed_options&lt;char&gt; const&amp;, boost::program_options::variables_map&amp;, bool)", referenced from: _main in main.cpp.o "boost::program_options::detail::cmdline::set_additional_parser(boost::function1&lt;std::__1::pair&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;&gt;)", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::extra_parser(boost::function1&lt;std::__1::pair&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt;, std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;&gt;) in main.cpp.o "boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&amp;)", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::options(boost::program_options::options_description const&amp;) in main.cpp.o "boost::program_options::detail::cmdline::get_canonical_option_prefix()", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::run() in main.cpp.o "boost::program_options::detail::cmdline::run()", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::run() in main.cpp.o "boost::program_options::detail::cmdline::style(int)", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::style(int) in main.cpp.o "boost::program_options::detail::cmdline::cmdline(std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;)", referenced from: boost::program_options::basic_command_line_parser&lt;char&gt;::basic_command_line_parser(int, char const* const*) in main.cpp.o "boost::program_options::notify(boost::program_options::variables_map&amp;)", referenced from: _main in main.cpp.o "boost::program_options::operator&lt;&lt;(std::__1::basic_ostream&lt;char, std::__1::char_traits&lt;char&gt; &gt;&amp;, boost::program_options::options_description const&amp;)", referenced from: _main in main.cpp.o "boost::program_options::abstract_variables_map::operator[](std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) const", referenced from: boost::program_options::variables_map::operator[](std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) const in main.cpp.o "boost::program_options::error_with_option_name::substitute_placeholders(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) const", referenced from: vtable for boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::program_options::validation_error&gt; &gt; in main.cpp.o vtable for boost::exception_detail::error_info_injector&lt;boost::program_options::validation_error&gt; in main.cpp.o vtable for boost::program_options::validation_error in main.cpp.o vtable for boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::program_options::invalid_option_value&gt; &gt; in main.cpp.o vtable for boost::exception_detail::error_info_injector&lt;boost::program_options::invalid_option_value&gt; in main.cpp.o vtable for boost::program_options::invalid_option_value in main.cpp.o "boost::program_options::error_with_option_name::what() const", referenced from: vtable for boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::program_options::validation_error&gt; &gt; in main.cpp.o vtable for boost::exception_detail::error_info_injector&lt;boost::program_options::validation_error&gt; in main.cpp.o vtable for boost::program_options::validation_error in main.cpp.o vtable for boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::program_options::invalid_option_value&gt; &gt; in main.cpp.o vtable for boost::exception_detail::error_info_injector&lt;boost::program_options::invalid_option_value&gt; in main.cpp.o vtable for boost::program_options::invalid_option_value in main.cpp.o "boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::parse(boost::any&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, bool) const", referenced from: vtable for boost::program_options::typed_value&lt;double, char&gt; in main.cpp.o "typeinfo for boost::program_options::error_with_option_name", referenced from: typeinfo for boost::program_options::validation_error in main.cpp.o "typeinfo for boost::program_options::value_semantic_codecvt_helper&lt;char&gt;", referenced from: typeinfo for boost::program_options::typed_value&lt;double, char&gt; in main.cpp.o "vtable for boost::program_options::variables_map", referenced from: boost::program_options::variables_map::~variables_map() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for boost::program_options::error_with_option_name", referenced from: boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&amp;) in main.cpp.o boost::program_options::error_with_option_name::~error_with_option_name() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for boost::program_options::value_semantic_codecvt_helper&lt;char&gt;", referenced from: boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::value_semantic_codecvt_helper() in main.cpp.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [mem1] Error 1 make[2]: *** [CMakeFiles/mem1.dir/all] Error 2 make[1]: *** [CMakeFiles/mem1.dir/rule] Error 2 make: *** [mem1] Error 2 </pre><p> This example below is working: </p> <pre class="wiki">#include &lt;boost/lambda/lambda.hpp&gt; #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;algorithm&gt; int main() { using namespace boost::lambda; typedef std::istream_iterator&lt;int&gt; in; std::for_each( in(std::cin), in(), std::cout &lt;&lt; (_1 * 3) &lt;&lt; " " ); } </pre><p> Thank you, </p> <p> Yoni </p> Yoni Shperling <yoni386@…> https://svn.boost.org/trac10/ticket/13173 https://svn.boost.org/trac10/ticket/13173 Report #13172: filesystem::directory_iterator::operator++: Function not implemented (errno not reset) Mon, 21 Aug 2017 18:32:24 GMT Thu, 16 Nov 2017 16:00:02 GMT <p> In <code>boost/libs/filesystem/src/operations.cpp</code> we have <code>readdir_r_simulator</code>, which throws </p> <blockquote class="citation"> <p> exception of type boost::filesystem::filesystem_error: boost::filesystem::directory_iterator::operator++: Function not implemented: "/data/local/tmp/my_existing_path" </p> </blockquote> <p> This is because <code>errno</code> is not reset after the <code>::sysconf(_SC_THREAD_SAFE_FUNCTIONS)</code> call, which sets errno to 38 = ENOSYS. </p> <p> A patch is to add the line errno = 0; after <code>::sysconf(_SC_THREAD_SAFE_FUNCTIONS)</code>. </p> <p> This affects Android, e.g. <a class="ext-link" href="https://github.com/android-ndk/ndk/issues/457"><span class="icon">​</span>https://github.com/android-ndk/ndk/issues/457</a> </p> Simon Warta <simon@…> https://svn.boost.org/trac10/ticket/13172 https://svn.boost.org/trac10/ticket/13172 Report #13171: Linker error when using boost::process::posix::use_vfork Mon, 21 Aug 2017 11:41:16 GMT Wed, 23 Aug 2017 11:55:19 GMT <p> Trying to build the following code using GCC 7.1.1 and Boost 1.64.0 fails: </p> <pre class="wiki">#include &lt;boost/process.hpp&gt; namespace bp = boost::process; int main(void) { bp::child c("ls", bp::posix::use_vfork); c.wait(); return 0; } </pre><p> The following linker error is generated: </p> <pre class="wiki">In function 'boost::process::detail::posix::executor &gt;, boost::fusion::filter_view&amp;, boost::process::detail::posix::use_vfork_ const&amp;&gt; const, boost::process::detail::is_initializer &gt; &gt; &gt; &gt;::operator()()': spawn_simple.cpp:(.text._ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv[_ZN5boost7process6detail5posix8executorINS_6fusion10joint_viewINS4_5tupleIJNS2_12exe_cmd_initIcEEEEENS4_11filter_viewIKNS6_IJRA6_KcRNS2_8null_outILi1ELin1EEERKNS2_10use_vfork_EEEENS1_14is_initializerIN4mpl_3argILin1EEEEEEEEEEclEv]+0x31): undefined reference to `boost::process::detail::posix::executor &gt;, boost::fusion::filter_view&amp;, boost::process::detail::posix::use_vfork_ const&amp;&gt; const, boost::process::detail::is_initializer &gt; &gt; &gt; &gt;::invoke(mpl_::bool_, mpl_::bool_)' </pre><p> Given that Boost Process is a header-only library, why is the linker complaining about unresolved symbols in <code>boost::process::...::invoke()</code>? </p> Ton van den Heuvel <tonvandenheuvel@…> https://svn.boost.org/trac10/ticket/13171 https://svn.boost.org/trac10/ticket/13171 Report #13169: Context breaks with using python jam file Mon, 21 Aug 2017 01:37:13 GMT Mon, 21 Aug 2017 01:37:13 GMT <p> With </p> <pre class="wiki">using python : 3.6 # Version : c:\\Users\\gfurn\\AppData\\Local\\Programs\\Python\\Python36\\python.exe # Python Path : c:/Users/gfurn/AppData/Local/Programs/Python/Python36/include # include path : c:/Users/gfurn/AppData/Local/Programs/Python/Python36/lib # lib path(s) : &lt;define&gt;BOOST_ALL_NO_LIB=1 ; }}} as a user.jam, the following build messages are emitted on trunk. {{{ ...updating 10 targets... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj" "libs\context\src\asm\make_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj" "libs\context\src\asm\jump_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -D_WIN32_WINNT=0x0601 /Zi /Zd /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj" "libs\context\src\asm\ontop_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj... ...skipped &lt;pbin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi&gt;libboost_context-vc141-mt-gd-1_65.lib for lack of &lt;pbin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi&gt;asm\make_i386_ms_pe_masm.obj... ...skipped &lt;pstage\lib&gt;libboost_context-vc141-mt-gd-1_65.lib for lack of &lt;pbin.v2\libs\context\build\msvc-14.1\debug\link-static\threading-multi&gt;libboost_context-vc141-mt-gd-1_65.lib... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj" "libs\context\src\asm\make_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\make_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj" "libs\context\src\asm\ontop_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\ontop_i386_ms_pe_masm.obj... msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj The system cannot find the file specified. call "C:\Users\gfurn\AppData\Local\Temp\b2_msvc_14.1_vcvars32_.cmd" &gt;nul ml -coff -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1,&lt;python&gt;3.6,&lt;target-os&gt;windows:&lt;python.interpreter&gt;c:\Users\gfurn\AppData\Local\Programs\Python\Python36\python.exe -DBOOST_CONTEXT_EXPORT= -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DNDEBUG -D_WIN32_WINNT=0x0601 /W3 -Fo "bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj" "libs\context\src\asm\jump_i386_ms_pe_masm.asm" ...failed msvc.compile.asm bin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi\asm\jump_i386_ms_pe_masm.obj... ...skipped &lt;pbin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi&gt;libboost_context-vc141-mt-1_65.lib for lack of &lt;pbin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi&gt;asm\make_i386_ms_pe_masm.obj... ...skipped &lt;pstage\lib&gt;libboost_context-vc141-mt-1_65.lib for lack of &lt;pbin.v2\libs\context\build\msvc-14.1\release\link-static\threading-multi&gt;libboost_context-vc141-mt-1_65.lib... ...failed updating 6 targets... ...skipped 4 targets... }}} The problem appears to be the &lt;define&gt; line, as commenting that out makes everything work. </pre> Gary Furnish <gfurnish@…> https://svn.boost.org/trac10/ticket/13169 https://svn.boost.org/trac10/ticket/13169 Report #13168: Boost python tutorial doesn't build. Sat, 19 Aug 2017 01:11:07 GMT Sat, 19 Aug 2017 01:44:23 GMT <pre class="wiki">cd $BOOST_ROOT/libs/python/example/tutorial bjam </pre><p> And fails to find bootstrap.jam. When you use BOOST_BUILD_PATH to point to bootstrap.jam, this results in the entire libboost_python library being built *in situ*, and then, of course, hello_ext.so will not load. </p> <p> And, if you configure user-config.jam to use python3, then the output shared library (i.e., "hello_ext.so") is misnamed. It should be "_hello_ext.so". </p> aaron@… https://svn.boost.org/trac10/ticket/13168 https://svn.boost.org/trac10/ticket/13168 Report #13166: gcc static linking with LTO flag with boost filesystem fails Thu, 17 Aug 2017 15:06:40 GMT Wed, 18 Apr 2018 08:46:33 GMT <p> boost version 1.64 <br /> gcc version 6.4.1 <br /> Linux <a class="missing wiki">OpenSuse</a> x64 42.2 <br /> Cmake 3.5.2 <br /> <br /> <strong>[linking, no LTO] works:</strong> <br /> -std=gnu++11 -O2 -fopenmp -static /opt/lib64/libboost_filesystem.a /opt/lib64/libboost_system.a <br /> </p> <p> <strong>[linking, with LTO] does not work:</strong> <br /> -std=gnu++11 -O2 -fopenmp -flto=8 -static /opt/lib64/libboost_filesystem.a /opt/lib64/libboost_system.a </p> <p> <strong>error:</strong> </p> <pre class="wiki">/opt/lib64/libboost_filesystem.a(operations.o): In function `boost::filesystem::detail::is_empty(boost::filesystem::path const&amp;, boost::system::error_code*)': operations.cpp:(.text+0x536a): undefined reference to `vtable for boost::detail::sp_counted_impl_p&lt;boost::filesystem::detail::dir_itr_imp&gt;' /opt/lib64/libboost_filesystem.a(operations.o): In function `(anonymous namespace)::remove_all_aux(boost::filesystem::path const&amp;, boost::filesystem::file_type, boost::system::error_code*)': operations.cpp:(.text+0x699d): undefined reference to `vtable for boost::detail::sp_counted_impl_p&lt;boost::filesystem::detail::dir_itr_imp&gt;' operations.cpp:(.text+0x6add): undefined reference to `vtable for boost::detail::sp_counted_impl_p&lt;boost::filesystem::detail::dir_itr_imp&gt;' collect2: error: ld returned 1 exit status CMakeFiles/zebr.dir/build.make:137: recipe for target 'zebr' failed </pre> mettbest@… https://svn.boost.org/trac10/ticket/13166 https://svn.boost.org/trac10/ticket/13166 Report #13165: inplace_ptr Thu, 17 Aug 2017 10:43:35 GMT Sun, 03 Sep 2017 18:22:28 GMT <p> Boost.Optional uses in place object creation. In many cases it could used as a drop in repelacment of scoped_ptr with the benefit of circumventing a memory allocation and locality of memory access. </p> <p> However its semantics is 'optional' and not like a fast replacement of scoped_ptr. Wouldn't it be an idea to add something like this to the smart_ptr library? Names can be e.g. inplace_ptr, value_ptr, etc. We could also use Boost.Optional but colleagues might get confused, since you do not use the 'optional' aspect but its performance aspect. </p> <p> Note that people might wonder why not use value based directly, but there are still some use cases: </p> <ul><li>for pimpl idiom / hide expansive headers (e.g. multi index) in client </li><li>2 phase construction, where information is not yet available at parent constructor time. </li></ul><p> Only drawback is that you lose polymorphism. </p> <p> <a class="ext-link" href="https://stackoverflow.com/questions/22636407/why-not-use-boostoptional-as-a-better-scoped-ptr"><span class="icon">​</span>https://stackoverflow.com/questions/22636407/why-not-use-boostoptional-as-a-better-scoped-ptr</a> </p> gast128@… https://svn.boost.org/trac10/ticket/13165 https://svn.boost.org/trac10/ticket/13165 Report #13164: Unable to build Boost.Iostreams with pre-built zlib on Windows Thu, 17 Aug 2017 10:00:42 GMT Thu, 17 Aug 2017 10:00:42 GMT <p> I want zlib to be statically linked to the iostreams library </p> <p> Command line approach: </p> <p> b2 --with-iostreams link=static -sNO_ZLIB=0 -sNO_COMPRESSION=0 -sZLIB_INCLUDE=e:/zlib/include -sZLIB_LIBRARY_PATH=e:/ b/lib -sZLIB_BINARY=zlib.lib -sZLIB_NAME=zlib --debug-configuration </p> <p> After that I get : unresolved external symbol "int const boost::iostreams::zlib::best_speed" (?best_speed@zlib@iostreams@boost@@3HB) </p> <p> unresolved external symbol "int const boost::iostreams::zlib::best_compression" (?best_compression@zlib@iostreams@boost@@3HB) </p> <p> ... </p> <p> The same situation if configure 'using zlib' in user-config.jam: </p> <p> using zlib : : &lt;include&gt;e:/zlib/include &lt;search&gt;e:/ b/lib &lt;name&gt;zlib : &lt;toolset&gt;msvc ; </p> <p> and command: b2 --with-iostreams link=static -sNO_ZLIB=0 -sNO_COMPRESSION=0 --debug-configuration </p> listhex@… https://svn.boost.org/trac10/ticket/13164 https://svn.boost.org/trac10/ticket/13164 Report #13162: Sharable Lock And Upgradable Lock documentation Mon, 14 Aug 2017 11:10:56 GMT Mon, 14 Aug 2017 11:10:56 GMT <p> <a href="http://www.boost.org/doc/libs/1_64_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.sharable_upgradable_mutexes.sharable_upgradable_locks">http://www.boost.org/doc/libs/1_64_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.sharable_upgradable_mutexes.sharable_upgradable_locks</a> </p> <blockquote> <p> The documentation of the interprocess sharable and upgradable locks state that "Boost.Interprocess mutexes are best used with the scoped_lock utility, and this class only offers exclusive locking.". </p> <blockquote> <p> Then goes on to explain to use sharable_lock and upgradable_lock. Then shows some examples; but the example for a timed lock is wrong or misleading: </p> </blockquote> </blockquote> <p> { </p> <blockquote> <p> boost::posix_time::ptime abs_time = ... </p> </blockquote> <blockquote> <p> <em>This will call timed_lock_sharable() scoped_lock&lt;<a class="missing wiki">SharableOrUpgradableMutex</a>&gt; lock(sh_or_up_mutex, abs_time); </em></p> </blockquote> <blockquote> <p> <em>Check if the mutex has been successfully locked if(lock){ </em></p> <blockquote> <p> <em>Some code </em></p> </blockquote> <p> } <em>If the mutex was locked it will be unlocked </em></p> </blockquote> <p> } </p> <blockquote> <p> The example basically says that the scoped_lock will acquire a sharable lock (saying that it will call timed_lock_sharable())! This should read "sharable_lock&lt;..." instead of "scoped_lock&lt;..." same with upgradable lock. </p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/13162 https://svn.boost.org/trac10/ticket/13162 Report #13161: Optional vector assignment regression Mon, 14 Aug 2017 06:43:17 GMT Wed, 16 Aug 2017 03:39:04 GMT <pre class="wiki">boost::optional&lt;std::vector&lt;int&gt;&gt; v; v = { 1, 3 }; </pre><p> Assignment doesn't compile anymore. It worked in 1.62 and reports an error in 1.63. I think it has to do with the addition of BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX but I could be wrong. </p> popizdeh@… https://svn.boost.org/trac10/ticket/13161 https://svn.boost.org/trac10/ticket/13161 Report #13158: core dump when get parent_path in a new thread Thu, 10 Aug 2017 15:59:51 GMT Thu, 10 Aug 2017 16:08:31 GMT <p> I will create a boost thread to delete some outdated files, and there is high possibility the program crash, when the program exit. </p> <p> I got the issue like me, but not determined. I doubt it's reason of the static variable of locale. in groups.google.com/forum/#!topic/boost-list/HOyZxH8JJc4 </p> <pre class="wiki"> time_t del_time = cut_time - log_keep_time_ * 60; std::string del_path(file_path_); boost::thread del_thread(MiLogFile::removeExpiredLog, del_path, del_time); del_thread.detach(); int MiLogFile::removeExpiredLog(std::string file_path, uint32_t expire_time) { boost::filesystem::path log_path(file_path); boost::filesystem::path dir = log_path.parent_path(); </pre><pre class="wiki">#3 0x00007fad7a9f4393 in __dynamic_cast () from /usr/lib64/libstdc++.so.6 #4 0x00007fad7a9d9fbb in std::codecvt&lt;wchar_t, char, __mbstate_t&gt; const&amp; std::use_facet&lt;std::codecvt&lt;wchar_t, char, __mbstate_t&gt; &gt;(std::locale const&amp;) () from /usr/lib64/libstdc++.so.6 #5 0x00007fad7ca415ad in boost::filesystem::path::parent_path() const () from ../../../..//ext//boost_1_56_0/stage/lib/libboost_filesystem.so.1.56.0 #6 0x00007fad7cc77ad0 in common::milog::MiLogFile::removeExpiredLog (file_path=..., expire_time=1502292035) at src/milog_file.cpp:361 #7 0x00007fad7cc7b706 in operator()&lt;int, int (*)(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, unsigned int), boost::_bi::list0&gt; (a=..., f=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at ../../../../..//ext//boost_1_56_0/boost/bind/bind.hpp:303 #8 operator() (this=&lt;optimized out&gt;) at ../../../../..//ext//boost_1_56_0/boost/bind/bind_template.hpp:20 #9 boost::detail::thread_data&lt;boost::_bi::bind_t&lt;int, int (*)(std::string, unsigned int), boost::_bi::list2&lt;boost::_bi::value&lt;char*&gt;, boost::_bi::value&lt;long&gt; &gt; &gt; &gt;::run (this=&lt;optimized out&gt;) at ../../../../..//ext//boost_1_56_0/boost/thread/detail/thread.hpp:115 #10 0x00007fad7e3d5e83 in thread_proxy () from ../../../..//ext//boost_1_56_0/stage/lib/libboost_thread.so.1.56.0 #11 0x00007fad79ef5aa1 in start_thread () from /lib64/libpthread.so.0 #12 0x00007fad7a1f3aad in clone () from /lib64/libc.so.6 </pre> jaycelq@… https://svn.boost.org/trac10/ticket/13158 https://svn.boost.org/trac10/ticket/13158 Report #13157: Failed to Install Thu, 10 Aug 2017 03:42:39 GMT Thu, 10 May 2018 10:46:27 GMT <p> Cannot install - in command prompt : <strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong> </strong> Visual Studio 2017 Developer Command Prompt v15.0.26430.16 <strong> Copyright (c) 2017 Microsoft Corporation </strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong> [vcvarsall.bat] Environment initialized for: 'x64' </p> <p> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community&gt;cd C:\C++_Library\boost_1_60_0 </p> <p> C:\C++_Library\boost_1_60_0&gt;bootstrap Building Boost.Build engine cl : Command line warning D9035 : option 'GZ' has been deprecated and will be removed in a future release cl : Command line warning D9036 : use 'RTC1' instead of 'GZ' cl : Command line warning D9002 : ignoring unknown option '/MLd' </p> <p> Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. </p> <p> You can try to obtain a prebuilt binary from </p> <blockquote> <p> <a class="ext-link" href="http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941"><span class="icon">​</span>http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941</a> </p> </blockquote> <p> Also, you can file an issue at <a class="ext-link" href="http://svn.boost.org"><span class="icon">​</span>http://svn.boost.org</a> Please attach bootstrap.log in that case. </p> shadowflameg@… https://svn.boost.org/trac10/ticket/13157 https://svn.boost.org/trac10/ticket/13157 Report #13156: Not word boundary - \b vs. NOT \B are not the same Thu, 10 Aug 2017 01:36:30 GMT Thu, 10 Aug 2017 01:36:30 GMT <p> I am reposting this from another source. </p> <p> In theory, \B should match everywhere \b doesn't. </p> <p> In boost regex, this is not the case at the beginning nor end of string. </p> <p> Below is a list of test results from a few Perl-like engines. Apparently, this was fixed in Perl v5.22 (below shows v5.20). The only engines that seem to handle this correctly is PHP and ECMAScript. </p> <hr /> <pre class="wiki"> Target = ' ssssssssssssss ' Replacement = '&lt;&gt;' ================================================== PHP 7.03 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' (?&lt;!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' ======================================= Perl 5.20 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s ' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' (?&lt;!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' ======================================== Boost 1.64 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = ' &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s ' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = '&lt;&gt; &lt;&gt;ssssssssssssss&lt;&gt; &lt;&gt;' (?&lt;!\B) = '&lt;&gt; &lt;&gt;ssssssssssssss&lt;&gt; &lt;&gt;' ===================================== JavaScript \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' </pre> anonymous https://svn.boost.org/trac10/ticket/13156 https://svn.boost.org/trac10/ticket/13156 Report #13154: Error compiling pthread/thread.o on Oracle Linux with Oracle compiler and stdlib=sun-stlport Wed, 09 Aug 2017 12:40:34 GMT Thu, 10 Aug 2017 10:41:19 GMT <p> On Oracle Linux 7.3 with stdlib=sun-stlport: </p> <p> sun.compile.c++ bin.v2/libs/thread/build/sun/release/stdlib-sun-stlport/threadin g-multi/pthread/thread.o "/usr/include/linux/sysinfo.h", line 21: Error: An array cannot have zero size unless you use the option -features=zla. 1 Error(s) detected. </p> <p> The compiler refuses to accept zero length array in -compat=5 mode (required for stdlib=sun-stlport and =apache). A special option needs to be added to the command line: -features=zla </p> <p> </p> maxim.kartashev@… https://svn.boost.org/trac10/ticket/13154 https://svn.boost.org/trac10/ticket/13154 Report #13153: Missing return statement in range/algorithm_ext/insert.hpp Wed, 09 Aug 2017 12:24:11 GMT Sat, 30 Jun 2018 21:08:25 GMT <p> Return statement is missing in method insert( Container&amp; on, const Range&amp; from ) </p> <p> Adding return on; fixes compilation. </p> <p> Seems to be a regression since patch <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6726" title="#6726: Patches: insert algorithm_ext overload for associative containers (closed: fixed)">#6726</a> ( <a class="ext-link" href="https://svn.boost.org/trac10/ticket/6726"><span class="icon">​</span>https://svn.boost.org/trac10/ticket/6726</a> ) </p> Olivier B. https://svn.boost.org/trac10/ticket/13153 https://svn.boost.org/trac10/ticket/13153 Report #13151: Graph dominiator tree considers unvisited vertices Wed, 09 Aug 2017 10:26:12 GMT Wed, 09 Aug 2017 10:26:12 GMT <table class="wiki"> <tr>The graph dominator tree will consider vertices that are not reachable from the given root. The unreachable check is implemented checking "dfnum &lt; 0 <td> dfnum &gt;= numOfVertices", but the dfnum map is initialized to 0. So when nodes are really unvisited they will have a value of 0 and pass the check. </td></tr></table> <p> Simple fix could be: <a class="ext-link" href="https://github.com/boostorg/graph/pull/97"><span class="icon">​</span>https://github.com/boostorg/graph/pull/97</a> </p> scott.gregory.west@… https://svn.boost.org/trac10/ticket/13151 https://svn.boost.org/trac10/ticket/13151 Report #13147: Crash in boost::asio::basic_streambuf Fri, 04 Aug 2017 06:50:09 GMT Tue, 15 Aug 2017 04:56:00 GMT <p> Hi All, </p> <p> Our program crashed in boost::asio::streambuf while streambuf was reserving more spaces. </p> <p> The related codes using boost::asio::streambuf is like this: </p> <pre class="wiki">boost::asio::streambuf send_buffer; std::ostream send_stream(&amp;send_buffer); send_stream &lt;&lt; "MESSAGE..."; send_stream &lt;&lt; flush(); ... boost::asio::async_write(ssl_stream, send_buffer, ...); </pre> luliu@… https://svn.boost.org/trac10/ticket/13147 https://svn.boost.org/trac10/ticket/13147 Report #13146: Precompiled lib32-msvc-12.0 binaries don't compile in VS2013 projects Wed, 02 Aug 2017 23:06:14 GMT Fri, 18 Aug 2017 09:16:19 GMT <p> Seems to be problems related to process/detail/config.hpp. </p> <p> 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C2146: syntax error : missing ';' before identifier 'Char' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C2146: syntax error : missing ';' before identifier 'null_char' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(86): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(87): error C2144: syntax error : 'char' should be preceded by ';' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(87): error C2143: syntax error : missing ';' before '&lt;' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(88): error C2143: syntax error : missing ';' before '{' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(88): error C2447: '{' : missing function header (old-style formal list?) 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C2146: syntax error : missing ';' before identifier 'Char' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C2146: syntax error : missing ';' before identifier 'equal_sign' 2&gt;C:\local\boost_1_64_0\boost/process/detail/config.hpp(90): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int </p> komannamok@… https://svn.boost.org/trac10/ticket/13146 https://svn.boost.org/trac10/ticket/13146 Report #13145: parse_charset.hpp(304): warning C4456: declaration of 'invert' hides previous local declaration Wed, 02 Aug 2017 09:03:08 GMT Wed, 02 Aug 2017 09:03:08 GMT <p> While compiling on Visual Studio 2015 I've got a warning: </p> <p> parse_charset.hpp(304): warning C4456: declaration of 'invert' hides previous local declaration </p> <p> It's really a new declaration of the 'invert' variable and possibly there are a hidden error or the variable should be renamed </p> Dmitry Yastrebkov <yastrebkov@…> https://svn.boost.org/trac10/ticket/13145 https://svn.boost.org/trac10/ticket/13145 Report #13144: Hinted overloads of boost::container::flat_map::insert_or_assign are uncompilable Tue, 01 Aug 2017 18:37:22 GMT Tue, 01 Aug 2017 18:37:22 GMT <p> <code>boost::container::flat_map::insert_or_assign()</code> overloads which take a hint require an impossible conversion from <code>std::pair&lt;iterator, bool&gt;</code> to <code>iterator</code>, breaking compilation of any code that tries to use these methods. </p> Constantin Makshin <cmakshin@…> https://svn.boost.org/trac10/ticket/13144 https://svn.boost.org/trac10/ticket/13144 Report #13143: boost read_json throw exception when the json file has some gbk chinese charactor Tue, 01 Aug 2017 02:47:29 GMT Tue, 01 Aug 2017 02:51:09 GMT <p> there is a json file like this, without bom, use gbk code set. The boost::property_tree can parse it successfully in the majority. </p> <pre class="wiki">try { boost::property_tree::read_json(filename, tree); } catch (exception &amp;e) { cerr &lt;&lt; e.what() &lt;&lt; endl; } </pre><p> However, if the file has chinese character"历"(c0fa)or"繞"(c040), the property_tree will throw exception"invalid code sequence" </p> Li Da <sculida@…> https://svn.boost.org/trac10/ticket/13143 https://svn.boost.org/trac10/ticket/13143 Report #13142: circle_formation_functor call has no effect? Sat, 29 Jul 2017 20:25:40 GMT Sat, 29 Jul 2017 20:39:13 GMT <p> What effect has the call of circle_formation_functor_.ppp() in boost::polygon::detail::circle_formation_predicate::operator() ? The call seems to have no side effects, because circle_formation_functor_ is stateless and it does not affect voronoi_builder or voronoi_diagram. Is it safe to simply delete the call? </p> <p> <a href="http://www.boost.org/doc/libs/1_64_0/boost/polygon/detail/voronoi_predicates.hpp">http://www.boost.org/doc/libs/1_64_0/boost/polygon/detail/voronoi_predicates.hpp</a> </p> <p> class circle_formation_predicate { </p> <blockquote> <p> bool operator()(const site_type&amp; site1, const site_type&amp; site2, </p> <blockquote> <p> const site_type&amp; site3, circle_type&amp; circle) { </p> </blockquote> <p> if (!site1.is_segment()) { </p> <blockquote> <p> if (!site2.is_segment()) { </p> <blockquote> <p> if (!site3.is_segment()) { </p> <blockquote> <p> <em> (point, point, point) sites. if (!circle_existence_predicate_.ppp(site1, site2, site3)) </em></p> <blockquote> <p> return false; </p> </blockquote> <p> circle_formation_functor_.ppp(site1, site2, site3, circle); <em> &lt;- This call has no effect, does it? </em></p> </blockquote> </blockquote> </blockquote> </blockquote> nkurtov@… https://svn.boost.org/trac10/ticket/13142 https://svn.boost.org/trac10/ticket/13142 Report #13141: Allow intrusive containers to work with relative pointers (ie with nodes stored in a vector) Fri, 28 Jul 2017 05:23:14 GMT Fri, 28 Jul 2017 05:23:14 GMT <p> There is an interesting use case that Boost Intrusive containers don't seem to support yet. </p> <p> I would like to store the nodes of my collection in an std::vector. The problem is: as nodes get pushed to the back of the vector, the vector reaches capacity, reallocates its internal buffer and these nodes don't stay at the same address. I therefore cannot use pointers (which hold an absolute address) to chain these nodes together. </p> <p> However, I would like to use indices to chain these nodes. I call that index chaining. The idea is simple. Nodes stay at the same (relative) index inside the vector even though the vector grows and reallocates its internal buffer. Any node-based collection (linked list, red-black tree, etc), can be stored in a contiguous area of memory and represented using index chaining. </p> <p> Think of the index as a relative pointer. This relative pointer needs some context to be dereferenced: the vector in which the elements are stored. </p> <p> There are several good reasons why we might want to store a node-based data structure in a vector. It is more compact. It is more cache-friendly. We can use shorter integers to represent indices (eg int32_t compared to 64-bit absolute pointers), which makes the nodes more compact and the whole data structure more cache-friendly. All the nodes are colocated in a single memory block. If the nodes are trivially destructible, deleting the whole data structure is just a matter of deallocating a single memory block. </p> <p> Las, the different traits class that would have helped (pointer_traits, node algorithms) are stateless and only work through static methods. And offset_ptr doesn't cut it. </p> <p> I haven't found a way to get Boost intrusive to work this way. I might not be the only one trying. groups.google.com/forum/m/#!topic/boost-list/PYKJlqT_wuw describes a similar, if not the same, request. </p> <p> Consider supporting this feature. That would open Boost intrusive to the realm of compact and relocatable node-based data structures. </p> fdegros@… https://svn.boost.org/trac10/ticket/13141 https://svn.boost.org/trac10/ticket/13141 Report #13140: Quadratic complexity of a flat_set constructor Fri, 28 Jul 2017 00:53:15 GMT Tue, 08 Aug 2017 01:36:20 GMT <p> The documentation of <a href="http://www.boost.org/doc/libs/1_64_0/doc/html/boost/container/flat_map.html#boost.container.flat_mapconstruct-copy-destruct">boost flat_set constructor taking two iterators</a> says: </p> <pre class="wiki">template&lt;typename InputIterator&gt; flat_map(InputIterator first, InputIterator last, const Compare &amp; comp = Compare(), const allocator_type &amp; a = allocator_type()); </pre><p> Effects: Constructs an empty flat_map using the specified comparison object and allocator, and inserts elements from the range [first ,last ). </p> <p> Complexity: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </p> <p> However, the complexity of this constructor is O(N*N) because the implementation of the constructor inserts each element into a vector at position found by binary search and insertion is linear in distance to the end of the vector. </p> <p> A simple fix is to insert all elements at once and sort the vector backing <code>flat_set</code>. </p> victor.zverovich@… https://svn.boost.org/trac10/ticket/13140 https://svn.boost.org/trac10/ticket/13140 Report #13139: child::join() incorrectly throws `waitpid(2) failed: No child processes` if child exited abnormally Thu, 27 Jul 2017 19:46:16 GMT Thu, 27 Jul 2017 19:46:16 GMT <p> Create a child process. Let it die abnormally (for example, calling <code>kill(getpid(), SIGABRT)</code> in the child). In the parent, call <code>child.join()</code>. </p> <p> It appears that the <code>::waitpid</code> loop in <code>boost::process::detail::posix::wait</code> at github.com/boostorg/process/blob/boost-1.64.0/include/boost/process/detail/posix/wait_for_exit.hpp#L26-L31 only checks that the child ended because of a call to <code>::exit()</code> and does not check for exiting via signal (<code>WIFSIGNALED()</code>). </p> <p> Because <code>WIFSIGNALED()</code> is true, <code>WIFEXITED()</code> is false; and because it's false, the loop will continue and call <code>::waitpid()</code> again... this time with a child PID to a process which has already been reaped. <code>waitpid()</code> will report an error (indicating that there's no such child prcess), and the error will be thrown. </p> <p> The child's exact reason for exiting is lost, which is why I believe this should be marked a "Showstopper" severity; a workaround would be to avoid calling <code>boost::process::wait()</code> in any fashion and to instead use a custom waitpid loop using the <code>child.native_handle()</code>. </p> keithb@… https://svn.boost.org/trac10/ticket/13139 https://svn.boost.org/trac10/ticket/13139 Report #13138: bootstrap.bat throws an error Thu, 27 Jul 2017 10:59:40 GMT Tue, 23 Jan 2018 00:20:51 GMT <p> I cannot run the bootstrap.bat file gettin this error: " fail to build boost.build engien" </p> <p> I have tryied to runin visual studio 32 and 64 bit (didnt matter) attached the bootstrap.log </p> <p> thanks for you help. </p> oranzohar@… https://svn.boost.org/trac10/ticket/13138 https://svn.boost.org/trac10/ticket/13138 Report #13137: boost::optional::operator*() doesn't have "const &&" overload, allowing incorrect usage Wed, 26 Jul 2017 06:00:30 GMT Mon, 31 Jul 2017 04:07:55 GMT <pre class="wiki">#include &lt;boost/optional.hpp&gt; const boost::optional&lt;int&gt; f() { return {1}; } int main() { const int&amp; ref = *f(); // creates a boost::optional temporary // "*tmp" binds to "optional::operator*() const&amp;" // "ref" starts pointing to internals of the returned temporary // temporary gets destroyed // we have a dangling reference } </pre><p> at the same time, std::optional in C++17 does have </p> <pre class="wiki">constexpr const T&amp;&amp; operator*() const &amp;&amp;; </pre><p> <a class="ext-link" href="http://en.cppreference.com/w/cpp/utility/optional/operator*"><span class="icon">​</span>overload</a>, which lets the code above work correctly. </p> for.gcc.bugzilla@… https://svn.boost.org/trac10/ticket/13137 https://svn.boost.org/trac10/ticket/13137 Report #13136: Regression: intrusive::unordered_set::rehash now requires T to be hashable Tue, 25 Jul 2017 19:45:13 GMT Wed, 26 Jul 2017 01:13:16 GMT <p> It is possible to create an <code>intrusive::unordered_set&lt;T&gt;</code> where <code>T</code> is not hashable, so long as you never use methods that perform hashing (e.g. insertion is performed via <code>insert_check</code> and <code>insert_commit</code>, and lookup is performed with a caller-specified hasher). <code>rehash</code> is documented as not calling the hash function if <code>store_hash</code> is true, so it ought to be callable on a set with that option enabled, and as of Boost 1.60.0 it was. However, as of Boost 1.64.0 calls to <code>rehash</code> on such a set no longer compile, because the generated code now includes a call to the hash function (which will never actually be executed). </p> <p> Suggested fix: make <code>do_full_rehash</code> a non-type template parameter rather than a function parameter of <code>rehash_impl</code>, and encapsulate the <code>if(do_full_rehash)</code> logic behind a function template that takes <code>do_full_rehash</code> as a template argument (with the two branches as different specializations). That way the code that calls the hash function will not be generated unless the user actually calls <code>full_rehash</code>. </p> gromer@… https://svn.boost.org/trac10/ticket/13136 https://svn.boost.org/trac10/ticket/13136 Report #13135: boost::filesystem::exists silently fails to work on MSVC with newly created symlink Tue, 25 Jul 2017 09:09:54 GMT Tue, 25 Jul 2017 09:09:54 GMT <p> The following program: </p> <pre class="wiki">#include &lt;boost/filesystem/operations.hpp&gt; #include &lt;cassert&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; int main() { boost::system::error_code error; boost::filesystem::create_directories("dir/subdir", error); assert(!error); std::ofstream ofs("dir/subdir/file.txt"); ofs &lt;&lt; "Boost.Filesystem is fun!"; assert(ofs); ofs.close(); boost::filesystem::create_symlink("dir/subdir/file.txt", "symlink", error); if (!error) { std::cerr &lt;&lt; "Symlink created\n"; assert(boost::filesystem::exists("symlink")); } else { std::cerr &lt;&lt; "Failed to create a symlink\n"; boost::filesystem::remove_all("dir", error); assert(!error); boost::filesystem::remove("symlink", error); assert(!error); } /*if (!error)*/ } /*main*/ </pre><p> Works well on Linux and Windows+MinGW but fails to work on msvc-14.0: </p> <pre class="wiki">--- Stderr: Symlink created Assertion failed: boost::filesystem::exists("symlink"), file .\main.cpp, line 20 --- Ret code: 3 </pre><p> Failed run can be found here: <a class="ext-link" href="https://ci.appveyor.com/project/apolukhin/boost-cookbook/branch/second_edition/job/1ycwqk36phd8h8il"><span class="icon">​</span>https://ci.appveyor.com/project/apolukhin/boost-cookbook/branch/second_edition/job/1ycwqk36phd8h8il</a> </p> <p> P.S.: Code from above worked well a few months ago. Looks like some recent change broke the example. </p> Antony Polukhin https://svn.boost.org/trac10/ticket/13135 https://svn.boost.org/trac10/ticket/13135 Report #13134: Warnings about the use of 0 as null pointer constant. Mon, 24 Jul 2017 22:55:36 GMT Mon, 24 Jul 2017 22:55:36 GMT <p> <code>boost/core/lightweight_test_trait.hpp</code> uses 0 as null pointer constant. Compilers issue warnings about it. This could, however, be easily fixed by, for example, <code>ifdef</code>ing on <code>BOOST_NO_CXX11_NULLPTR</code>. Shall I create a PR? </p> kot.tom97@… https://svn.boost.org/trac10/ticket/13134 https://svn.boost.org/trac10/ticket/13134 Report #13133: copy_file does not check file type, can fill disk or hang program if used on certain file types Mon, 24 Jul 2017 21:12:13 GMT Mon, 24 Jul 2017 21:12:13 GMT <p> Boost’s copy_file method, when passed non-regular files, can fill up the user’s disk space or hang the program. </p> <p> The copy_file method does not check file type before it begins copying, which can lead to unspecified behavior if the user tries to copy a non-regular (type) file. As only regular files can be properly copied by reading and writing their contents, trying to copy non-regular files in this way can cause problems. For example: </p> <ul><li>Trying to copy a symlink to the character device /dev/urandom with copy_file will copy random data into the output file indefinitely, quickly filling up the user’s disk. </li><li>Trying to copy a FIFO type file with copy_file will result in the program hanging indefinitely if left unattended. </li></ul><p> This problem can be fixed without too much work by checking the result of the post-open stat call to check that a regular file was opened. I have written up a patch, which I submitted a pull-request for (<a class="closed ticket" href="https://svn.boost.org/trac10/ticket/48" title="#48: Tasks: Steal PWD from Matt Armstrong (closed: Fixed)">#48</a>). This problem was found as part of an effort to detect and deal with “environmental” bugs in popular applications (for more information, check out <a class="ext-link" href="https://works-everywhere.org"><span class="icon">​</span>https://works-everywhere.org</a>). It was found using a tool that detects situations where an application fails to correctly handle unusual environmental conditions such as files having an unexpected file type. </p> Ryan Patton <rjp2@…> https://svn.boost.org/trac10/ticket/13133 https://svn.boost.org/trac10/ticket/13133 Report #13132: process_event called upon initial on_entry does not wait for on_entry completion. Sun, 23 Jul 2017 19:05:29 GMT Sun, 23 Jul 2017 19:05:29 GMT <p> process_event called during initial on_entry does not wait for on_entry completion. </p> Janusz Piwowarski <jpiw@…> https://svn.boost.org/trac10/ticket/13132 https://svn.boost.org/trac10/ticket/13132 Report #13131: move_if_not_lvalue_reference undefined under BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE Fri, 21 Jul 2017 17:03:02 GMT Fri, 21 Jul 2017 22:05:21 GMT <p> Defining BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE causes the following program to fail compilation for boost-1.60.0 and newer: </p> <blockquote> <p> #define BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE </p> </blockquote> <blockquote> <p> #include &lt;boost/thread.hpp&gt; </p> </blockquote> <blockquote> <p> int main() { } </p> </blockquote> <p> NOTE: this regression was reported over a year ago on the mailing lists but the message received no reply and nobody ever filed a bug. <a class="ext-link" href="https://lists.boost.org/boost-users/2015/12/85457.php"><span class="icon">​</span>https://lists.boost.org/boost-users/2015/12/85457.php</a> </p> <p> It appears the fix is simple: move the definition of move_if_not_lvalue_reference() outside the #ifdef for BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE. Untested patch attached. </p> ryan.johnson@… https://svn.boost.org/trac10/ticket/13131 https://svn.boost.org/trac10/ticket/13131 Report #13130: BOOST_LOCKFREE_CACHELINE_BYTES value is incorrect on s390x Fri, 21 Jul 2017 16:40:28 GMT Wed, 20 Sep 2017 11:56:13 GMT <p> The file include/boost/lockfree/detail/prefix.hpp contains the following code snippet: </p> <pre class="wiki">// PowerPC caches support 128-byte cache lines. #if defined(powerpc) || defined(__powerpc__) || defined(__ppc__) #define BOOST_LOCKFREE_CACHELINE_BYTES 128 #else #define BOOST_LOCKFREE_CACHELINE_BYTES 64 #endif </pre><p> This sets the cache line size on s390x to 64 bytes. This is incorrect, the correct size is 256 bytes. To fix we just need to add an extra #elif checking for the <span class="underline">s390</span>/ <span class="underline">s390x</span> compiler-defined macros. </p> mike.munday@… https://svn.boost.org/trac10/ticket/13130 https://svn.boost.org/trac10/ticket/13130 Report #13128: boost asio does not initialize libressl library Wed, 19 Jul 2017 22:39:40 GMT Tue, 15 May 2018 20:06:52 GMT <p> When using the <code>libressl</code> library with boost asio, there is some library initialization code that depends on <code>OPENSSL_VERSION_NUMBER</code> that should be executed but it is not because <code>libressl</code> identifies itself with <code>OPENSSL_VERSION_NUMBER 0x20000000L</code> and the code in question is inside an <code>#if (OPENSSL_VERSION_NUMBER &lt; 0x10100000L)</code>or an <code>#if (OPENSSL_VERSION_NUMBER &lt; 0x10000000L)</code> </p> <p> The code I'm referring to is in <code>boost/asio/ssl/detail/impl/openssl_init.ipp</code> as follows: </p> <ul><li>in <code>openssl_init_base::do_init</code> method there is the following code: <pre class="wiki">#if (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) ::SSL_library_init(); ::SSL_load_error_strings(); ::OpenSSL_add_all_algorithms(); mutexes_.resize(::CRYPTO_num_locks()); for (size_t i = 0; i &lt; mutexes_.size(); ++i) mutexes_[i].reset(new boost::asio::detail::mutex); ::CRYPTO_set_locking_callback(&amp;do_init::openssl_locking_func); #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) #if (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) ::CRYPTO_set_id_callback(&amp;do_init::openssl_id_func); #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) </pre></li></ul><ul><li>similarly, in <code>~do_init()</code> the following sequence should also execute for libressl: <pre class="wiki">#if (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) ::CRYPTO_set_id_callback(0); #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) #if (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) ::CRYPTO_set_locking_callback(0); ::ERR_free_strings(); ::EVP_cleanup(); ::CRYPTO_cleanup_all_ex_data(); #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) </pre></li><li>also in <code>~do_init()</code> the <code>ERR_remove_thread_state</code> and <code>ENGINE_cleanup</code> functions should be called <pre class="wiki">#elif (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) ::ERR_remove_thread_state(NULL); #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) </pre><pre class="wiki">#if !defined(OPENSSL_NO_ENGINE) \ &amp;&amp; (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) ::ENGINE_cleanup(); #endif // !defined(OPENSSL_NO_ENGINE) // &amp;&amp; (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) </pre></li><li>the following <code>openssl_id_func</code> and <code>openssl_locking_func</code> should also be available for <code>libressl</code>, along with the vector of mutexes: <pre class="wiki">#if (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) static unsigned long openssl_id_func() { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) return ::GetCurrentThreadId(); #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) void* id = &amp;errno; BOOST_ASIO_ASSERT(sizeof(unsigned long) &gt;= sizeof(void*)); return reinterpret_cast&lt;unsigned long&gt;(id); #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) } #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10000000L) #if (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) static void openssl_locking_func(int mode, int n, const char* /*file*/, int /*line*/) { if (mode &amp; CRYPTO_LOCK) instance()-&gt;mutexes_[n]-&gt;lock(); else instance()-&gt;mutexes_[n]-&gt;unlock(); } // Mutexes to be used in locking callbacks. std::vector&lt;boost::asio::detail::shared_ptr&lt; boost::asio::detail::mutex&gt; &gt; mutexes_; #endif // (OPENSSL_VERSION_NUMBER &lt; 0x10100000L) </pre></li></ul> ioan pomian <ipomian@…> https://svn.boost.org/trac10/ticket/13128 https://svn.boost.org/trac10/ticket/13128 Report #13127: out of bound memory access in integer_sort Mon, 17 Jul 2017 05:26:37 GMT Mon, 17 Jul 2017 05:26:37 GMT <p> I called integer_sort() to sort a data array, found a oob access, and crashed. </p> <p> check the code, found it occurs in inner_swap_loop. the code is like the following: </p> <p> target_bin = bins + (rshift(*current, log_divisor) - div_min) </p> <p> but in the previous code, function spreadsort_rec(). the bin count is calculated by the code with a cast (unsigned): </p> <p> unsigned bin_count = unsigned(div_max - div_min) + 1; </p> <p> and the next place in spreadsort_rec() </p> <p> for (<a class="missing wiki">RandomAccessIter</a> current = first; current != last;) </p> <blockquote> <p> bin_sizes[unsigned(rshift(*(current++), log_divisor) - div_min)]++; </p> </blockquote> <p> so that, I thought there is a missing cast (unsigned) in inner_swap_loop(). </p> Jie HE <jie.he.cn@…> https://svn.boost.org/trac10/ticket/13127 https://svn.boost.org/trac10/ticket/13127 Report #13125: parse_config_file silently ignores IO errors Sun, 16 Jul 2017 12:21:46 GMT Sun, 16 Jul 2017 12:44:09 GMT <p> The function <code>parse_config_file</code> silently ignores I/O errors while reading the configuration file. </p> <p> A easy way to reproduce the bug is to specify a directory as configuration file. On Linux, <code>open</code> will succeed but subsequent calls to <code>read</code> will fail with <code>EISDIR</code>. </p> <p> --- </p> <p> Minimal and complete program to reproduce the problem: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;cerrno&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/program_options.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">program_options</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Invalid amount of arguments&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> <span class="p">}</span> <span class="k">try</span> <span class="p">{</span> <span class="n">options_description</span> <span class="n">desc</span><span class="p">(</span><span class="s">&quot;Desc&quot;</span><span class="p">);</span> <span class="n">variables_map</span> <span class="n">vm</span><span class="p">;</span> <span class="n">store</span><span class="p">(</span><span class="n">parse_config_file</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">desc</span><span class="p">),</span> <span class="n">vm</span><span class="p">);</span> <span class="n">notify</span><span class="p">(</span><span class="n">vm</span><span class="p">);</span> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">error</span> <span class="o">&amp;</span><span class="n">e</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span> <span class="p">}</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Everything fine&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><pre class="wiki">$ ./a.out some-non-existent-file Error: can not read options configuration file 'some-non-existent-file' $ ./a.out . Everything fine </pre> Johannes Spangenberg <johannes.spangenberg@…> https://svn.boost.org/trac10/ticket/13125 https://svn.boost.org/trac10/ticket/13125 Report #13123: So confused on building boost. Sun, 16 Jul 2017 06:32:20 GMT Sun, 30 Jul 2017 18:26:25 GMT <p> I have literally no idea what I'm doing, and nothing is working. Yes that's vague and doesn't help people answer my question but can someone just have a one on one, step by step with me on how to do this. bootstrap.bat doesn't work, the precompiled build.bat doesn't work. I'm confused and frustrated. </p> <p> [I also don't know how these tickets work, so on the off-chance that people can't directly reply to them, hit me up at my provided email address please, thank you!] </p> scubaventure101@… https://svn.boost.org/trac10/ticket/13123 https://svn.boost.org/trac10/ticket/13123 Report #13122: Four statics from containers_fwd.hpp should be constexpr Fri, 14 Jul 2017 13:34:24 GMT Fri, 14 Jul 2017 13:34:24 GMT <p> We did a study of duplicated global symbols in our modules and found four duplicated symbols coming from boost. Every compilation unit that includes this header will get four of these statics and they will be duplicated in the final executable. We had 525x4 instances of these duplicated globals in just one module. </p> <p> The tool used to find this problem is described here with source code: </p> <p> <a class="ext-link" href="https://randomascii.wordpress.com/2017/01/08/add-a-const-here-delete-a-const-there"><span class="icon">​</span>https://randomascii.wordpress.com/2017/01/08/add-a-const-here-delete-a-const-there</a> </p> <p> static const ordered_range_t ordered_range = ordered_range_t(); static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t(); static const default_init_t default_init = default_init_t(); static const value_init_t value_init = value_init_t(); </p> <p> It seems all is needed is for the BOOST_CONSTEXPR_OR_CONST to be used instead of 'const'. </p> robert.mcmillan@… https://svn.boost.org/trac10/ticket/13122 https://svn.boost.org/trac10/ticket/13122 Report #13121: std_fenced_block gets used for g++ 4.6.4 and hence buggy std::atomic_thread_fence Thu, 13 Jul 2017 10:52:36 GMT Wed, 09 Aug 2017 20:47:58 GMT <p> With g++ 4.6.4: using <code>asio</code> code that results in <code>detail::fenced_block</code> being used results in <code>detail::std_fenced_block</code> being used. This uses <code>std::atomic_thread_fence</code> but that has link issues with 4.6 (maybe <a class="ext-link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51038"><span class="icon">​</span>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51038</a>). </p> <p> <code>g++4.6 -std=c++0x -I boost... </code> </p> <pre class="wiki">#include &lt;boost/asio/detail/fenced_block.hpp&gt; #ifdef BOOST_ASIO_HAS_STD_ATOMIC # pragma message("Will use asio std_fenced_block") #endif int main(int argc, char *argv[]) { (void)argc; (void)argv; boost::asio::detail::fenced_block block(boost::asio::detail::fenced_block::full); } </pre><p> boost_asio.cpp:4:51: note: #pragma message: Will use asio std_fenced_block /tmp/ccNS0287.o: In function `boost::asio::detail::std_fenced_block::std_fenced_block(boost::asio::detail::std_fenced_block::full_t)': boost_asio.cpp:(.text._ZN5boost4asio6detail16std_fenced_blockC2ENS2_6full_tE[_ZN5boost4asio6detail16std_fenced_blockC5ENS2_6full_tE]+0x22): undefined reference to `std::atomic_thread_fence(std::memory_order)' /tmp/ccNS0287.o: In function `boost::asio::detail::std_fenced_block::~std_fenced_block()': boost_asio.cpp:(.text._ZN5boost4asio6detail16std_fenced_blockD2Ev[_ZN5boost4asio6detail16std_fenced_blockD5Ev]+0x13): undefined reference to `std::atomic_thread_fence(std::memory_order)' collect2: ld returned 1 exit status </p> <p> It looks like between 1.63 and 1.64, in <em>detail/fenced_block.hpp</em>, the <code>#elif defined(BOOST_ASIO_HAS_STD_ATOMIC)</code> line takes precedence over the specific gcc test. However, <code>BOOST_ASIO_HAS_STD_ATOMIC</code> is defined for 4.6.4. </p> Richard Hazlewood <boost@…> https://svn.boost.org/trac10/ticket/13121 https://svn.boost.org/trac10/ticket/13121 Report #13120: optional o<size_t>. x<(size_t)0 is different to x<0 Wed, 12 Jul 2017 08:13:11 GMT Wed, 12 Jul 2017 15:45:59 GMT <p> This is a very subtle but key bug. Comparing slightly different types changes the way the comparison is done. </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; #include &lt;cassert&gt; int main() { boost::optional&lt;size_t&gt; x; assert((x &lt; (size_t)0) == (x &lt; 0)); return 0; } </pre><p> result: </p> <pre class="wiki">$ g++ -g -I boost_1_64_0/ -o test_optional-d test_optional.cpp $ ./test_optional-d $ test_optional.cpp:7: int main(): Assertion `(x &lt; (size_t)0) == (x &lt; 0)' failed. </pre><p> I am scared to think what this might affect in my code... </p> <p> --- </p> <p> I would actually prefer to turn off the implicit cast in operator&lt;(), and only allow : optional&lt;T&gt; &lt; optional&lt;T&gt; </p> <p> I'd rather it throw a compile error and instead force me to do something like if (x &amp;&amp; *x &lt; 0) </p> <p> Because I do not always thing 'none' should be 'less than' anything. It should not be comparable. </p> harris.pc@… https://svn.boost.org/trac10/ticket/13120 https://svn.boost.org/trac10/ticket/13120 Report #13119: Boost::binomial_heap Merge memcheck error - Merging 9 into 5 Tue, 11 Jul 2017 19:22:34 GMT Tue, 11 Jul 2017 19:22:34 GMT <p> Binomial heap merge routine reads from uninitialized memory in the attached example. </p> <pre class="wiki">#include "boost/heap/binomial_heap.hpp" typedef boost::heap::binomial_heap&lt;int&gt; Heap; int main(int /*argc*/, char* /*argv*/[]) { Heap heap0; size_t heap0_size = 5; size_t max_range = 100; for (size_t ix = 0; ix &lt; heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 9; for (size_t ix = 0; ix &lt; heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); } </pre><p> I believe line 693 is incorrectly moving the iterator forwards. If the carry node is inserted before the last node of trees, this line will cause this_iterator to point to trees.end(). However, for this case, it will follow the goto statement and start another iteration which will cause the function to read from out of bounds. </p> jun.kudo@… https://svn.boost.org/trac10/ticket/13119 https://svn.boost.org/trac10/ticket/13119 Report #13118: boost.locale, Windows, x64 build: linker looks for ICU libraries in wrong folder (/lib instead of /lib64) Tue, 11 Jul 2017 05:41:55 GMT Tue, 11 Jul 2017 05:41:55 GMT <p> When building all of boost (64 bit) with ICU, locale fails to link to ICU libs, while other libraries, regex included, succeed.<br /> Accidently creating a copy of &lt;ICU_root&gt;/lib64/ into &lt;ICU_root&gt;/lib/ resolved the issue.<br /> Looks like locale searches for ICU libraries in &lt;ICU&gt;/lib for both 32 and 64 bit builds, while other boost libraries use &lt;ICU&gt;/lib for 32 builds and &lt;ICU&gt;/lib64 for 64 bit builds (which is where default ICU build puts them). </p> zhivkot@… https://svn.boost.org/trac10/ticket/13118 https://svn.boost.org/trac10/ticket/13118 Report #13117: BTC CODE REALISER BIOT Tue, 11 Jul 2017 02:19:40 GMT Sat, 15 Jul 2017 17:19:38 GMT Vadim Kozhukhovskiy https://svn.boost.org/trac10/ticket/13117 https://svn.boost.org/trac10/ticket/13117 Report #13116: BTC CODE REALISER Tue, 11 Jul 2017 01:36:42 GMT Tue, 11 Jul 2017 01:36:42 GMT Vadim Kozhukhovskiy <smens50@…> https://svn.boost.org/trac10/ticket/13116 https://svn.boost.org/trac10/ticket/13116 Report #13114: Multiple signatures for function Mon, 10 Jul 2017 18:09:48 GMT Mon, 10 Jul 2017 18:09:48 GMT <p> I am not familiar with boost, just wanted to suggest the possibility of having <code>function</code> take multiple signatures </p> <div class="wiki-code"><div class="code"><pre><span class="n">function</span><span class="o">&lt;</span><span class="kt">void</span> <span class="p">(</span><span class="kt">int</span><span class="p">),</span> <span class="kt">int</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">f</span><span class="p">;</span> </pre></div></div><p> This is compatible with <code>std::function</code>, but unknown feasibility for <code>boost::function</code> in its current form. </p> <p> The key idea is to recursively implement <code>operator()</code> from the argument list </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">Ret</span><span class="p">,</span> <span class="k">typename</span><span class="p">...</span> <span class="n">Args</span><span class="p">,</span> <span class="k">typename</span><span class="p">...</span> <span class="n">Fns</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">erasure_base</span><span class="o">&lt;</span><span class="n">Ret</span> <span class="p">(</span><span class="n">Args</span><span class="p">...),</span> <span class="n">Fns</span><span class="p">...</span><span class="o">&gt;</span> <span class="o">:</span> <span class="n">erasure_base</span><span class="o">&lt;</span><span class="n">Fns</span><span class="p">...</span><span class="o">&gt;</span> <span class="p">{</span> <span class="k">virtual</span> <span class="n">Ret</span> <span class="k">operator</span><span class="p">()(</span><span class="n">Args</span><span class="o">&amp;&amp;</span><span class="p">...)</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="k">using</span> <span class="n">erasure_base</span><span class="o">&lt;</span><span class="n">Fns</span><span class="p">...</span><span class="o">&gt;::</span><span class="k">operator</span><span class="p">();</span> <span class="p">};</span> </pre></div></div><p> Attached file is a proof-of-concept implementation of such functionality. </p> stinkingmadgod@… https://svn.boost.org/trac10/ticket/13114 https://svn.boost.org/trac10/ticket/13114 Report #13113: OperationalError: could not extend file "base/19263/19289": No space left on deviceHINT: Check free disk space. Mon, 10 Jul 2017 18:07:26 GMT Tue, 15 Aug 2017 08:27:12 GMT <h4 class="section" id="HowtoReproduce">How to Reproduce</h4> <p> While doing a GET operation on <code>/query</code>, Trac issued an internal error. </p> <p> <em>pressed middle mouse click on a keyword in a bug report</em> </p> <p> Request parameters: </p> <pre class="wiki">{u'keywords': u'~multi_index', u'status': u'!closed'} </pre><p> User agent: <code>#USER_AGENT#</code> </p> <h4 class="section" id="SystemInformation">System Information</h4> <p> <em>System information not available</em> </p> <h4 class="section" id="EnabledPlugins">Enabled Plugins</h4> <p> <em>Plugin information not available</em> </p> <h4 class="section" id="InterfaceCustomization">Interface Customization</h4> <p> <em>Interface customization information not available</em> </p> <h4 class="section" id="PythonTraceback">Python Traceback</h4> <pre class="wiki">Traceback (most recent call last): File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 623, in _dispatch_request dispatcher.dispatch(req) File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 260, in dispatch req.send(output, content_type or 'text/html') File "build/bdist.linux-x86_64/egg/trac/web/api.py", line 683, in send self.send_response(status) File "build/bdist.linux-x86_64/egg/trac/web/main.py", line 109, in send_response self.session.save() File "build/bdist.linux-x86_64/egg/trac/web/session.py", line 169, in save """, (self.sid, self.last_visit, authenticated)) File "build/bdist.linux-x86_64/egg/trac/db/util.py", line 128, in execute cursor.execute(query, params if params is not None else []) File "build/bdist.linux-x86_64/egg/trac/db/util.py", line 72, in execute return self.cursor.execute(sql_escape_percent(sql), args) OperationalError: could not extend file "base/19263/19289": No space left on device HINT: Check free disk space. </pre> anonymous https://svn.boost.org/trac10/ticket/13113 https://svn.boost.org/trac10/ticket/13113 Report #13112: uninitialized pointer fields in asio epoll_reactor Fri, 07 Jul 2017 14:57:46 GMT Fri, 07 Jul 2017 14:57:46 GMT <p> <a class="ext-link" href="https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/impl/epoll_reactor.ipp"><span class="icon">​</span>https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/impl/epoll_reactor.ipp</a> </p> <p> This was found by a Coverity scan. I can't see a fix for this in the pipeline at all on the latest version. Details from the Coverity scan are below: </p> <pre class="wiki"> 627epoll_reactor::descriptor_state::descriptor_state() 628  : operation(&amp;epoll_reactor::descriptor_state::do_complete) 629{     5. uninit_member: Non-static class member next_ is not initialized in this constructor nor in any functions that it calls.     7. uninit_member: Non-static class member prev_ is not initialized in this constructor nor in any functions that it calls.     9. uninit_member: Non-static class member reactor_ is not initialized in this constructor nor in any functions that it calls.     11. uninit_member: Non-static class member descriptor_ is not initialized in this constructor nor in any functions that it calls.     13. uninit_member: Non-static class member registered_events_ is not initialized in this constructor nor in any functions that it calls.     CID 256705: Uninitialized pointer field (UNINIT_CTOR)15. uninit_member: Non-static class member shutdown_ is not initialized in this constructor nor in any functions that it calls. 630} </pre> ben@… https://svn.boost.org/trac10/ticket/13112 https://svn.boost.org/trac10/ticket/13112 Report #13111: Out-of-bounds access for asio consuming buffers Fri, 07 Jul 2017 14:37:53 GMT Fri, 07 Jul 2017 14:37:53 GMT <p> I have not seen a fix for this in Github for the latest version </p> <p> <a class="ext-link" href="https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/consuming_buffers.hpp"><span class="icon">​</span>https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/consuming_buffers.hpp</a> </p> <p> The issue was found by a coverity scan. All calls to buffers_.end() are being flagged as out-of-bounds access, there is potential for memory corruption here. Coverity is flagging these as High Impacting. </p> <p> Coverity output is below: </p> <pre class="wiki"> 207  // Get a forward-only iterator to the first element. 208  const_iterator begin() const 209  {     1. address_of: Taking address with this-&gt;buffers_ yields a singleton pointer.     CID 336466: Out-of-bounds access (ARRAY_VS_SINGLETON)2. callee_ptr_arith: Passing this-&gt;buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 210    return const_iterator(at_end_, first_, 211        begin_remainder_, buffers_.end(), max_size_); 212  } 213 … 226  // Consume the specified number of bytes from the buffers. 227  void consume(std::size_t size) 228  { 229    // Remove buffers from the start until the specified size is reached.     1. Condition size &gt; 0, taking true branch.     2. Condition !this-&gt;at_end_, taking true branch. 230    while (size &gt; 0 &amp;&amp; !at_end_) 231    {     3. Condition boost::asio::buffer_size(this-&gt;first_) &lt;= size, taking true branch. 232      if (buffer_size(first_) &lt;= size) 233      { 234        size -= buffer_size(first_);     4. address_of: Taking address with this-&gt;buffers_ yields a singleton pointer.     CID 336464: Out-of-bounds access (ARRAY_VS_SINGLETON)5. callee_ptr_arith: Passing this-&gt;buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 235        if (begin_remainder_ == buffers_.end()) 236          at_end_ = true; 237        else 238          first_ = *begin_remainder_++; 239      } 240      else 241      { 242        first_ = first_ + size; 243        size = 0; 244      } 245    } … 247    // Remove any more empty buffers at the start.     12. Condition !this-&gt;at_end_, taking true branch.     13. Condition boost::asio::buffer_size(this-&gt;first_) == 0, taking true branch. 248    while (!at_end_ &amp;&amp; buffer_size(first_) == 0) 249    {     14. address_of: Taking address with this-&gt;buffers_ yields a singleton pointer.     CID 336464: Out-of-bounds access (ARRAY_VS_SINGLETON)15. callee_ptr_arith: Passing this-&gt;buffers_ to function end which uses it as an array. This might corrupt or misinterpret adjacent memory locations. 250      if (begin_remainder_ == buffers_.end()) 251        at_end_ = true; 252      else 253        first_ = *begin_remainder_++; 254    } 255  } … </pre> ben@… https://svn.boost.org/trac10/ticket/13111 https://svn.boost.org/trac10/ticket/13111 Report #13110: cannot wait/join process to actually terminate after calling child::terminate Fri, 07 Jul 2017 09:04:57 GMT Fri, 07 Jul 2017 09:04:57 GMT <p> On Windows child::terminate() calls <a class="missing wiki">TerminateProcess</a>, which is asynchronous. I need to wait for the process to actually terminate, but join()/wait() early out because a) _terminated gets set to true and b) the process handle is closed within terminate(). </p> <p> The Unix implementation uses waitpid() after calling kill() to wait for the process state to change, thus the behaviour is different. </p> <p> From MSDN: "<a class="missing wiki">TerminateProcess</a> is asynchronous; it initiates termination and returns immediately. If you need to be sure the process has terminated, call the <a class="missing wiki">WaitForSingleObject</a> function with a handle to the process." </p> <p> Because waiting for a process to actually terminate might take a long time I think it would be best to use a parameter to specify whether terminate() shall wait or not, and allow waiting for the process after calling terminate(). Alternatively please provide a async_terminate() and fix the Windows implementation to wait internally. </p> Christian Maaser <boost@…> https://svn.boost.org/trac10/ticket/13110 https://svn.boost.org/trac10/ticket/13110 Report #13107: Include guards missing in range/iterator_range_hash.hpp Wed, 05 Jul 2017 16:48:47 GMT Wed, 05 Jul 2017 16:48:47 GMT <p> Header <code>range/iterator_range_hash.hpp</code> has no include guard; including the header twice in the same translation unit results in an error about duplicate definition of the function template <code>::boost::hash_value(const iterator_range&lt;T&gt;&amp;)</code> </p> Petr Kmoch <petr.kmoch@…> https://svn.boost.org/trac10/ticket/13107 https://svn.boost.org/trac10/ticket/13107 Report #13105: Add missing top level include guards Mon, 03 Jul 2017 20:56:21 GMT Mon, 03 Jul 2017 20:56:21 GMT <p> This ticket is addressed by this pull request: <a class="ext-link" href="https://github.com/boostorg/function/pull/13/files"><span class="icon">​</span>https://github.com/boostorg/function/pull/13/files</a> </p> <p> The missing top level include guard means that even if boost/function.hpp is included in a pre-compiled header, we still pay the heavy boost pp pre-processing cost every time it is also included. </p> <p> This is very problematic with Visual Studio intellisense: It pre-process and parses the translation unit on the fly to provide syntax/semantic highlighting. </p> <p> In our projects, this fix remove a couple of seconds in this process. (boost/function.hpp is included in many headers that result in pre-processing it multiple time per compilation units) </p> anonymous https://svn.boost.org/trac10/ticket/13105 https://svn.boost.org/trac10/ticket/13105 Report #13103: Documentation: Line-by-line I/O example should use asio Fri, 30 Jun 2017 08:50:17 GMT Fri, 30 Jun 2017 08:50:17 GMT <p> The boost::process Tutorial needs some improvements: </p> <p> When following the example "<a href="http://www.boost.org/doc/libs/1_64_0/doc/html/boost_process/tutorial.html#boost_process.tutorial.io">Synchronous I/O</a>" the output may be incomplete. Actually, this is even stated in the <a href="http://www.boost.org/doc/libs/1_64_0/doc/html/boost_process/faq.html#boost_process.faq.closep">FAQ</a>: "But, since pipes are buffered, you might get incomplete data if you do this: It is therefore highly recommended that you use the asynchronous api if you are not absolutely sure how the output will look." </p> <p> Not retrieving all data is not something to be generally expected; therefore this should be stated clearly in the tutorial's example. A new example should provide a solution to the problem. (Would have saved me hours of work!) </p> <p> Or even better, since the asynchronous api is highly recommended anyway, why not deprecate synchronous IO and replace the example completely? </p> <p> The new/additional example could look somewhat like this: </p> <pre class="wiki">#include &lt;boost/process.hpp&gt; #include &lt;iostream&gt; #include &lt;functional&gt; #include &lt;sstream&gt; // capture process output line by line int main() { const std::string file = "file"; namespace bp = boost::process; bp::opstream os; struct IoData { bp::async_pipe ap; // Pipe to be used by the stream std::vector&lt;char&gt; buffer; std::mutex streamMutex; std::string keepline; // Store incomplete data std::function&lt;void(const std::string&amp;)&gt; callback; IoData(boost::asio::io_service&amp; ios_, std::function&lt;void(const std::string&amp;)&gt; callback_) : ap(ios_) , buffer(512) // Set arbitrary buffer size here! , callback(callback_) { } }; // set up async io boost::asio::io_service ios; // Prepare capturing both stdout and stderr IoData err(ios, [](const std::string&amp; s){ std::cout &lt;&lt; "cerr: " &lt;&lt; s &lt;&lt;std::endl; }); IoData out(ios, [](const std::string&amp; s){ std::cout &lt;&lt; "cout: " &lt;&lt; s &lt;&lt;std::endl; }); bp::child process(bp::search_path("nm"), file, bp::std_out &gt; out.ap, bp::std_err &gt; err.ap, ios); std::function&lt;void(IoData&amp;)&gt; beginRead = [&amp;](IoData&amp; io) { io.ap.async_read_some(boost::asio::buffer(io.buffer, io.buffer.size()), [&amp;](const boost::system::error_code &amp;ec, std::size_t size) { std::lock_guard&lt;std::mutex&gt; guard(io.streamMutex); std::string str(io.buffer.data(), size); std::stringstream stream(io.keepline + str); std::string line; while (std::getline(stream, line)) { io.callback(line); } if (stream.eof()) { io.keepline = line; } else { io.keepline = ""; } if (ec.value() != 0) { return; } beginRead(io); }); }; beginRead(err); beginRead(out); ios.run(); process.wait(); }; </pre> joshua.hopp@… https://svn.boost.org/trac10/ticket/13103 https://svn.boost.org/trac10/ticket/13103 Report #13102: Executable not relinking if related static libraries are changed. Wed, 28 Jun 2017 07:16:03 GMT Tue, 23 Jan 2018 00:05:10 GMT <p> I am trying to build an executable which depends on static libraries,say a and b. When there are changes in a or b and we try to recompile the executable, it does not gets updated. It just assumes that all targets are built and there are no new changes. </p> Uttkarsh https://svn.boost.org/trac10/ticket/13102 https://svn.boost.org/trac10/ticket/13102 Report #13101: multiplication overflow issue Tue, 27 Jun 2017 20:34:04 GMT Sun, 30 Jul 2017 18:25:27 GMT <p> The following code will result in erroneous output due to integer overflow. </p> <pre class="wiki">rational x {1, INT_MAX}; rational y {1, 2}; rational z = x * y; // will result in error due to overflow </pre><p> The relevant section of the library code - rational.hpp line 500 is </p> <pre class="wiki">// Avoid overflow and preserve normalization IntType gcd1 = integer::gcd(num, r_den); IntType gcd2 = integer::gcd(r_num, den); num = (num/gcd1) * (r_num/gcd2); den = (den/gcd2) * (r_den/gcd1); </pre><p> which, in spite of comment, does not implement any checking for overflow. The same argument applies to addition and likely other operations. Division does check for divide by zero and throws an exception. </p> <p> The documentation itself is kind of cagey on the issue. In spite of having opened this issue I'm not sure what I really want to ask for. Sorry about this. Longer term I would hope to see rational and multi precision integers not include any checking and permit safe integer do it. But of course I'm not there yet. </p> Robert Ramey https://svn.boost.org/trac10/ticket/13101 https://svn.boost.org/trac10/ticket/13101 Report #13100: How can I post move only handler? Tue, 27 Jun 2017 08:22:41 GMT Tue, 27 Jun 2017 08:22:41 GMT <p> How can I post move only handler? It seems there is no need require the handler copyable. I don't want wrap my handler with shared_ptr. </p> 136002018@… https://svn.boost.org/trac10/ticket/13100 https://svn.boost.org/trac10/ticket/13100 Report #13099: How about adding BOOST_CONSEXPR to functions in rational where appropriate Mon, 26 Jun 2017 18:02:30 GMT Tue, 27 Jun 2017 08:53:38 GMT <p> How about adding BOOST_CONSEXPR to functions in rational where appropriate. I shouldn't create any problems and would make boost rational more useful in current code. </p> Robert Ramey https://svn.boost.org/trac10/ticket/13099 https://svn.boost.org/trac10/ticket/13099 Report #13098: geometry::touches return wrong result on two polygons Mon, 26 Jun 2017 16:28:51 GMT Thu, 12 Oct 2017 11:01:20 GMT <p> touches should returns true: </p> <pre class="wiki">#include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/algorithms/touches.hpp&gt; #include &lt;boost/tuple/tuple.hpp&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/geometries/adapted/boost_tuple.hpp&gt; typedef boost::geometry::model::d2::point_xy&lt;float&gt; P; boost::geometry::model::polygon&lt;P, false, false&gt; polygon1, polygon2; boost::geometry::append(polygon1, boost::make_tuple(32.0f, -0.00438580196f)); boost::geometry::append(polygon1, boost::make_tuple(32.0f, -4.0f)); boost::geometry::append(polygon1, boost::make_tuple(37.0f, -4.0f)); boost::geometry::append(polygon1, boost::make_tuple(37.0f, -0.00438580057f)); boost::geometry::append(polygon2, boost::make_tuple(32.0f, 20.0f)); boost::geometry::append(polygon2, boost::make_tuple(32.0f, -0.00438580196f)); boost::geometry::append(polygon2, boost::make_tuple(37.0f, -0.00438580057f)); boost::geometry::append(polygon2, boost::make_tuple(43.0f, -0.00438579917f)); boost::geometry::append(polygon2, boost::make_tuple(43.0f, 20.0f)); assert(boost::geometry::touches(polygon1, polygon2) == true); </pre> bruno.deligny@… https://svn.boost.org/trac10/ticket/13098 https://svn.boost.org/trac10/ticket/13098 Report #13096: boost::geometry::intersection results depend on polypoints inputorder Mon, 26 Jun 2017 11:59:02 GMT Mon, 26 Jun 2017 12:36:32 GMT <p> Hello, </p> <p> when calculating the intersection of the givin polygons, the result depends on the order of the inputpoints. </p> <pre class="wiki"> #include &lt;boost/geometry/geometry.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; int main(int argc, char* argv[]) { typedef boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;double&gt;&gt; boost_polygon; boost_polygon RedPoly, GreenPoly, RedPolyReverted, GreenPolyReverted; boost::geometry::read_wkt("POLYGON((864.11024748062812 524.94908797221251, 881.01048034069004 524.77831898197212, 877.68802698783907 501.82023487475703, 860.75736496460991 501.99865072086430, 864.11024748062812 524.94908797221251))", RedPoly); boost::geometry::read_wkt("POLYGON((864.62221751510151 524.94391475320754, 868.20628459909278 524.90769942280622, 864.93694798456659 502.47800172931238, 861.34657616182551 502.51580174027310, 864.62221751510151 524.94391475320754))", GreenPoly); boost::geometry::read_wkt("POLYGON((860.75736496460991 501.99865072086430, 877.68802698783907 501.82023487475703, 881.01048034069004 524.77831898197212, 864.11024748062812 524.94908797221251, 860.75736496460991 501.99865072086430))", RedPolyReverted); boost::geometry::read_wkt("POLYGON((861.34657616182551 502.51580174027310, 864.93694798456659 502.47800172931238, 868.20628459909278 524.90769942280622, 864.62221751510151 524.94391475320754, 861.34657616182551 502.51580174027310))", GreenPolyReverted); boost::geometry::correct(RedPoly); boost::geometry::correct(GreenPoly); boost::geometry::correct(RedPolyReverted); // reverts order of points and is now equal it RedPoly boost::geometry::correct(GreenPolyReverted); // reverts order of points and is now equal it GreenPoly std::list&lt;boost_polygon&gt; output; boost::geometry::intersection(RedPoly, GreenPoly, output); // error: output is empty std::list&lt;boost_polygon&gt; outputReverted; boost::geometry::intersection(RedPolyReverted, GreenPolyReverted, outputReverted); // correct: outputReverted.front equals GreenPoly return 0; } </pre> kle@… https://svn.boost.org/trac10/ticket/13096 https://svn.boost.org/trac10/ticket/13096 Report #13092: Serializing pointer makes sanitizer complain about "reference binding to misaligned address" Fri, 23 Jun 2017 08:48:25 GMT Fri, 11 Aug 2017 12:41:00 GMT <p> Consider the following program: </p> <pre class="wiki">#include &lt;memory&gt; #include &lt;sstream&gt; #include &lt;boost/archive/text_iarchive.hpp&gt; #include &lt;boost/archive/text_oarchive.hpp&gt; #include &lt;boost/serialization/shared_ptr.hpp&gt; struct S { int i; char c; template &lt;class Archive&gt; void serialize(Archive &amp; ar, const unsigned int version) { ar &amp; i; ar &amp; c; } }; int main() { const auto s0 = std::make_shared&lt;S&gt;(); s0-&gt;i = 42; s0-&gt;c = 'c'; std::stringstream ss; { boost::archive::text_oarchive oa(ss); oa &lt;&lt; s0; } std::shared_ptr&lt;S&gt; s1; { boost::archive::text_iarchive ia(ss); ia &gt;&gt; s1; } return 0; } </pre><p> What is important is that we use a pointer to the struct. </p> <p> I then get the following output, which seems to be a real issue probably mitigated by x86's lax requirements on alignment: </p> <pre class="wiki">% g++ -lboost_serialization -fsanitize=address -fsanitize=leak -fsanitize=undefined -fsanitize=shift -fsanitize=integer-divide-by-zero -fsanitize=unreachable -fsanitize=vla-bound -fsanitize=null -fsanitize=return -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=alignment -fsanitize=object-size -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=nonnull-attribute -fsanitize=returns-nonnull-attribute -fsanitize=bool -fsanitize=enum -fno-sanitize=vptr t.cpp&amp;&amp; LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out /usr/include/boost/archive/detail/iserializer.hpp:540:19: runtime error: reference binding to misaligned address 0x000000000002 for type 'struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here &lt;memory cannot be printed&gt; /usr/include/boost/archive/detail/iserializer.hpp:541:67: runtime error: reference binding to misaligned address 0x000000000002 for type 'const struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here &lt;memory cannot be printed&gt; % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out % LD_PRELOAD=/usr/lib/gcc/x86_64-pc-linux-gnu/6.3.0/libasan.so ./a.out /usr/include/boost/archive/detail/iserializer.hpp:540:19: runtime error: reference binding to misaligned address 0x000000000002 for type 'struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here &lt;memory cannot be printed&gt; /usr/include/boost/archive/detail/iserializer.hpp:541:67: runtime error: reference binding to misaligned address 0x000000000002 for type 'const struct S', which requires 4 byte alignment 0x000000000002: note: pointer points here &lt;memory cannot be printed&gt; </pre><p> Note how it only occurs sometimes, probably depending on what memory address happened to have been returned. </p> fiesh@… https://svn.boost.org/trac10/ticket/13092 https://svn.boost.org/trac10/ticket/13092 Report #13089: Boost::binomial_heap Sanity check error Tue, 20 Jun 2017 18:00:21 GMT Tue, 20 Jun 2017 18:30:04 GMT <p> Configured with BOOST_HEAP_SANITYCHECKS turned on. </p> <p> Binomial heap hits an assertion failure (BOOST_HEAP_ASSERT(top_element == found_top)) when pushing nodes with the same priority. </p> <pre class="wiki">#include "boost/heap/binomial_heap.hpp" typedef boost::heap::binomial_heap&lt;int&gt; Heap; int main(int argc, char* argv[]) { Heap heap0; heap0.push(1); heap0.push(1); } </pre> jun.kudo@… https://svn.boost.org/trac10/ticket/13089 https://svn.boost.org/trac10/ticket/13089 Report #13088: Boost::binomial_heap Merge memcheck error Tue, 20 Jun 2017 17:46:01 GMT Tue, 20 Jun 2017 17:46:01 GMT <p> Binomial heap merge routine reads from uninitialized memory in the attached example. </p> <pre class="wiki">#include "boost/heap/binomial_heap.hpp" typedef boost::heap::binomial_heap&lt;int&gt; Heap; int main(int /*argc*/, char* /*argv*/[]) { Heap heap0; size_t heap0_size = 3; size_t max_range = 100; for (size_t ix = 0; ix &lt; heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 5; for (size_t ix = 0; ix &lt; heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); } </pre><p> I believe the error stems from the case identified by line 699 in binomial_heap.hpp. If the last node of trees is erased in this line (as is the case in this example), this_iterator now points to trees.end(). However, for this case, it will follow the goto statement and start another iteration which will cause the function to again read from this_iterator. </p> jun.kudo@… https://svn.boost.org/trac10/ticket/13088 https://svn.boost.org/trac10/ticket/13088 Report #13087: Boost::binomial_heap Merge error Tue, 20 Jun 2017 17:27:54 GMT Tue, 20 Jun 2017 17:27:54 GMT <p> Configured with BOOST_HEAP_SANITYCHECKS turned on. Binomial heap hits an assertion failure during the second merge routine in the attached example. </p> <pre class="wiki">#include "boost/heap/binomial_heap.hpp" typedef boost::heap::binomial_heap&lt;int&gt; Heap; int main(int argc, char* argv[]) { Heap heap0; size_t heap0_size = 13; size_t max_range = 100; for (size_t ix = 0; ix &lt; heap0_size; ++ix) { heap0.push(rand() % max_range); } Heap heap1; size_t heap1_size = 5; for (size_t ix = 0; ix &lt; heap1_size; ++ix) { heap1.push(rand() % max_range); } heap0.merge(heap1); Heap heap2; size_t heap2_size = 1; for (size_t ix = 0; ix &lt; heap2_size; ++ix) { heap2.push(rand() % max_range); } heap2.merge(heap0); } </pre><p> When heap1 is merged into heap0, the underlying forest incorrectly contains two 2-degree trees. This error is later caught in a sanity assertion check when heap0 is merged into heap2. </p> <p> I believe the error stems the case identified by line 668 in binomial_heap.hpp. When the two root degrees are equal and a carry tree with degree less than both exist, the carry tree is inserted into trees. However, after this insertion, the this_iterator is incorrectly iterated forward which causes the algorithm to behave incorrectly. In the case provided above, this causes the merge algorithm to skip the degree-2 / degree-2 merge between this and rhs, and instead causes rhs's degree-2 tree to be simple inserted into trees. </p> jun.kudo@… https://svn.boost.org/trac10/ticket/13087 https://svn.boost.org/trac10/ticket/13087 Report #13086: Exception Throw -> { boost::asio::ip::tcp::aceptor * acceptor->open(); } Tue, 20 Jun 2017 15:01:48 GMT Tue, 20 Jun 2017 15:01:48 GMT <pre class="wiki">asio.h #include "boost/asio.hpp" struct SNetGlobal { static boost::asio::io_service * GetStcIOService(); static bool RunIOServiceInThreads(int nCountThr = 1); }; asio.cpp #include "asio.h" #include &lt;vector&gt; #include &lt;thread&gt; static boost::asio::io_service * s_io_service = NULL; static std::vector&lt;std::thread&gt; s_thread_pool; io_service * SNetGlobal::GetStcIOService() { if (!s_io_service) { s_io_service = new io_service; } return s_io_service; } bool SNetGlobal::RunIOServiceInThreads(int nCountThr) { while (nCountThr--) { s_thread_pool.emplace_back([=] { s_io_service-&gt;run(); }); } return true; } listener.h class CUCListener { public: void Start(); void OnAccept(const boost::system::error_code &amp; ec); private: tcp::acceptor * m_pAcceptor; tcp::socket * m_pSocket; }; listener.cpp #include "asio.h" #include "listener.h" void CUCListener ::Start() { tcp::endpoint endpoint(tcp::v4(), 1974); m_pAcceptor = new tcp::aceptor(*SNetGlobal::GetStcIOService()); m_pAcceptor-&gt;open(endpoint.protocol()); m_pAcceptor-&gt;set_option(tcp::acceptor::reuse_address(true)); m_pAcceptor-&gt;bind(endpoint); m_pAcceptor-&gt;listen(); m_pAcceptor-&gt;async_accept(*m_pSocket, boost::bind(&amp;CUCListener::OnAccept, this, boost::asio::placeholders::error)); SNetGlobal::RunIOServiceInThreads(); } void CUCListener::OnAccept(const boost::system::error_code &amp; ec) { std::cout &lt;&lt; "Accept Success" &lt;&lt; std::endl; } </pre><p> Hi, sometimes throw exception and function CUCListener::<a class="missing wiki">OnAccept</a> not called when connected </p> <p> socket_ops.ipp </p> <pre class="wiki">socket_type socket(int af, int type, int protocol, boost::system::error_code&amp; ec) { clear_last_error(); #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) socket_type s = error_wrapper(::WSASocketW(af, type, protocol, 0, 0, WSA_FLAG_OVERLAPPED), ec); // Exception Throw if (s == invalid_socket) return s; ... } </pre> ya.tarakanov.ilya@… https://svn.boost.org/trac10/ticket/13086 https://svn.boost.org/trac10/ticket/13086 Report #13085: Bad command line escaping for Windows shell Tue, 20 Jun 2017 08:53:02 GMT Tue, 20 Jun 2017 08:58:01 GMT <p> I'm trying to launch a command with the windows shell: </p> <div class="wiki-code"><div class="code"><pre>call <span class="s2">&quot;%VS140COMNTOOLS%\vsvars32.bat&quot;</span> </pre></div></div><p> so the source is: (i have to escape the double-quotes and antislash) </p> <div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">getCommandLine</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="s">&quot;call </span><span class="se">\&quot;</span><span class="s">%VS140COMNTOOLS%</span><span class="se">\\</span><span class="s">vsvars32.bat</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="p">}</span> <span class="n">bp</span><span class="o">::</span><span class="n">child</span> <span class="n">child</span><span class="p">(</span><span class="n">getCommandLine</span><span class="p">(),</span> <span class="n">bp</span><span class="o">::</span><span class="n">shell</span><span class="p">);</span> </pre></div></div><p> The problem is that Boost is double-escaping the double-quotes, and the windows shell does not understand that: </p> <pre class="wiki">Error: '\"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\\vsvars32.bat\"' is not recognized as an internal or external command, operable program or batch file. The problem resides here : boost/process/detail/windows/basic_cmd.hpp :35 :48 :72 I just had to comment these lines to fix the command line and spawn the shell with the correct args. </pre> Salamandar <felix@…> https://svn.boost.org/trac10/ticket/13085 https://svn.boost.org/trac10/ticket/13085 Report #13084: boost::filesystem::exists returns false on existing pathnames on OSX systems Mon, 19 Jun 2017 20:50:40 GMT Mon, 19 Jun 2017 20:50:40 GMT <p> boost::filesystem::exists returns false on existing pathnames, surprisingly. This behaviour could be observed at least on OSX El Capitan (10.11.6) with Boost 1.64.0 On Linux, the same code works fine. </p> <p> For confirmation and reproduction, I provide a self-contained code that displays the output of three tests of file existence. It expects a pathname as its first (and only) argument. </p> <p> Here are the outputs that it gives me on Linux and OSX (when applied to an existing pathname): </p> <p> Linux:<br /> reply of boost::filesystem::exists: true<br /> reply of stat_exists: true<br /> reply of stream_exists: true<br /> </p> <p> OSX:<br /> reply of boost::filesystem::exists: false<br /> reply of stat_exists: true<br /> reply of stream_exists: true<br /> </p> fabrice.ducos@… https://svn.boost.org/trac10/ticket/13084 https://svn.boost.org/trac10/ticket/13084 Report #13083: msvc c++14 permissive- unrecognizable template declaration Mon, 19 Jun 2017 12:21:43 GMT Tue, 26 Dec 2017 01:04:00 GMT <p> MS has come out with /permissive- (read more: <a class="ext-link" href="https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/"><span class="icon">​</span>https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/</a>) </p> <p> This resulted in these errors: </p> <p> 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2988: unrecognizable template declaration/definition (compiling source file Wt\WGLWidget.C) 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(133): note: see reference to class template instantiation 'boost::type_of::msvc_extract_type&lt;ID,T&gt;' being compiled (compiling source file Wt\WGLWidget.C) 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2143: syntax error: missing ';' before '&lt;' (compiling source file Wt\WGLWidget.C) 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2913: explicit specialization; 'boost::type_of::id2type_impl' is not a specialization of a class template (compiling source file Wt\WGLWidget.C) 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(125): error C2059: syntax error: '&lt;' (compiling source file Wt\WGLWidget.C) 1&gt;C:\Dev\Couloir\3pLibs\Boost\boost_1_64_0\boost/typeof/msvc/typeof_impl.hpp(126): error C2334: unexpected token(s) preceding '{'; skipping apparent function body (compiling source file Wt\WGLWidget.C) </p> <p> I searched and found this: <a class="ext-link" href="https://svn.boost.org/trac10/ticket/4593"><span class="icon">​</span>https://svn.boost.org/trac10/ticket/4593</a> </p> <p> So, I defined _MSC_EXTENSIONS </p> <p> But I got the same errors. </p> <p> Any help would be greatly appreciated. </p> Gunnar <LifePropertyLiberty@…> https://svn.boost.org/trac10/ticket/13083 https://svn.boost.org/trac10/ticket/13083 Report #13082: Add a way to identify the executable as a boost-test Mon, 19 Jun 2017 08:39:36 GMT Fri, 30 Jun 2017 19:46:12 GMT <p> I propose to standardise a command-line option to identify the executable as a certain kind of test: I will propose this to boost.test and google.test as well. My personal usecase is the identification of tests for <a class="missing wiki">BoostTestUi</a> (the name is somewhat misleading, it is a test-runner for google-, boost-, catch- and nunit- tests, see github/BoostTestUi.) </p> <p> Currently this requires re-compilation of the test with a special header, I would like to prevent the need for that. </p> <p> --test-runner-identification framework: boost.test version: x.x </p> <p> --test-runner-identification framework: google.test version: x.x </p> <p> --test-runner-identification framework: catch.test version: x.x </p> <p> This will allow test-runners to identify the test-framework used to build the test. That way the test-runners can know what command-line parameters are available to do things like: </p> <ul><li>list all the tests </li><li>run specific tests </li></ul><p> finally, to let the user attach a debugger to the test this kind of code could added in the main(): (for catch that may already exist, I did not check) </p> <p> notice that this option can have any name, we need only 1 standardised option --test-runner-identification, because once we know what we're dealing with, we can just use the respective command-line options. </p> <blockquote> <p> if (arg == "--gui-wait") { </p> <blockquote> <p> std::cout &lt;&lt; "#waiting" &lt;&lt; std::endl; std::getchar(); </p> </blockquote> <p> } </p> </blockquote> jan.wilmans@… https://svn.boost.org/trac10/ticket/13082 https://svn.boost.org/trac10/ticket/13082 Report #13081: Xpressive crashes in release if auto keyword used. Sun, 18 Jun 2017 21:29:46 GMT Sun, 18 Jun 2017 21:31:41 GMT <p> This code. </p> <p> #include "boost/xpressive/xpressive.hpp" </p> <p> int main() { </p> <blockquote> <p> using namespace boost::xpressive; </p> </blockquote> <blockquote> <p> auto scheme = (s1 = +_w) &gt;&gt; ":<em>"; auto host_ipv6 = (s2 = ('[' &gt;&gt; +(xdigit | ':') &gt;&gt; ']')); cregex uri_re = scheme &gt;&gt; host_ipv6; </em></p> </blockquote> <blockquote> <p> cmatch m; if( regex_match( "<a class="ext-link" href="http://[fe"><span class="icon">​</span>http://[fe</a>::]", m, uri_re ) ) { </p> <blockquote> <p> <em> [first, last) pair of iterators, with implicit operator string() std::string protocol = m<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>; protocol = protocol; </em></p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> Crashes with access violation to random address. Visual Studio 2015 <strong>RELEASE</strong> builds only (for both 32/64 bit builds). </p> Evgeny Yashin <johny5.coder@…> https://svn.boost.org/trac10/ticket/13081 https://svn.boost.org/trac10/ticket/13081 Report #13078: boost::geometry::intersection between a polygon and a box produces incorrect results Fri, 16 Jun 2017 18:24:56 GMT Sun, 30 Jul 2017 18:22:40 GMT <p> I am intersecting a polygon with a box and with a polygon of the same points as the box. The result from box intersection is incorrect - it is a large as the original polygon. </p> <p> Here is the code: </p> <pre class="wiki">#include &lt;iostream&gt;` #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; namespace bg = boost::geometry; namespace bgm = bg::model; typedef double base_type; typedef bgm::d2::point_xy&lt;base_type&gt; point_type; typedef bgm::polygon&lt;point_type&gt; polygon_type; typedef bgm::multi_polygon&lt;polygon_type&gt; multipolygon_type; int main() { std::vector&lt;point_type&gt; points { {7.99922500000000127329e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 9.99905624999999963620e+03}, {3.99961250000000006821e+02, 9.99905624999999963620e+03}, {3.99961250000000006821e+02, 1.04990090625000011642e+04}, {7.99922500000000127329e+02, 1.04990090625000011642e+04}, }; polygon_type poly; bg::assign_points(poly, points); bgm::box&lt;point_type&gt; box( {5.99941874999999981810e+02, 1.02490326562500013097e+04}, {7.99922500000000013642e+02, 1.04990090625000011642e+04} ); std::vector&lt;point_type&gt; box_points { {5.99941874999999981810e+02, 1.02490326562500013097e+04}, {5.99941874999999981810e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 1.04990090625000011642e+04}, {7.99922500000000013642e+02, 1.02490326562500013097e+04}, {5.99941874999999981810e+02, 1.02490326562500013097e+04}, }; polygon_type box2; bg::assign_points(box2, box_points); multipolygon_type out; bg::intersection(poly, box, out); std::cout &lt;&lt; bg::area(out) &lt;&lt; " " &lt;&lt; bg::wkt(out) &lt;&lt; std::endl; multipolygon_type out2; bg::intersection(poly, box2, out2); std::cout &lt;&lt; bg::area(out2) &lt;&lt; " " &lt;&lt; bg::wkt(out2) &lt;&lt; std::endl; return 0; } </pre><p> And this is the output: </p> <pre class="wiki">199962 MULTIPOLYGON(((599.942 10499,799.923 10499,799.923 9999.06,399.961 9999.06,399.961 10499,599.942 10499))) 49990.4 MULTIPOLYGON(((799.923 10249,599.942 10249,599.942 10499,799.923 10499,799.923 10249))) </pre><p> Is this expected? </p> David R <ratchkov@…> https://svn.boost.org/trac10/ticket/13078 https://svn.boost.org/trac10/ticket/13078 Report #13076: Compilation error on MSVC2015+ on base_from_member used in a class with __declspec(dllexport) Thu, 15 Jun 2017 15:54:17 GMT Sun, 02 Jul 2017 19:51:15 GMT <p> Consider the following code: </p> <pre class="wiki">//#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #include &lt;boost/utility/base_from_member.hpp&gt; class __declspec(dllexport) Foo : public boost::base_from_member&lt;int&gt; { public: }; </pre><p> It fails to compile with the following error: </p> <pre class="wiki">example.cpp /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2061: syntax error: identifier 'T' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): note: This diagnostic occurred in the compiler generated function 'boost::base_from_member&lt;int,0&gt;::base_from_member(T &amp;&amp;...) noexcept(&lt;expr&gt;)' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(136): error C2056: illegal expression /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(136): note: This diagnostic occurred in the compiler generated function 'boost::base_from_member&lt;int,0&gt;::base_from_member(T &amp;&amp;...) noexcept(&lt;expr&gt;)' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2660: 'operator new': function does not take 2 arguments /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): note: while compiling class template member function 'boost::base_from_member&lt;int,0&gt;::base_from_member&lt;,void&gt;(void) noexcept(&lt;expr&gt;)' /opt/compiler-explorer/libs/boost_1_64_0\boost/utility/base_from_member.hpp(135): error C2056: illegal expression Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x64 Copyright (C) Microsoft Corporation. All rights reserved. Compiler exited with result code 2 </pre><p> See <a class="ext-link" href="https://godbolt.org/g/CqFg8t"><span class="icon">​</span>https://godbolt.org/g/CqFg8t</a> </p> <p> If I add the <code>BOOST_NO_CXX11_VARIADIC_TEMPLATES</code> define, the issue goes away. The issue affects both MSVC 2015 and MSVC 2017. </p> <p> Even if the underlying cause is the compiler error (to be checked), the issue should at least be prevented by proper compiler version detection. </p> <p> This affects other boost libraries relying on base_from_member, like Boost.Iostreams. </p> mwu <mwu-tow@…> https://svn.boost.org/trac10/ticket/13076 https://svn.boost.org/trac10/ticket/13076 Report #13075: gzip_decompressor cannot be pushed to filtering_stream if provided with input_seekable Thu, 15 Jun 2017 14:46:12 GMT Sat, 13 Jan 2018 17:36:00 GMT <p> There is a ticket regarding making filtering stream seekable: <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/2449"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/2449</a> However, the solution doesn't apply to situations where gzip decompressor is pushed. </p> <p> boost::iostreams::filtering_stream&lt;boost::iostreams::input_seekable&gt; instream; boost::iostreams::file_source file(filename, std::ios_base::in | std::ios_base::binary); instream.push(boost::iostreams::gzip_decompressor()); <em> -&gt; fails HERE instream.push(file); </em></p> hellohee https://svn.boost.org/trac10/ticket/13075 https://svn.boost.org/trac10/ticket/13075 Report #13074: boost/mpi/detail/mpi_datatype_primitive.hpp still includes boost/serialization/detail/get_data.hpp although get_data.hpp is no longer there Wed, 14 Jun 2017 15:33:44 GMT Thu, 13 Jul 2017 17:57:23 GMT <p> Not sure how this passed the build &amp; test before release? </p> anonymous https://svn.boost.org/trac10/ticket/13074 https://svn.boost.org/trac10/ticket/13074 Report #13073: boost tokenizer_functions explicit char_separator() ctor does not initialize m_output_done Wed, 14 Jun 2017 13:35:50 GMT Sat, 17 Jun 2017 18:14:20 GMT <p> This was identified in a Coverity scan. I checked the development tip in <a class="missing wiki">GitHub</a> (<a class="ext-link" href="https://github.com/boostorg/tokenizer/blob/develop/include/boost/token_functions.hpp"><span class="icon">​</span>https://github.com/boostorg/tokenizer/blob/develop/include/boost/token_functions.hpp</a>) and I did not see a fix for this issue. </p> <p> explicit char_separator() </p> <blockquote> <p> : m_use_ispunct(true), </p> <blockquote> <p> m_use_isspace(true), </p> </blockquote> <p> CID 25905 (<a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> of 1): Uninitialized scalar field (UNINIT_CTOR)2. uninit_member: Non-static class member m_output_done is not initialized in this constructor nor in any functions that it calls. </p> <blockquote> <p> m_empty_tokens(drop_empty_tokens) { } </p> </blockquote> </blockquote> jim.king@… https://svn.boost.org/trac10/ticket/13073 https://svn.boost.org/trac10/ticket/13073 Report #13072: boost::geometry::intersection different results for CCW and CW Wed, 14 Jun 2017 10:57:24 GMT Wed, 14 Jun 2017 13:13:25 GMT <p> Hello,<br /> </p> <p> when calculating the intersection between these two polygons the results differ dependent on the orientation (CW vs CCW). </p> <pre class="wiki"> #include &lt;boost/geometry/geometry.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; int main(int argc, char* argv[]) { typedef boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;double&gt;, true, false &gt; boost_polygon_CW_Open; typedef boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;double&gt;, false, false &gt; boost_polygon_CCW_Open; const std::string strPoly1( "POLYGON((986.53314901320903 603.61376367962623, 1014.6804499149767 602.74037774442763, 1018.1411735073581 623.97665453539310, 990.14493850604447 624.49725628790509))" ); const std::string strPoly2( "POLYGON((986.77183669558929 603.60635741124452, 998.79457181965154 603.23330253835934, 1002.2613711877982 623.79581100129735, 990.30090761267468 624.02156931285253))" ); boost_polygon_CW_Open p1_cw_open, p2_cw_open; boost::geometry::read_wkt(strPoly1, p1_cw_open); boost::geometry::read_wkt(strPoly2, p2_cw_open); boost::geometry::correct(p1_cw_open); // reverts order of points boost::geometry::correct(p2_cw_open); // reverts order of points std::vector&lt;boost_polygon_CW_Open&gt; output_cw; boost::geometry::intersection(p1_cw_open, p2_cw_open, output_cw); // correct: output_cw.front equals poly2 boost_polygon_CCW_Open p1_ccw_open, p2_ccw_open; boost::geometry::read_wkt(strPoly1, p1_ccw_open); boost::geometry::read_wkt(strPoly2, p2_ccw_open); boost::geometry::correct(p1_ccw_open); // no modification boost::geometry::correct(p2_ccw_open); // no modification std::vector&lt;boost_polygon_CCW_Open&gt; output_ccw; boost::geometry::intersection(p1_ccw_open, p2_ccw_open, output_ccw); // incorrect: output_cw is empty!!! return 0; } </pre> kle@… https://svn.boost.org/trac10/ticket/13072 https://svn.boost.org/trac10/ticket/13072 Report #13066: boost_1_64_0 build error Wed, 14 Jun 2017 01:43:45 GMT Wed, 14 Jun 2017 01:43:45 GMT <p> when i build boost with command: </p> <p> bootstrap.bat </p> <p> b2 --toolset=msvc-14.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization --with-atomic </p> <p> then, in my project i use #include "boost/date_time.hpp" </p> <p> i get the error...,the right file should be libboost_date_time-vc140-mt-1_64.lib </p> <p> isn't it? </p> <p> 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1104 无法打开文件“libboost_date_time-vc140-mt-1_60.lib” Tool E:\Design\Work\Tool\LINK 1 </p> anonymous https://svn.boost.org/trac10/ticket/13066 https://svn.boost.org/trac10/ticket/13066 Report #13065: boost_1_64_0 build error Wed, 14 Jun 2017 01:43:00 GMT Wed, 14 Jun 2017 01:43:00 GMT <p> when i build boost with command: </p> <p> bootstrap.bat </p> <p> b2 --toolset=msvc-14.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization --with-atomic </p> <p> then, in my project i use #include "boost/date_time.hpp" </p> <p> i get the error...,the right file should be libboost_date_time-vc140-mt-1_64.lib </p> <p> isn't it? </p> <p> 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1104 无法打开文件“libboost_date_time-vc140-mt-1_60.lib” Tool E:\Design\Work\Tool\LINK 1 </p> anonymous https://svn.boost.org/trac10/ticket/13065 https://svn.boost.org/trac10/ticket/13065 Report #13063: error C2668: 'boost::next' : ambiguous call to overloaded function Sat, 10 Jun 2017 02:12:42 GMT Mon, 31 Jul 2017 11:07:44 GMT <p> Hello, I want to build the ARtoolkit libary ARvrml from the source with Visual Studio 2013 on Windows 10. When compiling the project 'ARvrml' I get the above mentionel error message : error C2668: 'boost::next' : ambiguous call to overloaded function Since I compile a premade library, I don't know how to help the problem. I use ARToolkit 5.3.2, the code is accessible here: <a class="ext-link" href="https://github.com/artoolkit/artoolkit5"><span class="icon">​</span>https://github.com/artoolkit/artoolkit5</a> Furthermore I use the boost library provided by OpenVRML 0.16.6 (windows). </p> <p> Thanks for your help, Best Regards, Roxana </p> Roxana https://svn.boost.org/trac10/ticket/13063 https://svn.boost.org/trac10/ticket/13063 Report #13062: LNK2019 Unresolved External Symbol in VS2015 when using Boost python3 and numpy3 libraries on Windows Fri, 09 Jun 2017 10:03:35 GMT Fri, 09 Jun 2017 10:03:35 GMT <p> I am getting linker errors when trying to use the numpy3 library on Windows: </p> <pre class="wiki">test_boost_python.obj : error LNK2019: unresolved external symbol "class boost::python::numpy::dtype __cdecl boost::python::numpy::detail::get_float_dtype&lt;32&gt;(void)" (??$get_float_dtype@$0CA@@detail@numpy@python@boost@@YA?AVdtype@123@XZ) referenced in function "public: static class boost::python::numpy::dtype __cdecl boost::python::numpy::detail::builtin_dtype&lt;float,0&gt;::get(void)" (?get@?$builtin_dtype@M$0A@@detail@numpy@python@boost@@SA?AVdtype@345@XZ) </pre><p> Small test program to reproduce: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/python.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/python/numpy.hpp&gt;</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">bp</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="p">;</span> <span class="k">namespace</span> <span class="n">np</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="o">::</span><span class="n">numpy</span><span class="p">;</span> <span class="n">np</span><span class="o">::</span><span class="n">ndarray</span> <span class="n">test_make_zeros</span><span class="p">(</span><span class="kt">int</span> <span class="n">rows</span><span class="p">,</span> <span class="kt">int</span> <span class="n">cols</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">np</span><span class="o">::</span><span class="n">zeros</span><span class="p">(</span><span class="n">bp</span><span class="o">::</span><span class="n">make_tuple</span><span class="p">(</span><span class="n">rows</span><span class="p">,</span> <span class="n">cols</span><span class="p">),</span> <span class="n">np</span><span class="o">::</span><span class="n">dtype</span><span class="o">::</span><span class="n">get_builtin</span><span class="o">&lt;</span><span class="kt">float</span><span class="o">&gt;</span><span class="p">());</span> <span class="p">}</span> <span class="n">BOOST_PYTHON_MODULE</span><span class="p">(</span><span class="n">test_boost_numpy</span><span class="p">)</span> <span class="p">{</span> <span class="n">np</span><span class="o">::</span><span class="n">initialize</span><span class="p">();</span> <span class="n">bp</span><span class="o">::</span><span class="n">def</span><span class="p">(</span><span class="s">&quot;test_make_zeros&quot;</span><span class="p">,</span> <span class="n">test_make_zeros</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> I have downloaded and built Boost 1.64 on Windows by using the following command: </p> <pre class="wiki">b2 --build-type=complete address-model=64 toolset=msvc stage </pre><p> I added a user-config.jam file in my home directory to tell Boost where to find Python 3: </p> <pre class="wiki">using python : 3.6 : c:\\anaconda3\\python ; </pre><p> I am using the following CMakeLists.txt file: </p> <pre class="wiki">cmake_minimum_required(VERSION 3.8) project(test_boost_python) set(BOOST_ROOT "C:/Boost-1.64") SET(Boost_ADDITIONAL_VERSIONS 1.64) find_package(PythonLibs 3.6 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS}) find_package(Boost REQUIRED COMPONENTS python3 numpy3) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) add_library(test_boost_python SHARED test_boost_python.cpp) set_target_properties(test_boost_python PROPERTIES PREFIX "" SUFFIX ".pyd") set_target_properties(test_boost_python PROPERTIES DEFINE_SYMBOL "BOOST_ALL_NO_LIB") target_link_libraries(test_boost_python ${PYTHON_LIBRARIES} ${Boost_LIBRARIES}) </pre><p> My boost::python library is given the name boost_python3-vc140-mt-1_64.lib and boost::numpy ends up as boost_numpy3-vc140-mt-1_64.lib when linking against Python 3.6. </p> <p> I had to turn on BOOST_ALL_NO_LIB. If not, the compiler looks for boost_python-vc140-mt-1_64.lib boost_numpy-vc140-mt-1_64.lib (which is under the wrong name, with a missing number 3 after the library names; possibly also a bug on Windows?) </p> <p> See also <a class="ext-link" href="https://stackoverflow.com/questions/44072440/lnk2019-unresolved-external-symbol-in-vs2015-when-using-boost-python3-and-numpy3"><span class="icon">​</span>https://stackoverflow.com/questions/44072440/lnk2019-unresolved-external-symbol-in-vs2015-when-using-boost-python3-and-numpy3</a> for more information </p> oystein@… https://svn.boost.org/trac10/ticket/13062 https://svn.boost.org/trac10/ticket/13062 Report #13059: Getting attached error when trying to use property_tree header Thu, 08 Jun 2017 09:59:03 GMT Fri, 09 Jun 2017 06:31:12 GMT <p> /usr/local/include/boost/mpl/vector/aux_/at.hpp: At global scope: /usr/local/include/boost/mpl/vector/aux_/at.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:34: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/at.hpp:35: error: ‘template&lt;class _Tp, class _Alloc&gt; class std::vector’ used without template parameters /usr/local/include/boost/mpl/vector/aux_/at.hpp:39: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_at_impl’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:41: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/at.hpp:42: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/at.hpp:42: error: expected class-name before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/at.hpp:48: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/at.hpp:52: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/at.hpp:52: error: expected a constant of type ‘int’, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:18, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/front.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/front.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/front.hpp:32: error: expected a constant of type ‘int’, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:19, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:32: error: type/value mismatch at argument 2 in template parameter list for ‘template&lt;class T, class Base, int at_front&gt; struct boost::mpl::v_item’ /usr/local/include/boost/mpl/vector/aux_/push_front.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:20, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;class Base, int at_front&gt; struct boost::mpl::v_mask’ /usr/local/include/boost/mpl/vector/aux_/pop_front.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:21, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:32: error: type/value mismatch at argument 2 in template parameter list for ‘template&lt;class T, class Base, int at_front&gt; struct boost::mpl::v_item’ /usr/local/include/boost/mpl/vector/aux_/push_back.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:22, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;class Base, int at_front&gt; struct boost::mpl::v_mask’ /usr/local/include/boost/mpl/vector/aux_/pop_back.hpp:32: error: expected a type, got ‘vector’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:23, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/back.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected template-argument before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected ‘&gt;’ before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: ‘&lt;expression error&gt;::type’ has not been declared /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected template-argument before ‘value’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:34: error: expected ‘&gt;’ before ‘value’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/back.hpp:35: error: template argument 2 is invalid /usr/local/include/boost/mpl/vector/aux_/back.hpp:36: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/back.hpp:36: error: expected class-name before ‘{’ token In file included from /usr/local/include/boost/mpl/vector/aux_/vector0.hpp:22, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/aux_/clear.hpp:18, from /usr/local/include/boost/mpl/vector/vector0.hpp:24, from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:33: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:40: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_at’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:40: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:42: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:62: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:65: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:71: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:74: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:80: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:84: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:93: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: template argument 1 is invalid /usr/local/include/boost/mpl/vector/aux_/iterator.hpp:97: error: template argument 2 is invalid In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:24, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/clear.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:25, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:31: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:32: error: ‘template&lt;class _Tp, class _Alloc&gt; class std::vector’ used without template parameters /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:32: error: expected ‘{’ before ‘size’ /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:33: error: invalid type in declaration before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:34: error: ISO C++ forbids in-class initialization of non-const static member ‘size’ /usr/local/include/boost/mpl/vector/aux_/O1_size.hpp:34: error: template declaration of ‘int boost::mpl::size’ In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:27, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/empty.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: expected template-argument before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:32: error: expected ‘&gt;’ before ‘::’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:34: error: wrong number of template arguments (1, should be 2) /usr/local/include/boost/type_traits/is_same.hpp:29: error: provided for ‘template&lt;class T, class U&gt; struct boost::is_same’ /usr/local/include/boost/mpl/vector/aux_/empty.hpp:35: error: expected ‘::’ before ‘{’ token /usr/local/include/boost/mpl/vector/aux_/empty.hpp:35: error: expected class-name before ‘{’ token In file included from /usr/local/include/boost/mpl/vector/vector0.hpp:31, </p> <blockquote> <p> from /usr/local/include/boost/mpl/vector/vector10.hpp:18, from /usr/local/include/boost/mpl/vector/vector20.hpp:18, from /usr/local/include/boost/mpl/vector.hpp:36, from HTTP_Request.cpp:13: </p> </blockquote> <p> /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:30: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:32: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:32: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:39: error: invalid use of template-name ‘std::vector’ without an argument list /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;int &lt;anonymous&gt;, long int n_&gt; struct boost::mpl::v_iter’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: expected a constant of type ‘int’, got ‘vector’ /usr/local/include/boost/mpl/vector/aux_/begin_end.hpp:41: error: template argument 2 is invalid </p> yogav2009@… https://svn.boost.org/trac10/ticket/13059 https://svn.boost.org/trac10/ticket/13059 Report #13056: boost\asio\impl\read_until.hpp Tue, 06 Jun 2017 02:31:23 GMT Tue, 06 Jun 2017 02:31:23 GMT <blockquote> <p> <em> Start a new asynchronous read operation to obtain more data. stream_.async_read_some(streambuf_.prepare(bytes_to_read), </em></p> <blockquote> <p> BOOST_ASIO_MOVE_CAST(read_until_delim_string_op)(*this)); </p> </blockquote> <p> return; default: <em>why the default label is here? streambuf_.commit(bytes_transferred); </em></p> <table class="wiki"> <tr>if (ec <td> bytes_transferred == 0) </td></tr></table> <blockquote> <p> break; </p> </blockquote> </blockquote> xjzhang1979@… https://svn.boost.org/trac10/ticket/13056 https://svn.boost.org/trac10/ticket/13056 Report #13055: Couple doc typos Sun, 04 Jun 2017 20:24:48 GMT Wed, 30 Aug 2017 09:29:54 GMT <p> <a href="http://www.boost.org/doc/libs/1_64_0/libs/graph/doc/VertexListGraph.html">http://www.boost.org/doc/libs/1_64_0/libs/graph/doc/VertexListGraph.html</a> </p> <p> Under description of vertices(g), "graphg" should be "graph g". </p> <p> <a href="http://www.boost.org/doc/libs/1_64_0/libs/disjoint_sets/disjoint_sets.html">http://www.boost.org/doc/libs/1_64_0/libs/disjoint_sets/disjoint_sets.html</a> </p> <p> First paragraph says "member of of the set". </p> jonroy7@… https://svn.boost.org/trac10/ticket/13055 https://svn.boost.org/trac10/ticket/13055 Report #13054: Boost Process - rdbuf() in basic_ipstream/basic_opstream - implementation bug Fri, 02 Jun 2017 21:22:01 GMT Mon, 18 Sep 2017 11:32:18 GMT <p> boost/process/pipe.hpp : </p> <blockquote> <p> <em>/Get access to the underlying stream_buf basic_pipebuf&lt;CharT, Traits&gt;* rdbuf() const {return _buf;}; </em></p> </blockquote> <p> my code: </p> <blockquote> <p> boost::process::opstream stream; </p> </blockquote> <blockquote> <p> stream.rdbuf(); </p> </blockquote> <p> compiler: </p> <p> /home/myname/boost/include/boost/process/pipe.hpp:341:57: error: cannot convert ‘const boost::process::basic_pipebuf&lt;char&gt;’ to ‘boost::process::basic_pipebuf&lt;char&gt;*’ in return </p> <blockquote> <p> basic_pipebuf&lt;CharT, Traits&gt;* rdbuf() const {return _buf;}; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> radoslaw.chm@… https://svn.boost.org/trac10/ticket/13054 https://svn.boost.org/trac10/ticket/13054 Report #13053: fail to build boost.build engine Thu, 01 Jun 2017 15:41:25 GMT Sun, 30 Jul 2017 18:21:15 GMT <p> ### ### Using 'vc14' toolset. ### </p> <p> E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine&gt;if exist bootstrap rd /S /Q bootstrap </p> <p> E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine&gt;md bootstrap </p> <p> E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine&gt;cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c </p> <p> E:\VS2013\BOOST\boost_1_64_0\tools\build\src\engine&gt;exit /b 9009 </p> 854976175@… https://svn.boost.org/trac10/ticket/13053 https://svn.boost.org/trac10/ticket/13053 Report #13052: iostreams visibility=hidden for non-Windows platforms Thu, 01 Jun 2017 12:07:49 GMT Thu, 24 Aug 2017 18:03:32 GMT <p> For the Mac, I am compiling the Boost libraries and my code using visibility=hidden. My code cannot find "boost::iostreams::zlib::default_compression". This is defined in iostreams/filter/zlib.hpp as Code: <em>BOOST_IOSTREAMS_DECL extern const int default_compression;</em> </p> <p> The only place that BOOST_IOSTREAMS_DECL is defined is iostreams/detail/config/dyn_link.hpp. That file sets the macro to either Windows-specific settings (<em>declspec(dllexport)</em>), or leaves it blank. So the Boost iostreams library will have the wrong visibility settings. </p> <p> This is unlike other places in the Boost code, where the right visibility settings are obtained by defining the library DECL macro as BOOST_SYMBOL_EXPORT. (Take a look at filesystem/config.hpp as an example of how it is done for most of the other libraries.) </p> Mark M <mememory359@…> https://svn.boost.org/trac10/ticket/13052 https://svn.boost.org/trac10/ticket/13052 Report #13049: nvcc CT Error: Boost 1.64.0 & CUDA 8.0 Tue, 30 May 2017 11:58:21 GMT Thu, 15 Jun 2017 12:06:03 GMT <p> Compiling a host program which uses boost odeint integrate with nvcc from CUDA8.0 is not possible. The issue has been reported to Nvidia and will be fixed in CUDA 9. </p> <h2 class="section" id="Error">Error</h2> <p> nvcc is crashing with an internal cudafe error </p> <pre class="wiki">/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp(66): internal error: assertion failed at: "/dvs/p4/build/sw/rel/gpu_drv/r361/r361_00/drivers/compiler/edg/EDG_4.10/src/types.c", line 7537 1 catastrophic error detected in the compilation of "/tmp/tmpxft_0000369f_00000000-9_main.cpp1.ii". </pre><h2 class="section" id="Example">Example</h2> <pre class="wiki">#include &lt;boost/array.hpp&gt; // this include is needed to compile with cuda 7.5 // boost bug: https://svn.boost.org/trac/boost/ticket/12516 // see fix https://github.com/boostorg/serialization/commit/1d86261581230e2dc5d617a9b16287d326f3e229 #include &lt;boost/serialization/array_wrapper.hpp&gt; #include &lt;boost/numeric/odeint/integrate/integrate.hpp&gt; #include &lt;iostream&gt; typedef double float_64; namespace foo{ struct Probability { Probability() {} template&lt;typename T_State&gt; void operator()(const T_State &amp;, T_State &amp;dpdtheta, const float_64 theta) const { const float_64 theta2 = theta*theta; dpdtheta[0] = theta2; } }; } int main() { namespace odeint = boost::numeric::odeint; typedef boost::array&lt;float_64, 1&gt; state_type; state_type integral_result = {0.0}; const float_64 lowerLimit = 0.0; const float_64 upperLimit = 0.1; const float_64 stepwidth = (2000 - 10) / float_64(1000.0); foo::Probability integrand; odeint::integrate(integrand, integral_result, lowerLimit, upperLimit, stepwidth); std::cout&lt;&lt;integral_result[0]&lt;&lt;std::endl; return 0; } </pre><h3 class="section" id="Compile">Compile</h3> <pre class="wiki">nvcc -std=c++11 main.cu -I$BOOST_ROOT/boost_1_64_0/include -L$BOOST_ROOT/boost_1_64_0/lib </pre><p> I will provide a pull request in the next hours adding <code>-DBOOST_NO_CXX11_NOEXCEPT</code> to boost/config for nvcc CUDA 8.0 </p> r.widera@… https://svn.boost.org/trac10/ticket/13049 https://svn.boost.org/trac10/ticket/13049 Report #13048: Static libraries and visibility hidden Fri, 26 May 2017 18:21:46 GMT Tue, 17 Jul 2018 18:42:58 GMT <p> I've been told that I can compile the Boost libraries with "-fvisibility=hidden". But I think it will work only for shared libraries, and I am building static libraries. </p> <p> If I'm wrong, please point out what I am missing. I will use the Filesystem library as an example, but I think this applies to Boost in general. </p> <p> There are a number of functions that need to have default visibility to allow the libraries to link with other code without error. These functions have the BOOST_FILESYSTEM_DECL macro in their declaration. I am using Xcode. The config/compiler/clang.hpp file has defined BOOST_SYMBOL_EXPORT with the attribute-visibility-default setting. So I look for code that sets BOOST_FILESYSTEM_DECL to be BOOST_SYMBOL_EXPORT. </p> <p> When I look at the filesystem/config.hpp file, BOOST_FILESYSTEM_DECL is blank, unless (BOOST_ALL_DYN_LINK or BOOST_FILESYSTEM_DYN_LINK) and BOOST_FILESYSTEM_SOURCE are set. But with static libraries, I don't want those settings, right? </p> <p> There is another preprocessor macro called BOOST_SYMBOL_VISIBLE, but it is only used one place in filesystem (for the filesystem_error class). </p> <p> Any help in the right direction would be appreciated. Or if this is an oversight, that would be helpful to know. </p> Mark M <mememory359@…> https://svn.boost.org/trac10/ticket/13048 https://svn.boost.org/trac10/ticket/13048 Report #13047: Program crash after calling boost::filesystem::exists Fri, 26 May 2017 11:22:12 GMT Mon, 24 Jul 2017 17:28:29 GMT <p> Everything is in the title </p> aminemayouf@… https://svn.boost.org/trac10/ticket/13047 https://svn.boost.org/trac10/ticket/13047 Report #13046: Program crash after calling boost::filesystem::exists Fri, 26 May 2017 11:21:58 GMT Sat, 17 Jun 2017 18:21:20 GMT <p> Everything is in the title </p> aminemayouf@… https://svn.boost.org/trac10/ticket/13046 https://svn.boost.org/trac10/ticket/13046 Report #13044: Failed to build Boost.Build engine. Tue, 23 May 2017 10:34:51 GMT Sun, 30 Jul 2017 18:20:46 GMT <p> Hello I just run bootstrap.bat as recommended in isntall guides and it does not work. I get: </p> <pre class="wiki">Building Boost.Build engine Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. You can try to obtain a prebuilt binary from http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941 Also, you can file an issue at http://svn.boost.org Please attach bootstrap.log in that case. </pre><p> Basically it can not find ctype.h. It is frustrating as I know where it is: "c:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\ctype.h" </p> <p> But I do not know how to provide it to fucking boost_1_64_0\bootstrap.bat. </p> <p> I could modified makefile, if only there would be some makefile but there is not... You use some system that you claim is fully automatic and it does not work with my most standard Visual Studio 2015 :(((( </p> <p> It seems other people has same problems: <a class="ext-link" href="https://stackoverflow.com/questions/36136978/unable-to-build-boost-1-60-with-visual-studio-2015-pro"><span class="icon">​</span>https://stackoverflow.com/questions/36136978/unable-to-build-boost-1-60-with-visual-studio-2015-pro</a> Could you please fix it???? </p> vit bernatik <bernatikv@…> https://svn.boost.org/trac10/ticket/13044 https://svn.boost.org/trac10/ticket/13044 Report #13043: Serialized MPI doesn't properly handle cancellation of a request Mon, 22 May 2017 17:12:00 GMT Mon, 05 Jun 2017 13:24:20 GMT <p> Hi - Think I've found a bug - If you try version A with mpiexec -n 2 then you get a clean exit - if you try version B, it hangs indefinitely. request::handle_serialized_irecv isn't handling cancellation. This is bothersome when you have to MPI_comm_disconnect from things. I can workaround by wrapping the transmission but that's not optimal. Please advise if you need more info, I'm using MSMPI and MSVC. Had previously posted this on Stack Overflow who thought it was a bug. Thanks for the library and look forward to hearing from you all soon. </p> <pre class="wiki">#include "boost/mpi.hpp" #include "mpi.h" #include &lt;list&gt; #include "boost/serialization/list.hpp" int main() { MPI_Init(NULL, NULL); MPI_Comm regional; MPI_Comm_dup(MPI_COMM_WORLD, &amp;regional); boost::mpi::communicator comm = boost::mpi::communicator(regional, boost::mpi::comm_attach); if (comm.rank() == 1) { //VERSION A: std::list&lt;int&gt; q; boost::mpi::request z = comm.irecv&lt;std::list&lt;int&gt;&gt;(1, 0, q); z.cancel(); z.wait(); //VERSION B: // int q; // boost::mpi::request z = comm.irecv&lt;int&gt;(1, 0, q); // z.cancel(); // z.wait(); } MPI_Comm_disconnect(&amp;regional); MPI_Finalize(); return 0; } </pre> Mike Willaims <michael.williams@…> https://svn.boost.org/trac10/ticket/13043 https://svn.boost.org/trac10/ticket/13043 Report #13042: Build errors with stdlib=sun-stlport on Linux Mon, 22 May 2017 14:59:07 GMT Wed, 21 Jun 2017 11:04:51 GMT <p> The build on Oracle Linux fails with stdlib=sun-stlport due to a default option incompatibility: </p> <pre class="wiki">$ b2 stdlib=sun-stlport ...failed sun.compile.c++ bin.v2/libs/python/build/sun/release/link-static/stdlib-sun-stlport/threading-multi/numpy/dtype.o... sun.compile.c++ bin.v2/libs/python/build/sun/release/link-static/stdlib-sun-stlport/threading-multi/numpy/matrix.o CC: -library=stlport4 cannot be used with -std=c++03. To use this library you need to switch to -std=sun03 </pre><p> The -library=stlport4 option requires -compat=5 (or -std=sun03 which is the same thing), but the default on Linux is -compat=g (GNU ABI, equivalent to -std=c++03). So -library=stlport4 is not compatible with the default on Linux. </p> <p> The fix is to always specify -compat=5 together with -library=stlport4; another option would be to specify -std=sun03 instead as the error message suggests, but older compilers don't recognize the latter option, so -compat=5 is safer to use. </p> <p> A similar problem could arise for the apache (stdcxx4) library that is also only supported with -compat=5, so I suggest to make similar changes for it as well. This is not strictly necessary as currently the apache library is only supported on Solaris where -compat=5 is the default, but making this additional change makes the build more future-proof. </p> maxim.kartashev@… https://svn.boost.org/trac10/ticket/13042 https://svn.boost.org/trac10/ticket/13042 Report #13039: geometry::difference with multi_linestring and multi_polygon needs geometry.hpp to compile with MinGW/LLVM Fri, 19 May 2017 17:30:15 GMT Mon, 22 May 2017 09:33:32 GMT <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">multi_polygon</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">polygon</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">d2</span><span class="p">::</span><span class="n">point_xy</span><span class="o">&lt;</span><span class="nb">float</span><span class="o">&gt;</span> <span class="p">,</span> <span class="n">false</span><span class="p">,</span> <span class="n">false</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">myMultiPolygon</span><span class="p">;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">multi_linestring</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">linestring</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">d2</span><span class="p">::</span><span class="n">point_xy</span><span class="o">&lt;</span><span class="nb">float</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">myMultiLineString</span><span class="p">;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">multi_linestring</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">linestring</span><span class="o">&lt;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">model</span><span class="p">::</span><span class="n">d2</span><span class="p">::</span><span class="n">point_xy</span><span class="o">&lt;</span><span class="nb">float</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">myMultiLineStringOut</span><span class="p">;</span> <span class="n">boost</span><span class="p">::</span><span class="n">geometry</span><span class="p">::</span><span class="n">difference</span><span class="p">(</span><span class="n">myMultiLineString</span><span class="p">,</span> <span class="n">myMultiPolygon</span><span class="p">,</span> <span class="n">myMultiLineStringOut</span><span class="p">);</span> </pre></div></div></div><p> On MinGW 5.3.0 with <a class="missing wiki">QtCreator</a>, it ouput: boost\boost\geometry\algorithms\detail\overlay\intersection_insert.hpp:403: error: no matching function for call to 'assertion_failed(mpl_::failed<strong></strong><strong></strong><strong></strong> (boost::geometry::dispatch::intersection_insert&lt;boost::geometry::model::multi_linestring&lt;boost::geometry::model::linestring&lt;boost::geometry::model::d2::point_xy&lt;float&gt; &gt; &gt;, boost::geometry::model::multi_polygon&lt;boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;float&gt;, false, false&gt; &gt;, boost::geometry::model::linestring&lt;boost::geometry::model::d2::point_xy&lt;float&gt; &gt;, (boost::geometry::overlay_type)2u, false, false, false, boost::geometry::multi_linestring_tag, boost::geometry::multi_polygon_tag, boost::geometry::linestring_tag, false, true, false&gt;::NOT_OR_NOT_YET_IMPLEMENTED_FOR_THIS_GEOMETRY_TYPES_OR_ORIENTATIONS::<strong></strong><strong></strong><strong></strong>)(mpl_::assert_::types&lt;boost::geometry::model::multi_linestring&lt;boost::geometry::model::linestring&lt;boost::geometry::model::d2::point_xy&lt;float&gt; &gt; &gt;, boost::geometry::model::multi_polygon&lt;boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;float&gt;, false, false&gt; &gt;, boost::geometry::model::linestring&lt;boost::geometry::model::d2::point_xy&lt;float&gt; &gt;, mpl_::na&gt;))' </p> <blockquote> <p> BOOST_MPL_ASSERT_MSG <sup> </sup></p> </blockquote> <p> It works on Visual Studio 2015. </p> <p> And it's the same with a line_string instead of the multi_linestring. </p> bruno.deligny@… https://svn.boost.org/trac10/ticket/13039 https://svn.boost.org/trac10/ticket/13039 Report #13032: qvm/mat.hpp fails to compile when assign/list_of.hpp has been included first Mon, 15 May 2017 08:36:16 GMT Fri, 01 Sep 2017 23:11:13 GMT <p> Following program: </p> <pre class="wiki">#include "boost/assign/list_of.hpp" #include "boost/geometry/strategies/transform/matrix_transformers.hpp" </pre><p> fails to compile with g++-6.1.0, giving the error </p> <pre class="wiki">/home/krausemi/xxxx-boost/1.64/include/boost/qvm/mat.hpp: In member function ‘boost::qvm::mat&lt;T, Rows, Cols&gt;::operator R() const’: /home/krausemi/xxxx-boost/1.64/include/boost/qvm/mat.hpp:28:23: error: expected primary-expression before ‘(’ token assign(r,*this); ^ </pre> Michael Krause <m.krause@…> https://svn.boost.org/trac10/ticket/13032 https://svn.boost.org/trac10/ticket/13032 Report #13031: Un-deprecated boost::optional::reset() Mon, 15 May 2017 08:06:51 GMT Mon, 15 May 2017 08:06:51 GMT <p> In the discussion on <a class="ext-link" href="https://lists.boost.org/Archives/boost/2016/03/228070.php"><span class="icon">​</span>https://lists.boost.org/Archives/boost/2016/03/228070.php</a> it was mentioned that if C++1z adopted a std::optional::reset() method, it could be un-deprecated in boost::optional. Now that it looks reasonably certain to be in C++17 (the no-argument <a class="ext-link" href="http://en.cppreference.com/w/cpp/utility/optional/reset"><span class="icon">​</span>form</a>), can it be un-deprecated in Boost? </p> bmerry@… https://svn.boost.org/trac10/ticket/13031 https://svn.boost.org/trac10/ticket/13031 Report #13030: Make address class and related classes to literal type Sun, 14 May 2017 13:06:04 GMT Sun, 14 May 2017 13:06:04 GMT <p> ITNOA </p> <p> Hi, I think is good idea to have address class and related classes such as address_v4 and v6 make literal type for performance improvement and it is appropriate when I have constant IP address. </p> soorosh_abi@… https://svn.boost.org/trac10/ticket/13030 https://svn.boost.org/trac10/ticket/13030 Report #13029: Unable to build with VS2015 Sat, 13 May 2017 07:58:50 GMT Sun, 30 Jul 2017 18:18:14 GMT <p> I am unable to build in windows 10 with VS2015. </p> <p> bootstrap.log follows </p> Alexandre Gomes <alexandre.e.gomes@…> https://svn.boost.org/trac10/ticket/13029 https://svn.boost.org/trac10/ticket/13029 Report #13028: boost::filesystem::canonical(const path& p, system::error_code& ec) throws exception Fri, 12 May 2017 20:18:22 GMT Fri, 14 Jul 2017 19:12:59 GMT <p> Per <a href="http://www.boost.org/doc/libs/1_64_0/libs/filesystem/doc/reference.html#Error-reporting">the docs</a>, this function should report filesystem errors through the error_code. In the case of permission issues, this contract is violated. </p> <p> This is best explained with the test case: </p> <pre class="wiki">#include &lt;boost/detail/lightweight_test_report.hpp&gt; #include &lt;boost/filesystem.hpp&gt; namespace fs = boost::filesystem; int test_main(int, char*[]) { // Ensure that we do not have read permissions on pwd fs::path tmp_path = fs::temp_directory_path(); fs::path unique_path = fs::unique_path(); fs::path dir_path = tmp_path / unique_path; fs::create_directory(dir_path); fs::current_path(dir_path); fs::permissions(dir_path, fs::no_perms); // Try to get a canonical path with the error_code API. This should return an // error through the error_code, but instead throws an exception (because // canonical(const path&amp; p, system::error_code&amp; ec) calls current_path() // without error_code) boost::system::error_code e; fs::canonical("foo", e); BOOST_TEST(e.value() != 0); return ::boost::report_errors(); } </pre><p> Test output: </p> <pre class="wiki">bin/bug Clang version 8.0.0 (clang-800.0.38), __GXX_EXPERIMENTAL_CXX0X__ not defined libc++ version 3700 Mac OS Boost version 1.65.0 Command line: bin/bug ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ****************************** std::exception ***************************** boost::filesystem::current_path: Permission denied *************************************************************************** </pre><p> This unexpected exception causes a crash in osquery. See <a class="ext-link" href="https://github.com/facebook/osquery/issues/3279"><span class="icon">​</span>https://github.com/facebook/osquery/issues/3279</a> </p> Zach Wasserman <zachwass2000@…> https://svn.boost.org/trac10/ticket/13028 https://svn.boost.org/trac10/ticket/13028 Report #13025: Segmentation fault in difference(multipoint, multilinestring) Thu, 11 May 2017 13:39:33 GMT Sun, 02 Jul 2017 18:06:15 GMT <p> The following piece of code throws a segmentation fault. Produced on Ubuntu 14.04.3 with gcc 4.8.4 </p> <pre class="wiki">#include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; namespace bg = boost::geometry; int main() { typedef bg::model::d2::point_xy&lt;double&gt; point; bg::model::multi_linestring&lt;bg::model::linestring&lt;point&gt; &gt; mls2; bg::read_wkt("MULTILINESTRING((0 1, 0 3))", mls2); bg::model::multi_point&lt;point&gt; mpt2; bg::read_wkt("MULTIPOINT(0 4)", mpt2); bg::difference(mpt2, mls2, mpt2); return 0; } </pre> Vissarion Fisikopoulos <fisikop@…> https://svn.boost.org/trac10/ticket/13025 https://svn.boost.org/trac10/ticket/13025 Report #13023: Boost_python3 prebuild binaries are not built correctly. Wed, 10 May 2017 22:53:33 GMT Sun, 30 Jul 2017 18:17:29 GMT <p> See for more details github.com/sergey-shandar/getboost/issues/33 </p> <p> PS. It's really really hard to report a bug if you are not member with all of these "Submission rejected as potential spam (External links in post found)"... Should you switch to <a class="missing wiki">GitHub</a>? </p> sergey.shandar@… https://svn.boost.org/trac10/ticket/13023 https://svn.boost.org/trac10/ticket/13023 Report #13022: Boost_python2 prebuild binaries are not built correctly. Wed, 10 May 2017 22:46:16 GMT Sun, 30 Jul 2017 18:17:06 GMT <p> <a class="ext-link" href="https://sourceforge.net/projects/boost/files/boost-binaries/1.64.0/"><span class="icon">​</span>https://sourceforge.net/projects/boost/files/boost-binaries/1.64.0/</a> contains an incorrect Boost Python 3 library. </p> <p> See <a class="ext-link" href="https://github.com/sergey-shandar/getboost/issues/33"><span class="icon">​</span>https://github.com/sergey-shandar/getboost/issues/33</a> for more details. </p> anonymous https://svn.boost.org/trac10/ticket/13022 https://svn.boost.org/trac10/ticket/13022 Report #13021: Odeint: Eigen upgrade to v 3.3.3 breaks compatibility Wed, 10 May 2017 18:25:08 GMT Wed, 10 May 2017 19:00:42 GMT <p> In order to combine odeint with the Eigen library I use, among other things, #include "boost/numeric/odeint/external/eigen/eigen.hpp" </p> <p> This used to work perfectly with Eigen version 3.2 , but fails after an upgrade of the Eigen libraries to version 3.3.3. The code does not compile, generating a large amount of error messages, beginning with: </p> <pre class="wiki">In file included from /usr/include/boost/numeric/odeint/external/eigen/eigen.hpp:22:0, from minimal.cpp:3: /usr/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp:35:37: error: ‘scalar_add_op’ in namespace ‘Eigen::internal’ does not name a template type (...) </pre><p> A minimal reproducible example is: </p> <pre class="wiki">#include &lt;Eigen/Dense&gt; #include &lt;boost/numeric/odeint.hpp&gt; #include "boost/numeric/odeint/external/eigen/eigen.hpp" int main() {} </pre><p> This code does not compile with Eigen 3.3.3. The only functioning workaround I found was downgrading to Eigen 3.3.2. </p> <p> I noticed the problem while using Boost version 1.58.0, ubuntu 16.04, g++ version 5.4.0. Upgraded to Boost version 1.64.0; to no avail. The error messages differ after the Boost upgrade but the problem persists. </p> speku.gmt@… https://svn.boost.org/trac10/ticket/13021 https://svn.boost.org/trac10/ticket/13021 Report #13017: boost::interprocess::map compilation problem (overloading) Mon, 08 May 2017 13:32:59 GMT Sun, 30 Jul 2017 18:16:33 GMT <p> This code compiles with libboost 1.58, but doesn't compile with 1.62 or 1.63. I tried with g++-6.3 and g++-5.4, both with same result. </p> <pre class="wiki">#include &lt;cassert&gt; #include &lt;cstring&gt; #include &lt;boost/interprocess/managed_shared_memory.hpp&gt; #include &lt;boost/interprocess/containers/map.hpp&gt; #include &lt;boost/interprocess/containers/vector.hpp&gt; #include &lt;boost/interprocess/containers/string.hpp&gt; #include &lt;boost/interprocess/containers/set.hpp&gt; #include &lt;boost/interprocess/allocators/allocator.hpp&gt; #include &lt;boost/unordered_map.hpp&gt; namespace ipc = boost::interprocess; typedef ipc::managed_shared_memory::segment_manager segment_manager_t; typedef ipc::allocator&lt;void, segment_manager_t&gt; void_allocator_t; typedef ipc::allocator&lt;char, segment_manager_t&gt; char_allocator_t; typedef ipc::basic_string&lt;char, std::char_traits&lt;char&gt;, char_allocator_t&gt; shared_string_t; typedef ipc::allocator&lt;shared_string_t, segment_manager_t&gt; string_allocator; typedef std::pair&lt;shared_string_t, shared_string_t&gt; shared_sport_event_pair_t; typedef ipc::set&lt;const shared_string_t, std::less&lt;shared_string_t&gt;, string_allocator&gt; shared_bms_set_t; typedef std::pair&lt;const shared_sport_event_pair_t, shared_bms_set_t&gt; event_index_map_t; typedef ipc::allocator&lt;event_index_map_t, segment_manager_t&gt; event_index_allocator_t; typedef ipc::map&lt;shared_sport_event_pair_t, shared_bms_set_t, std::less&lt;shared_sport_event_pair_t&gt;, event_index_allocator_t&gt; shared_event_index_t; struct SharedState { SharedState(const void_allocator_t &amp;alloc) : m_EventIndex(std::less&lt;shared_sport_event_pair_t&gt;(), alloc) { } shared_event_index_t m_EventIndex; }; </pre> gjcarneiro@… https://svn.boost.org/trac10/ticket/13017 https://svn.boost.org/trac10/ticket/13017 Report #13016: small buffer optimization for bool vector or dynamic_bitset Mon, 08 May 2017 12:26:58 GMT Thu, 11 May 2017 12:33:46 GMT <p> The small_vector addition (<a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9165" title="#9165: Feature Requests: small buffer optimization for vector or new container (closed: fixed)">#9165</a>) is great. However using this with Booleans gives space overhead. The std has anticipated this with the vector&lt;bool&gt; concept though not everybody is enthusiastic about this optimization. Unfortunately this one always allocates its data on the heap. What I need is the optimization of vector&lt;bool&gt; (or a dynamic_bitset) with the small buffer optimization. </p> <p> The use case is that I keep bool (or a bit postion) for every connected pin which goes from 0 to max pins. 99% of the use cases the maximum pins are less than 10 though I do not want to set a maximum on it beforehand (so e.g. use of std::bitset with 32 values would rule this out, since that one is topped to 32). </p> <p> see also <a class="ext-link" href="http://stackoverflow.com/questions/7760678/is-there-a-bitset-class-thats-sized-at-instantiation-time-but-avoids-boostdy"><span class="icon">​</span>http://stackoverflow.com/questions/7760678/is-there-a-bitset-class-thats-sized-at-instantiation-time-but-avoids-boostdy</a> </p> gast128@… https://svn.boost.org/trac10/ticket/13016 https://svn.boost.org/trac10/ticket/13016 Report #13015: Several "declaration hides member" warnings in Boost random Mon, 08 May 2017 10:00:07 GMT Mon, 08 May 2017 10:00:07 GMT <p> In our nightly builds with the Intel Compiler 2016.3 we're getting multiple warnings in the style of: </p> <pre class="wiki">In file included from /build/MAIN/Third_Party_Libraries/Boost/include/boost/random/ranlux.hpp(19), from /build/MAIN/Third_Party_Libraries/Boost/include/boost/random.hpp(44), from /build/MAIN/Source_Code/Test/CSTlibTester/Datagram.cpp(4): /build/MAIN/Third_Party_Libraries/Boost/include/boost/random/subtract_with_carry.hpp(247): warning #3280: declaration hides member "boost::random::subtract_with_carry_engine&lt;IntType, w, s, r&gt;::x" (declared at line 303) friend bool operator==(const subtract_with_carry_engine&amp; x, const subtract_with_carry_engine&amp; y) </pre><p> The warnings are pretty easy to fix, I'll attach a patch relative to Boost 1.60.0 (the version we're using) </p> thimo.neubauer@… https://svn.boost.org/trac10/ticket/13015 https://svn.boost.org/trac10/ticket/13015 Report #13014: buffer returns invalid geometries when used with asymmetric distances on the same side Mon, 08 May 2017 09:20:46 GMT Mon, 08 May 2017 09:20:46 GMT <p> Using buffer with distances (2/-1) or (-1/2) should generate a polygon that lies beside the original linestring. </p> <p> But, since the direction is only determined for both sides (in buffer_inserter, checking negative() for the distance strategy, which returns only true if both sides are negative), the inner of both sides is calculated wrong. </p> <p> Maybe buffer_inserter could check nageative() for each side separately, and only reverse one side before stitching both sides together? </p> andre.meyer@… https://svn.boost.org/trac10/ticket/13014 https://svn.boost.org/trac10/ticket/13014 Report #13013: Boost upgradeable lock - simple swap include error. Mon, 08 May 2017 01:18:08 GMT Mon, 08 May 2017 01:18:08 GMT <p> This worked fine in 1.55 (Ubuntu 14), but 1.62 in Ubuntu 17 has issues: </p> <p> Ubuntu 17 (libboost-dev-all 1.62.0.1) </p> <p> /usr/include/boost/interprocess/sync/upgradable_lock.hpp:297:8: error: ‘simple_swap’ was not declared in this scope </p> <blockquote> <p> (simple_swap)(mp_mutex, other.mp_mutex); </p> <blockquote> <p> <sup><del></del><del></del><del> </del></sup></p> </blockquote> </blockquote> <p> Seems to be missing header: #include &lt;boost/interprocess/detail/simple_swap.hpp&gt; </p> sprague.a.rick@… https://svn.boost.org/trac10/ticket/13013 https://svn.boost.org/trac10/ticket/13013 Report #13010: Is there any plan to support initializer list constructor and move assign? Fri, 05 May 2017 02:19:36 GMT Fri, 05 May 2017 02:19:36 GMT <p> Is there any plan to support initializer list constructor and move assign?I think it make sense. </p> wenyong.yu <136002018@…> https://svn.boost.org/trac10/ticket/13010 https://svn.boost.org/trac10/ticket/13010 Report #13008: [windows][Visual Studio compiler] Building Boost Thread with /GL causes leak in boost::thread_specific_ptr Wed, 03 May 2017 20:47:35 GMT Tue, 22 Aug 2017 20:54:29 GMT <p> When Boost Thread is build using the Visual Studio compiler with the optimization flag /GL ("Whole Program Optimization") added, and when a program links statically against Boost Thread for release builds, instances of <code>boost::thread_specific_ptr</code> don't call the cleanup function for object instances in other threads when threads have been started via windows API (not using boost::thread). The problem occurs for both 32-bit and 64-bit systems, and has been observed on Windows 7 and Windows 10, and for both auto-linking and not auto-linking situations. </p> <p> How to reproduce: </p> <p> a) Build the relevant Boost libraries using the following command: </p> <pre class="wiki">b2 --build-dir="%TMP%" toolset=msvc-14.1 --with-thread --with-system --with-date_time --with-atomic address-model=32 link=static,shared variant=release asynch-exceptions=on extern-c-nothrow=off rtti=on optimization=speed cxxflags="/GL" linkflags="/LTCG:incremental" --stagedir=C:\SomePath --compiler="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe" </pre><p> b) Build statically against the following translation unit in release mode and run the program: </p> <pre class="wiki">#include &lt;iostream&gt; #include "boost/config.hpp" #include "boost/thread/tss.hpp" #include "boost/atomic.hpp" #if !defined(BOOST_HAS_WINTHREADS) # error Windows platform required #endif #include &lt;windows.h&gt; // Uncomment to activate IO output for debugging purposes: #define BDAL_USE_IO_OUTPUT typedef int atomic_int_underlying_type; typedef boost::atomic&lt;bool&gt; atomic_bool_type; typedef boost::atomic&lt;atomic_int_underlying_type&gt; atomic_integral; atomic_integral instance_counter(0); atomic_bool_type test_result(false); struct InstanceCountingClass { InstanceCountingClass() { ++instance_counter; #ifdef BDAL_USE_IO_OUTPUT std::cout &lt;&lt; "[InstanceCountingClass] default c'tor" &lt;&lt; std::endl; #endif } InstanceCountingClass(const InstanceCountingClass&amp;) { ++instance_counter; #ifdef BDAL_USE_IO_OUTPUT std::cout &lt;&lt; "[InstanceCountingClass] copy c'tor" &lt;&lt; std::endl; #endif } ~InstanceCountingClass() { --instance_counter; #ifdef BDAL_USE_IO_OUTPUT std::cout &lt;&lt; "[InstanceCountingClass] d'tor" &lt;&lt; std::endl; #endif } }; boost::thread_specific_ptr&lt;InstanceCountingClass&gt; tss; DWORD WINAPI myThreadFunction(LPVOID) { #ifdef BDAL_USE_IO_OUTPUT std::cout &lt;&lt; "[myThreadFunction] called" &lt;&lt; std::endl; #endif atomic_int_underlying_type cnt = instance_counter.load(); if (cnt != 1) { std::cerr &lt;&lt; "[myThreadFunction] TSS instance counter is different from 1: " &lt;&lt; cnt &lt;&lt; std::endl; test_result.store(false); } if (tss.get()) { std::cerr &lt;&lt; "[myThreadFunction] TSS contains unexpected value" &lt;&lt; std::endl; test_result.store(false); } tss.reset(new InstanceCountingClass()); cnt = instance_counter.load(); if (cnt != 2) { std::cerr &lt;&lt; "[myThreadFunction] TSS instance counter is different from 2: " &lt;&lt; cnt &lt;&lt; std::endl; test_result.store(false); } return 0; } bool doTestBoostThreadSpecificPtrCleanup() { instance_counter.store(0); test_result.store(true); if (tss.get()) { std::cerr &lt;&lt; "[doTestBoostThreadSpecificPtrCleanup] TSS contains unexpected value" &lt;&lt; std::endl; return false; } tss.reset(new InstanceCountingClass()); // Use Windows API to instantiate a thread HANDLE threadhandle = ::CreateThread(NULL, 0, myThreadFunction, NULL, 0, 0); if (!threadhandle) { std::cerr &lt;&lt; "[doTestBoostThreadSpecificPtrCleanup] CreateThread failed" &lt;&lt; std::endl; return false; } // Wait for thread to exit DWORD rc = ::WaitForSingleObject(threadhandle, INFINITE); if (!::CloseHandle(threadhandle) || rc != WAIT_OBJECT_0 || !test_result) { std::cerr &lt;&lt; "[doTestBoostThreadSpecificPtrCleanup] WaitForSingleObject or CloseHandle failed" &lt;&lt; std::endl; return false; } // Make sure that the thread-specific instance has been destroyed, // even though we haven't used the Boost.Thread API to start the // thread. atomic_int_underlying_type cnt = instance_counter.load(); if (cnt != 1) { std::cerr &lt;&lt; "[doTestBoostThreadSpecificPtrCleanup] TSS instance counter is different from 1: " &lt;&lt; cnt &lt;&lt; std::endl; return false; } return true; } int main() { if (doTestBoostThreadSpecificPtrCleanup()) { std::cout &lt;&lt; "SUCCESS!" &lt;&lt; std::endl; } else { std::cerr &lt;&lt; "FAILURE!" &lt;&lt; std::endl; } } </pre><p> Observed output: </p> <pre class="wiki">[InstanceCountingClass] default c'tor [myThreadFunction] called [InstanceCountingClass] default c'tor [doTestBoostThreadSpecificPtrCleanup] TSS instance counter is different from 1: 2 FAILURE! [InstanceCountingClass] d'tor </pre><p> Verified for: </p> <p> Boost versions: 1.64, 1.63<br /> Visual Studio versions: VS 2012 (toolset=msvc-11.0), VS 2015 (toolset=msvc-14.0), VS 2017 (toolset=msvc-14.1) </p> <p> Workaround: </p> <p> Don't build Boost using the /GL compiler flag. </p> daniel.kruegler@… https://svn.boost.org/trac10/ticket/13008 https://svn.boost.org/trac10/ticket/13008 Report #13007: When BOOST_BIND_NO_PLACEHOLDERS is defined, framework.ipp seems to be missing an #include Wed, 03 May 2017 18:12:22 GMT Fri, 07 Jul 2017 21:22:41 GMT <p> Like the summary says, I think boost/test/impl/framework.ipp should simply have one additional #include &lt;boost/bind/placeholders.hpp&gt; so it works when BOOST_BIND_NO_PLACEHOLDERS is defined. </p> bspencer@… https://svn.boost.org/trac10/ticket/13007 https://svn.boost.org/trac10/ticket/13007 Report #13004: Cannot build boost 1.64 with Visual Studio 2015 command prompt when Visual Studio 2017 is installed Wed, 03 May 2017 13:31:17 GMT Wed, 03 May 2017 13:31:17 GMT <p> I open a Visual Studio 2015 command prompt and try to build boost. But the libraries are no longer called *vc140*.lib, but *vc141*.lib. When building my application from my own environment. Calling \tools\build\src\engine\guess_toolset.bat manually sets the environment variables correctly: BOOST_JAM_TOOLSET=vc14 BOOST_JAM_TOOLSET_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\..\VC\ Also when I add printing of the precompiler define BOOST_MSVC in some source file of boost, it prints 1900, not 1910 correctly on compilation. But calling build.bat prints: ### ### Using 'vc141' toolset. ### and afterwards the libraries are named vc141, while boost auto_link in my project still tries to find them as vc140. </p> mgr2000@… https://svn.boost.org/trac10/ticket/13004 https://svn.boost.org/trac10/ticket/13004 Report #13000: Please use BOOST_NOEXCEPT_OR_NOTHROW Mon, 01 May 2017 01:27:12 GMT Mon, 01 May 2017 01:27:12 GMT <p> When compiling with -Wdeprecated we get this warning </p> <pre class="wiki">../../../boost/system/system_error.hpp:47:31: error: dynamic exception specifications are deprecated [-Werror,-Wdeprecated-dynamic-exception-spec] virtual ~system_error() throw() {} ^~~~~~~ ../../../boost/system/system_error.hpp:47:31: note: use 'noexcept' instead </pre> viboes https://svn.boost.org/trac10/ticket/13000 https://svn.boost.org/trac10/ticket/13000 Report #12998: Can't forward single-argument constructors to sinks Sun, 30 Apr 2017 22:25:39 GMT Sun, 30 Apr 2017 22:25:39 GMT <p> CasparCG has code like this: </p> <p> <code></code>` </p> <blockquote> <p> class sink_backend : public boost::log::sinks::basic_formatted_sink_backend&lt;char&gt; { </p> <blockquote> <p> std::function&lt;void(std::string line)&gt; formatted_line_sink_; </p> </blockquote> <p> public: </p> <blockquote> <p> sink_backend(std::function&lt;void(std::string line)&gt; formatted_line_sink) </p> <blockquote> <p> : formatted_line_sink_(std::move(formatted_line_sink)) </p> </blockquote> <p> { } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> void consume(const boost::log::record_view&amp; rec, const std::string&amp; formatted_message) { </p> <blockquote> <p> try { </p> <blockquote> <p> formatted_line_sink_(formatted_message); </p> </blockquote> <p> } catch (...) { </p> <blockquote> <p> std::cerr &lt;&lt; "[sink_backend] Error while consuming formatted message: " &lt;&lt; formatted_message &lt;&lt; std::endl &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> }; </p> </blockquote> <p> […] </p> <blockquote> <p> auto sink = boost::make_shared&lt;sink_type&gt;(std::move(formatted_line_sink)); </p> </blockquote> <p> <code></code>` </p> <p> This fails with a long spew of template errors, evidently because for single-argument constructors, only variants with named parameters are considered (sync_frontend.hpp, BOOST_LOG_SINK_CTOR_FORWARD_INTERNAL_1). This is a regression from 1.59.0. </p> <p> Adding a dummy int parameter and setting it to 0 makes the code compile. </p> steinar+boost@… https://svn.boost.org/trac10/ticket/12998 https://svn.boost.org/trac10/ticket/12998 Report #12997: bootstarp.bat MinGW failed to build boost engine Sun, 30 Apr 2017 03:18:52 GMT Sun, 30 Jul 2017 18:16:07 GMT shirishr@… https://svn.boost.org/trac10/ticket/12997 https://svn.boost.org/trac10/ticket/12997 Report #12996: warning: 'long long' is a C++11 Sat, 29 Apr 2017 16:22:15 GMT Sun, 22 Oct 2017 12:58:31 GMT <pre class="wiki">In file included from ../../../libs/timer/src/auto_timers_construction.cpp:23: ../../../boost/timer/timer.hpp:44:43: warning: 'long long' is a C++11 extension [-Wc++11-long-long] void clear() { wall = user = system = 0LL; } </pre><blockquote> <p> <sup> </sup></p> </blockquote> viboes https://svn.boost.org/trac10/ticket/12996 https://svn.boost.org/trac10/ticket/12996 Report #12995: Clang/C2 support Sat, 29 Apr 2017 15:02:52 GMT Thu, 06 Jul 2017 10:04:35 GMT <p> It would be nice to get Boost to compile under Clang/C2 in Visual C++ 2017. Boost 1.63 almost did that, but Boost 1.64 does not. The problem is that Boost recognizes the compiler as Visual Studio, and then applies the corresponding workarounds. In particular, the workarounds include incorrect "pasting" in the implementation of macros in VC++, but that workaround is then an error under Clang. </p> kaba <kaba@…> https://svn.boost.org/trac10/ticket/12995 https://svn.boost.org/trac10/ticket/12995 Report #12994: Bugs in make_maximal_planar() function Fri, 28 Apr 2017 18:56:49 GMT Fri, 05 Jan 2018 03:20:26 GMT <p> It seems there is a bug in make_maximal_planar() function. I created a r*r planar grid and then triangulated (made the grid maximally planar) the created grid. I tested the output but the output graph is not maximal. I attach my code </p> hunglv.k52tncntt@… https://svn.boost.org/trac10/ticket/12994 https://svn.boost.org/trac10/ticket/12994 Report #12991: Could not find yacc to build JAM grammar. Wed, 26 Apr 2017 16:44:18 GMT Wed, 26 Apr 2017 16:44:18 GMT <p> VS2008, XP, Boost 1.64. bootstrap.bat fale to build bootstrap.log indicates boost: "Could not find yacc to build JAM grammar." Recommneds .\build.bat mdvc no help. 1.63 installed OK. </p> jim.mauroff@… https://svn.boost.org/trac10/ticket/12991 https://svn.boost.org/trac10/ticket/12991 Report #12990: Boost::process examples fail to compile in Visual studio 2010 Win 7 Wed, 26 Apr 2017 16:19:44 GMT Sun, 30 Jul 2017 18:15:27 GMT <p> It looks like it was developed assuming C++11. </p> anonymous https://svn.boost.org/trac10/ticket/12990 https://svn.boost.org/trac10/ticket/12990 Report #12988: boost::geometry::difference doesn't operate correctly when many holes are overlapping Tue, 25 Apr 2017 16:11:38 GMT Tue, 25 Apr 2017 16:11:38 GMT <p> I have a multipolygon with an outer that contains many holes that are touching and/or overlapping. </p> <p> When I make the difference between this multipolygon and an simple polygon that overlap inners the result doesn't contains enough holes. The inners that are overlapped by the polygon I want to substract left from the result. </p> <p> In my case all inners and the polygon substracted should be unified in one inner in the result. </p> <p> Here is a picture of inputs : <a class="ext-link" href="https://drive.google.com/open?id=0BygGiQfhIcvGVk9WX2VFZ0VjRXc"><span class="icon">​</span>https://drive.google.com/open?id=0BygGiQfhIcvGVk9WX2VFZ0VjRXc</a> </p> <p> Here is the actual output : <a class="ext-link" href="https://drive.google.com/open?id=0BygGiQfhIcvGU0RiVGU0dHVwR2c"><span class="icon">​</span>https://drive.google.com/open?id=0BygGiQfhIcvGU0RiVGU0dHVwR2c</a> </p> flamaros.xavier@… https://svn.boost.org/trac10/ticket/12988 https://svn.boost.org/trac10/ticket/12988 Report #12987: boost::filesystem::exists crashes Mon, 24 Apr 2017 16:19:34 GMT Mon, 15 Jan 2018 10:25:13 GMT <pre class="wiki">bool dummy = boost::filesystem::exists("C:\\alma.txt"); //1 class Alma { public: ~Alma() { std::cout &lt;&lt; boost::filesystem::path("c:\\alma.txt").string() &lt;&lt; std::endl; } }; Alma a; //2 int main(int argc, char* argv[]) { Alma(); //3 return 0; } </pre><p> The reason for the crash is that "dummy" is initialised before "equal_string_ordinal_ic" in the unnamed namespace in operations.cpp. The fix (or a possible fix) is easy. I made operations.cpp a bit uglier by moving static stuff to "perms make_permissions(const path&amp;, DWORD)": </p> <pre class="wiki">perms make_permissions(const path&amp; p, DWORD attr) { //this was in the unnamed namespace: static PtrRtlEqualUnicodeString rtl_equal_unicode_string_api = PtrRtlEqualUnicodeString( ::GetProcAddress( ::GetModuleHandleW(L"ntdll.dll"), "RtlEqualUnicodeString")); //this was in the unnamed namespace: static bool(*equal_string_ordinal_ic)(const wchar_t*, const wchar_t*, PtrRtlEqualUnicodeString) = rtl_equal_unicode_string_api ? equal_string_ordinal_ic_1 : equal_string_ordinal_ic_2; perms prms = fs::owner_read | fs::group_read | fs::others_read; if ((attr &amp; FILE_ATTRIBUTE_READONLY) == 0) prms |= fs::owner_write | fs::group_write | fs::others_write; path ext = p.extension(); if (equal_string_ordinal_ic(ext.c_str(), L".exe", rtl_equal_unicode_string_api) || equal_string_ordinal_ic(ext.c_str(), L".com", rtl_equal_unicode_string_api) || equal_string_ordinal_ic(ext.c_str(), L".bat", rtl_equal_unicode_string_api) || equal_string_ordinal_ic(ext.c_str(), L".cmd", rtl_equal_unicode_string_api)) prms |= fs::owner_exe | fs::group_exe | fs::others_exe; return prms; } </pre><p> I also changed the signatures of two locally used functions: </p> <pre class="wiki">bool equal_string_ordinal_ic_1(const wchar_t* s1, const wchar_t* s2, PtrRtlEqualUnicodeString rtl_equal_unicode_string_api) bool equal_string_ordinal_ic_2(const wchar_t* s1, const wchar_t* s2, PtrRtlEqualUnicodeString) </pre><p> And now that the static stuff is moved from the unnamed namespace to the make_permissions method there is no crash anymore. </p> <p> At least until I comment out (<em>1). Please note that (</em>3) is needed for the second type of crash. This second type of crash is not entirely new. There is a bug filed 5 years ago. I think someone who is involved in developing boost::filesystem with this info (that the second type of crash does not occur if we call (<em>1) (supposed make_permissions has been fixed)) could sort out that old bug as well. <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6638"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6638</a> </em></p> <p> This static initialisation/destruction looks a nasty business. </p> <p> compiler: vc14, static lib, statically linked runtime </p> Leinad https://svn.boost.org/trac10/ticket/12987 https://svn.boost.org/trac10/ticket/12987 Report #12985: missing include of array_wrapper.hpp in boost/mpi/python/serialize.hpp Mon, 24 Apr 2017 07:06:08 GMT Mon, 24 Apr 2017 07:06:08 GMT <p> Build of boost 1.64 failed because of missing header in boost/mpi/python/serialize.hpp. </p> <p> It might be a problem of my build environment but this is what I had to do to make it work: </p> <p> After adding </p> <p> #include &lt;boost/serialization/array_wrapper.hpp&gt; </p> <p> in boost/mpi/python/serialize.hpp the build succeeded. </p> abhijit.sovakar@… https://svn.boost.org/trac10/ticket/12985 https://svn.boost.org/trac10/ticket/12985 Report #12984: Impossible make coordinate transformation Sun, 23 Apr 2017 18:09:42 GMT Thu, 29 Jun 2017 22:12:44 GMT <p> Compiler error occured while compiling lines 172, 174 and 176 in the file geometry/strategies/transform/matrix_transformers.hpp because there no suitable operator in the boost::qvm::mat structure (defined in qvm\mat.hpp). </p> <p> Problem code: </p> <blockquote> <p> set&lt;0&gt;(p2, boost::numeric_cast&lt;ct2&gt;( </p> <blockquote> <p> c1 * <strong>m_matrix(0,0)</strong> + c2 * <strong>m_matrix(0,1)</strong> + c3 * <strong>m_matrix(0,2)</strong> + <strong>m_matrix(0,3)</strong>)); </p> </blockquote> <p> set&lt;1&gt;(p2, boost::numeric_cast&lt;ct2&gt;( </p> <blockquote> <p> c1 * <strong>m_matrix(1,0)</strong> + c2 * <strong>m_matrix(1,1)</strong> + c3 * <strong>m_matrix(1,2)</strong> + <strong>m_matrix(1,3)</strong>)); </p> </blockquote> <p> set&lt;2&gt;(p2, boost::numeric_cast&lt;ct2&gt;( </p> <blockquote> <p> c1 * <strong>m_matrix(2,0)</strong> + c2 * <strong>m_matrix(2,1)</strong> + c3 * <strong>m_matrix(2,2)</strong> + <strong>m_matrix(2,3)</strong>)); </p> </blockquote> </blockquote> kirill.ierusalimov@… https://svn.boost.org/trac10/ticket/12984 https://svn.boost.org/trac10/ticket/12984 Report #12982: Missing <serialization/array_wrapper.hpp> header in uBLAS files? Fri, 21 Apr 2017 23:49:06 GMT Tue, 15 Aug 2017 13:40:45 GMT <p> When building code using the boost library I received two error messages saying </p> <div class="wiki-code"><div class="code"><pre><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">boost</span><span class="o">/</span><span class="n">numeric</span><span class="o">/</span><span class="n">ublas</span><span class="o">/</span><span class="n">storage</span><span class="o">.</span><span class="n">hpp</span><span class="p">:</span><span class="mi">301</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span> <span class="n">error</span><span class="p">:</span> <span class="n">no</span> <span class="n">member</span> <span class="n">named</span> <span class="s1">&#39;make_array&#39;</span> <span class="ow">in</span> <span class="n">namespace</span> <span class="s1">&#39;boost::serialization&#39;</span> </pre></div></div><p> and </p> <div class="wiki-code"><div class="code"><pre><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">boost</span><span class="o">/</span><span class="n">numeric</span><span class="o">/</span><span class="n">ublas</span><span class="o">/</span><span class="n">matrix</span><span class="o">.</span><span class="n">hpp</span><span class="p">:</span><span class="mi">5979</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span> <span class="n">error</span><span class="p">:</span> <span class="n">no</span> <span class="n">member</span> <span class="n">named</span> <span class="s1">&#39;make_array&#39;</span> <span class="ow">in</span> <span class="n">namespace</span> <span class="s1">&#39;boost::serialization&#39;</span> </pre></div></div><p> So I decided to add the line </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/serialization/array_wrapper.hpp&gt;</span><span class="cp"></span> </pre></div></div><p> in both the files <strong>boost/numeric/ublas/storage.hpp</strong> and <strong>boost/numeric/ublas/matrix.hpp</strong> </p> <p> Now my code is building properly! Does this mean a line is missing in the source code of ublas? I would be really surprised. </p> paul.wambergue@… https://svn.boost.org/trac10/ticket/12982 https://svn.boost.org/trac10/ticket/12982 Report #12981: Building Bjam VC14 WIN10 Fri, 21 Apr 2017 19:27:30 GMT Fri, 21 Apr 2017 19:57:53 GMT <p> For some reason triggering ./bootstrap.bat returns: </p> <p> Building Boost.Build engine </p> <pre class="wiki">Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. You can try to obtain a prebuilt binary from http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941 Also, you can file an issue at http://svn.boost.org Please attach bootstrap.log in that case. </pre><p> The bootstrap.log doesn't display any notable error. </p> anonymous https://svn.boost.org/trac10/ticket/12981 https://svn.boost.org/trac10/ticket/12981 Report #12978: wrong boost::serialization header included in ublas Tue, 18 Apr 2017 13:48:41 GMT Sun, 30 Jul 2017 18:14:29 GMT <p> numeric/ublas/{matrix, storage}.hpp (and possibly other header files) include &lt;boost/serialization/array.hpp&gt;, but should really include &lt;boost/serialization/array_wrapper.hpp&gt;. Without this change, I get compilation errors with boost 1.64beta2 like these: </p> <pre class="wiki">error: no member named 'make_array' in namespace 'boost::serialization' </pre> Mark.Moll@… https://svn.boost.org/trac10/ticket/12978 https://svn.boost.org/trac10/ticket/12978 Report #12975: Add map_options for managed_mapped_file (managed_open_or_create_impl_device_holder) Mon, 17 Apr 2017 07:37:58 GMT Mon, 17 Apr 2017 07:37:58 GMT <p> Hello boost developer's </p> <p> I use managed_mapped_file for my project to create shared data structure and it is very good solution and simple to use. But i have a problem for big data &amp; big query. I nead to have Huge page memory map file for better performance. I was check source code and see where is pass flag to mmap function in linux but no way to pass this flag from managed_mapped_file. </p> <p> I can to edit source to pass this argument but i hoop to this change added to boost source for all of developer use . </p> <p> source class hierarchy: </p> <blockquote> <p> managed_mapped_file </p> <blockquote> <p> basic_managed_mapped_file </p> <blockquote> <p> mfile_open_or_create </p> <blockquote> <p> managed_open_or_create_impl::priv_open_or_create </p> <blockquote> <p> -&gt; mapped_region (...,addr/*, map_options*/); </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> source file hierarchy: </p> <blockquote> <p> managed_mapped_file.hpp </p> <blockquote> <p> managed_open_or_create_impl.hpp </p> <blockquote> <p> mapped_region.hpp </p> </blockquote> </blockquote> </blockquote> <p> tanks </p> amirhakh@… https://svn.boost.org/trac10/ticket/12975 https://svn.boost.org/trac10/ticket/12975 Report #12974: Log and Asio without defined _WIN32_WINNT Sun, 16 Apr 2017 13:56:47 GMT Sun, 16 Apr 2017 15:19:29 GMT <p> platform: Win10, VC14, boost 1.64 </p> <p> Using Log and Asio simultaneously cause link errors depending on order of includes. </p> <p> if _WIN32_WINNT not defined and there are several translation units, most of it use only Log and some use both Log and Asio I get link error </p> <p> if Log includes come first followed by Asio, building complete successfull<br /> for example </p> <pre class="wiki">#include &lt;boost/log/common.hpp&gt; #include &lt;boost/log/sources/severity_channel_logger.hpp&gt; #include &lt;boost/asio.hpp&gt; </pre><p> but if Asio include comes before Log includes<br /> for example </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; #include &lt;boost/log/common.hpp&gt; #include &lt;boost/log/sources/severity_channel_logger.hpp&gt; </pre><p> I get link error: LNK2038: mismatch detected for 'boost_log_abi': value 'v2s_mt_nt5' doesn't match value 'v2s_mt_nt6' in gtclient.obj </p> <p> this message generated by #pragma detect_mismatch in boost\log\detail\config.hpp : </p> <pre class="wiki">#if defined(BOOST_LOG_HAS_PRAGMA_DETECT_MISMATCH) #pragma detect_mismatch("boost_log_abi", BOOST_PP_STRINGIZE(BOOST_LOG_VERSION_NAMESPACE)) #endif </pre><p> it happend becase Log and Asio use different macros to define target Windows version.<br /> </p> <p> Log use BOOST_USE_WINAPI_VERSION<br /> but Asio use _WIN32_WINNT </p> <p> in \boost\asio\detail\config.hpp <br /> Asio checks if _WIN32_WINNT defined. if not, it defines it </p> <pre class="wiki"># define _WIN32_WINNT 0x0501 </pre><p> BOOST_USE_WINAPI_VERSION defined in boost\detail\winapi\config.hpp </p> <p> it depends on _WIN32_WINNT and _MSC_VER </p> <pre class="wiki">#if !defined(BOOST_USE_WINAPI_VERSION) #if defined(_WIN32_WINNT) #define BOOST_USE_WINAPI_VERSION _WIN32_WINNT #elif defined(WINVER) #define BOOST_USE_WINAPI_VERSION WINVER #else // By default use Windows Vista API on compilers that support it and XP on the others #if (defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1500) || defined(BOOST_WINAPI_IS_MINGW) #define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WINXP #else #define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WIN6 #endif #endif #endif </pre><p> I think this error appeared in boost 1.60 when Log started using BOOST_USE_WINAPI_VERSION <a href="http://www.boost.org/users/history/version_1_60_0.html">http://www.boost.org/users/history/version_1_60_0.html</a> </p> <p> if I define _WIN32_WINNT=0x0A00 in compiler option, there are no link error with any includes ordering. </p> sobolevsv@… https://svn.boost.org/trac10/ticket/12974 https://svn.boost.org/trac10/ticket/12974 Report #12973: Example in docs for optional<T&> copy constructor is wrong Fri, 14 Apr 2017 21:52:55 GMT Fri, 14 Apr 2017 21:52:55 GMT <p> In the <a href="http://www.boost.org/doc/libs/1_63_0/libs/optional/doc/html/boost_optional/reference/header__boost_optional_optional_hpp_/detailed_semantics.html">documentation for Optional</a> in the latest version, and many past versions, the example in the copy constructor for <code>optional&lt;T&amp;&gt;</code> reads: </p> <pre class="wiki">T v = 2 ; T&amp; ref = v ; optional&lt;T&gt; init(ref); assert ( *init == v ) ; optional&lt;T&gt; init2 ( init ) ; assert ( *init2 == v ) ; v = 3 ; assert ( *init == 3 ) ; assert ( *init2 == 3 ) ; </pre><p> Both <code>init</code> and <code>init2</code> should be of type <code>optional&lt;T&amp;&gt;</code>, not <code>optional&lt;T&gt;</code>. </p> barry.revzin@… https://svn.boost.org/trac10/ticket/12973 https://svn.boost.org/trac10/ticket/12973 Report #12972: converter.hpp uses std::unary_function which is removed in c++17 Fri, 14 Apr 2017 21:38:02 GMT Sun, 25 Feb 2018 11:46:07 GMT <p> Some code, which uses boost::lexical_cast does not compile on Windows 10 with Visual Studio 2017 Community using the compiler flag /std:c++latest (which enables c++17 standard). From what I understand from this page <a class="ext-link" href="http://en.cppreference.com/w/cpp/utility/functional/unary_function"><span class="icon">​</span>http://en.cppreference.com/w/cpp/utility/functional/unary_function</a>, std::unary_function will be removed with c++17. However, struct Trivial_converter_impl and struct rounding_converter in file converter.hpp derive from std::unary_function </p> anonymous https://svn.boost.org/trac10/ticket/12972 https://svn.boost.org/trac10/ticket/12972 Report #12967: boost::none_t should be a literal type like std::nullopt_t Thu, 13 Apr 2017 12:32:50 GMT Thu, 14 Jun 2018 16:21:42 GMT <p> The <code>boost::none_t</code> explicit constructor is not <code>constexpr</code> making it a non literal type. <code>std::nullopt_t</code>'s constructor is constexpr making it a non-aggregate literal type as dictated by the standard. </p> Matt Rice <citrusmoose@…> https://svn.boost.org/trac10/ticket/12967 https://svn.boost.org/trac10/ticket/12967 Report #12965: bug of [[:xdigit:]] matching Thu, 13 Apr 2017 09:33:56 GMT Tue, 01 Aug 2017 18:47:40 GMT <blockquote> <p> boost::regex myRegex{ "<a class="missing wiki">:xdigit:</a>{ 1,2 }" };<em> string s = "\xca\xd5"; </em></p> </blockquote> <blockquote> <p> cout &lt;&lt; boost::regex_match(s,myRegex) &lt;&lt; endl; </p> </blockquote> freeman_feng@… https://svn.boost.org/trac10/ticket/12965 https://svn.boost.org/trac10/ticket/12965 Report #12963: boost::time_period::span() returns invalid period if one of the periods is not-a-date-time Wed, 12 Apr 2017 11:32:50 GMT Wed, 12 Apr 2017 11:32:50 GMT <p> In some cases, the time_period::span() function returns a less than optimal result. The expected behavior is that if one of the two periods is invalid/not-a-date-time the other is returned. </p> <p> What I observed is that if one of the two source periods is not-a-date-time, the length() of the period returned is wrong/broken; invalidating the resulting time_period. </p> <p> I might be wrong with my expectation above, but in this case it should be at least documented. Attached is a global function that I use to "fix" it in my code. </p> willi.burkhardt@… https://svn.boost.org/trac10/ticket/12963 https://svn.boost.org/trac10/ticket/12963 Report #12962: user overridden cxxflags are not honored for the compilation of some libraries Wed, 12 Apr 2017 08:42:03 GMT Wed, 12 Apr 2017 08:42:03 GMT <p> Upon linking <code>libboost_regex-mt.a</code> to a shared library I am getting the error: </p> <pre class="wiki">/usr/bin/ld: /usr/local/lib/libboost_regex-mt.a(instances.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libboost_regex-mt.a: could not read symbols: Bad value </pre><p> I am building boost with <code>-fPIC</code> by running bjam with the following options: </p> <pre class="wiki">./bjam '-sBUILD=&lt;cflags&gt;-fPIC &lt;cxxflags&gt;-fPIC &lt;linkflags&gt;-fPIC' --without-mpi --without-python --without-iostreams --layout=tagged link=shared,static </pre><p> bjam does not seem to honor the <code>-fPIC</code> flag upon compilation of <code>libboost_regex-mt</code>: </p> <pre class="wiki">gcc.compile.c++ bin.v2/libs/regex/build/gcc-4.8/release/link-static/threading-multi/instances.o "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pedantic -pthread -m64 -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -c -o "bin.v2/libs/regex/build/gcc-4.8/release/link-static/threading-multi/instances.o" "libs/regex/build/../src/instances.cpp" </pre><p> Looking at the bjam debug log, there seem to be many libraries where user overridden cxxflags are not honored for the compilation. These include <code>libboost_math_tr1-mt.a</code>, <code>libboost_program_options-mt.a</code>, <code>libboost_signals-mt.a</code>, <code>libboost_locale-mt.a</code> and others. </p> sascha.kratky@… https://svn.boost.org/trac10/ticket/12962 https://svn.boost.org/trac10/ticket/12962 Report #12959: Regex class negation Mon, 10 Apr 2017 00:24:17 GMT Thu, 03 Aug 2017 17:06:48 GMT <p> Pertains to boost::regex Tested on version 1.61 </p> <p> Flags: Perl<br /> Target string: abc092efg<br /> Regex: <code>[^\W\D]+</code><br /> </p> <p> Function: regex_search<br /> </p> <p> Matches: abc092efg<br /> </p> <p> Should match: 092<br /> </p> <p> Notes<br /> </p> <p> Negative class resolution: 'Not-Not Word' AND 'Not-Not Digit'<br /> The intersection of word AND digits is digits.<br /> </p> <p> Every other regex engine does this correctly.<br /> This includes Perl, PCRE, JS, C++11, Python, etc..<br /> </p> <p> In this engine, <code>[^\W\D]</code> matches what <code>[\w\d]</code> does.<br /> <code>[^\W\D]</code> appears not to be an intersection as the operator in<br /> a negative class is AND.<br /> </p> <p> Fwiw - this behavior is seen with all negated shorthand elements of a<br /> negative class, i.e. <code>[^\S\W]</code> matches all whitespace OR all word char's.<br /> </p> robic@… https://svn.boost.org/trac10/ticket/12959 https://svn.boost.org/trac10/ticket/12959 Report #12952: Interval arithmetic: fmod produces wrong results Thu, 06 Apr 2017 10:57:39 GMT Thu, 06 Apr 2017 10:57:39 GMT <p> Hi, </p> <p> I found a potential bug within the fmod calculation of the boost interval arithmetic library. </p> <p> For me the result of fmod([3, 18], [5 5]) is [3, 18] but the correct result should be [0 5]. </p> <p> The function is located in /numeric/interval/arith2.hpp . I checked the boost repository and the function did not change the past years. </p> <p> I'll try to fix it at my own. You can contact me to get my implementation... </p> <p> Kind regards, </p> <p> Timo Stripf </p> stripf@… https://svn.boost.org/trac10/ticket/12952 https://svn.boost.org/trac10/ticket/12952 Report #12951: Warning C4244 generated by packed_oarchive.hpp Wed, 05 Apr 2017 16:02:20 GMT Wed, 05 Apr 2017 16:02:20 GMT <pre class="wiki">#include &lt;boost/mpi.hpp&gt; </pre><p> compiled with VC12 results in: </p> <pre class="wiki">D:\thirdparty\boost\boost_1_63_0\boost/mpi/packed_oarchive.hpp(125) : error C4244: 'initializing' : conversion from 'int' to 'const int_least16_t', possible loss of data D:\thirdparty\boost\boost_1_63_0\boost/mpi/packed_oarchive.hpp(130) : error C4244: 'initializing' : conversion from 'boost::archive::version_type::base_type' to 'const int_least8_t', possible loss of data </pre> l.kiss@… https://svn.boost.org/trac10/ticket/12951 https://svn.boost.org/trac10/ticket/12951 Report #12950: boost::lockfree::spsc_queue::produce(Functor) Wed, 05 Apr 2017 10:11:55 GMT Wed, 05 Apr 2017 10:11:55 GMT <p> Want to make elements in-place. </p> <p> This has similar purpose to <a class="new ticket" href="https://svn.boost.org/trac10/ticket/8666" title="#8666: Feature Requests: boost::lockfree::spsc_queue::emplace_push (new)">#8666</a> request, but rather then having unsafe two-stage API, I'd rather want produce function as symetric to consume. </p> Oleksandr Guteniev <gutenev@…> https://svn.boost.org/trac10/ticket/12950 https://svn.boost.org/trac10/ticket/12950 Report #12947: Failed to use memory-mapped file to interprocess communications Tue, 04 Apr 2017 14:46:04 GMT Thu, 12 Apr 2018 08:31:36 GMT <p> In first process we create and write the memory-mapped file through boost::iostreams::mapped_file_sink with boost::iostreams::mapped_file::readwrite flag. In seconde process we attempt to open the same memory-mapped file for read through boost::iostreams::mapped_file_source with boost::iostreams::mapped_file::readonly flag. The aptempt has failed for second process. Windows error code 32 (The process cannot access the file because it is being used by another process). In source code of iostream library we discover the next code that attempt to open file (mapped_file.cpp, void mapped_file_impl::open_file(param_type p)): </p> <p> DWORD dwDesiredAccess = </p> <blockquote> <p> readonly ? </p> <blockquote> <p> GENERIC_READ : (GENERIC_READ | GENERIC_WRITE); </p> </blockquote> </blockquote> <blockquote> <p> DWORD dwCreationDisposition = (p.new_file_size != 0 &amp;&amp; !readonly) ? </p> <blockquote> <p> CREATE_ALWAYS : OPEN_EXISTING; </p> </blockquote> <p> DWORD dwFlagsandAttributes = </p> <blockquote> <p> readonly ? </p> <blockquote> <p> FILE_ATTRIBUTE_READONLY : FILE_ATTRIBUTE_TEMPORARY; </p> </blockquote> </blockquote> <p> handle_ = p.path.is_wide() ? </p> <blockquote> <p> ::CreateFileW( </p> <blockquote> <p> p.path.c_wstr(), dwDesiredAccess, FILE_SHARE_READ, NULL, dwCreationDisposition, dwFlagsandAttributes, NULL ) : </p> </blockquote> <p> ::CreateFileA( </p> <blockquote> <p> p.path.c_str(), dwDesiredAccess, FILE_SHARE_READ, NULL, dwCreationDisposition, dwFlagsandAttributes, NULL ); </p> </blockquote> </blockquote> <p> if (handle_ == INVALID_HANDLE_VALUE) </p> <blockquote> <p> cleanup_and_throw("failed opening file"); </p> </blockquote> </blockquote> <p> In both cases (opening the file for write of for read) the dwShareMode flag has FILE_SHARE_READ value. This is wrong! Using the rules that dуscraybed on page <a class="ext-link" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa363874(v=vs.85).aspx"><span class="icon">​</span>https://msdn.microsoft.com/en-us/library/windows/desktop/aa363874(v=vs.85).aspx</a> we corrected the code of function: </p> <p> DWORD dwDesiredAccess = </p> <blockquote> <p> readonly ? </p> <blockquote> <p> GENERIC_READ : (GENERIC_READ | GENERIC_WRITE); </p> </blockquote> </blockquote> <blockquote> <p> DWORD dwCreationDisposition = (p.new_file_size != 0 &amp;&amp; !readonly) ? </p> <blockquote> <p> CREATE_ALWAYS : OPEN_EXISTING; </p> </blockquote> <p> DWORD dwFlagsandAttributes = </p> <blockquote> <p> readonly ? </p> <blockquote> <p> FILE_ATTRIBUTE_READONLY : FILE_ATTRIBUTE_TEMPORARY; </p> </blockquote> </blockquote> <p> handle_ = p.path.is_wide() ? </p> <blockquote> <p> ::CreateFileW( </p> <blockquote> <p> p.path.c_wstr(), dwDesiredAccess, !readonly ? FILE_SHARE_READ : FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, dwCreationDisposition, dwFlagsandAttributes, NULL ) : </p> </blockquote> <p> ::CreateFileA( </p> <blockquote> <p> p.path.c_str(), dwDesiredAccess, !readonly ? FILE_SHARE_READ : FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, dwCreationDisposition, dwFlagsandAttributes, NULL ); </p> </blockquote> </blockquote> <p> if (handle_ == INVALID_HANDLE_VALUE) </p> <blockquote> <p> cleanup_and_throw("failed opening file"); </p> </blockquote> </blockquote> Valeriy N. Sifurov <vsifurov@…> https://svn.boost.org/trac10/ticket/12947 https://svn.boost.org/trac10/ticket/12947 Report #12946: Definition of BOOST_ARCH_ARM does not check __aarch64__ Tue, 04 Apr 2017 08:48:55 GMT Wed, 04 Oct 2017 04:00:59 GMT <p> Hi </p> <p> In this header file <a href="http://www.boost.org/doc/libs/1_63_0/boost/predef/architecture/arm.h">http://www.boost.org/doc/libs/1_63_0/boost/predef/architecture/arm.h</a> macros <span class="underline">aarch64</span> should be checked along with <span class="underline">arm64 Without that we get problems when building with Android NDK for arm 64, because BOOST_ARCH_ARM is not defined. </span></p> <p> Thanks Sergey </p> Sergey Shestakov <s_shestakov@…> https://svn.boost.org/trac10/ticket/12946 https://svn.boost.org/trac10/ticket/12946 Report #12939: use of boost::graph_bundle with subgraph Wed, 29 Mar 2017 02:30:41 GMT Wed, 29 Mar 2017 02:30:41 GMT <p> using boost::graph_bundle with a subgraph picks up the 'vertex' access delegate. This is because boost::graph_bundle enumeration gets downgraded to an integer, which matches the first template specialization in subgraph.hpp </p> <p> <strong>example</strong>: </p> <pre class="wiki">struct VertexProperties { std::string name; }; struct EdgeProperties { std::string name; }; struct GraphProperties { std::string name; }; boost::subgraph&lt; boost::adjacency_list&lt; boost::vecS, boost::vecS, boost::bidirectionalS, boost::property&lt;boost::vertex_index_t,size_t,VertexProperties&gt;, boost::property&lt;boost::edge_index_t,size_t,EdgeProperties&gt;, GraphProperties&gt; &gt; graph; auto name = graph[boost::graph_bundle].name; </pre><p> <strong>compiler error:</strong> </p> <pre class="wiki">boost/graph/subgraph.hpp:278:24: error: no match for ternary 'operator?:' (operand types are 'bool', 'boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, boost::property&lt;boost::vertex_index_t, long unsigned int, tpg::VertexProperties&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, tpg::EdgeProperties&gt;, tpg::GraphProperties&gt;::graph_bundled {aka tpg::GraphProperties}', and 'boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, boost::property&lt;boost::vertex_index_t, long unsigned int, tpg::VertexProperties&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, tpg::EdgeProperties&gt;, tpg::GraphProperties&gt;::vertex_bundled {aka tpg::VertexProperties}') { return is_root() ? m_graph[x] : root().m_graph[local_to_global(x)]; } ^ boost/graph/subgraph.hpp: In member function 'typename boost::graph::detail::bundled_result&lt;Graph, Descriptor&gt;::type&amp; boost::subgraph&lt;Graph&gt;::operator[](Descriptor) [with Descriptor = boost::graph_bundle_t; Graph = boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, boost::property&lt;boost::vertex_index_t, long unsigned int, tpg::VertexProperties&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, tpg::EdgeProperties&gt;, tpg::GraphProperties&gt;; typename boost::graph::detail::bundled_result&lt;Graph, Descriptor&gt;::type = tpg::GraphProperties]': boost/graph/subgraph.hpp:278:75: warning: control reaches end of non-void function [-Wreturn-type] { return is_root() ? m_graph[x] : root().m_graph[local_to_global(x)]; } </pre><p> <strong>workaround/hack</strong>: explicitly use local_property or global_property lookup classes. </p> <pre class="wiki">auto name = graph[boost::global_property&lt;boost::graph_bundle_t&gt;(boost::graph_bundle)].name; </pre> ioannis.nousias@… https://svn.boost.org/trac10/ticket/12939 https://svn.boost.org/trac10/ticket/12939 Report #12934: asio ssl not support AxTLS Sat, 25 Mar 2017 15:24:28 GMT Sun, 16 Apr 2017 08:47:57 GMT <p> OpenSSL too larger,but asio ssl not support AxTLS. thanks. </p> iewj@… https://svn.boost.org/trac10/ticket/12934 https://svn.boost.org/trac10/ticket/12934 Report #12933: Improve Calculation of Cartesian Point Distances Sat, 25 Mar 2017 14:47:20 GMT Sun, 26 Mar 2017 09:46:29 GMT <p> ISSUE:<br /> </p> <p> in &lt;boost/geometry/strategies/cartesian/distance_pythagoras.hpp&gt; currently the distance between points in cartesian space is calculated via the pythagorean theorem (i.e. sqrt(sum of squared coordinate differences);<br /> </p> <p> While that is theoretically correct, the numerics are "horrible" and a much better alternative with very low implementation effort is available via the "Moler and Morrison" algorithm; its convergence rate is cubic and it completely avoids the intermediate blowup of values. The article can be found online here: <a class="ext-link" href="http://blogs.mathworks.com/images/cleve/moler_morrison.pdf"><span class="icon">​</span>http://blogs.mathworks.com/images/cleve/moler_morrison.pdf</a> </p> <p> TODO: check the benefits of the Moler Morrison algorithm and decide about either replacing the current implementation of point distances in cartesian space or, make the Moler Morrison algorithm available as an alternative. </p> manfredweis@… https://svn.boost.org/trac10/ticket/12933 https://svn.boost.org/trac10/ticket/12933 Report #12932: "Char >> (Literal | Sequence)" unpacking Fri, 24 Mar 2017 21:59:00 GMT Thu, 14 Dec 2017 17:14:20 GMT <p> This is the simplest I was able to reduce this to. What is going on here? </p> <p> Requirements: -Boost 1.62 or 1.63 /w spirit v2 -C++03/C++11/C++14 </p> <p> Steps: g++ test.cpp &amp;&amp; ./a.out </p> <p> Expected: Success: "x" "a" "b" "c" </p> <p> Result: Success: "x" "a" "" "" </p> <pre class="wiki">#include &lt;boost/spirit/include/qi.hpp&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;string&gt; int main(int argc, char * argv[]) { namespace qi = boost::spirit::qi; const std::string input("xabc"); char x = 0; char a = 0; char b = 0; char c = 0; const int result = qi::parse( input.begin(), input.end(), qi::char_ &gt;&gt; (qi::lit("Z") | (qi::char_ &gt;&gt; qi::char_ &gt;&gt; qi::char_)), x, a, b, c ); std::cout &lt;&lt; (result ? "Success" : "Failure") &lt;&lt; ": " &lt;&lt; '"' &lt;&lt; x &lt;&lt; "\" \"" &lt;&lt; a &lt;&lt; "\" \"" &lt;&lt; b &lt;&lt; "\" \"" &lt;&lt; c &lt;&lt; '"' &lt;&lt; std::endl; return result ? EXIT_SUCCESS : EXIT_FAILURE; } </pre> jetdog330@… https://svn.boost.org/trac10/ticket/12932 https://svn.boost.org/trac10/ticket/12932 Report #12929: linestring with zero points or a single point is not equal to itself Fri, 24 Mar 2017 11:01:32 GMT Fri, 24 Mar 2017 11:01:32 GMT <p> I expect a linestring with zero points or a single point is equal to itself. However, this is not the case for <code>boost::geometry::equals</code> even though the documentation says </p> <blockquote> <p> Checks if a geometry are spatially equal. </p> </blockquote> <blockquote> <p> Spatially equal means that the same point set is included. </p> </blockquote> <p> I expect a linestring with zero points to be equal to all empty point sets. I expect a linestring with a single point to be equal to all single point sets where the single points are equal. </p> <div class="wikipage" style="font-size: 80%"><p> Example: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry.hpp&gt;</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">bg</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="p">;</span> <span class="k">using</span> <span class="n">point</span> <span class="o">=</span> <span class="n">bg</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">point</span><span class="o">&lt;</span><span class="kt">double</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">bg</span><span class="o">::</span><span class="n">cs</span><span class="o">::</span><span class="n">cartesian</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">linestring</span> <span class="o">=</span> <span class="n">bg</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">linestring</span><span class="o">&lt;</span><span class="n">point</span><span class="o">&gt;</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">linestring</span> <span class="n">empty</span><span class="p">;</span> <span class="n">linestring</span> <span class="n">single_point_linestring</span> <span class="p">{{</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">}};</span> <span class="n">linestring</span> <span class="n">single_point_linestring_2</span> <span class="p">{{</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">}};</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;empty == empty := &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">bg</span><span class="o">::</span><span class="n">equals</span><span class="p">(</span><span class="n">empty</span><span class="p">,</span> <span class="n">empty</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;single_point_linestring == single_point_linestring := &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">bg</span><span class="o">::</span><span class="n">equals</span><span class="p">(</span><span class="n">single_point_linestring</span><span class="p">,</span> <span class="n">single_point_linestring</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;single_point_linestring == single_point_linestring_2 := &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">bg</span><span class="o">::</span><span class="n">equals</span><span class="p">(</span><span class="n">single_point_linestring</span><span class="p">,</span> <span class="n">single_point_linestring_2</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Output: </p> <pre class="wiki">empty == empty := 0 single_point_linestring == single_point_linestring := 0 single_point_linestring == single_point_linestring_2 := 0 </pre></div><div class="wikipage" style="font-size: 80%"><p> Expected: </p> <pre class="wiki">empty == empty := 1 single_point_linestring == single_point_linestring := 1 single_point_linestring == single_point_linestring_2 := 1 </pre></div> Michael Maier <m-maier@…> https://svn.boost.org/trac10/ticket/12929 https://svn.boost.org/trac10/ticket/12929 Report #12926: UBSAN complains about "left shift of negative value -4" from boost::icl::interval_bounds::reverse_right() Thu, 23 Mar 2017 15:39:36 GMT Fri, 16 Mar 2018 14:58:30 GMT <pre class="wiki">/usr/include/boost/icl/interval_bounds.hpp:45:74: runtime error: left shift of negative value -4 #0 0x2e91091 in boost::icl::interval_bounds::reverse_right() const /usr/include/boost/icl/interval_bounds.hpp:45 #1 0x2eec8cc in boost::enable_if&lt;boost::icl::has_dynamic_bounds&lt;boost::icl::continuous_interval&lt;compatible_ring_position, std::less&gt; &gt;, boost::icl::continuous_interval&lt;compatible_ring_position, std::less&gt;::bounded_domain_type&gt;::type boost::icl::reverse_bounded_upper&lt;boost::icl::continuous_interval&lt;compatible_ring_position, std::less&gt; &gt;(boost::icl::continuous_interval&lt;compatible_ring_position, std::less&gt; const&amp;) /usr/include/boost/icl/concept/interval.hpp:509 </pre><p> boost-1.60.0-8.fc24.x86_64 </p> tgrabiec@… https://svn.boost.org/trac10/ticket/12926 https://svn.boost.org/trac10/ticket/12926 Report #12925: boost::asio::ip::tcp::socket::async_read_some() changes socket to non-blocking Thu, 23 Mar 2017 09:54:12 GMT Thu, 23 Mar 2017 09:54:12 GMT <p> I'm not sure if it's an issue or not, so I'll try to explain without lots of code examples: </p> <p> I have a socket: </p> <pre class="wiki">boost::asio::ip::tcp::socket sock(ioservice); sock.open(boost::asio::ip::tcp::v4()); </pre><p> I've connected the socket to external application with a third party API, which is a blocking call (for a blocking socket): </p> <pre class="wiki">third_party_connect(sock.native(), ip); </pre><p> And waited for some data on this socket: </p> <pre class="wiki">mSubSock.async_read_some(boost::asio::null_buffers(), std::bind(&amp;MyClass::OnData, this, std::placeholders::_1)); </pre><p> When MyClass::<a class="missing wiki">OnData</a> got called, I've noticed that the socket turned to non blocking socket: </p> <pre class="wiki">sock.native_non_blocking(); -&gt; returns 'true' anotherThirdPartyAPI(sub.native()); -&gt; fails with EAGAIN because socket turned to non-blocking </pre><p> Then another third party API call fails inside the MyClass::<a class="missing wiki">OnData</a> function with errno: EAGAIN. </p> <p> Is this the expected behaviour? why did my socket changed to non-blocking? (I've checked before the call to 'async_read_some' and it was blocking). I hope I was clear enough. Thanks </p> yogevch@… https://svn.boost.org/trac10/ticket/12925 https://svn.boost.org/trac10/ticket/12925 Report #12921: Linker Error with numpy in boost/python Wed, 22 Mar 2017 12:49:15 GMT Sun, 16 Apr 2017 08:46:12 GMT <p> I am the author of the attached (and solved) stackoverflow question: <a class="ext-link" href="http://stackoverflow.com/questions/42899376/lnk2001-error-when-using-boostnumpy/42936160#42936160"><span class="icon">​</span>http://stackoverflow.com/questions/42899376/lnk2001-error-when-using-boostnumpy/42936160#42936160</a> </p> <p> My question is, is the described behavior a bug? </p> <p> Let me start with the answer: </p> <p> Import the Boost\python numpy package like: </p> <p> #define BOOST_LIB_NAME "boost_numpy" </p> <p> #include &lt;boost/python.hpp&gt; </p> <p> The Problem description (copy from Stackoverflow): </p> <p> I am trying to call a C++ .dll from Python and return a numpy array. I am using </p> <p> Anaconda 2.7 x64 Visual Studio 2013 update 5 boost 1.63.0 prebuileded for lib64-msvc-12.0 I managed to compile this simple example frome here and run it in Python: </p> <p> #include "stdafx.h" #define BOOST_PYTHON_STATIC_LIB #include &lt;boost/python.hpp&gt; </p> <p> char const* greet() { </p> <blockquote> <p> return "hello, world"; </p> </blockquote> <p> } </p> <p> BOOST_PYTHON_MODULE(test) { </p> <blockquote> <p> using namespace boost::python; def("greet", greet); </p> </blockquote> <p> } I am unsure about the #define BOOST_PYTHON_STATIC_LIB but without it python could not open the pyd file. I suspected that python could not resolve the references to MSVCR120.dll in the dynamic build, but I am just guessing. </p> <p> Next step was to include &lt;boost/python/numpy.hpp&gt; and follow this instuctions and start with just creating a numpy::ndarray. Yes, I am aware that void is in contradiction to the intention of getting values, I just wanted to keep things as simple as possible. </p> <p> #include &lt;boost/python/numpy.hpp&gt; namespace p = boost::python; namespace np = boost::python::numpy; </p> <p> void getNPArray() { </p> <blockquote> <p> Py_Initialize(); np::initialize(); p::object tu = p::make_tuple('a', 'b', 'c'); np::ndarray const example_tuple = np::array(tu); return; </p> </blockquote> <p> } The import and namespace declarations compile without error. At next step I encountered the linker error. While Py_Initialize() worked fine, the np::initialize() causes the linker to throw </p> <p> error LNK2001: unresolved external symbol "void <span class="underline">cdecl boost::python::numpy::initialize(bool)" (?initialize@numpy@python@boost@@YAX_N@Z) And np::ndarray const example_tuple = np::array(tu) causes a </span></p> <p> error LNK2001: unresolved external symbol "class boost::python::numpy::ndarray <span class="underline">cdecl boost::python::numpy::array(class boost::python::api::object const &amp;)" (?array@numpy@python@boost@@YA?AVndarray@123@AEBVobject@api@23@@Z) As the linker is perfectly happy with the first example I am toally confused about what is going on here. I also tried to comment out all parts from the first example and just compile the second part witout any change in behaviour. </span></p> niko.koester@… https://svn.boost.org/trac10/ticket/12921 https://svn.boost.org/trac10/ticket/12921 Report #12918: Spirit:extra template parameters in mini_c sample Mon, 20 Mar 2017 12:04:41 GMT Tue, 21 Mar 2017 01:20:55 GMT <p> as the following code shows,<br /> <strong>boost_1_63_0\boost\utility\result_of.hpp</strong> </p> <pre class="wiki"> . . . template&lt;typename F, typename FArgs&gt; struct result_of_nested_result : F::template result&lt;FArgs&gt; {}; . . . </pre><p> struct <strong>result</strong> only needs one template parameter.But in the next two files in mini_c sample, <strong>result</strong> is provided more template parameters. Because of this, the code can't ran successfully. </p> <p> <strong>I write "/* */" behind the code need to be removed</strong> </p> <p> <strong>boost_1_63_0\libs\spirit\example\qi\compiler_tutorial\mini_c\annotation.hpp</strong><br /> </p> <pre class="wiki">#if !defined(BOOST_SPIRIT_MINIC_ANNOTATION_HPP) #define BOOST_SPIRIT_MINIC_ANNOTATION_HPP #include &lt;map&gt; #include &lt;boost/variant/apply_visitor.hpp&gt; #include &lt;boost/type_traits/is_base_of.hpp&gt; #include &lt;boost/mpl/bool.hpp&gt; #include "ast.hpp" namespace client { template &lt;typename Iterator&gt; struct annotation { template &lt;typename,typename&gt; /*the second "typename" need to be removed*/ struct result { typedef void type; }; std::vector&lt;Iterator&gt;&amp; iters; annotation(std::vector&lt;Iterator&gt;&amp; iters) : iters(iters) {} . . . } } </pre><p> <strong>boost_1_63_0\libs\spirit\example\qi\compiler_tutorial\mini_c\error_handler.hpp</strong> </p> <pre class="wiki">#if !defined(BOOST_SPIRIT_MINIC_ERROR_HANDLER_HPP) #define BOOST_SPIRIT_MINIC_ERROR_HANDLER_HPP #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; namespace client { template &lt;typename Iterator&gt; struct error_handler { template &lt;typename, typename, typename&gt; /*the second and the third "typename" need to be removed*/ struct result { typedef void type; }; error_handler(Iterator first, Iterator last) : first(first), last(last) {} . . . } } </pre> lisi <942748117@…> https://svn.boost.org/trac10/ticket/12918 https://svn.boost.org/trac10/ticket/12918 Report #12917: string_ref not constructible from rvalue strings anymore Mon, 20 Mar 2017 08:47:44 GMT Wed, 22 Mar 2017 14:27:17 GMT <p> The change introduced in this commit is a regression <a class="ext-link" href="https://github.com/boostorg/utility/commit/9960d9f395b79ee860e39064cd46961f76d2cb55"><span class="icon">​</span>https://github.com/boostorg/utility/commit/9960d9f395b79ee860e39064cd46961f76d2cb55</a> </p> <p> This breaks user code and is inconsistent with std::string_view. It is therefore undesirable. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/12917 https://svn.boost.org/trac10/ticket/12917 Report #12916: Network Issue Mon, 20 Mar 2017 06:30:10 GMT Sat, 29 Apr 2017 01:55:12 GMT <p> My Tcp server occasionally has async_read calls failing with: The semaphore timeout period has expired (121) This is from boost::asio::async_read on a connected TCP socket. I have master and slave server communication, Slave is sending request to master and master socket is showing "The semaphore time out period has expired". Is there any way to handle this issue on requested server? </p> rabindra@… https://svn.boost.org/trac10/ticket/12916 https://svn.boost.org/trac10/ticket/12916 Report #12913: Undefined behaviour in serialization library Sun, 19 Mar 2017 18:28:47 GMT Thu, 04 May 2017 16:12:02 GMT <p> Hi Robert, </p> <p> while testing multiprecision with clang's sanitizers I found some undefined behaviour in the serialization lib. The issue can be seen by running serialization's own tests with undefined-behaviour sanitizer turned on - in fact nearly all the tests fail, but most of the failures look like issues with the tests rather than the library. However building test_binary_xml_archive with clang++ -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=undefined results in: </p> <pre class="wiki">../../../boost/archive/detail/interface_oarchive.hpp:47:16: runtime error: downcast of address 0x7ffd0a934990 which does not point to an object of type 'boost::archive::xml_oarchive' 0x7ffd0a934990: note: object is of type 'boost::archive::xml_oarchive_impl&lt;boost::archive::xml_oarchive&gt;' fd 7f 00 00 78 ae d3 9c d6 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'boost::archive::xml_oarchive_impl&lt;boost::archive::xml_oarchive&gt;' SUMMARY: AddressSanitizer: undefined-behavior ../../../boost/archive/detail/interface_oarchive.hpp:47:16 in </pre><p> Which looks like a genuine issue to me. </p> John Maddock https://svn.boost.org/trac10/ticket/12913 https://svn.boost.org/trac10/ticket/12913 Report #12911: Allow u32regex_match to accept boost::string_view Fri, 17 Mar 2017 19:54:22 GMT Fri, 17 Mar 2017 19:54:22 GMT <p> Boost provides a lot of boost::u32regex_match overloads for various string types in regex/icu.hpp. </p> <p> It would be nice to also be able to pass a boost::string_view. Passing a char pointer from the string_view incurs the overhead of calling strlen() which doesn't work on strings that are not null terminated. </p> dani.user@… https://svn.boost.org/trac10/ticket/12911 https://svn.boost.org/trac10/ticket/12911 Report #12906: Add support for string_view Wed, 15 Mar 2017 14:00:38 GMT Fri, 10 Nov 2017 18:58:03 GMT <p> Please, add native support for attributes of type <code>boost::string_view</code> (and possibly <code>std::string_view</code>) to Boost.Spirit.Qi. I think, the best way to do this is to add a new directive, <code>as_string_view</code> (and <code>as_wstring_view</code>) which could be used similarly to <code>as_string</code> (<code>as_wstring</code>) but produce a <code>boost::string_view</code> (<code>boost::wstring_view</code>) value instead of <code>std::string</code> (<code>std::wstring</code>). Obviously, the directive would only be usable if the character iterator type is a pointer, but that is likely the most typical case anyway. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/12906 https://svn.boost.org/trac10/ticket/12906 Report #12904: canonical fails for relative symbolic link on NTFS Tue, 14 Mar 2017 16:24:57 GMT Tue, 14 Mar 2017 16:36:46 GMT <p> I've an path inside a directory which is a symbolic link at an NTFS partition. The link points to a another directory in the same base directory. </p> <p> boost throws </p> <pre class="wiki">BOOST_ASSERT_MSG(result.is_absolute(), "canonical() implementation error; please report"); </pre><p> in <code>operations.cpp, line 881</code> </p> <p> Here are more details: I call <code>boost::filesystem::canonical}} with following ({{{const wchar_t*</code>) parameter: </p> <blockquote> <p> <code>L"C:\\Projekte\\50_Workspace\\out\\x64\\.\\audio\\Test.dll"</code> </p> </blockquote> <p> The current working directory is </p> <blockquote> <p> <code>L"C:\\Projekte\\50_Workspace\\out\\x64"</code> </p> </blockquote> <p> which is a symlink to <code>"x64.Debug"}} in the same base directory (in {{{"C:\\Projekte\\50_Workspace\\out"</code>). </p> <p> Boost detects that the <code>"x64"</code> is a relative symbolic link and enters the <code>"else"</code> in <code>line 868</code>. But the created new_source looks strange: </p> <blockquote> <p> <code>"x64.Debug/Projekte\\50_Workspace\\out\\x64\\.\\audio\\Test.dll"</code> </p> </blockquote> <p> In my opinion it should create either </p> <blockquote> <p> <code>"C:\\Project\\50_Workspace\\out\\x64.Debug\\.\\audio\\Test.dll"</code> </p> </blockquote> <p> or </p> <blockquote> <p> <code>"C:/Project/50_Workspace/out/x64.Debug/./audio/Test.dll"</code> </p> </blockquote> <p> for the next loop... </p> Matthias@… https://svn.boost.org/trac10/ticket/12904 https://svn.boost.org/trac10/ticket/12904 Report #12903: division by 0 Tue, 14 Mar 2017 03:23:08 GMT Wed, 15 Mar 2017 03:03:23 GMT <p> Input for Voronoi: </p> <p> points.push_back(point(1, 1)); points.push_back(point(3, 1)); points.push_back(point(1, 3)); points.push_back(point(3, 3)); points.push_back(point(-1, 1)); points.push_back(point(1, -1)); points.push_back(point(5, 1)); points.push_back(point(3, -1)); points.push_back(point(-1, 3)); points.push_back(point(1, 5)); points.push_back(point(5, 3)); points.push_back(point(3, 5)); VD vd; construct_voronoi(points.begin(), points.end(), &amp;vd); </p> <p> I get a division by 0. Is this normal? What are the restrictions on the points? </p> anonymous https://svn.boost.org/trac10/ticket/12903 https://svn.boost.org/trac10/ticket/12903 Report #12902: boost test labels Mon, 13 Mar 2017 18:20:16 GMT Thu, 21 Jun 2018 05:13:35 GMT <p> there is a tutorial about new boost test feature - the labels. but it is not clear how to run all tests in testsuite except those that are with a specific label. could you help, please? </p> dimitry https://svn.boost.org/trac10/ticket/12902 https://svn.boost.org/trac10/ticket/12902 Report #12900: Can't compile Boost.Typeof with MSVC and flag /permissive- Mon, 13 Mar 2017 13:28:22 GMT Thu, 30 Mar 2017 15:23:29 GMT <p> Can't compile Boost.Typeof with VC++ 2015/2017 and compiler flag "/permissive-" </p> arkadiy_s@… https://svn.boost.org/trac10/ticket/12900 https://svn.boost.org/trac10/ticket/12900 Report #12899: ERROR: Error LNK1104 cannot open file 'libboost_date_time-vc140-mt-gd-1_63.lib' Sat, 11 Mar 2017 17:00:43 GMT Sat, 11 Mar 2017 17:00:43 GMT <p> Platform: Windows 10 </p> <p> Application Software: C++ Visual Studio 2017 Community RC and “boost_1_63_0” </p> <p> I attempted to build using “bootstrap” - </p> <p> ### ### Using 'msvc' toolset. ### </p> <p> C:\Boost\boost_1_63_0\tools\build\src\engine&gt;if exist bootstrap rd /S /Q bootstrap </p> <p> C:\Boost\boost_1_63_0\tools\build\src\engine&gt;md bootstrap </p> <p> C:\Boost\boost_1_63_0\tools\build\src\engine&gt;cl /nologo /GZ /Zi /MLd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c </p> <p> C:\Boost\boost_1_63_0\tools\build\src\engine&gt;exit /b 9009 </p> Kurt VanderKoi https://svn.boost.org/trac10/ticket/12899 https://svn.boost.org/trac10/ticket/12899 Report #12896: [Utility] string_view's comparison operators are not marked "constexpr" Sat, 11 Mar 2017 05:15:48 GMT Thu, 04 May 2017 02:59:05 GMT <p> During the implementation of my GSoC static_map competency project, I found that in Boost 1.63, string_view's comparison operator was not marked as constexpr(<a href="http://www.boost.org/doc/libs/1_63_0/boost/utility/string_view.hpp">http://www.boost.org/doc/libs/1_63_0/boost/utility/string_view.hpp</a>). According to cppreference, string_view in C++17's standard library includes constexpr comparison operators, and actually the implementation of Boost's comparison operators calls constexpr compare() method. However, constexpr compare() in Boost never works in C++14, since it uses std::char_traits in standard library, of which char_traits::compare is not marked constexpr until C++17. It seems possible to backport C++17's constexpr char_traits into Boost's library. </p> Zheng Luo https://svn.boost.org/trac10/ticket/12896 https://svn.boost.org/trac10/ticket/12896 Report #12895: VS 2012: zip_iterator dereference causes a compiler error Fri, 10 Mar 2017 21:26:44 GMT Thu, 30 Mar 2017 12:54:25 GMT <p> Using Visual Studio 2012 (vc110), any direct or indirect usage of the dereference operation of zip_iterator produces now a compiler error, a simple reproducer is the following example: </p> <pre class="wiki">#include "boost/iterator/zip_iterator.hpp" int main() { typedef boost::tuple&lt;char*, char*&gt; iterators_t; char chars[] = "abc"; iterators_t iters(chars + 0, chars + 3); boost::iterators::zip_iterator&lt;iterators_t&gt; zip(iters); *zip; } </pre><p> which results in the following compiler output: </p> <pre class="wiki">1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2825: '_Iter': must be a class or namespace when followed by '::' 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\iterator_traits.hpp(28) : see reference to class template instantiation 'std::iterator_traits&lt;_Iter&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\zip_iterator.hpp(90) : see reference to class template instantiation 'boost::iterators::iterator_reference&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=char *const 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\utility\result_of.hpp(190) : see reference to class template instantiation 'boost::iterators::detail::dereference_iterator::result&lt;&lt;unnamed-symbol&gt;&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; &lt;unnamed-symbol&gt;=boost::iterators::detail::dereference_iterator (char *const &amp;) 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\utility\result_of.hpp(197) : see reference to class template instantiation 'boost::detail::result_of_nested_result&lt;F,FArgs&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::iterators::detail::dereference_iterator, 1&gt; FArgs=boost::iterators::detail::dereference_iterator (char *const &amp;) 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\utility\detail\result_of_iterate.hpp(37) : see reference to class template instantiation 'boost::detail::tr1_result_of_impl&lt;F,FArgs,HasResultType&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::iterators::detail::dereference_iterator, 1&gt; FArgs=boost::iterators::detail::dereference_iterator (char *const &amp;), 1&gt; HasResultType=false 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\utility\detail\result_of_iterate.hpp(160) : see reference to class template instantiation 'boost::tr1_result_of&lt;F&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::iterators::detail::dereference_iterator (char *const &amp;) 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\view\transform_view\detail\apply_transform_result.hpp(31) : see reference to class template instantiation 'boost::result_of&lt;F&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::iterators::detail::dereference_iterator (char *const &amp;) 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(39) : see reference to class template instantiation 'boost::fusion::detail::apply_transform_result&lt;F&gt;::apply&lt;T0&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::iterators::detail::dereference_iterator, 1&gt; T0=char *const &amp; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\mpl\aux_\preprocessed\plain\apply.hpp(43) : see reference to class template instantiation 'boost::mpl::apply_wrap1&lt;F,T1&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::fusion::detail::apply_transform_result&lt;boost::iterators::detail::dereference_iterator&gt;, 1&gt; T1=char *const &amp; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\mpl\aux_\preprocessed\plain\apply.hpp(51) : see reference to class template instantiation 'boost::mpl::apply1&lt;F,T1&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::fusion::detail::apply_transform_result&lt;boost::iterators::detail::dereference_iterator&gt;, 1&gt; T1=char *const &amp; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\view\transform_view\detail\deref_impl.hpp(38) : see reference to class template instantiation 'boost::mpl::apply&lt;F,T1&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; F=boost::fusion::detail::apply_transform_result&lt;boost::iterators::detail::dereference_iterator&gt;, 1&gt; T1=char *const &amp; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\iterator\deref.hpp(54) : see reference to class template instantiation 'boost::fusion::extension::deref_impl&lt;boost::fusion::transform_view_iterator_tag&gt;::apply&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const iterators_t&gt;,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\adapted\boost_tuple\detail\build_cons.hpp(53) : see reference to class template instantiation 'boost::fusion::result_of::deref&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const iterators_t&gt;,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\adapted\boost_tuple\detail\build_cons.hpp(52) : while compiling class template member function 'boost::tuples::cons&lt;HT,TT&gt; boost::fusion::detail::build_tuple_cons&lt;First,Last&gt;::call(const First &amp;,const Last &amp;)' 1&gt; with 1&gt; [ 1&gt; HT=char &amp;, 1&gt; TT=boost::tuples::cons&lt;char &amp;,boost::fusion::detail::build_tuple_cons&lt;boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;,boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;&gt;::type&gt;, 1&gt; First=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const iterators_t&gt;,boost::iterators::detail::dereference_iterator&gt;, 1&gt; Last=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const boost::tuples::null_type&gt;,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\adapted\boost_tuple\detail\convert_impl.hpp(43) : see reference to function template instantiation 'boost::tuples::cons&lt;HT,TT&gt; boost::fusion::detail::build_tuple_cons&lt;First,Last&gt;::call(const First &amp;,const Last &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; HT=char &amp;, 1&gt; TT=boost::tuples::cons&lt;char &amp;,boost::fusion::detail::build_tuple_cons&lt;boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;,boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;&gt;::type&gt;, 1&gt; First=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const iterators_t&gt;,boost::iterators::detail::dereference_iterator&gt;, 1&gt; Last=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const boost::tuples::null_type&gt;,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\adapted\boost_tuple\detail\convert_impl.hpp(37) : see reference to class template instantiation 'boost::fusion::detail::build_tuple_cons&lt;First,Last&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; First=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const iterators_t&gt;,boost::iterators::detail::dereference_iterator&gt;, 1&gt; Last=boost::fusion::transform_view_iterator&lt;boost::fusion::boost_tuple_iterator&lt;const boost::tuples::null_type&gt;,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\fusion\sequence\convert.hpp(37) : see reference to class template instantiation 'boost::fusion::extension::convert_impl&lt;boost::fusion::boost_tuple_tag&gt;::apply&lt;Sequence&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Sequence=const boost::fusion::transform_view&lt;const iterators_t,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\zip_iterator.hpp(214) : see reference to class template instantiation 'boost::fusion::result_of::convert&lt;Tag,Sequence&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Tag=tag, 1&gt; Sequence=const boost::fusion::transform_view&lt;const iterators_t,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\zip_iterator.hpp(289) : see reference to function template instantiation 'reference boost::iterators::detail::converter&lt;reference&gt;::call&lt;boost::fusion::transform_view&lt;Sequence1,Sequence2&gt;&gt;(Seq)' being compiled 1&gt; with 1&gt; [ 1&gt; reference=reference, 1&gt; Sequence1=const iterators_t, 1&gt; Sequence2=boost::iterators::detail::dereference_iterator, 1&gt; Seq=boost::fusion::transform_view&lt;const iterators_t,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\zip_iterator.hpp(289) : see reference to function template instantiation 'reference boost::iterators::detail::converter&lt;reference&gt;::call&lt;boost::fusion::transform_view&lt;Sequence1,Sequence2&gt;&gt;(Seq)' being compiled 1&gt; with 1&gt; [ 1&gt; reference=reference, 1&gt; Sequence1=const iterators_t, 1&gt; Sequence2=boost::iterators::detail::dereference_iterator, 1&gt; Seq=boost::fusion::transform_view&lt;const iterators_t,boost::iterators::detail::dereference_iterator&gt; 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\zip_iterator.hpp(284) : while compiling class template member function 'boost::tuples::cons&lt;HT,TT&gt; boost::iterators::zip_iterator&lt;IteratorTuple&gt;::dereference(void) const' 1&gt; with 1&gt; [ 1&gt; HT=char &amp;, 1&gt; TT=boost::tuples::cons&lt;char &amp;,boost::fusion::detail::build_tuple_cons&lt;boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;,boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;&gt;::type&gt;, 1&gt; IteratorTuple=iterators_t 1&gt; ] 1&gt; c:\projects\thirdparty\boost_1_63_0\boost\iterator\iterator_facade.hpp(549) : see reference to function template instantiation 'boost::tuples::cons&lt;HT,TT&gt; boost::iterators::zip_iterator&lt;IteratorTuple&gt;::dereference(void) const' being compiled 1&gt; with 1&gt; [ 1&gt; HT=char &amp;, 1&gt; TT=boost::tuples::cons&lt;char &amp;,boost::fusion::detail::build_tuple_cons&lt;boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;,boost::fusion::single_view_iterator&lt;const boost::fusion::single_view&lt;char &amp;&gt;,boost::mpl::int_&lt;1&gt;&gt;&gt;::type&gt;, 1&gt; IteratorTuple=iterators_t 1&gt; ] 1&gt; h:\develop\cpp\c++0x\vssandbox - 2011\main.cpp(8) : see reference to class template instantiation 'boost::iterators::zip_iterator&lt;IteratorTuple&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; IteratorTuple=iterators_t 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2039: 'iterator_category' : is not a member of '`global namespace'' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2146: syntax error : missing ';' before identifier 'iterator_category' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2602: 'std::iterator_traits&lt;_Iter&gt;::iterator_category' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::iterator_category' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(364): error C2868: 'std::iterator_traits&lt;_Iter&gt;::iterator_category' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365): error C2825: '_Iter': must be a class or namespace when followed by '::' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365): error C2039: 'value_type' : is not a member of '`global namespace'' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365): error C2146: syntax error : missing ';' before identifier 'value_type' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365): error C2602: 'std::iterator_traits&lt;_Iter&gt;::value_type' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::value_type' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(365): error C2868: 'std::iterator_traits&lt;_Iter&gt;::value_type' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366): error C2825: '_Iter': must be a class or namespace when followed by '::' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366): error C2039: 'difference_type' : is not a member of '`global namespace'' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366): error C2146: syntax error : missing ';' before identifier 'difference_type' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366): error C2602: 'std::iterator_traits&lt;_Iter&gt;::difference_type' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::difference_type' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(366): error C2868: 'std::iterator_traits&lt;_Iter&gt;::difference_type' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368): error C2825: '_Iter': must be a class or namespace when followed by '::' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368): error C2039: 'pointer' : is not a member of '`global namespace'' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368): error C2146: syntax error : missing ';' before identifier 'pointer' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368): error C2602: 'std::iterator_traits&lt;_Iter&gt;::pointer' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::pointer' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(368): error C2868: 'std::iterator_traits&lt;_Iter&gt;::pointer' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369): error C2825: '_Iter': must be a class or namespace when followed by '::' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369): error C2039: 'reference' : is not a member of '`global namespace'' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369): error C2146: syntax error : missing ';' before identifier 'reference' 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369): error C2602: 'std::iterator_traits&lt;_Iter&gt;::reference' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt; c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::reference' 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(369): error C2868: 'std::iterator_traits&lt;_Iter&gt;::reference' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=char *const 1&gt; ] 1&gt;c:\projects\thirdparty\boost_1_63_0\boost\fusion\adapted\boost_tuple\detail\build_cons.hpp(53): error C2440: 'initializing' : cannot convert from 'char *const ' to 'char &amp;' ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== </pre><p> The problem seems rather severe to me and may occur even though the user-code didn't actually use zip_iterator directly. In fact I became aware of the problem when a colleague asked me why the following code would no longer be accepted when we switched from Boost 1.57 to Boost 1.63: </p> <pre class="wiki">#include "boost/range/combine.hpp" int main() { int a[] = { 1, 2, 3 }; int b[] = { 4, 5, 6 }; for(const auto&amp; p : boost::combine(a, b)) { } } </pre><p> According to my not fully completed analysis, the problem is caused, because the current implementation of zip_iterator::dereference relies on a recently introduced feature of std::iterator_traits being now sfinae-friendly (See LWG issue 2408), which is not the case in the VS 2012 Standard Library. This assumption gets support by the fact that both VS 2015 and VS 2017 accept the code (And both compiler's Standard Libraries provide sfinae-friendly iterator_traits). </p> daniel.kruegler@… https://svn.boost.org/trac10/ticket/12895 https://svn.boost.org/trac10/ticket/12895 Report #12893: Add debug check for boost::container::string::c_str method Fri, 10 Mar 2017 13:19:51 GMT Fri, 10 Mar 2017 13:19:51 GMT <p> If boost::container::string was destroyed then result of c_str method must be invalidated. It will help to catch errors in a application. </p> <p> Notes: </p> <ol><li>std::string on MS Visual Studio 2015 is already does this check. </li><li>some patterns are here <a class="ext-link" href="http://stackoverflow.com/a/127404"><span class="icon">​</span>http://stackoverflow.com/a/127404</a> </li></ol><p> Example: </p> <pre class="wiki">#include &lt;cassert&gt; #include &lt;string&gt; #include &lt;boost/container/string.hpp&gt; bool isAbcd(const char* ch) { if ( ch[0] == 'a' &amp;&amp; ch[1] == 'b' &amp;&amp; ch[2] == 'c' &amp;&amp; ch[3] == 'd' &amp;&amp; ch[4] == '\0' ) { return true; } return false; } void exampleNewDelete() { char* ch = new char[5]; ch[0] = 'a'; ch[1] = 'b'; ch[2] = 'c'; ch[3] = 'd'; ch[4] = '\0'; assert(isAbcd(ch)); delete[] ch; const bool ok = isAbcd(ch); // if app crash then test OK if ( ok ) { assert(false); // test failed } // test OK } void exampleStdString() { char* ch; ch = (char*)std::string("abcd").c_str(); const bool ok = isAbcd(ch); // if app crash then test OK if ( ok ) { assert(false); // test failed } // test OK } void exampleBoostString() { char* ch; ch = (char*)boost::container::string("abcd").c_str(); const bool ok = isAbcd(ch); // if app crash then test OK if ( ok ) { assert(false); // test failed } // test OK } int main() { //exampleNewDelete(); //exampleStdString(); //exampleBoostString(); return 0; } </pre> Lev Sch <zorechfan@…> https://svn.boost.org/trac10/ticket/12893 https://svn.boost.org/trac10/ticket/12893 Report #12892: range/algorithm_ext/insert.hpp won't compile Fri, 10 Mar 2017 08:37:50 GMT Fri, 10 Mar 2017 10:33:46 GMT <p> Due to a missing return statement in function Container&amp; insert( Container&amp; on, const Range&amp; from ), line 37. </p> ondrej.polacek@… https://svn.boost.org/trac10/ticket/12892 https://svn.boost.org/trac10/ticket/12892 Report #12891: boost::signals::scoped_connection is copyable and the documentation says it is not Thu, 09 Mar 2017 15:14:25 GMT Thu, 09 Mar 2017 15:14:25 GMT <p> The documentation for boost::signals:scoped_connection indicates that scoped_connection is noncopyable. This is not the case and it can lead the user into traps such as putting it in a std::vector with emplace_back(). </p> <p> At the very least the documentation should be fixed. </p> thomas.sondergaard@… https://svn.boost.org/trac10/ticket/12891 https://svn.boost.org/trac10/ticket/12891 Report #12890: Misleading documentation for regex_replace Thu, 09 Mar 2017 14:44:06 GMT Fri, 10 Mar 2017 10:34:40 GMT <p> The documentation for regex_replace describes what the function does, but the description is incorrect. </p> <p> <a href="http://www.boost.org/doc/libs/1_63_0/libs/regex/doc/html/boost_regex/ref/regex_replace.html">http://www.boost.org/doc/libs/1_63_0/libs/regex/doc/html/boost_regex/ref/regex_replace.html</a> </p> <p> On this line: </p> <blockquote class="citation"> <p> calls </p> <blockquote class="citation"> <p> std::copy(m.prefix().first, m.prefix().last, out), </p> </blockquote> </blockquote> <p> the ".last" should be ".second", and "std::copy" is actually "re_detail::copy" </p> <p> And on this line: </p> <blockquote class="citation"> <p> calls </p> <blockquote class="citation"> <p> std::copy(last_m.suffix().first, last_m,suffix().last, out) </p> </blockquote> </blockquote> <p> Same as above, and there is also a typo in "last_m,suffix().last" (comma instead of period). </p> anonymous https://svn.boost.org/trac10/ticket/12890 https://svn.boost.org/trac10/ticket/12890 Report #12884: to_string() Mon, 06 Mar 2017 20:16:23 GMT Wed, 08 Mar 2017 18:52:15 GMT <p> Hi, </p> <p> Is to_string() here supposed to match to_string() in boost\exception\to_string.hpp? </p> <p> class shared_array2 : public boost::iterator_range&lt;T*&gt; {}; </p> <p> typedef shared_array2&lt;unsigned char&gt; shared_data; </p> <p> to_string(shared_data()); </p> <p> I really didn't expect this to_string() to be found here.. is it a feature or is it a bug? </p> Olaf <olafvdspek@…> https://svn.boost.org/trac10/ticket/12884 https://svn.boost.org/trac10/ticket/12884 Report #12882: Boost.Log fails to build on Solaris 11.3 x86 using Developer Studio 12.5 Thu, 02 Mar 2017 06:47:03 GMT Thu, 02 Mar 2017 08:52:14 GMT <p> I'm build Boost 1.63.0 on Solaris 11.3 x86 using Developer Studio 12.5. </p> <p> I use the following command to do the build: </p> <p> ./b2 link=shared runtime-link=shared address-model=64 threading=multi variant=release cxxflags="-std=c++14" linkflags="-std=c++14" </p> <p> The above build fails in Boost.Log with the error message: </p> <p> "libs/log/src/named_scope.cpp", line 118: Error: Overloading ambiguity between "boost::optional&lt;boost::log::v2_mt_posix::attributes::named_scope_list&gt;::operator=&lt;boost::log::v2_mt_posix::attributes::named_scope_list&amp;&gt;(boost::log::v2_mt_posix::attributes::named_scope_list&amp;)" and "boost::optional&lt;boost::log::v2_mt_posix::attributes::named_scope_list&gt;::operator=&lt;boost::log::v2_mt_posix::attributes::named_scope_list&amp;&gt;(boost::log::v2_mt_posix::attributes::named_scope_list&amp;)". </p> <p> I have looked at the file where the error is occurring but due to my unfamiliarity with this area of Boost, I couldn't figure out what the problem is. However, it is possible that the problem could have something to do with Boost.Optional. </p> <p> Can you let me know what I can do in order for the Boost build to successfully generate the Boost.Log library files. </p> lcarreon@… https://svn.boost.org/trac10/ticket/12882 https://svn.boost.org/trac10/ticket/12882 Report #12880: Alignment information @ PP time Wed, 01 Mar 2017 14:42:25 GMT Fri, 03 Mar 2017 13:37:23 GMT <p> Please add a macro that can be used for selective compilation based on the guaranteed alignment of the default allocator, i.e. something like: <a class="ext-link" href="https://bitbucket.org/eigen/eigen/src/d4e10456d28275c27f417efc119024749c979b7e/Eigen/src/Core/util/Memory.h"><span class="icon">​</span>https://bitbucket.org/eigen/eigen/src/d4e10456d28275c27f417efc119024749c979b7e/Eigen/src/Core/util/Memory.h</a> </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12880 https://svn.boost.org/trac10/ticket/12880 Report #12879: boost::filesystem::rename could result in copy instead of rename (windows) Wed, 01 Mar 2017 12:27:36 GMT Sun, 16 Apr 2017 08:41:21 GMT <p> caused by <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6809"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6809</a> </p> <p> from msdn <a class="ext-link" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx"><span class="icon">​</span>https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx</a> If the file is successfully copied to a different volume and the original file is unable to be deleted, the function succeeds leaving the source file intact. </p> <p> rename should produce error when source file can't be erased. </p> anonymous https://svn.boost.org/trac10/ticket/12879 https://svn.boost.org/trac10/ticket/12879 Report #12875: ip::tcp::iostream flush() doesn't clear the buffer. Neither does clear(); Tue, 28 Feb 2017 17:27:02 GMT Sun, 16 Apr 2017 09:31:26 GMT <p> Code something like the below shows the issue: </p> <p> std::string postData = "This is my post data."; </p> <p> ip::tcp::iostream stream; </p> <p> stream.expires_from_now(boost::posix_time::seconds(10)); </p> <p> stream.connect("192.168.1.128", "http"); </p> <p> stream &lt;&lt; "POST /myRestfulPath HTTP/1.1\r\n"; </p> <p> stream &lt;&lt; "Content-Type: application/x-www-form-urlencoded\r\n"; </p> <p> stream &lt;&lt; "Host: 192.168.1.128:8080\r\n"; </p> <p> stream &lt;&lt; "Content-Length: " &lt;&lt; postData.size() &lt;&lt; "\r\n"; </p> <p> stream &lt;&lt; "Connection: Close\r\n\r\n"; </p> <p> stream.flush(); </p> <p> stream &lt;&lt; postData.c_str(); </p> <p> stream.flush(); </p> <p> Using Wireshark, the headers show up with the first flush, but also show up from the second, with the postData appended. </p> <p> I understand that I do not need the first flush in this example. However, the server requires an "Expect: 100-Continue" so therefore I need to send before the postData, and then receive the "Continue", and then send the postData. (Not shown.) </p> <p> stream.clear() doesn't clear what flush left behind, either. </p> ericrsoldan@… https://svn.boost.org/trac10/ticket/12875 https://svn.boost.org/trac10/ticket/12875 Report #12873: boost.heap calls non-existing constructor of iterator_adaptor Sun, 26 Feb 2017 20:23:02 GMT Sun, 05 Mar 2017 14:16:57 GMT <p> boost.heap tries to call the constructor <code>boost::iterator_adaptor(0)</code>, which doesn't exist, in several places. For example in <code>boost/heap/detail/mutable_heap.hpp</code> (lines 225-243): </p> <pre class="wiki"> typedef boost::iterator_adaptor&lt;ordered_iterator, const_list_iterator, value_type const, boost::forward_traversal_tag &gt; adaptor_type; typedef const_list_iterator iterator; typedef typename q_type::ordered_iterator_dispatcher ordered_iterator_dispatcher; friend class boost::iterator_core_access; public: ordered_iterator(void): adaptor_type(0), unvisited_nodes(indirect_cmp()), q_(NULL) {} ordered_iterator(const priority_queue_mutable_wrapper * q, indirect_cmp const &amp; cmp): adaptor_type(0), unvisited_nodes(cmp), q_(q) {} </pre><p> This will result in "no matching constructor" compilation errors when trying to construct e.g. an <code>ordered_iterator</code> for a <code>d_ary_heap</code> (see attached program). </p> <p> The same non-existing call is made on <code>detail/mutable_heap.hpp:193</code>, <code>detail/stable_heap.hpp:534</code>, and <code>detail/tree_iterator.hpp:214,218,231,340</code> </p> Bart van Merrienboer <bart.vanmerrienboer@…> https://svn.boost.org/trac10/ticket/12873 https://svn.boost.org/trac10/ticket/12873 Report #12872: icl calls set::insert with invalid iterator hint Sun, 26 Feb 2017 08:18:28 GMT Sun, 26 Feb 2017 08:23:53 GMT <p> When using split_interval_set&lt;T&gt; the code in the add_segment function in interval_base_set.hpp tries to get the prior of an iterator that may be the first iterator of the underlying set container. This is then used as an insertion hint which causes a segfault in some standard container libraries (for example, the standard library on macOS). </p> <p> All other parts of the file use cyclic_prior for this purpose. </p> David Lacey <dave.lacey@…> https://svn.boost.org/trac10/ticket/12872 https://svn.boost.org/trac10/ticket/12872 Report #12871: boost::posix_time::operator<< results in heap corruption Sun, 26 Feb 2017 05:50:43 GMT Wed, 01 Mar 2017 11:24:44 GMT <p> We are using boost 1.59.0 compiled with Visual Studio 2015. Our application is multi-threaded and is running on a multi-processor server. I am troubleshooting a crash issue related to memory corruption for a while now. Finally able to run a debug build under the load and am getting heap corruption errors from boost::posix_time::operator&lt;&lt;. </p> <p> HEAP[IPCaptureD.exe]: HEAP: Free Heap block 3A821208 modified at 3A821910 after it was freed (3290.33c0): Break instruction exception - code 80000003 (first chance) eax=fffdd000 ebx=3a821208 ecx=3a821208 edx=00000047 esi=3a82120a edi=00d20000 eip=77df7aa6 esp=1e80ebdc ebp=1e80ed30 iopl=0 nv up ei pl nz na po nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202 ntdllRtlpBreakPointHeap+0x19: 77df7aa6 cc int 3 </p> <p> <strong>STACK_TEXT:</strong> 1e80ebd8 77d97167 a2f3581f 00000230 00000224 ntdllRtlpBreakPointHeap+0x19 1e80ed30 77d50ef4 00000224 00000240 00000000 ntdllRtlpAllocateHeap+0x46233 1e80edc4 77df628a 00d20000 50000163 00000224 ntdllRtlAllocateHeap+0x14d 1e80ee24 77d96efb 00000224 a2f35aaf 00000230 ntdllRtlDebugAllocateHeap+0xdf 1e80ef80 77d50ef4 00000224 00000230 00000000 ntdllRtlpAllocateHeap+0x45fc7 1e80f014 6be24158 00d20000 40000060 00000224 ntdllRtlAllocateHeap+0x14d 1e80f074 6be23f66 00000200 00000002 694a2dd0 ucrtbased!_toupper+0x248 1e80f098 6be264fb 00000200 00000002 694a2dd0 ucrtbased!_toupper+0x56 1e80f0b8 694ad658 00000100 00000002 00000002 ucrtbased!_calloc_dbg+0x4b 1e80f0e4 694c0622 1e80f0f0 3469be60 00000005 MSVCP140D!_Getctype+0x28 [f:\dd\vctools\crt\crtw32\stdcpp\_tolower.c @ 140] 1e80f114 694c0d41 1e80f128 1e80f434 1e80f374 MSVCP140D!std::_Locinfo::_Getctype+0x12 [f:\dd\vctools\crt\crtw32\stdhpp\xlocinfo @ 117] 1e80f16c 694bc31e 1e80f2c8 bceb0904 3469be60 MSVCP140D!std::ctype&lt;unsigned short&gt;::_Init+0x21 [f:\dd\vctools\crt\crtw32\stdhpp\xlocale @ 2904] 1e80f18c 694e9ac7 1e80f2c8 00000000 bceb0ac0 MSVCP140D!std::ctype&lt;unsigned short&gt;::ctype&lt;unsigned short&gt;+0x4e [f:\dd\vctools\crt\crtw32\stdhpp\xlocale @ 2882] 1e80f248 694cebf1 1e80f2c8 0000003f 3ac32248 MSVCP140D!std::locale::_Locimp::_Makeushloc+0x77 [f:\dd\vctools\crt\crtw32\stdcpp\wlocale.cpp @ 85] 1e80f2ac 694ce5f5 1e80f2c8 0000003f 3ac32248 MSVCP140D!std::locale::_Locimp::_Makeloc+0x391 [f:\dd\vctools\crt\crtw32\stdcpp\locale.cpp @ 80] 1e80f31c 694bc7f6 3ac32248 00d2eb48 bceb0bc8 MSVCP140D!std::locale::_Locimp::_Locimp_ctor+0x55 [f:\dd\vctools\crt\crtw32\stdcpp\locale.cpp @ 92] 1e80f340 694d166b 00d2eb48 bceb0be0 1e80f388 MSVCP140D!std::locale::_Locimp::_Locimp+0x96 [f:\dd\vctools\crt\crtw32\stdhpp\xlocale @ 219] 1e80f368 0074e38e 00d2eb48 1e80f388 1e80f404 MSVCP140D!std::locale::_Locimp::_New_Locimp+0x4b [f:\dd\vctools\crt\crtw32\stdcpp\locale0.cpp @ 195] 1e80f37c 0074e902 1e80f3d4 3ad93a38 d5bbdec2 IPCaptureD!std::locale::locale&lt;boost::date_time::time_facet&lt;boost::posix_time::ptime,char,std::ostreambuf_iterator&lt;char,std::char_traits&lt;char&gt; &gt; &gt; &gt;+0x1e [c:\program files (x86)\microsoft visual studio 14.0\vc\include\xlocale @ 288] 1e80f440 007633ce 1e80f554 1e80f5f4 d5bbdd42 IPCaptureD!boost::posix_time::operator&lt;&lt;&lt;char,std::char_traits&lt;char&gt; &gt;+0x232 [c:\views\develop\recorder_alt\recorder_common\media_common\common\oem\boost\boost\date_time\posix_time\posix_time_io.hpp @ 191] 1e80f7c0 0074c521 1e80fa44 1c9f6ba0 3b3c5e78 IPCaptureD!`anonymous namespace'::TimeZoneDatabase::ConvertUTCToTimeZone+0x3ee [c:\views\develop\recorder_alt\recorder_common\src\shared\timestamp.cpp @ 121] </p> <p> <strong>SYMBOL_NAME:</strong> heap_corruption!heap_corruption </p> nmmreddy11@… https://svn.boost.org/trac10/ticket/12871 https://svn.boost.org/trac10/ticket/12871 Report #12870: bugs?: xpressive: xp::skip(xp::_s) does not work Sun, 26 Feb 2017 04:05:24 GMT Sun, 26 Feb 2017 04:05:24 GMT <p> If you execute the following code, "[ 4]" will be output, but right output is supposed to be "<a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a>". </p> <h3 class="section" id="SourceCode">Source Code</h3> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/xpressive/xpressive.hpp&gt; using namespace std; namespace xp = boost::xpressive; int main() { xp::sregex rule2 = xp::skip(xp::_s)('(' &gt;&gt; (xp::s1= *xp::_d) &gt;&gt; ')'); xp::sregex rule1 = xp::skip(xp::_s)(rule2); xp::smatch match1; if (!xp::regex_match(string("( 4 )"), match1, rule1)) { cout &lt;&lt; "syntax error" &lt;&lt; endl; } else { auto&amp;&amp; match2 = *match1.nested_results().begin(); string text = match2[1]; cout &lt;&lt; "[" &lt;&lt; text &lt;&lt; "]" &lt;&lt; endl; } return 0; } </pre><h3 class="section" id="CompilationEnvironment">Compilation Environment</h3> <ul><li>[OS] centos 6.8 </li><li>[Compiler] g++ v4.9.3 </li><li>[Command Line] g++ -std=c++11 a.cpp </li><li>[Libs] boost-1.63.0 </li></ul><p> Thanks for Boost.Xpressive! </p> shinichiro.hamada@… https://svn.boost.org/trac10/ticket/12870 https://svn.boost.org/trac10/ticket/12870 Report #12869: Getting the path of the current executable Sat, 25 Feb 2017 12:08:01 GMT Thu, 24 May 2018 15:08:08 GMT <p> I couldn't find any other ticket relating to this issue, so I'm asking here. I think it would be <em>really</em> useful if Boost's <a class="missing wiki">FileSystem</a> included a method for getting the path of the current executable in a cross-platform way. I needed this kind of functionality myself just now because I needed to find some files relative to the executable's dir, and I think that a lot of projects can benefit from it. As goes without saying, a solution for this problem in a mature well-tested library beats a <em>quickfix</em> in one of my own projects. </p> <p> As has been noted in several threads on <a class="missing wiki">StackOverflow</a>, using <code>argv[0]</code> to derive the current path has its flaws on many platforms (including mine). A more robust solution would be to use e.g. <code>GetModuleFileName</code> on Windows and <code>/proc/self/exe/</code> on Linux. The code can I think be fairly easily copied from <a class="ext-link" href="http://stackoverflow.com/a/34109000/1173521"><span class="icon">​</span>this StackOverflow answer</a>, which, according to the author, has been tested on various platforms. </p> <p> Regards, Sam </p> vervaeck.sam@… https://svn.boost.org/trac10/ticket/12869 https://svn.boost.org/trac10/ticket/12869 Report #12867: log library extensions Fri, 24 Feb 2017 15:28:27 GMT Fri, 17 Nov 2017 12:34:41 GMT <p> <strong>Please forward this request to Mr. Andrey Semashev.</strong> </p> <p> Dear Andrey, </p> <p> in our company we have decided to use the boost log in our applications. We need 2 additional extensions for the file backend: </p> <ol><li> we want to delete the log files after specific amount of time </li><li> we want to make some logs un-deleteable, for example to change the log name in some circumstance, for example in case if the record with severity “fatal” has been written. </li></ol><p> For this I have added to your text_file_backend.hpp/ text_file_backend.cpp two additional predicates and some code for these predicates support. </p> <p> The time_based_deleting_predicate in my application is implemented as: </p> <p> </p> <pre class="wiki">m_sink-&gt;locked_backend()-&gt;set_file_collector(sinks::polytec_ext::file::make_collector( keywords::target = dir , keywords::max_size = maxSize , keywords::time_based_deleting = [=](std::time_t time) { if (deletingInterval.count() == 0) return false; std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); std::time_t latest = std::chrono::system_clock::to_time_t(now) - deletingInterval.count(); return latest &gt; time; })); </pre><p> The record_based_renaming_predicate is implemented as: </p> <pre class="wiki"> m_sink-&gt;locked_backend()-&gt;set_record_based_renaming( [=](logging::record_view const&amp; rec, boost::filesystem::path&amp; path) { auto level = boost::log::extract&lt; severity_level &gt;("Severity", rec); if (level &amp;&amp; severity_level::fatal == level.get()) { auto fname = path.stem(); bool hasErrorSuffix = boost::algorithm::ends_with(fname.c_str(), L"_ERROR"); if (!hasErrorSuffix) { auto newFname = path.parent_path() / boost::filesystem::path(path.stem().wstring() + L"_ERROR" + path.extension().wstring()); path = newFname; return true; } } return false; }); </pre><p> If you are finding these features useful for other library users and merging (may be with some improvements accordingly to your vision of the library future) with the library code it will make me a pleasure :-) and we will remove our implementation and will use the library “as is”. The ZIP file with my hpp an cpp is attached to the request. I have used 1.57 vesrsion of boost. Thank you for your attention and best regards. Victor Grinenko. </p> vgrinenko@… https://svn.boost.org/trac10/ticket/12867 https://svn.boost.org/trac10/ticket/12867 Report #12866: boost::interprocess::rbtree_best_fit::deallocate() throws boost::interprocess::lock_exception, although basic_managed_memory_impl::deallocate() docs says it never throws Fri, 24 Feb 2017 14:06:17 GMT Fri, 24 Feb 2017 14:06:17 GMT <p> Hi, </p> <p> I am using boost interprocess 1.61. The destructor of one of my classes calls: boost::interprocess::managed_shared_memory::deallocate(ptr); </p> <p> As far as I can tell from the docs of basic_managed_memory_impl::deallocate(), it shouldn't throw. But the rbtree_best_fit::deallocate() throws an boost::interprocess::lock_exception. </p> <p> Is it a bug, or am I missing something? Should I not call deallocate from a destructor? </p> Alexey Rybalchenko <alexryba@…> https://svn.boost.org/trac10/ticket/12866 https://svn.boost.org/trac10/ticket/12866 Report #12863: some API detection #ifdefs not valid Wed, 22 Feb 2017 20:46:40 GMT Wed, 22 Feb 2017 20:46:40 GMT <p> There are a couple of guards checking for APIs that are quite fragile and do not work with the latest Android NDK: (your spam detection captcha isn't working, it's issue <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/302" title="#302: Patches: Boost.Serialization for std::bitset (closed: None)">#302</a> on the android-ndk/ndk github project) </p> <p> The first is assuming <code>cfsetspeed</code> is available if <code>_BSD_SOURCE</code> is set: <a class="ext-link" href="https://github.com/boostorg/asio/blob/develop/include/boost/asio/impl/serial_port_base.ipp#L117"><span class="icon">​</span>https://github.com/boostorg/asio/blob/develop/include/boost/asio/impl/serial_port_base.ipp#L117</a> </p> <p> <code>_BSD_SOURCE</code> is something the user defines if they want access to the BSD extensions, and indicates nothing about what the implementation provides. </p> <p> Second is guarding <code>epoll_create1</code> based on the presence of <code>EPOLL_CLOEXEC</code>: <a class="ext-link" href="https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/impl/epoll_reactor.ipp#L462"><span class="icon">​</span>https://github.com/boostorg/asio/blob/develop/include/boost/asio/detail/impl/epoll_reactor.ipp#L462</a> </p> <p> This breaks implementations like the following: </p> <pre class="wiki">#define EPOLL_CLOEXEC O_CLOEXEC int epoll_create1(int) __attribute__((availability(android,introduced=21))); </pre><p> (Android here is just an example, this could well be the case on other platforms) </p> danalbert@… https://svn.boost.org/trac10/ticket/12863 https://svn.boost.org/trac10/ticket/12863 Report #12862: build boost with Visual Studio 2017 RC without sdk 10 Wed, 22 Feb 2017 15:24:51 GMT Thu, 13 Apr 2017 03:37:27 GMT <p> I have installed Visual Studio 2017 with 7.1SDK </p> <p> After run b2 i got error "cl" not found. Many times! If i run b2 with Visual Studio CMD i got error: </p> <pre class="wiki">********************************************************************** ** Visual Studio 2017 RC Developer Command Prompt v15.0.26206.0 ** Copyright (c) 2016 Microsoft Corporation ********************************************************************** C:\Program Files (x86)\Microsoft Visual Studio\2017\Community&gt;cd c:\boost c:\BOOST&gt;b2 C:/BOOST/tools/build/src/tools\msvc.jam:834: in generate-setup-cmd *** argument error * rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? ) * called with: ( msvc : : : default : ) * missing argument setup-script C:/BOOST/tools/build/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrit e-setup' being called C:/BOOST/tools/build/src/tools\msvc.jam:1076: in configure-really C:/BOOST/tools/build/src/tools\msvc.jam:201: in configure C:/BOOST/tools/build/src/tools\msvc.jam:153: in msvc.init C:/BOOST/tools/build/src/build\toolset.jam:43: in toolset.using C:/BOOST/tools/build/src/build\project.jam:1052: in using project-config.jam:3: in modules.load C:/BOOST/tools/build/src\build-system.jam:249: in load-config C:/BOOST/tools/build/src\build-system.jam:412: in load-configuration-files C:/BOOST/tools/build/src\build-system.jam:524: in load C:\BOOST\tools\build\src/kernel\modules.jam:295: in import C:\BOOST\tools\build\src/kernel/bootstrap.jam:139: in boost-build C:\BOOST\boost-build.jam:17: in module scope c:\BOOST&gt; </pre> zoruamonster@… https://svn.boost.org/trac10/ticket/12862 https://svn.boost.org/trac10/ticket/12862 Report #12859: std::string_view as token Mon, 20 Feb 2017 17:00:10 GMT Sun, 30 Apr 2017 19:42:08 GMT <p> When I use <code>std::string_view</code> as a token for the <code>tokenizer</code>, I get an error because it attempts to construct a <code>std::string_view</code> with two iterators, which it doesn't support. </p> <p> It'd be very nice to support this efficiency-enhacing type by, perhaphs, constructing the token from the underlying character array and a size when two iterators would be ill-formed. </p> Johel Ernesto Guerrero Peña <johelegp@…> https://svn.boost.org/trac10/ticket/12859 https://svn.boost.org/trac10/ticket/12859 Report #12852: Resizing fills the circular buffer Fri, 17 Feb 2017 21:47:48 GMT Sat, 18 Feb 2017 20:54:09 GMT <p> As the following block of code demonstrates, resizing a circular buffer fills it with values and thus full() reports true when one would expect it to be false. </p> <pre class="wiki"> boost::circular_buffer&lt;double&gt; cb(3); std::cout &lt;&lt; cb.full() &lt;&lt; std::endl; for (auto i : cb) std::cout &lt;&lt; i &lt;&lt; " "; std::cout &lt;&lt; std::endl; cb.resize(4); std::cout &lt;&lt; cb.full() &lt;&lt; std::endl; for (auto i : cb) std::cout &lt;&lt; i &lt;&lt; " "; std::cout &lt;&lt; std::endl; </pre> b.n.ryland@… https://svn.boost.org/trac10/ticket/12852 https://svn.boost.org/trac10/ticket/12852 Report #12841: Boost.Property_Tree Missing Include Bind Placeholders Wed, 15 Feb 2017 23:01:21 GMT Thu, 16 Feb 2017 08:48:54 GMT <p> Hi, </p> <p> I am compiling against boost with <strong>gcc/4.9.2</strong>, <strong>cmake/3.7.2</strong> and <strong>cuda/8.0</strong> and get the following compile errors: </p> <pre class="wiki">boost/property_tree/json_parser/detail/parser.hpp(217): error: identifier "_1" is undefined boost/property_tree/json_parser/detail/parser.hpp(520): error: identifier "_1" is undefined </pre><p> due to missing includes of </p> <pre class="wiki">#include &lt;boost/bind.hpp&gt; #include &lt;boost/bind/placeholders.hpp&gt; </pre><p> and <em>_1</em> itself residing inside boost::placeholders. </p> <p> Boost 1.61 up to the lastest stable 1.63.0 and the develop version are affected: </p> <blockquote> <p> <a class="ext-link" href="https://github.com/boostorg/property_tree/commit/ea940990691de91e9b22255d9b450fcdac237646#diff-0dfb3989a052317b135552cd5d53801d"><span class="icon">​</span>https://github.com/boostorg/property_tree/commit/ea940990691de91e9b22255d9b450fcdac237646#diff-0dfb3989a052317b135552cd5d53801d</a> </p> </blockquote> <p> I attached a patch to fix it and will open a PR on github. </p> <p> (This bug is quite identical to what I fixed Boost.Python in <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10932" title="#10932: Bugs: Boost.Python Missing Include Placeholders (closed: fixed)">#10932</a>) </p> a.huebl@… https://svn.boost.org/trac10/ticket/12841 https://svn.boost.org/trac10/ticket/12841 Report #12838: Invalid assignment in iostreams large_file_test.cpp Tue, 14 Feb 2017 21:40:03 GMT Tue, 14 Feb 2017 21:41:51 GMT <p> /libs/iostreams/test/large_file_test.cpp, line 337 char buf<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = { z + 1 }; <em> z is type int </em></p> <p> The implicit narrowing conversion from int to char is an error in C++11. With Clang and Oracle Studio it is an unconditional error. With EDG-based compilers, it is an error if you specify strict compliance. </p> <p> The fix is trivial: char buf<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = { char(z + 1) }; </p> stephen.clamage@… https://svn.boost.org/trac10/ticket/12838 https://svn.boost.org/trac10/ticket/12838 Report #12837: Binary serialization: crash that may allow jump to attacker-controlled address Tue, 14 Feb 2017 18:11:12 GMT Thu, 04 May 2017 16:25:16 GMT <p> Using afl-fuzz on some simple programs that use boost binary and xml serialization, I have found a number of crashes and assertion failures. </p> <p> To test the waters, I am beginning by filing a single bug which may allow a jump to an attacker-controlled address (i.e., the most exploitable-looking crash that has turned up so far). On my test system, it crashes on the instruction shown: </p> <pre class="wiki">=&gt; 0x000000000044849c &lt;+524&gt;: mov (%r12),%rax 0x00000000004484a0 &lt;+528&gt;: mov 0x20(%rbp),%r15d 0x00000000004484a4 &lt;+532&gt;: mov %r12,%rdi 0x00000000004484a7 &lt;+535&gt;: callq *0x10(%rax) </pre><p> Notice that the value loaded at instruction &lt;+524&gt; is used to determine the address to call at instruction &lt;+535&gt;. The value of %<a class="changeset" href="https://svn.boost.org/trac10/changeset/12" title="More things getting included from common. ">r12</a> interpreted as bytes is "\0\0hive\0\0", which makes me strongly suspect that it is data from the input file (part of the 'serialization::archive' signature, masked off). Generally, the whole text of the input file would be considered under the control of the adversary. </p> <p> I ran my tests on Debian Jessie amd64 with gcc version 4.9.2 (Debian 4.9.2-10). The following revisions of modularized boost were used (the tip of each master branch at the time of writing, as described by 'git describe --tags --always): </p> <pre class="wiki">config: boost-1.62.0-57-g1abc59c core: boost-1.61.0-59-gd753d9a move: boost-1.63.0 serialization: boost-1.61.0-57-g62bf8fc </pre><p> The commandline to compile the (non-fuzzing) version of the input test program is: </p> <pre class="wiki">g++-4.9 -std=c++11 -Os -I serialization/include -I core/include -I move/include -I config/include -o pvec_in pvec_in.cc serialization/src/extended_type_info.cpp serialization/src/extended_type_info_typeid.cpp serialization/src/archive_exception.cpp serialization/src/basic_archive.cpp serialization/src/basic_serializer_map.cpp serialization/src/void_cast.cpp serialization/src/singleton.cpp serialization/src/basic_iarchive.cpp serialization/src/binary_iarchive.cpp serialization/src/basic_iserializer.cpp serialization/src/basic_pointer_iserializer.cpp </pre><p> The breaking input file is (base-64 encoded): </p> <pre class="wiki">FgAAAAAAAABzZXJpYWxpemF0aW9uOjphcmNoaXZlDwAECAQIAQAAAAAAAAAAAwAAAAAAAAABAAAA AAEAAAD0/wEAAAAAAAAAAAEAAAACAAEAAAACAAAAAgAAAAAA </pre><p> The source for the test harness program (pvec_in.cc) is </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;boost/shared_ptr.hpp&gt; #include &lt;boost/archive/binary_iarchive.hpp&gt; #include &lt;boost/serialization/nvp.hpp&gt; #include &lt;boost/serialization/shared_ptr.hpp&gt; #include &lt;boost/serialization/vector.hpp&gt; struct boxed_int { boxed_int() : i(0) {} boxed_int(int i) : i(i) {} int i; template&lt;class Archive&gt; void serialize(Archive &amp;ar, unsigned version) { ar &amp; BOOST_SERIALIZATION_NVP(i); } }; typedef boost::shared_ptr&lt;boxed_int&gt; pi; void go(std::istream &amp;is) { std::vector&lt;pi&gt; vv; try { boost::archive::binary_iarchive ia(is); ia &amp; vv; } catch(std::exception &amp;e) {} } int main(int argc, char **argv) { if(argc &gt; 1) { std::ifstream is(argv[1]); go(is); } else { go(std::cin); } return 0; } </pre><p> The test harness program either takes the input file on stdin or the name of the input file as the first positional argument. </p> <p> I can share details about the fuzzing setup if you like. </p> <p> Thank you for taking the time to consider this issue. </p> <p> --Jeff </p> jepler@… https://svn.boost.org/trac10/ticket/12837 https://svn.boost.org/trac10/ticket/12837 Report #12836: the function canonical invalidates a path if there is double dot between two symbolic links Tue, 14 Feb 2017 15:33:56 GMT Tue, 14 Feb 2017 15:33:56 GMT <p> Create unit test like this: </p> <div class="wiki-code"><div class="code"><pre> <span class="kt">void</span> <span class="nf">test</span><span class="p">()</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">fs</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="p">;</span> <span class="k">const</span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span> <span class="n">base_path</span> <span class="o">=</span> <span class="n">createBaseDir</span><span class="p">();</span> <span class="c1">// prepare hierarchy</span> <span class="n">fs</span><span class="o">::</span><span class="n">create_directories</span><span class="p">(</span><span class="n">base_path</span> <span class="o">/</span> <span class="s">&quot;a/b/c&quot;</span><span class="p">);</span> <span class="n">fs</span><span class="o">::</span><span class="n">create_directory_symlink</span><span class="p">(</span><span class="n">base_path</span> <span class="o">/</span> <span class="s">&quot;a/b&quot;</span><span class="p">,</span> <span class="n">base_path</span> <span class="o">/</span> <span class="s">&quot;sym&quot;</span><span class="p">);</span> <span class="c1">// base/sym -&gt; base/a/b</span> <span class="k">const</span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span> <span class="n">test1</span> <span class="o">=</span> <span class="n">base_path</span> <span class="o">/</span> <span class="s">&quot;sym/../sym/c&quot;</span><span class="p">;</span> <span class="c1">// if a symbolic link is resolved first will be ../s2 exist?</span> <span class="n">TS_ASSERT</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">test1</span><span class="p">));</span> <span class="n">TS_ASSERT</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">canonical</span><span class="p">(</span><span class="n">test1</span><span class="p">)));</span> <span class="p">}</span> </pre></div></div><p> Test verify that path test1 exists, but the second calling of this function fails for a normalized path by function <em>canonical</em>. It should work otherwise the function is not reliable. The problem can be resolved if the function <em>canonical</em> first strip path from a dot and double dot and then resolve symbolic links. </p> <p> I run the unit test only on Windows, but it should be no difference. </p> Frantisek Boranek <fboranek@…> https://svn.boost.org/trac10/ticket/12836 https://svn.boost.org/trac10/ticket/12836 Report #12835: warnings while boost bcp Mon, 13 Feb 2017 14:21:21 GMT Mon, 13 Feb 2017 14:21:21 GMT <p> I'm trying to use boost bcp for exporting lockfree/queue.hpp. The command seems to copy files over, but I am seeing the following warnings, and I am wondering are these harmful? </p> <p> [ron@localhost boost_1_62_0]$ bin.v2/tools/bcp/gcc-4.8.5/release/link-static/bcp --namespace=boostts --boost=/home/ron/boost/include lockfree/queue.hpp /home/ron/TestApp </p> <p> CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_tester.hpp CAUTION: don't know how to trace depenencies through macro: "PP2" in file: boost/type_traits/detail/is_function_ptr_tester.hpp CAUTION: don't know how to trace depenencies through macro: "PP3" in file: boost/type_traits/detail/is_function_ptr_tester.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp CAUTION: don't know how to trace depenencies through macro: "BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/caps_)" in file: boost/atomic/capabilities.hpp CAUTION: don't know how to trace depenencies through macro: "BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/ops_)" in file: boost/atomic/detail/operations_lockfree.hpp Copying file: boost/align/align.hpp Copying file: boost/align/align_up.hpp Copying file: boost/align/align_up_forward.hpp Copying file: boost/align/aligned_allocator_adaptor.hpp Copying file: boost/align/aligned_allocat........... ........... ..... ... </p> rgoyal@… https://svn.boost.org/trac10/ticket/12835 https://svn.boost.org/trac10/ticket/12835 Report #12832: add a static histogram type Sun, 12 Feb 2017 20:51:21 GMT Sun, 12 Feb 2017 20:51:21 GMT <p> Hi there, </p> <p> my current use of boost accumulators needed a fixed histogram with absolute limits and absolute counts. In my case RT scheduler statistics. For this issue, a density distribution is not suitable. So i created based on density.hpp a histogram.h file. </p> <p> As i use boost so often, privately and professional, maybe this can be useful :) </p> <p> Best Regards Georg Gast </p> georg@… https://svn.boost.org/trac10/ticket/12832 https://svn.boost.org/trac10/ticket/12832 Report #12830: boost::filesystem::windows_name() ? Sat, 11 Feb 2017 15:49:28 GMT Tue, 14 Nov 2017 12:10:19 GMT <p> boost::filesystem::windows_name() allows the <strong>?</strong> character when this is a dissalowed character. </p> anonymous https://svn.boost.org/trac10/ticket/12830 https://svn.boost.org/trac10/ticket/12830 Report #12829: Documentation of nonblocking limitations comparaed to MPI standard Fri, 10 Feb 2017 16:24:19 GMT Fri, 10 Feb 2017 16:24:19 GMT <p> There is a inconspicuous note in the point-to-point documentation: </p> <blockquote> <p> Moreover, the MPI standard does not guarantee that the receive makes any progress before a call to "wait" or "test", although most implementations of the C MPI do allow receives to progress before the call to "wait" or "test". Boost.MPI, on the other hand, generally requires "test" or "wait" calls to make progress. </p> </blockquote> <p> That sounds like MPI makes no additional restrictions compared to the MPI standard, but is more strict than other MPI implementations. That is not correct. The MPI standard explicitly requires a correct MPI implementation to complete a send after the other process "posts the matching (nonblocking) receive even if process one has not yet reached the completing wait call." (Section 3.7.4). The provided Example </p> <p> The MPI standard gives an example that should not deadlock, translating it to boost.mpi with serialized datatypes (see attachment), it hangs. This is due to the two-phase transfer, where the matching receive is actually only posted on request::wait. </p> <p> Unfortunately I don't see any way around that limitation. However, the documentation should be improved. It should clearly state that this is a limitation compared to the MPI standard progress guarantee. I believe the wording should also be more clear, i.e. "A synchronous send may not complete until the matching (nonblocking) receive has reached the completing wait call." </p> thomas.ilsche@… https://svn.boost.org/trac10/ticket/12829 https://svn.boost.org/trac10/ticket/12829 Report #12828: Fatal crash on multiple irecv with the same communicator, sender, tag Fri, 10 Feb 2017 15:54:15 GMT Fri, 10 Feb 2017 15:54:15 GMT <p> Posting two irecv on the same sender/tag of a non-primitive data type result in a crash. The problem is the 'two phase' receive, where the actual data irecv is posted only during wait, once the size is known. </p> <p> Basically the sender will always send in this order (regardless if blocking or not) </p> <pre class="wiki">send(&amp;msg0.size) send(msg0.buffer) send(&amp;msg1.size) send(msg1.buffer) </pre><p> However, a nonblocking receiver will post: </p> <pre class="wiki">irecv(&amp;msg0.size) irecv(&amp;msg1.size) // WaitAll or the likes irecv(msg0.buffer) irecv(msg1.buffer) </pre><p> A trivial example that crashes is attached. </p> <p> MPI has a well-defined determinist order guarantee (Section 3.5), and also specifically "Nonblocking communication operations are ordered according to the execution order of the calls that initiate the communication." (Section 3.7.4) </p> <p> I cannot find any explanation of this severe limitation in the boost documentation. </p> <p> I could think of two possible ways out: </p> <p> Create hidden additional duplicate communicators for each boost::mpi::communicator so that two different communicators are used for sending size &amp; buffer. That seems to be quite clean, but requires lots of changes to the interface. </p> <p> One could also split the tag-space in half and use the upper half for the additional messages. That of course is really nasty and can result in non standards conforming behavior. </p> thomas.ilsche@… https://svn.boost.org/trac10/ticket/12828 https://svn.boost.org/trac10/ticket/12828 Report #12827: test of numpy initialization Fri, 10 Feb 2017 15:51:24 GMT Mon, 23 Jul 2018 11:06:47 GMT <p> It would be nice to be able to test : </p> <ul><li>wether numpy library has already been initialized (test wether BOOST_NUMPY_ARRAY_API is null ?) </li></ul><ul><li>return a value from boost::python::numpy::initialize to check wether initialization succeed </li></ul><p> Regards </p> en@… https://svn.boost.org/trac10/ticket/12827 https://svn.boost.org/trac10/ticket/12827 Report #12826: Disabled SSL compression results in compile failure Thu, 09 Feb 2017 23:57:14 GMT Mon, 23 Jul 2018 11:05:33 GMT <p> When SSL compression is disabled and openssl version &gt;= 1.0.2, &lt; 1.1.0 is used, a compile failure results due to "SSL_COMP_free_compression_methods()" function not existing. An additional check needs to be added to ensure that compression is enabled. This is likely related to the patch for <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/10795"><span class="icon">​</span>ticket #10795</a>. </p> <p> Compile error: </p> <pre class="wiki">boost/asio/ssl/detail/impl/openssl_init.ipp: In destructor 'boost::asio::ssl::detail::openssl_init_base::do_init::~do_init()': boost/asio/ssl/detail/impl/openssl_init.ipp:84:5: error: '::SSL_COMP_free_compression_methods' has not been declared </pre> ecprodev@… https://svn.boost.org/trac10/ticket/12826 https://svn.boost.org/trac10/ticket/12826 Report #12825: Missing exports in numpy library Thu, 09 Feb 2017 15:59:16 GMT Mon, 23 Jul 2018 11:04:15 GMT <p> Hi, </p> <p> I think export macros are missing in numpy part of python library. </p> <p> We have for example :<br /> </p> <pre class="wiki">void initialize(bool register_scalar_converters=true); </pre><p> I think we should have :<br /> <code>void BOOST_NUMPY_DECL initialize(bool register_scalar_converters=true);</code> </p> en@… https://svn.boost.org/trac10/ticket/12825 https://svn.boost.org/trac10/ticket/12825 Report #12823: Partial sort"'`-- Wed, 08 Feb 2017 17:26:02 GMT Mon, 23 Jul 2018 11:02:59 GMT <p> Please add partial sort versions (i.e. std::partial_sort counterparts). </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12823 https://svn.boost.org/trac10/ticket/12823 Report #12822: MSVC14u3: compiler warning Wed, 08 Feb 2017 17:24:20 GMT Mon, 23 Jul 2018 10:58:22 GMT <p> I get a: "Warning C4267 'argument': conversion from 'size_t' to 'int', possible loss of data" which cannot be silenced with a pragma and so it causes a compilation failure in treat-warnings-as-errors builds... </p> <p> This is the template instantiation back trace to your source: </p> <pre class="wiki">&lt;algorithm&gt; line 2671 &lt;algorithm&gt; line 2686 &lt;algorithm&gt; line 2748 &lt;algorithm&gt; line 2776 &lt;algorithm&gt; line 2784 &lt;boost/sort/spreadsort/detail/integer_sort.hpp&gt; line 297 </pre> Domagoj Šarić https://svn.boost.org/trac10/ticket/12822 https://svn.boost.org/trac10/ticket/12822 Report #12821: Crash in integer_sort when reverse sorting a struct Wed, 08 Feb 2017 17:14:28 GMT Mon, 23 Jul 2018 11:00:52 GMT <p> I have a custom 'zip' iterator (that iterates over two arrays): </p> <ul><li>its value_type = std::pair&lt;std::uint32_t, T&gt; </li><li>its reference = std::pair&lt;std::uint32_t &amp;, T &amp;&gt;. </li></ul><p> I want to reverse sort these two arrays so I do: </p> <pre class="wiki">auto const comparator( []( auto const &amp; left, auto const &amp; right ) noexcept { return left.first &gt; right.first; } ); auto const rightshift{ []( custom_iterator::reference const x, unsigned const offset ) noexcept { return x.first &gt;&gt; offset; } }; </pre><p> ...but there is a crash in integer_sort in this case (if I do a 'normal' less-than compare, i.e. not a reversed sort) then it works... </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12821 https://svn.boost.org/trac10/ticket/12821 Report #12820: Unsigned value type accepts negative argument"'`-- Wed, 08 Feb 2017 13:28:23 GMT Mon, 23 Jul 2018 10:59:35 GMT <p> In program_options, an option with e.g. <code>value&lt;std::uint32_t&gt;()</code> will accept negative arguments. A positional will not work without preceding <code>--</code> because the minus sign is treated as the option character, though. So it's: </p> <p> <code>mycommand --foo-level -1</code> </p> <p> or </p> <p> <code>mycommand --foo-level=-1</code> </p> <p> or </p> <p> <code>mycommand -- -1</code> </p> <p> Assuming foo-level takes a <code>std::uint32_t</code> (and is the first positional option for the latter example), this will be accepted and converted to 4294967295 (aka <code>UINT32_MAX</code>). Likewise, </p> <p> <code>mycommand --foo-level -4294967196</code> </p> <p> will result in a value of 100. There's a workaround with a custom validator discussed at: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/36800596/disallow-negative-argument-for-unsigned-value-with-boostprogram-options"><span class="icon">​</span>http://stackoverflow.com/questions/36800596/disallow-negative-argument-for-unsigned-value-with-boostprogram-options</a> </p> <p> But this should not be necessary IMO. </p> avogel@… https://svn.boost.org/trac10/ticket/12820 https://svn.boost.org/trac10/ticket/12820 Report #12816: error using with WinRT Sun, 05 Feb 2017 19:33:03 GMT Mon, 29 Jan 2018 02:40:32 GMT <p> Hello, I have a problem compiling the file "msvc/typeof_impl.hpp" when using it in Visual Studio 2015 as part of a Universal Windows App based on C++/WinRT projection (moderncpp.com). I'm stuck on the line no. 103, which also includes "VC8.0 specific bugfeature" comment. The project is otherwise functional, it is one of the samples published with C++/WinRT projection headers. </p> <p> Thank you for your time and effort. </p> <p> tom </p> tomáš hering <hering.t@…> https://svn.boost.org/trac10/ticket/12816 https://svn.boost.org/trac10/ticket/12816 Report #12815: Boost asio 1.63 examples are all broken links Sun, 05 Feb 2017 19:03:48 GMT Sat, 25 Feb 2017 18:36:36 GMT <p> In the docs site, the boost 1.63 asio examples are all broken links. </p> marvin.herbold@… https://svn.boost.org/trac10/ticket/12815 https://svn.boost.org/trac10/ticket/12815 Report #12814: BOOST_TEST_EQ has wrong behavior for const char* Sun, 05 Feb 2017 17:16:26 GMT Sun, 05 Feb 2017 17:16:26 GMT <p> BOOST_TEST_EQ internally compares its arguments using test_eq_impl, which calls operator==. If BOOST_TEST_EQ is called with two c-strings of type const char*, it compares the addresses, not the strings. </p> <p> The following fails, while it should succeed: </p> <p> const char* s1 = "abc"; std::string s2("abc"); BOOST_TEST_EQ(s1, s2.c_str()); <em> fails </em></p> <p> Solution: Add an overload for boost::detail::test_eq_impl which compares const char* using std::strcmp. </p> <p> Similarly for test_ne_impl. </p> Hans Dembinski <hans.dembinski@…> https://svn.boost.org/trac10/ticket/12814 https://svn.boost.org/trac10/ticket/12814 Report #12810: feature parity between boost::intrusive_ptr and boost::interprocess::intrusive_ptr Fri, 03 Feb 2017 13:01:34 GMT Sat, 25 Feb 2017 18:36:05 GMT <p> Dear all, i'd like to request to bring boost::interprocess::intrusive_ptr interface up to the level of boost::intrusive_ptr, more specifically to add the move operators and e.g. release() method, as discussed on the mailing list (copy below). thanks, Mikolaj </p> <p> On 13/01/2017 13:42, Mikolaj Krzewicki wrote: </p> <blockquote class="citation"> <p> Dear all, would it be possible to add the rvalue operators to interprocess::intrusive_ptr akin to what is already available in "regular" boost::intrusive_ptr: </p> <p> <em> Move support </em></p> <p> #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) </p> <blockquote> <p> intrusive_ptr(intrusive_ptr &amp;&amp; rhs) BOOST_NOEXCEPT : px( rhs.px ) { </p> <blockquote> <p> rhs.px = 0; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> intrusive_ptr &amp; operator=(intrusive_ptr &amp;&amp; rhs) BOOST_NOEXCEPT { </p> <blockquote> <p> this_type( static_cast&lt; intrusive_ptr &amp;&amp; &gt;( rhs ) ).swap(*this); return *this; </p> </blockquote> <p> } </p> </blockquote> <p> #endif </p> </blockquote> <p> Sure, please fill a ticket so this is not forgotten. </p> <p> Best, </p> <p> Ion </p> mikolaj.krzewicki@… https://svn.boost.org/trac10/ticket/12810 https://svn.boost.org/trac10/ticket/12810 Report #12809: crash in boost interprocess cached adaptive pool when using allocate_one method Fri, 03 Feb 2017 10:44:56 GMT Fri, 03 Feb 2017 10:47:57 GMT <p> create a segment manager and then create a cached adaptive pool. Allocate an object with allocate_one method. do it many times and we will see a consistent crash in cached_allocator while traversing the multiallocation chain. boost named interprocess mutexes were used to protect the pools. The crash goes away when allocate method is used instead of allocate_one but the allocate method will bypass the cached allocator. A stack trace is pasted here for reference. </p> <p> Reading symbols from client...done. [New LWP 6334] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `./client'. Program terminated with signal SIGSEGV, Segmentation fault. <a class="missing ticket">#0</a> 0x0000000000499663 in boost::interprocess::offset_ptr&lt;boost::intrusive::slist_node&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, long, unsigned long, 0ul&gt;::offset_ptr (ptr=..., this=0x7fff0a022830) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/interprocess/offset_ptr.hpp:270 </em></p> </blockquote> <p> 270 (ipcdetail::offset_ptr_to_offset_from_other(this, &amp;ptr, ptr.internal.m_offset))) (gdb) bt <a class="missing ticket">#0</a> 0x0000000000499663 in boost::interprocess::offset_ptr&lt;boost::intrusive::slist_node&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, long, unsigned long, 0ul&gt;::offset_ptr (ptr=..., this=0x7fff0a022830) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/interprocess/offset_ptr.hpp:270 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> boost::intrusive::slist_node_traits&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;::get_next (n=...) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/intrusive/detail/slist_node.hpp:53 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x0000000000495b98 in boost::intrusive::slist_iterator&lt;boost::intrusive::bhtraits&lt;boost::intrusive::slist_base_hook&lt;boost::intrusive::void_pointer&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, boost::intrusive::link_mode&lt;(boost::intrusive::link_mode_type)0&gt;, void&gt;, boost::intrusive::slist_node_traits&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 2u&gt;, false&gt;::operator++ (this=0x7fff0a0228c0) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/intrusive/detail/slist_iterator.hpp:83 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x000000000049ecd5 in boost::intrusive::iterator_distance&lt;boost::intrusive::slist_iterator&lt;boost::intrusive::bhtraits&lt;boost::intrusive::slist_base_hook&lt;boost::intrusive::void_pointer&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, boost::intrusive::link_mode&lt;(boost::intrusive::link_mode_type)0&gt;, void&gt;, boost::intrusive::slist_node_traits&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 2u&gt;, false&gt; &gt; (first=..., last=...) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/intrusive/detail/iterator.hpp:131 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x000000000049ada1 in boost::intrusive::slist_impl&lt;boost::intrusive::bhtraits&lt;boost::intrusive::slist_base_hook&lt;boost::intrusive::void_pointer&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, boost::intrusive::link_mode&lt;(boost::intrusive::link_mode_type)0&gt;, void&gt;, boost::intrusive::slist_node_traits&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;, (boost::intrusive::link_mode_type)0, boost::intrusive::dft_tag, 2u&gt;, unsigned long, 7ul, void&gt;::incorporate_after ( </p> <blockquote> <p> this=0x6de778 &lt;ranzure::platform::bufferManager::getInstance()::instance+184&gt;, prev_pos=..., f=..., before_l=..., n=3) at ../..<em>opensource/boost_1_62_0/include/boost/intrusive/slist.hpp:1906 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x0000000000496d8b in boost::container::container_detail::basic_multiallocation_chain&lt;boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt; &gt;::incorporate_after (this=0x6de778 &lt;ranzure::platform::bufferManager::getInstance()::instance+184&gt;, after_this=..., b=..., </p> <blockquote> <p> before_e=..., n=3) at ../..<em>opensource/boost_1_62_0/include/boost/container/detail/multiallocation_chain.hpp:164 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x0000000000495873 in boost::container::container_detail::private_adaptive_node_pool_impl&lt;boost::interprocess::segment_manager_base&lt;boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt;, 0ul&gt; &gt;, 6u&gt;::allocate_nodes (this=0x7f276a3505c8, n=64, chain=...) at ../..<em>opensource/boost_1_62_0/include/boost/container/detail/adaptive_node_pool_impl.hpp:462 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x0000000000492512 in boost::interprocess::ipcdetail::shared_pool_impl&lt;boost::interprocess::ipcdetail::private_adaptive_node_pool&lt;boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt;, 0ul&gt;, boost::interprocess::iset_index&gt;, 1088ul, 512ul, 1024ul, (unsigned char)10&gt; &gt;::allocate_nodes (this=0x7f276a3505c8, </em></p> <blockquote> <p> n=64, chain=...) at ../..<em>opensource/boost_1_62_0/include/boost/interprocess/allocators/detail/allocator_common.hpp:762 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> 0x000000000048f22b in boost::interprocess::ipcdetail::cache_impl&lt;boost::interprocess::ipcdetail::shared_adaptive_node_pool&lt;boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt;, 0ul&gt;, boost::interprocess::iset_index&gt;, 1088ul, 512ul, 1024ul, (unsigned char)10&gt; &gt;::cached_allocation ( </p> <blockquote> <p> this=0x6de770 &lt;ranzure::platform::bufferManager::getInstance()::instance+176&gt;) at ../..<em>opensource/boost_1_62_0/include/boost/interprocess/allocators/detail/allocator_common.hpp:199 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> 0x000000000048ccb1 in boost::interprocess::ipcdetail::cached_allocator_impl&lt;ranzure::platform::bufferManager::oneKBuffer, boost::interprocess::ipcdetail::shared_adaptive_node_pool&lt;boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0ul&gt;, 0ul&gt;, boost::interprocess::iset_index&gt;, 1088ul, 512ul, 1024ul, (unsigned char)10&gt;, 2u&gt;::allocate_one (this=0x6de770 &lt;ranzure::platform::bufferManager::getInstance()::instance+176&gt;) </p> <blockquote> <p> at ../..<em>opensource/boost_1_62_0/include/boost/interprocess/allocators/detail/allocator_common.hpp:644 </em></p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10" title="#10: Bugs: allyourbase.jam file is bad. (closed: Out of Date)">#10</a> 0x00000000004876b4 in ranzure::platform::bufferManager::get1KBuffer ( ---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- </p> <blockquote> <p> this=0x6de6c0 &lt;ranzure::platform::bufferManager::getInstance()::instance&gt;) at buffmanager.cc:193 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11" title="#11: Bugs: why not using mt19937? (closed: Fixed)">#11</a> 0x000000000047e7af in main (argc=1, argv=0x7fff0a023158) at client.cc:67 </p> naidu.trk@… https://svn.boost.org/trac10/ticket/12809 https://svn.boost.org/trac10/ticket/12809 Report #12807: boost::python::objects::add_cast can make incorrect connections Thu, 02 Feb 2017 23:10:23 GMT Thu, 02 Feb 2017 23:12:18 GMT <p> We seem to be fairly unique in using add_cast (at least I couldn't find many other reports on Google), so maybe we're not playing by the rules. However..... </p> <p> We've observed that when adding lots of casting relationships via add_cast, sometimes the relationships aren't setup properly. </p> <p> I've narrowed this down to demand_types() in inheritance.cpp </p> <p> It appropriately reserves space to avoid overall reallocation for the type_index vector, however as best I can tell, demand_type() will still shift elements in the vector when it calls insert() with an iterator in the middle of the vector. As a result, we're observing: </p> <ul><li>demand_types() calls demand_type() to set 'first' </li><li>demand_types() calls demand_type() to set 'second' <ul><li>this call to demand_type() calls insert() which shifts the element that 'first' was previously pointing at </li></ul></li></ul><p> As a result, 'first' ends up pointing at the wrong element, and the wrong pair of vertices are connected in the adjacency_list, effectively setting up a bogus casting relationship. </p> <p> The eventual impact is that users' python scripts start failing with error messages about their arguments not matching the C++ signature. </p> <p> Maybe we're breaking a contract by calling add_cast without somehow registering both end-points into the adjacency_list and, if so, I'd love to get some best-practice guidance. </p> <p> If not, and this is a legitimate issue, here's the patch we're putting in place for the time being: </p> <pre class="wiki"> type_index_t::iterator first = demand_type(t1); type_index_t::iterator second = demand_type(t2); + first = demand_type(t1); </pre><p> The first two (unchanged) calls still ensure both types have associated vertices, and the last (new) call compensates for the possibility that the second call invalidated the result from the first call. </p> <p> I hope this report is useful. It's my first, so please let me know if I can provide any more info! I'll try to upload a repro case later if I can extract it from our production codebase. </p> Rob Pieké <robpieke@…> https://svn.boost.org/trac10/ticket/12807 https://svn.boost.org/trac10/ticket/12807 Report #12806: flat_map.hpp function force_copy break strict-aliasing on gcc < 4.4 Thu, 02 Feb 2017 16:38:59 GMT Sun, 09 Apr 2017 20:38:53 GMT <p> Hello! </p> <p> On function (<a class="ext-link" href="https://github.com/boostorg/container/blob/develop/include/boost/container/flat_map.hpp#L61"><span class="icon">​</span>https://github.com/boostorg/container/blob/develop/include/boost/container/flat_map.hpp#L61</a>): </p> <pre class="wiki">template&lt;class D, class S&gt; BOOST_CONTAINER_FORCEINLINE static D force_copy(S s) { D *vp = reinterpret_cast&lt;D *&gt;(&amp;s); return D(*vp); } </pre><p> gcc 4.3.4 (SLE 11) produced wrong code. It seems that the compiler does not create a copy of an object "s" and returns an object of D(). </p> <p> If I change the signature of function on "BOOST_CONTAINER_FORCEINLINE static D force_copy(const S&amp; s)" the code works and the tests pass. But then does not create a copy of an object "s" in a function call. </p> <p> I'm not sure that this change is correct. Is there any other workaround for this problem with a compiler gcc 4.3 or better disable strict-aliasing? </p> Vladislav <phprus@…> https://svn.boost.org/trac10/ticket/12806 https://svn.boost.org/trac10/ticket/12806 Report #12804: Can't compiler IPC atomic_cas32<> on AIX.ppc with GCC Thu, 02 Feb 2017 07:39:03 GMT Tue, 08 Aug 2017 07:14:31 GMT <p> Hello, </p> <p> I'm trying to use boost::atomic&lt;&gt; on AIX.ppc (v7.1) box and compile code with GCC. But unfortunately, the code below fails to compile : </p> <hr /> <pre class="wiki">inline boost::uint32_t atomic_cas32 (volatile boost::uint32_t *mem, boost::uint32_t with, boost::uint32_t cmp) { boost::uint32_t prev; asm volatile ("1:\n\t"  "lwarx %0,0,%1\n\t" "cmpw %0,%3\n\t" "bne- 2f\n\t"  "stwcx. %2,0,%1\n\t" "bne- 1b\n\t"  "2:"  : "=&amp;r"(prev) : "b" (mem), "r" (with), "r" (cmp) : "cc", "memory"); return prev; } </pre><p> AIX assembler (/usr/bin/as) execution fails with error saying that "labels need to follow the symbol rules". Simple change from "1:\n\t" to "t_1:\n\t" fixes the issue. </p> <p> I have a question : <strong>Is boost::atomic&lt;&gt; is designed to be compiled with GCC on AIX.ppc ? Or should it be used only with native xlC compiler ?</strong> </p> <hr /> <p> Environment : </p> <pre class="wiki">-bash-4.3$ as -v as V7.1 -bash-4.3$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/opt/freeware/libexec/gcc/powerpc-ibm-aix7.1.0.0/4.8.5/lto-wrapper Target: powerpc-ibm-aix7.1.0.0 Configured with: ../gcc-4.8.5/configure --prefix=/opt/freeware --mandir=/opt/freeware/man --infodir=/opt/freeware/info --with-local-prefix=/opt/freeware --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++,fortran --enable-version-specific-runtime-libs --disable-nls --enable-decimal-float=dpd --with-cloog=no --with-ppl=no --disable-libstdcxx-pch --enable-__cxa_atexit Thread model: aix gcc version 4.8.5 (GCC) -bash-4.3$ </pre> dima.ru.com@… https://svn.boost.org/trac10/ticket/12804 https://svn.boost.org/trac10/ticket/12804 Report #12802: optional<recursive_wrapper> is broken in 1.63 Wed, 01 Feb 2017 16:03:27 GMT Wed, 01 Feb 2017 16:03:27 GMT <pre class="wiki">boost::optional&lt;boost::recursive_wrapper&lt;int&gt; &gt; o; o = 1; </pre><p> gcc says error: no match for 'operator=' (operand types are 'boost::optional&lt;boost::recursive_wrapper&lt;int&gt; &gt;' and 'int') </p> <p> i found the reason for failure: is_convertible_to_T_or_factory checks is_constructinble&lt;T, U&amp;&amp;&gt;, which means &lt;recursive_wrapper&lt;U&gt;, U<strong>&amp;&amp;</strong>&gt;, while recursive wrapper specializes only &lt;recursive_wrapper&lt;T&gt;,T&gt; (no <strong>&amp;&amp;</strong>) as true and &lt;recursive_wrapper&lt;T&gt;,U&gt; (catches U=T<strong>&amp;&amp;</strong>) as false </p> <p> i don't know who is wrong - recursive_wrapper or optional it can be fixed either by adding </p> <pre class="wiki">template &lt;class T&gt; struct is_constructible &lt; recursive_wrapper &lt; T&gt;, T &amp;&amp;&gt; : boost::true_type{}; </pre><p> to recursive_wrapper or by changing boost::is_constructible&lt;T, U<strong>&amp;&amp;</strong>&gt; to boost::is_constructible&lt;T, U&gt; in is_convertible_to_T_or_factory </p> pal666@… https://svn.boost.org/trac10/ticket/12802 https://svn.boost.org/trac10/ticket/12802 Report #12801: dynamic_bitset move constructor/assignment does not compile with state allocator Wed, 01 Feb 2017 09:05:38 GMT Wed, 01 Feb 2017 09:05:38 GMT <p> Since C++11 custom allocators may contain state. </p> <p> Asserts in move constructor/assignment </p> <p> <em>assert((b.m_bits = buffer_type()).empty());</em> </p> <p> compile only if allocator is stateless (has constructor with no arguments). </p> piotr.cisowski@… https://svn.boost.org/trac10/ticket/12801 https://svn.boost.org/trac10/ticket/12801 Report #12797: Invalid regex recursion behavior Sun, 29 Jan 2017 14:49:10 GMT Sun, 29 Jan 2017 14:49:10 GMT <p> I have found an unexpected behavior regarding recursion in regexes (in Perl mode). I've reduced the issue to the following test pattern: </p> <pre class="wiki">(?(DEFINE) (?&lt;prefix&gt;) (?&lt;dummy&gt;x) ) (?&amp;prefix) unused | (?&amp;prefix) match </pre><p> If you try to match this against <code>foo match bar</code>, the <code>match</code> word should be found. This works in both Perl and PCRE, see the <a class="ext-link" href="https://regex101.com/r/emKagD/1"><span class="icon">​</span>regex101 demo here</a>. </p> <ul><li>Removing or commenting out the <code>dummy</code> group causes the pattern to match </li><li>Making the <code>dummy</code> group empty causes the pattern to match </li><li>Replacing <code>(?&amp;prefix)</code> with <code>(?&amp;prefix)?</code> causes <code>Encountered an infinite recursion.</code> </li><li>Replacing <code>(?&amp;prefix)</code> with <code>(?&amp;prefix)?</code> but making the definition of <code>pattern</code> non-empty causes the pattern to match </li></ul><p> Here's the full test program: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/regex.hpp&gt;</span><span class="cp"></span> <span class="k">static</span> <span class="kt">void</span> <span class="nf">test</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex</span> <span class="n">re</span><span class="p">(</span><span class="sa">R</span><span class="s">&quot;</span><span class="dl">regex(</span><span class="s"></span> <span class="s"> (?(DEFINE)</span> <span class="s"> (?&lt;prefix&gt;)</span> <span class="s"> (?&lt;dummy&gt;x)</span> <span class="s"> )</span> <span class="s"> (?&amp;prefix) unused | (?&amp;prefix) match</span> <span class="s"> </span><span class="dl">)regex</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex</span><span class="o">::</span><span class="n">perl</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex</span><span class="o">::</span><span class="n">no_mod_s</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex</span><span class="o">::</span><span class="n">mod_x</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex</span><span class="o">::</span><span class="n">optimize</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">subject</span><span class="p">(</span><span class="s">&quot;foo match bar&quot;</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">regex_replace</span><span class="p">(</span><span class="n">subject</span><span class="p">,</span> <span class="n">re</span><span class="p">,</span> <span class="s">&quot;[$&amp;]&quot;</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">format_all</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span> <span class="p">{</span> <span class="k">try</span> <span class="p">{</span> <span class="n">test</span><span class="p">();</span> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">exception</span> <span class="n">ex</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="n">ex</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><ul><li>Actual output is <code>foo match bar</code> </li><li>Expected output is <code>foo [match] bar</code> </li></ul><p> Tested with Boost 1.63.0 on MSVC 2015. The full pattern where the issue appeared can be found <a class="ext-link" href="http://stackoverflow.com/a/41910370/3764814"><span class="icon">​</span>here</a>. </p> Lucas Trzesniewski <lucas.trzesniewski@…> https://svn.boost.org/trac10/ticket/12797 https://svn.boost.org/trac10/ticket/12797 Report #12795: thread library - thread_specific_ptr documentation gives obsolete recomendation Fri, 27 Jan 2017 09:37:42 GMT Tue, 14 Nov 2017 20:43:42 GMT <p> thread_specific_ptr documentation says </p> <p> <em>Though compilers often provide this facility in the form of extensions to the declaration syntax (such as _declspec(thread) or thread annotations on static or namespace-scope variable declarations), such support is non-portable, and is often limited in some way, such as only supporting POD types.</em> </p> <p> Now as we have portable <strong>thread_local</strong> in current compilers, it should be prefered to use <strong>thread_local</strong>, since thread_specific_ptr has known performance limitation. </p> Oleksandr Guteniev <gutenev@…> https://svn.boost.org/trac10/ticket/12795 https://svn.boost.org/trac10/ticket/12795 Report #12793: Boost.ICL document exclusive_less_than Thu, 26 Jan 2017 09:24:45 GMT Thu, 26 Jan 2017 09:24:45 GMT <p> Intervals in the ICL containers (set or map) are sorted based on exclusive_less_than. The documentation barely mentions it. AFAIAC this mechanism should be documented extensively (e.g. with nice pictures what happens when overlap) since it drives the ICL library for a large extend. Also lower_bound and upper_bound algorithms are driven by this compare function. Note that ICL does offer a compare functor in its interface but this one is not used in the underlying used set or map. </p> gast128@… https://svn.boost.org/trac10/ticket/12793 https://svn.boost.org/trac10/ticket/12793 Report #12789: Instantiating bimap with all three "additional" template parameter fails to compile. Wed, 25 Jan 2017 15:21:48 GMT Wed, 25 Jan 2017 15:21:48 GMT <p> The following test program fails to compile. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/bimap.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;memory&gt;</span><span class="cp"></span> <span class="kt">void</span> <span class="nf">test</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">bimap</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">bimaps</span><span class="o">::</span><span class="n">left_based</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">bimaps</span><span class="o">::</span><span class="n">with_info</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">allocator</span><span class="o">&lt;</span><span class="kt">void</span><span class="o">&gt;&gt;</span> <span class="n">map</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> The compile error from g++ 4.9.2 starts with: </p> <pre class="wiki">jhaigh@growler:~/tmp/tmp$ g++ -std=c++11 bimap_error.cpp In file included from /usr/include/boost/bimap/bimap.hpp:61:0, from /usr/include/boost/bimap.hpp:13, from bimap_error.cpp:1: /usr/include/boost/bimap/detail/bimap_core.hpp: In instantiation of ‘class boost::bimaps::detail::bimap_core&lt;int, int, boost::bimaps::left_based, boost::bimaps::with_info&lt;int&gt;, std::allocator&lt;void&gt; &gt;’: /usr/include/boost/bimap/bimap.hpp:133:7: required from ‘class boost::bimaps::bimap&lt;int, int, boost::bimaps::left_based, boost::bimaps::with_info&lt;int&gt;, std::allocator&lt;void&gt; &gt;’ bimap_error.cpp:5:106: required from here /usr/include/boost/bimap/detail/bimap_core.hpp:410:7: error: no class template named ‘rebind’ in ‘boost::bimaps::detail::manage_additional_parameters&lt;boost::bimaps::left_based, boost::bimaps::with_info&lt;int&gt;, std::allocator&lt;void&gt; &gt;::case_SHA::allocator {aka struct boost::bimaps::with_info&lt;int&gt;}’ ... </pre><p> Boost thinks my with_info parameter is an allocator! The full compiler output will be attached, but I think this is enough to see the problem. </p> <p> It looks like the cause is the case_SHA struct in boost/bimap/detail/manage_additional_parameters that deals with the case when all three additional template parameters are given to bimap: </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span> <span class="k">class</span> <span class="nc">AP1</span><span class="p">,</span> <span class="k">class</span> <span class="nc">AP2</span><span class="p">,</span> <span class="k">class</span> <span class="nc">AP3</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">manage_additional_parameters</span> <span class="p">{</span> <span class="p">...</span> <span class="k">struct</span> <span class="n">case_SHA</span> <span class="p">{</span> <span class="k">typedef</span> <span class="n">AP1</span> <span class="n">set_type_of_relation</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">AP2</span> <span class="n">allocator</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">BOOST_DEDUCED_TYPENAME</span> <span class="n">AP2</span><span class="o">::</span><span class="n">value_type</span> <span class="n">additional_info</span><span class="p">;</span> <span class="p">};</span> </pre></div></div><p> AP2 is used for both the allocator type and the additional_info type. I think allocator should be typedefed to AP3, not AP2. </p> jonathan.haigh@… https://svn.boost.org/trac10/ticket/12789 https://svn.boost.org/trac10/ticket/12789 Report #12788: optional 1.63 no longer can be initialized from '<brace-enclosed initializer list>' Wed, 25 Jan 2017 09:19:18 GMT Fri, 07 Apr 2017 07:50:03 GMT <p> The code below compiles fine with boost.1.62 - but it can't compile with boost1.63: </p> <pre class="wiki"> struct S { int a; int b; }; boost::optional&lt;S&gt; so; so = {1,2}; </pre><p> With error: </p> <p> error: no match for 'operator=' (operand types are 'boost::optional&lt;S&gt;' and '&lt;brace-enclosed initializer list&gt;') </p> piotrwn1@… https://svn.boost.org/trac10/ticket/12788 https://svn.boost.org/trac10/ticket/12788 Report #12787: how to read non-utf8 strings with boost::property_tree Wed, 25 Jan 2017 09:09:24 GMT Thu, 26 Jan 2017 13:46:44 GMT <p> Hi, I am having this problem with boost::property_tree::read_json since 1.59! My json tree looks like this (code attached): </p> <pre class="wiki">static std::string reduced("{\n \"pipename\": \"quantiser(decode_lut_string=&lt;verbatim&gt;\\u0000@\\u0000\200\\u0000&lt;\\/verbatim&gt;)\",\n \"raw\": {\n \"type\": \"t\",\n \"rank\": \"3\",\n \"shape\": {\n \"dim\": \"256\",\n \"dim\": \"128\",\n \"dim\": \"128\"\n }\n },\n \"encoded\": {\n \"bytes\": \"4194304\"\n }\n}\n",296); </pre><p> If you check, there is a section between &lt;verbatim&gt;..&lt;/verbatim&gt; that I'd like to parse as is. the read_json method however throws an exception saying that: </p> <pre class="wiki">&lt;unspecified file&gt;(4): invalid code sequence </pre><p> my guess is, that the characters quoted above are non-utf8 and hence property_tree throws. Is this a bug or a feature? </p> <p> if it is a feature, i.e. property_tree is meant to only yield utf8 encoded strings, how would I store an arbitrary string in the property tree? NB. the string above works with boost 1.58 and older! </p> <p> Best, P </p> steinbac@… https://svn.boost.org/trac10/ticket/12787 https://svn.boost.org/trac10/ticket/12787 Report #12785: building in solaris 10: ./build.sh: syntax error at line 135: `machine=$' unexpected Tue, 24 Jan 2017 20:10:22 GMT Tue, 24 Jan 2017 20:10:22 GMT <p> This is happening because of: </p> <pre class="wiki">tools/build/src/engine/build.sh:135: machine=$(gcc -dumpmachine 2&gt;/dev/null) </pre><p> In solaris 10 the version of csh standing in for /bin/sh doesn't allow that syntax. As a workaround I changed the shebang line to use /bin/bash. Wherever scripts get executed by bootstrap.sh would it be possible to make it overtly call out a shell (eg, use ${SHELL}, ${CONFIG_SHELL} or something) instead of relying on the shebang line? </p> anonymous https://svn.boost.org/trac10/ticket/12785 https://svn.boost.org/trac10/ticket/12785 Report #12784: Use of "cp -p" on a tmpfs is broken in recent versions coreutils on solaris Tue, 24 Jan 2017 19:48:12 GMT Tue, 24 Jan 2017 19:58:48 GMT <p> When running bootstrap.sh, under the circumstances outlined below it'll fail to copy "b2" to "jam0" with the error: </p> <pre class="wiki">preserving permissions for 'bin.solarissparc/bjam': Operation not applicable </pre><p> This happens when: </p> <ul><li>Building on solaris </li><li>Using the gcc toolset (unsure whether this is related) </li><li>umask is set to 002 (works fine with 022) </li><li>The GNU version of "cp" is the first one found in PATH </li><li>That version of "cp" was built against a new enough version of coreutils </li></ul><p> I was able to work around the problem like this: </p> <pre class="wiki">mkdir -p /tmp/dirty_hack cd /tmp/dirty_hack ln -s /usr/bin/cp PATH=/tmp/dirty_hack:${PATH} ./bootstrap.sh ...bootstrap flags... PATH=/tmp/dirty_hack:${PATH} ./bjam ...bjam flags... </pre><p> At a minimum it might be a good idea to allow a configurable variable akin to JAMSHELL for what string to use to copy files &amp; preserve permissions. </p> anonymous https://svn.boost.org/trac10/ticket/12784 https://svn.boost.org/trac10/ticket/12784 Report #12783: Make some existing solaris-specific flags only be used with the solaris studio toolset Tue, 24 Jan 2017 19:20:54 GMT Tue, 24 Jan 2017 19:20:54 GMT <p> When building in solaris it automatically incorporates the following pre-processor definitions in a number of projects: </p> <p> -D_XOPEN_SOURCE=500 -D<span class="underline">EXTENSIONS</span> </p> <p> In either 1.45 or 1.46 these were only present in boost.asio but they've since been propagated to a number of other projects. </p> <p> These should only be defined when using the solaris studio toolset. When building with the gcc toolset these definitions trip things up when feature_tests.h is included. </p> anonymous https://svn.boost.org/trac10/ticket/12783 https://svn.boost.org/trac10/ticket/12783 Report #12781: Boost.MPI header <boost/mpi.hpp> cannot be included in project headers Mon, 23 Jan 2017 16:18:59 GMT Mon, 24 Apr 2017 16:31:17 GMT <p> When including the Boost.MPI header &lt;boost/mpi.hpp&gt; inside of a project specific header file multiple definitions of macros from other supporting boost libraries. (output attached) </p> <p> There seems to be some header guards missing but I have not really looked in to the error beyond fixing it by not including the &lt;boost/mpi.hpp&gt; header outside of compiled project files. </p> <p> When using OS CentOS 6.5 this error does not exist so a newer OS is required to reproduce the error. I have reproduced the error on CentOS 7, Ubuntu 16.04.1-LTS, and Fedora 25. </p> ryan.krattiger@… https://svn.boost.org/trac10/ticket/12781 https://svn.boost.org/trac10/ticket/12781 Report #12777: uniform_real_distribution fails to compile with result_type having explicit conversion constructor from float Sun, 22 Jan 2017 07:47:15 GMT Sun, 22 Jan 2017 07:47:15 GMT <p> Consider the following test program: </p> <pre class="wiki">#include &lt;random&gt; #include &lt;boost/random/uniform_real_distribution.hpp&gt; #include &lt;half.hpp&gt; template&lt;typename Float&gt; void test() { std::random_device rd; std::mt19937 mt(rd()); boost::random::uniform_real_distribution&lt;Float&gt; rnd(Float(1),Float(10)); rnd(mt); } int main() { test&lt;float&gt;(); // this works test&lt;half_float::half&gt;(); // and this doesn't compile } </pre><p> It uses half.hpp from half.sourceforge.net. This type has a peculiar behavior with arithmetic involving types other than it: the variable converts implicitly to <code>float</code>, and then the explicit constructor half_float::half(float) prevents some code from compiling. Namely, the code above doesn't compile due to the <code>return 2 * generate_uniform_real(...)</code> in generate_uniform_real(). I've seen there already exist explicit casts like for the arguments T(min_value / 2) and the like. I've been able to fix it locally with the attached patch. </p> b7.10110111@… https://svn.boost.org/trac10/ticket/12777 https://svn.boost.org/trac10/ticket/12777 Report #12773: WINDOWS- Boost thread 1.63.0 strict aliasing warnings Thu, 19 Jan 2017 13:34:42 GMT Tue, 14 Nov 2017 20:54:51 GMT <p> I'm cross-compiling boost on Linux, having 32-bit mingw64 as a target. </p> <p> I'm still seeing strict aliasing complaints on boost 1.63.0 thread/win32/shared_mutex.hpp. </p> <p> As gcc 6 has even stricter aliasing rules, I'm afraid that these may be harmful, so I came up with the attached patch - which is ugly, but works. </p> alexandre.nunes@… https://svn.boost.org/trac10/ticket/12773 https://svn.boost.org/trac10/ticket/12773 Report #12772: Interval streaming does not work for std::wstring Wed, 18 Jan 2017 09:37:09 GMT Wed, 18 Jan 2017 09:37:09 GMT <p> Stream operators for intervals only work for std::string, e.g. the following code gives a compilation error: </p> <pre class="wiki">void Test() { typedef boost::icl::interval_set&lt;int&gt; IntervalSet; IntervalSet setSimple; setSimple.add(1).add(3); for (const IntervalSet::value_type&amp; r : setSimple) { std::wstringstream wsstr; wsstr &lt;&lt; r; } } </pre> gast128@… https://svn.boost.org/trac10/ticket/12772 https://svn.boost.org/trac10/ticket/12772 Report #12768: Provide intrusive unordered_set with automatic bucket management Wed, 18 Jan 2017 00:51:46 GMT Wed, 26 Jul 2017 00:18:44 GMT <p> The current intrusive unordered_set and unordered_multiset containers require the user to manually take care of the bucket management. </p> <p> I've written a wrapper class template that takes care of the bucket management, automatically allocating them and rehashing as the set is growing. However, writing this code is still cumbersome and tricky. </p> <p> Boost intrusive would be more usable and useful if it was providing this kind of functionality out of the box. </p> <p> Consider providing unordered intrusive containers with automatic bucket management. Maybe this can be done by extending the existing unordered_set and unordered_multiset through some template option, or maybe it will require an entirely new class template. </p> <p> Some points to consider: </p> <p> These containers should be default-constructible. A default-constructed container should be valid and empty. Ideally, the default constructor should not dynamically allocate memory. Move and swap operations should be constant-time and no-throw. </p> fdegros@… https://svn.boost.org/trac10/ticket/12768 https://svn.boost.org/trac10/ticket/12768 Report #12766: Boost Units: Quantities in Constexpr Functions Tue, 17 Jan 2017 10:37:44 GMT Fri, 20 Jan 2017 07:30:49 GMT <p> I would like to use boost quantities in C++11 constexpr functions (and later C++14 constexpr functions). Unfurtunately, I can not define a simple quantity as constexpr: </p> <pre class="wiki">#include &lt;boost/units/systems/si.hpp&gt; #include &lt;boost/units/quantity.hpp&gt; using namespace boost::units; constexpr quantity&lt; si::length, double &gt; dtestExt{ 0.2e-6 }; // or constexpr quantity&lt; si::length, double &gt; dtestExt = 0.2e-6; </pre><p> g++ -std=c++11 (4.9.4): </p> <pre class="wiki">error: the type ‘ const boost::units::quantity&lt; boost::units::unit&lt; boost::units::list&lt; boost::units::dim&lt; boost::units::length_base_dimension, boost::units::static_rational&lt;1l&gt; &gt;, boost::units::dimensionless_type &gt;, boost::units::homogeneous_system&lt; boost::units::list&lt; boost::units::si::meter_base_unit, boost::units::list&lt;boost::units::scaled_base_unit&lt;boost::units::cgs::gram_base_unit, boost::units::scale&lt;10l, boost::units::static_rational&lt;3l&gt; &gt; &gt;, boost::units::list&lt;boost::units::si::second_base_unit, boost::units::list&lt;boost::units::si::ampere_base_unit, boost::units::list&lt;boost::units::si::kelvin_base_unit, boost::units::list&lt;boost::units::si::mole_base_unit, boost::units::list&lt;boost::units::si::candela_base_unit, boost::units::list&lt;boost::units::angle::radian_base_unit, boost::units::list&lt;boost::units::angle::steradian_base_unit, boost::units::dimensionless_type&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;’ of constexpr variable ‘dtestExt’ is not literal </pre> a.huebl@… https://svn.boost.org/trac10/ticket/12766 https://svn.boost.org/trac10/ticket/12766 Report #12765: Provide heterogeneous lookup methods using the container's hasher and/or comparator functions Mon, 16 Jan 2017 23:50:08 GMT Wed, 26 Jul 2017 00:19:43 GMT <p> Boost intrusive containers have heterogeneous lookup methods taking a key of an arbitrary type. All these methods also require to pass a hasher and/or a comparison function dealing with this key type. But what if the hasher/comparator embedded in the container itself can already deal with these key type? I'd like to avoid passing to these methods a function that the container already knows about. </p> <p> Consider adding heterogeneous lookup methods using the hasher and/or comparator already stored in the container. </p> <p> Like std::set or std::map, you might want to enable these methods only if the hasher and comparator declare a <code>is_transparent</code> nested type. See <a class="ext-link" href="http://en.cppreference.com/w/cpp/container/map/find"><span class="icon">​</span>http://en.cppreference.com/w/cpp/container/map/find</a>. </p> <p> Something like: </p> <pre class="wiki">template &lt;typename T, class... Options&gt; class set { public: ... template &lt;typename K, typename = key_compare::is_transparent&gt; iterator find(const K&amp; key) { return find(key, key_comp()); } ... }; </pre><p> That would make these heterogeneous lookup methods more convenient to use. </p> fdegros@… https://svn.boost.org/trac10/ticket/12765 https://svn.boost.org/trac10/ticket/12765 Report #12764: Improve documentation regarding disposers Mon, 16 Jan 2017 23:13:00 GMT Mon, 16 Jan 2017 23:13:00 GMT <p> The documentation about disposers in intrusive containers could be improved. </p> <p> Disposers are unusual in the sense that they deal with pointers to nodes whereas all the other intrusive container APIs deal with references to nodes. This point should be made clearer. </p> <p> For example, in: <a href="http://www.boost.org/doc/libs/1_63_0/doc/html/intrusive/erasing_and_disposing.html">http://www.boost.org/doc/libs/1_63_0/doc/html/intrusive/erasing_and_disposing.html</a> </p> <p> <code>remove_and_dispose_if</code> will call the "disposer" function object for every removed element. </p> <p> The documentation should emphasize that the element is passed to the disposer function by pointer, and not by reference. It is even more important in this example because <code>remove_and_dispose_if</code> also takes a predicate function taking elements by reference. So, we have a method <code>remove_and_dispose_if</code> taking two callbacks receiving elements in a different way: the predicate takes elements by reference, and the disposer takes elements by pointer. This is confusing and looks like a gratuitous inconsistency. This difference should be better explained, as well as the reason why disposers take elements by pointer and not by reference. </p> <p> Also in the same page: "Note that the disposing function does not need to just destroy the object. It can implement any other operation like inserting the remove object in another container. Let's see a small example..." </p> <p> But the example that follows doesn't show how to insert the removed object into another container. It shows how to destroy it with the delete operator. </p> <p> There is also a typo here. Change "the remove object" to "the removed object". </p> <p> Finally, this documentation should probably mention <a class="ext-link" href="http://en.cppreference.com/w/cpp/memory/default_delete"><span class="icon">​</span>std::default_delete</a>. It could be used in the example instead of rolling out our own function object calling the <code>delete</code> operator. </p> fdegros@… https://svn.boost.org/trac10/ticket/12764 https://svn.boost.org/trac10/ticket/12764 Report #12763: Provide a way to specify a default disposer Mon, 16 Jan 2017 07:19:18 GMT Wed, 26 Jul 2017 00:21:42 GMT <p> It would be convenient if there was a way to specify a default disposer to be applied to elements stored in an intrusive container. This would make it easier to write containers that take ownership of their inserted elements. </p> <p> This would impact the container's destructor as well as the methods <code>erase</code>, <code>erase_after</code>, <code>clear</code>, <code>remove</code>, <code>remove_if</code>, <code>pop_front</code>, <code>pop_back</code>, <code>assign</code>, <code>unique</code> and <code>clone_from</code>. </p> <p> The library should probably provide a no-op disposer, which would be the default one used by intrusive containers. Particular care should be taken in <code>clear</code> and containers' destructors in order to avoid calling the no-op disposer for every element. </p> <p> For example: </p> <pre class="wiki">boost::intrusive::list&lt;MyElement, boost::intrusive::disposer&lt;std::default_delete&lt;MyElement&gt;&gt;&gt; elems; elems.insert(*new MyElement); // Clearing the collection deletes the elements. elems.clear(); </pre> fdegros@… https://svn.boost.org/trac10/ticket/12763 https://svn.boost.org/trac10/ticket/12763 Report #12758: Fix warning: declaration of 'explicit' constructor without a single argument is redundant Fri, 13 Jan 2017 14:28:19 GMT Sun, 15 Jan 2017 04:14:17 GMT <p> Dear Boost Developers, </p> <p> When compiling Boost with a certain warning level in Linux we get the following warnings. warning <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2305" title="#2305: Patches: Patch to fix warnings in boost.test (closed: fixed)">#2305</a>: declaration of 'explicit' constructor without a single argument is redundant </p> <p> Attached you find the diff file to resolve the problem. </p> <p> Regards </p> <p> Martin </p> martin.wild@… https://svn.boost.org/trac10/ticket/12758 https://svn.boost.org/trac10/ticket/12758 Report #12756: Getting the error: " undefined reference to `_Py_NoneStruct' " using boost.python Thu, 12 Jan 2017 21:57:34 GMT Sun, 15 Jan 2017 04:01:28 GMT <p> Trying to use Boost.Python to wrap some c++ code. After installing boost and building the python libraries I try running it in a working c++ project (all I have done is add the #include &lt;boost_1_63_0/boost/python.hpp&gt; in one of the cpp files and I receive the error " undefined reference to `_Py_NoneStruct' "). I have tried it with building the boost with python 2.7 and 3.4 (using ./bootstrap.sh --with-python-version=X.Y). </p> <p> I have tried on two separate Ubuntu computers. And I receive this same error on both of them. _ </p> Joshua Moser <joshnm7@…> https://svn.boost.org/trac10/ticket/12756 https://svn.boost.org/trac10/ticket/12756 Report #12755: serialization/map.hpp tests for the wrong thing to figure out whether emplace_hint() exists Thu, 12 Jan 2017 20:02:11 GMT Wed, 03 May 2017 21:47:14 GMT <p> Originally from here: <a class="ext-link" href="https://github.com/geodynamics/aspect/issues/1271"><span class="icon">​</span>https://github.com/geodynamics/aspect/issues/1271</a> </p> <p> boost::serialization has this piece of code in serialization/map.hpp: <code></code>` </p> <blockquote> <p> typename Container::iterator result = </p> <blockquote> <p> #ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP </p> <blockquote> <p> s.insert(hint, t.reference()); </p> </blockquote> <p> #else </p> <blockquote> <p> s.emplace_hint(hint, t.reference()); </p> </blockquote> <p> #endif </p> </blockquote> </blockquote> <p> <code></code>` The assumption must have been that BOOST_NO_CXX11_HDR_UNORDERED_MAP is indicative of whether std::map has an emplace_hint() function (which is new to C++11). The define comes from here (boost/config/stdlib/libstdcpp3.hpp): <code></code>` <em> C++0x headers in GCC 4.3.0 and later </em> </p> <table class="wiki"> <tr>#if (BOOST_LIBSTDCXX_VERSION &lt; 40300) <td> !defined(BOOST_LIBSTDCXX11) </td></tr></table> <p> # define BOOST_NO_CXX11_HDR_ARRAY # define BOOST_NO_CXX11_HDR_TUPLE # define BOOST_NO_CXX11_HDR_UNORDERED_MAP # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_HDR_FUNCTIONAL #endif <code></code>` The problem is that for GCC 4.8, BOOST_NO_CXX11_HDR_UNORDERED_MAP is not set, but the libstdc++ that comes with this compiler still doesn't have emplace_hint(). In other words, if one tries to compile something with GCC 4.8 that calls this function, then it will result in a compiler error. </p> <p> The solution is to either exclude the "special" GCC 4.8 in this one location and fall back to insert(), or to have some kind of test that is actually specific to testing whether or not emplace_hint() exists. </p> bangerth@… https://svn.boost.org/trac10/ticket/12755 https://svn.boost.org/trac10/ticket/12755 Report #12754: operator| overload for boost::range_details::replace_holder is not SFINAE friendly Thu, 12 Jan 2017 13:40:13 GMT Mon, 16 Jan 2017 09:33:28 GMT <p> If I provide a simple operator | overload for my template class and I provide a class template specializations with for instance a boost range (so that adl adds the boost::range_details namespace for overloads) then the compiler chokes on the non-SFINEA friendly overload </p> <pre class="wiki">friendly boost::range_details::operator|( SinglePassRange, const replace_holder&lt;BOOST_DEDUCED_TYPENAME range_value&lt;SinglePassRange&gt;::type&gt; ) </pre><hr /> <p> Example: </p> <pre class="wiki">namespace local { template&lt;typename T&gt; struct boo {}; // this overload is not prefered when T is a boost::range::xxx_range template&lt;typename T, typename U&gt; auto operator|(boo&lt;T&gt;, U) { return false; } void finds_local_operator_overload() { std::vector&lt;int&gt; xs; // works like expected and calls local::operator| auto f = boo&lt;decltype(xs)&gt;{} | xs; } void prefers_boost_range_detail_replaced_operator_overload_instead_of_local_operator() { std::vector&lt;int&gt; xs; // compiler error because it tries to call 'boost::range_detail::operator|' auto filtered = xs | boost::adaptors::filtered([](auto &amp;&amp;x){ return x % 2; }); auto f = boo&lt;decltype(filtered)&gt;{} | xs; } } </pre><p> clang error (msvc reports almost the same): </p> <pre class="wiki">/xxx/../../thirdparty/boost/1.60.0/dist/boost/range/value_type.hpp:26:70: error: no type named 'type' in 'boost::range_iterator&lt;local::boo&lt;boost::range_detail::filtered_range&lt;(lambda at /xxx/Tests.cpp:221:49), std::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;, void&gt;' struct range_value : iterator_value&lt; typename range_iterator&lt;T&gt;::type &gt; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ /xxx/../../thirdparty/boost/1.60.0/dist/boost/range/adaptor/replaced.hpp:122:40: note: in instantiation of template class 'boost::range_value&lt;local::boo&lt;boost::range_detail::filtered_range&lt;(lambda at /xxx/Tests.cpp:221:49), std::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt; &gt;' requested here BOOST_DEDUCED_TYPENAME range_value&lt;SinglePassRange&gt;::type&gt;&amp; f) ^ /xxx/Tests.cpp:222:37: note: while substituting deduced template arguments into function template 'operator|' [with SinglePassRange = local::boo&lt;boost::range_detail::filtered_range&lt;(lambda at /xxx/Tests.cpp:221:49), std::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;] auto f = boo&lt;decltype(filtered)&gt;{} | xs; </pre><p> This can be easily prevented by making the operator overload SFINEA friendly. </p> Tim Wynants <tim.wynants+boost@…> https://svn.boost.org/trac10/ticket/12754 https://svn.boost.org/trac10/ticket/12754 Report #12746: boost::filesystem::canonical fails for network paths on windows/inconsistent behavior Wed, 11 Jan 2017 03:07:52 GMT Wed, 11 Jan 2017 03:09:56 GMT <p> if you do: </p> <p> boost::system::error_code ec; </p> <p> path myPath = canonical(path("<br /><br />mynetworkmachine<br />somepath<br />somefile.txt"),ec); </p> <p> ec.m_val will be 161 </p> <p> Additionally, it does not throw an exception when using the exception form of the call. </p> Rob.Conde@… https://svn.boost.org/trac10/ticket/12746 https://svn.boost.org/trac10/ticket/12746 Report #12743: boost::filesystem in Windows fails to compare two identical paths with different case Tue, 10 Jan 2017 14:55:16 GMT Wed, 08 Mar 2017 20:54:50 GMT <blockquote> <p> boost::filesystem::path a = "E:<br />temp<br />One"; boost::filesystem::path b = "E:<br />Temp<br />One"; </p> </blockquote> <blockquote> <p> if (a == b) { </p> <blockquote> <p> std::cout &lt;&lt; "Paths are identical" &lt;&lt; std::endl; </p> </blockquote> <p> } else { </p> <blockquote> <p> std::cout &lt;&lt; "Paths are different" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <p> This code prints "Paths are different". </p> diecalt@… https://svn.boost.org/trac10/ticket/12743 https://svn.boost.org/trac10/ticket/12743 Report #12741: Linker error in cross compiling with x86_64-w64-mingw32-g++ Tue, 10 Jan 2017 11:31:22 GMT Fri, 08 Sep 2017 14:53:37 GMT <p> Using </p> <pre class="wiki">using gcc : i686 : i686-w64-mingw32-g++ ; using gcc : x86_64 : x86_64-w64-mingw32-g++ ; </pre><p> in tools/build/src/user-config.jam </p> <p> with x86_64-w64-mingw32-g++ (GCC) 5.3.1 20160211 and calling </p> <pre class="wiki">./b2 toolset=gcc-x86_64 address-model=64 link=shared --stagedir=x64 target-os=windows threading=multi threadapi=win32 variant=release --with-date_time --with-filesystem --with-graph --with-math --with-program_options --with-serialization --with-system --with-thread --with-timer </pre><p> gives linker errors </p> <pre class="wiki">gcc.link.dll bin.v2/libs/serialization/build/gcc-mingw-x86_64/release/target-os-windows/threadapi-win32/threading-multi/libboost_wserialization.dll.a bin.v2/libs/serialization/build/gcc-mingw-x86_64/release/target-os-windows/threadapi-win32/threading-multi/basic_text_wiprimitive.o:basic_text_wiprimitive.cpp:(.rdata$.refptr._ZTVN5boost7archive12codecvt_nullIwEE[.refptr._ZTVN5boost7archive12codecvt_nullIwEE]+0x0): undefined reference to `vtable for boost::archive::codecvt_null&lt;wchar_t&gt;' bin.v2/libs/serialization/build/gcc-mingw-x86_64/release/target-os-windows/threadapi-win32/threading-multi/xml_wiarchive.o:xml_wiarchive.cpp:(.rdata$.refptr._ZTVN5boost7archive6detail18utf8_codecvt_facetE[.refptr._ZTVN5boost7archive6detail18utf8_codecvt_facetE]+0x0): undefined reference to `vtable for boost::archive::detail::utf8_codecvt_facet' </pre><p> The 32bit version i686-w64-mingw32-g++ with toolset=gcc-i686 address-model=32 works. </p> zimmermann@… https://svn.boost.org/trac10/ticket/12741 https://svn.boost.org/trac10/ticket/12741 Report #12738: Invalid include of no_exceptions_support.hpp in boost/move/algorithm.hpp. Mon, 09 Jan 2017 15:05:41 GMT Mon, 09 Jan 2017 15:08:04 GMT <p> The file boost/move/algorithm.hpp contains the following include statement, last modified in commit : </p> <pre class="wiki">#include &lt;boost/detail/no_exceptions_support.hpp&gt; </pre><p> This file appears to have been moved from the _detail_ module to the _core_ module in 6/2014 in _core_ commit 60c9a35d8 (_detail_ commit 099854de). </p> <p> In the Ubuntu apt install of Boost, copies of no_exceptions_support.hpp exist in both /usr/include/boost/core and /usr/include/boost/detail. This is not the case, however, when cloning from git repos, and doesn't appear to have been the case for 2 years now. I'm not sure when the copied file workaround got made, but apparently the proper fix was never propagated back to the repo? </p> <p> In my case it, causes bcp to silently fail to copy that file when extracting Boost.Circular Buffer, resulting in a compilation failure in my codebase. I'm not sure why bcp doesn't issue a warning that the file doesn't exist. </p> ashapiro@… https://svn.boost.org/trac10/ticket/12738 https://svn.boost.org/trac10/ticket/12738 Report #12737: Invalid include of no_exceptions_support.hpp in boost/move/algorithm.hpp. Mon, 09 Jan 2017 15:05:36 GMT Mon, 09 Jan 2017 15:27:49 GMT <p> The file boost/move/algorithm.hpp contains the following include statement, last modified in commit : </p> <pre class="wiki">#include &lt;boost/detail/no_exceptions_support.hpp&gt; </pre><p> This file appears to have been moved from the _detail_ module to the _core_ module in 6/2014 in _core_ commit 60c9a35d8 (_detail_ commit 099854de). </p> <p> In the Ubuntu apt install of Boost, copies of no_exceptions_support.hpp exist in both /usr/include/boost/core and /usr/include/boost/detail. This is not the case, however, when cloning from git repos, and doesn't appear to have been the case for 2 years now. I'm not sure when the copied file workaround got made, but apparently the proper fix was never propagated back to the repo? </p> <p> In my case it, causes bcp to silently fail to copy that file when extracting Boost.Circular Buffer, resulting in a compilation failure in my codebase. I'm not sure why bcp doesn't issue a warning that the file doesn't exist. </p> ashapiro@… https://svn.boost.org/trac10/ticket/12737 https://svn.boost.org/trac10/ticket/12737 Report #12736: crc table init at compile time Mon, 09 Jan 2017 14:16:47 GMT Wed, 08 Nov 2017 02:48:35 GMT <p> struct crc_table_t should try to use constexpr constructor for table_ initialization. this will allow to move table_ to readonly data segment and remove table initialization code. </p> ajax16384@… https://svn.boost.org/trac10/ticket/12736 https://svn.boost.org/trac10/ticket/12736 Report #12735: asio: Fails to include unistd.h if BOOST_ASIO_HAS_BOOST_CONFIG is defined Mon, 09 Jan 2017 12:17:12 GMT Tue, 07 Feb 2017 10:32:24 GMT <p> uname -a: </p> <pre class="wiki">Linux &lt;hostname&gt; 4.8.0-2-amd64 #1 SMP Devuan 4.8.11-1 (2016-12-02) x86_64 GNU/Linux </pre><p> clang++ --version: </p> <pre class="wiki">clang version 3.9.1-1 (tags/RELEASE_391/rc2) </pre><p> libc++ version: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#define _LIBCPP_VERSION 1101</span> </pre></div></div><p> Compilation example; </p> <pre class="wiki">clang++ -D_GNU_SOURCE -DBOOST_USER_CONFIG=\"boost_config.hpp\" -Drestrict=__restrict__ -pthread -O2 -g -Wall -Wextra -Wno-unknown-pragmas -Werror -Wformat-security -Woverloaded-virtual -Wwrite-strings -Wnon-virtual-dtor -Wno-mismatched-tags -Wno-tautological-constant-out-of-range-compare -Wno-gnu-designator -Wno-enum-conversion -fPIC -D__STDC_LIMIT_MACROS -std=gnu++11 -Wno-deprecated-declarations -stdlib=libc++ -c -o test.cpp.o test.cpp </pre><p> Error message: </p> <pre class="wiki">In file included from asio/local/stream_protocol.hpp:23: In file included from asio/basic_socket_acceptor.hpp:19: In file included from asio/basic_io_object.hpp:19: In file included from asio/io_service.hpp:767: In file included from asio/impl/io_service.hpp:71: In file included from asio/detail/task_io_service.hpp:198: In file included from asio/detail/impl/task_io_service.ipp:24: In file included from asio/detail/reactor.hpp:21: In file included from asio/detail/epoll_reactor.hpp:29: In file included from asio/detail/select_interrupter.hpp:25: In file included from asio/detail/eventfd_select_interrupter.hpp:80: asio/detail/impl/eventfd_select_interrupter.ipp:78:9: error: use of undeclared identifier 'pipe' if (pipe(pipe_fds) == 0) ^ asio/detail/impl/eventfd_select_interrupter.ipp:104:7: error: no type named 'close' in the global namespace ::close(write_descriptor_); ~~^ asio/detail/impl/eventfd_select_interrupter.ipp:106:7: error: no type named 'close' in the global namespace ::close(read_descriptor_); ~~^ asio/detail/impl/eventfd_select_interrupter.ipp:122:18: error: no member named 'write' in the global namespace int result = ::write(write_descriptor_, &amp;counter, sizeof(uint64_t)); ~~^ asio/detail/impl/eventfd_select_interrupter.ipp:135:26: error: no member named 'read' in the global namespace int bytes_read = ::read(read_descriptor_, &amp;counter, sizeof(uint64_t)); ~~^ asio/detail/impl/eventfd_select_interrupter.ipp:148:26: error: no member named 'read' in the global namespace int bytes_read = ::read(read_descriptor_, data, sizeof(data)); ~~^ asio/detail/impl/eventfd_select_interrupter.ipp:153:24: error: no member named 'read' in the global namespace bytes_read = ::read(read_descriptor_, data, sizeof(data)); </pre><p> Details: </p> <p> Given the following abbreviated configuration file (called "boost_config.hpp" in the compilation example above) passed with -DBOOST_USER_CONFIG: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#define BOOST_NO_CONFIG</span> <span class="cp">#define BOOST_BIND_NO_PLACEHOLDERS</span> <span class="cp">#define BOOST_DISABLE_ABI_HEADERS</span> <span class="cp">#define BOOST_COMPILER_CONFIG &quot;boost/config/compiler/clang.hpp&quot;</span> <span class="cp">#define BOOST_STDLIB_CONFIG &quot;boost/config/stdlib/libcpp.hpp&quot;</span> <span class="cp">#define BOOST_PLATFORM &quot;linux&quot;</span> <span class="cp">#define BOOST_HAS_UNISTD_H</span> </pre></div></div><p> Then ASIO will, in detail/config.hpp, include &lt;boost/config.hpp&gt; and &lt;boost/version.hpp&gt; and define BOOST_ASIO_HAS_BOOST_CONFIG. </p> <p> Further down in the same file, BOOST_ASIO_HAS_UNISTD_H decides whether it should include unistd.h or not. </p> <p> The checks performed there fails to account for situations such as this where BOOST_ASIO_HAS_BOOST_CONFIG has been defined. </p> <p> This probably works "as is" for the more popular combinations since they will pull in unistd.h through other configuration files (stdlib for example), but does not work for combinations that don't do that, such as Clang using libc++ on Linux. </p> <p> Fix: </p> <p> If BOOST_ASIO_HAS_BOOST_CONFIG is defined, check BOOST_HAS_UNISTD_H and define BOOST_ASIO_HAS_UNISTD_H accordingly so that unistd.h gets included when it should. </p> Idar Tollefsen <idart@…> https://svn.boost.org/trac10/ticket/12735 https://svn.boost.org/trac10/ticket/12735 Report #12732: Karma problem converting a char vector to string Fri, 06 Jan 2017 15:16:39 GMT Tue, 02 May 2017 14:51:33 GMT <p> The version of Boost.Spirit.Karma included with Boost 1.63.0 appears to have a problem converting a char vector to a string when building with Apple Clang 8.0 using the <code>-std=c++14</code> (or <code>-std=gnu++14</code>) option. Consider the following example: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/spirit/include/karma.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/fusion/include/adapt_struct.hpp&gt;</span><span class="cp"></span> <span class="k">struct</span> <span class="n">foo</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">;</span> <span class="p">};</span> <span class="n">BOOST_FUSION_ADAPT_STRUCT</span><span class="p">(</span> <span class="n">foo</span><span class="p">,</span> <span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">a</span><span class="p">)</span> <span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> <span class="p">)</span> <span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">spirit</span><span class="o">::</span><span class="n">karma</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">rule</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">back_insert_iterator</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">foo</span><span class="p">(),</span> <span class="n">space_type</span><span class="o">&gt;</span> <span class="n">rule_t</span><span class="p">;</span> <span class="n">rule_t</span> <span class="n">r</span> <span class="o">=</span> <span class="o">+</span><span class="n">char_</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;(&#39;</span> <span class="o">&lt;&lt;</span> <span class="n">string</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;)&#39;</span> <span class="o">|</span> <span class="n">skip</span><span class="p">[</span><span class="n">string</span><span class="p">]</span> <span class="o">&lt;&lt;</span> <span class="n">string</span> <span class="p">;</span> <span class="n">foo</span> <span class="n">f</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;a&quot;</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">};</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">s</span><span class="p">;</span> <span class="n">generate_delimited</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">back_inserter</span><span class="p">(</span><span class="n">s</span><span class="p">),</span> <span class="n">r</span><span class="p">,</span> <span class="n">space</span><span class="p">,</span> <span class="n">f</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> When compiled with the -std=c++14 and -stdlib=libc++ options, the following errors are emitted: </p> <pre class="wiki">$ c++ -I ~/Build/ng-core-Debug/API/inc -std=c++14 -stdlib=libc++ -o karma-char-seq karma-char-seq.cpp In file included from karma-char-seq.cpp:1: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/phoenix.hpp:11: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/phoenix/phoenix.hpp:11: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/phoenix/core.hpp:13: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/phoenix/core/debug.hpp:17: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/proto/proto.hpp:12: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/proto/core.hpp:21: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/proto/fusion.hpp:22: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/include/intrinsic.hpp:11: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/sequence/intrinsic.hpp:23: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/sequence/intrinsic/swap.hpp:15: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/view/zip_view.hpp:12: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/view/zip_view/zip_view.hpp:16: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/view/zip_view/detail/begin_impl.hpp:14: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/algorithm/transformation/transform.hpp:11: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/view/transform_view/transform_view.hpp:22: In file included from /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/container/vector/vector10.hpp:25: /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/container/vector/vector.hpp:168:19: error: no matching constructor for initialization of 'std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;' : elem(std::forward&lt;U&gt;(rhs)) ^ ~~~~~~~~~~~~~~~~~~~~ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/container/vector/vector.hpp:208:19: note: in instantiation of function template specialization 'boost::fusion::vector_detail::store&lt;0, std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt; &gt;::store&lt;std::__1::basic_string&lt;char&gt; &amp;, void&gt;' requested here : store&lt;I, T&gt;(forward_at_c&lt;I&gt;(std::forward&lt;Sequence&gt;(rhs)))... ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/fusion/container/vector/vector.hpp:319:15: note: in instantiation of function template specialization 'boost::fusion::vector_detail::vector_data&lt;boost::fusion::detail::index_sequence&lt;0, 1&gt;, std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char&gt; &gt;::vector_data&lt;foo, foo, void&gt;' requested here : base(vector_detail::each_elem(), std::forward&lt;Sequence&gt;(seq)) ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/type_traits/is_convertible.hpp:482:56: note: in instantiation of function template specialization 'boost::fusion::vector&lt;std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char&gt; &gt;::vector&lt;foo, foo, void&gt;' requested here struct is_convertible : public integral_constant&lt;bool, BOOST_IS_CONVERTI... ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/type_traits/intrinsics.hpp:214:63: note: expanded from macro 'BOOST_IS_CONVERTIBLE' # define BOOST_IS_CONVERTIBLE(T,U) __is_convertible_to(T,U) ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/spirit/home/support/attributes.hpp:309:13: note: in instantiation of template class 'boost::is_convertible&lt;foo, boost::fusion::vector&lt;std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char&gt; &gt; &gt;' requested here : is_convertible&lt;Attribute, Expected&gt; ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/mpl/aux_/nested_type_wknd.hpp:27:7: note: in instantiation of template class 'boost::spirit::traits::detail::attribute_is_compatible&lt;boost::fusion::vector&lt;std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;, std::__1::basic_string&lt;char&gt; &gt;, foo&gt;' requested here : T::type ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/mpl/aux_/preprocessed/gcc/or.hpp:51:11: note: (skipping 12 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/mpl/aux_/nested_type_wknd.hpp:38:24: note: expanded from macro 'BOOST_MPL_AUX_NESTED_TYPE_WKND' ::boost::mpl::aux::nested_type_wknd&lt;T&gt; \ ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/function/function_template.hpp:1072:5: note: in instantiation of function template specialization 'boost::function3&lt;bool, boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, mpl_::int_&lt;15&gt;, boost::spirit::unused_type&gt; &amp;, boost::spirit::context&lt;boost::fusion::cons&lt;const foo &amp;, boost::fusion::nil_&gt;, boost::fusion::vector&lt;&gt; &gt; &amp;, const boost::spirit::karma::any_space&lt;boost::spirit::char_encoding::standard&gt; &amp;&gt;::function3&lt;boost::spirit::karma::detail::generator_binder&lt;boost::spirit::karma::alternative&lt;boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::plus&lt;boost::spirit::karma::any_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::nil_&gt; &gt; &gt; &gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::omit_directive&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, false&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::nil_&gt; &gt; &gt;, boost::fusion::nil_&gt; &gt; &gt;, mpl_::bool_&lt;false&gt; &gt; &gt;' requested here base_type(f) ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/function/function_template.hpp:1125:5: note: in instantiation of function template specialization 'boost::function&lt;bool (boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, mpl_::int_&lt;15&gt;, boost::spirit::unused_type&gt; &amp;, boost::spirit::context&lt;boost::fusion::cons&lt;const foo &amp;, boost::fusion::nil_&gt;, boost::fusion::vector&lt;&gt; &gt; &amp;, const boost::spirit::karma::any_space&lt;boost::spirit::char_encoding::standard&gt; &amp;)&gt;::function&lt;boost::spirit::karma::detail::generator_binder&lt;boost::spirit::karma::alternative&lt;boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::plus&lt;boost::spirit::karma::any_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::nil_&gt; &gt; &gt; &gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::omit_directive&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, false&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::nil_&gt; &gt; &gt;, boost::fusion::nil_&gt; &gt; &gt;, mpl_::bool_&lt;false&gt; &gt; &gt;' requested here self_type(f).swap(*this); ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/spirit/home/karma/nonterminal/rule.hpp:192:19: note: in instantiation of function template specialization 'boost::function&lt;bool (boost::spirit::karma::detail::output_iterator&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, mpl_::int_&lt;15&gt;, boost::spirit::unused_type&gt; &amp;, boost::spirit::context&lt;boost::fusion::cons&lt;const foo &amp;, boost::fusion::nil_&gt;, boost::fusion::vector&lt;&gt; &gt; &amp;, const boost::spirit::karma::any_space&lt;boost::spirit::char_encoding::standard&gt; &amp;)&gt;::operator=&lt;boost::spirit::karma::detail::generator_binder&lt;boost::spirit::karma::alternative&lt;boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::plus&lt;boost::spirit::karma::any_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::cons&lt;boost::spirit::karma::literal_char&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type, true&gt;, boost::fusion::nil_&gt; &gt; &gt; &gt; &gt;, boost::fusion::cons&lt;boost::spirit::karma::sequence&lt;boost::fusion::cons&lt;boost::spirit::karma::omit_directive&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, false&gt;, boost::fusion::cons&lt;boost::spirit::karma::any_string&lt;boost::spirit::char_encoding::standard, boost::spirit::unused_type&gt;, boost::fusion::nil_&gt; &gt; &gt;, boost::fusion::nil_&gt; &gt; &gt;, mpl_::bool_&lt;false&gt; &gt; &gt;' requested here lhs.f = detail::bind_generator&lt;Auto&gt;( ^ /Users/mcdanb/Build/ng-core-Debug/API/inc/boost/spirit/home/karma/nonterminal/rule.hpp:201:13: note: in instantiation of function template specialization 'boost::spirit::karma::rule&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, foo (), boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::space, boost::spirit::char_encoding::standard&gt; &gt;, 0&gt;, boost::spirit::unused_type, boost::spirit::unused_type&gt;::define&lt;mpl_::bool_&lt;false&gt;, boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::unary_plus, boost::proto::argsns_::list1&lt;const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::char_, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 1&gt; &amp;, boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;const char &amp;&gt;, 0&gt; &gt;, 2&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;, boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;const char &amp;&gt;, 0&gt; &gt;, 2&gt; &amp;, const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2&lt;const boost::spirit::terminal&lt;boost::spirit::tag::skip&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;&gt;, 2&gt; &gt;' requested here define&lt;mpl::false_&gt;(*this, expr, traits::matches&lt;karma::doma... ^ karma-char-seq.cpp:24:13: note: in instantiation of function template specialization 'boost::spirit::karma::rule&lt;std::__1::back_insert_iterator&lt;std::__1::basic_string&lt;char&gt; &gt;, foo (), boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::space, boost::spirit::char_encoding::standard&gt; &gt;, 0&gt;, boost::spirit::unused_type, boost::spirit::unused_type&gt;::rule&lt;boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::unary_plus, boost::proto::argsns_::list1&lt;const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::char_, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 1&gt; &amp;, boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;const char &amp;&gt;, 0&gt; &gt;, 2&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;, boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;const char &amp;&gt;, 0&gt; &gt;, 2&gt; &amp;, const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::shift_left, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2&lt;const boost::spirit::terminal&lt;boost::spirit::tag::skip&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;, const boost::spirit::terminal&lt;boost::spirit::tag::char_code&lt;boost::spirit::tag::string, boost::spirit::char_encoding::standard&gt; &gt; &amp;&gt;, 2&gt; &amp;&gt;, 2&gt; &gt;' requested here = +char_ &lt;&lt; '(' &lt;&lt; string &lt;&lt; ')' ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:489:40: note: candidate constructor not viable: no known conversion from 'std::__1::basic_string&lt;char&gt;' to 'const allocator_type' (aka 'const std::__1::allocator&lt;char&gt;') for 1st argument _LIBCPP_INLINE_VISIBILITY explicit vector(const allocator_type&amp; __a) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:501:14: note: candidate constructor not viable: no known conversion from 'std::__1::basic_string&lt;char&gt;' to 'size_type' (aka 'unsigned long') for 1st argument explicit vector(size_type __n); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:537:5: note: candidate constructor not viable: no known conversion from 'std::__1::basic_string&lt;char&gt;' to 'initializer_list&lt;value_type&gt;' (aka 'initializer_list&lt;char&gt;') for 1st argument vector(initializer_list&lt;value_type&gt; __il); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:549:5: note: candidate constructor not viable: no known conversion from 'std::__1::basic_string&lt;char&gt;' to 'const std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;' for 1st argument vector(const vector&amp; __x); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:555:5: note: candidate constructor not viable: no known conversion from 'std::__1::basic_string&lt;char&gt;' to 'std::__1::vector&lt;char, std::__1::allocator&lt;char&gt; &gt;' for 1st argument vector(vector&amp;&amp; __x) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:508:9: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided vector(_InputIterator __first, ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:516:9: note: candidate constructor template not viable: requires at least 3 arguments, but 1 was provided vector(_InputIterator __first, _InputIterator __last, const allo... ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:523:9: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided vector(_ForwardIterator __first, ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:530:9: note: candidate constructor template not viable: requires at least 3 arguments, but 1 was provided vector(_ForwardIterator __first, _ForwardIterator __last, const ... ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:483:5: note: candidate constructor not viable: requires 0 arguments, but 1 was provided vector() _NOEXCEPT_(is_nothrow_default_constructible&lt;allocator_type&gt;::value) ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:503:14: note: candidate constructor not viable: requires 2 arguments, but 1 was provided explicit vector(size_type __n, const allocator_type&amp; __a); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:505:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided vector(size_type __n, const_reference __x); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:539:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided vector(initializer_list&lt;value_type&gt; __il, const allocator_type&amp; __a); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:550:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided vector(const vector&amp; __x, const allocator_type&amp; __a); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:562:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided vector(vector&amp;&amp; __x, const allocator_type&amp; __a); ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:506:5: note: candidate constructor not viable: requires 3 arguments, but 1 was provided vector(size_type __n, const_reference __x, const allocator_type&amp; __a); ^ 1 error generated. </pre><p> The problem construct appears to be <code>+char_</code>. The error goes away if it is replaced with <code>string</code>; but the error also goes away if the alternative is removed from the rule. </p> <p> This code worked fine with the Boost.Spirit.Karma included with Boost 1.62.0. </p> Braden McDaniel <braden@…> https://svn.boost.org/trac10/ticket/12732 https://svn.boost.org/trac10/ticket/12732 Report #12729: crash Thu, 05 Jan 2017 13:06:39 GMT Fri, 06 Jan 2017 01:20:39 GMT <p> I find a crash:<br /> </p> <p> 1.Operating system: Android 0.0.0 Linux 3.10.0<br /> </p> <p> 2.CPU: arm ARMv7 ARM part(0x4100c070) features: swp,half,thumb,fastmult,vfpv2,edsp,neon,vfpv3,tls,vfpv4,idiva,idivt 4 CPUs<br /> </p> <p> 3.code:<br /> </p> <p> void my_thread_sleep(int millisec)<br /> </p> <p> { try{boost::thread::sleep(boost::get_system_time() + boost::posix_time::millisec(millisec));} </p> <blockquote> <p> catch (boost::thread_interrupted&amp; e){(void)e;} catch (...){} </p> </blockquote> <p> }<br /> </p> <p> thread do:<br /> </p> <p> for(;;) { my_thread_sleep(5000); }<br /> </p> <p> 4.googlebreak dump: Thread 33 (crashed) </p> <blockquote> <p> 0 libc.so + 0x1d980 </p> <blockquote> <p> <a class="missing changeset" title="No changeset 0 in the repository">r0</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> = 0x00000000 <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a> = 0x00000000 <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">r3</a> = 0x66ebd65c <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = 0x66ebd65c <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = 0x00000000 <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = 0x66ebd65c <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = 0x66ebd688 <a class="changeset" href="https://svn.boost.org/trac10/changeset/8" title="Initial content for next-gen Boost website. ">r8</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/9" title="*** empty log message *** ">r9</a> = 0x66ebd6b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/10" title="*** empty log message *** ">r10</a> = 0x0007ef31 <a class="changeset" href="https://svn.boost.org/trac10/changeset/12" title="More things getting included from common. ">r12</a> = 0xfffd0fa8 fp = 0x66ebda90 sp = 0x66ebd5b0 lr = 0x4007ba15 pc = 0x4007a980 </p> </blockquote> <p> Found by: given as instruction pointer in context </p> </blockquote> <blockquote> <p> 1 libc.so + 0x22ffe </p> <blockquote> <p> sp = 0x66ebd5cc pc = 0x40080000 </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 2 libc.so + 0x1ea13 </p> <blockquote> <p> sp = 0x66ebd5f0 pc = 0x4007ba15 </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 3 libc.so + 0x1ebc5 </p> <blockquote> <p> sp = 0x66ebd608 pc = 0x4007bbc7 </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 4 test.so!boost::date_time::microsec_clock&lt;boost::posix_time::ptime&gt;::create_time [microsec_time_clock.hpp : 117 + 0x15] </p> <blockquote> <p> sp = 0x66ebd614 pc = 0x64a1102d </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 5 test.so!boost::date_time::c_time::gmtime [c_time.hpp : 85 + 0x3] </p> <blockquote> <p> sp = 0x66ebd618 pc = 0x64a11041 </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 6 test.so!boost::date_time::microsec_clock&lt;boost::posix_time::ptime&gt;::create_time [microsec_time_clock.hpp : 100 + 0x1] </p> <blockquote> <p> sp = 0x66ebd638 pc = 0x64a10fa3 </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 7 test.so!boost::condition_variable::do_wait_until [condition_variable.hpp : 112 + 0x3] </p> <blockquote> <p> sp = 0x66ebd650 pc = 0x64af342d </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 8 test.so__gnu_ldivmod_helper [bpabi.c : 41 + 0x2] </p> <blockquote> <p> sp = 0x66ebd680 pc = 0x64b9d29c </p> </blockquote> <p> Found by: stack scanning </p> </blockquote> <blockquote> <p> 9 test.so__aeabi_ldivmod + 0x32 </p> <blockquote> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">r3</a> = 0x00000000 <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = 0x00000006 <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = 0x0009e94d sp = 0x66ebd698 pc = 0x64b9d110 </p> </blockquote> <p> Found by: call frame info </p> </blockquote> <p> 10 0x26 </p> <blockquote> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = 0x00000006 <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = 0x586e21b8 <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = 0x0009e94d sp = 0x66ebd6a8 pc = 0x00000028 </p> </blockquote> <blockquote> <p> Found by: call frame info </p> </blockquote> <p> 11 test.so!my_thread_sleep [microsec_time_clock.hpp : 76 + 0x11] </p> anonymous https://svn.boost.org/trac10/ticket/12729 https://svn.boost.org/trac10/ticket/12729 Report #12726: compilation errors for iOS API Thu, 05 Jan 2017 05:46:17 GMT Thu, 05 Jan 2017 15:48:49 GMT <p> Hello, </p> <p> bind seems to be broken. </p> <p> i tried to use xcode 8.2.1 (8C1002) compile bind.hpp to app, it reports error below: </p> <p> /usr/local/include/boost/operators.hpp:799:1: Declaration of anonymous class must be a definition /usr/local/include/boost/operators.hpp:799:1: A non-type template parameter cannot have type 'class B' /usr/local/include/boost/operators.hpp:799:1: Template argument for template type parameter must be a type </p> <p> after remove below line, it works well BOOST_OPERATOR_TEMPLATE4(random_access_iteratable) </p> <p> Can anybody confirm this behaviour? </p> <p> Operating system: OS X 10.12.2 Boost compiled using Apple LLVM 8.0 </p> <p> Thanks </p> support@… https://svn.boost.org/trac10/ticket/12726 https://svn.boost.org/trac10/ticket/12726 Report #12725: boost::geometry::distance compile errors with 3D segment primitives Thu, 05 Jan 2017 00:33:45 GMT Mon, 16 Jan 2017 19:28:28 GMT <p> When trying to calculate the nearest segment from another segment in a 3-dimensional space using the boost::geometry::index::nearest query on a boost:: boost::geometry::index::rtree but I get the following compilation error on VS2010: </p> <pre class="wiki">&gt; error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter &gt; 1 from 'boost::mpl::failed ************(__cdecl &gt; boost::geometry::nyi::not_implemented_error&lt;Term1,Term2,Term3&gt;::THIS_OPERATION_IS_NOT_OR_NOT_YET_IMPLEMENTED::* &gt; ***********)(boost::mpl::assert_::types&lt;T1,T2,T3&gt;)' to 'boost::mpl::assert&lt;false&gt;::type' </pre><p> I have managed to narrow down the same issue to using just the <code>boost::geometry::distance</code> function: </p> <pre class="wiki"> typedef boost::geometry::model::point &lt;float, 3, boost::geometry::cs::cartesian&gt; point; typedef boost::geometry::model::segment &lt;point&gt; segment; point pa = point(x1, y1, z1); point pc = point(x2, y2, z2); point pb = point(x3, y3, z3); float dist = boost::geometry::distance(segment(pa, pb), segment(pa, pc)); </pre><p> According to the documentation of the version of Boost I'm using (1.60) this should be supported, however it works just fine when using two dimensions. </p> <p> <a href="http://www.boost.org/doc/libs/1_60_0/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html#geometry.reference.algorithms.distance.distance_2.supported_geometries">http://www.boost.org/doc/libs/1_60_0/libs/geometry/doc/html/geometry/reference/algorithms/distance/distance_2.html#geometry.reference.algorithms.distance.distance_2.supported_geometries</a> </p> <p> I could not find anything in the docs either about how to extend the functionality or whether it's possible at all and could not find any relevant changes regarding this issue since this version. </p> <p> Is this a bug or something in the roadmap that hasn't yet been addressed? </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/41453792/boostgeometrydistance-compile-errors-with-3d-primitives"><span class="icon">​</span>http://stackoverflow.com/questions/41453792/boostgeometrydistance-compile-errors-with-3d-primitives</a> </p> Arturo Blas <arturoblas@…> https://svn.boost.org/trac10/ticket/12725 https://svn.boost.org/trac10/ticket/12725 Report #12723: ./boost/mpi/detail/mpi_datatype_primitive.hpp:28:51: fatal error: boost/serialization/detail/get_data.hpp: No such file or directory Wed, 04 Jan 2017 22:33:42 GMT Mon, 07 Aug 2017 15:38:46 GMT <p> When compiling Boost from master, I'm getting </p> <p> ./boost/mpi/detail/mpi_datatype_primitive.hpp:28:51: fatal error: boost/serialization/detail/get_data.hpp: No such file or directory </p> <blockquote> <p> #include &lt;boost/serialization/detail/get_data.hpp&gt; </p> </blockquote> <p> (see <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>). </p> <p> Indeed, there doesn't seem to be a <code>get_data.hpp</code> in the serialization package (anymore?). </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="https://launchpadlibrarian.net/301233079/buildlog_ubuntu-yakkety-amd64.boost1.63_1.63.0~20170104224508-03db8ee4-1yakkety1_BUILDING.txt.gz"><span class="icon">​</span>https://launchpadlibrarian.net/301233079/buildlog_ubuntu-yakkety-amd64.boost1.63_1.63.0~20170104224508-03db8ee4-1yakkety1_BUILDING.txt.gz</a> </p> nico.schloemer@… https://svn.boost.org/trac10/ticket/12723 https://svn.boost.org/trac10/ticket/12723 Report #12722: asio visibility pragmas bloat .dynstr segment Wed, 04 Jan 2017 18:05:19 GMT Sun, 08 Jan 2017 14:29:27 GMT <p> We have a dynamic library that uses asio internally. It does not use asio in its public API. We compile this library with -fvisibility=hidden. When upgrading from boost 1.55 to 1.61 we noticed about 100K worth of asio symbols being added to the .dynstr segment of this library. This is an unacceptable increase for our system. </p> <p> After some research we found that this is due to: </p> <pre class="wiki">commit: 382804a4325b0e3b90d07f6563f5c6fd13a38052 Author: Christopher Kohlhoff chris@kohlhoff.com Date: Sat Mar 21 00:28:43 2015 ----- Use default visibility everywhere. ----- M include/boost/asio/detail/pop_options.hpp M include/boost/asio/detail/push_options.hpp M include/boost/asio/detail/service_registry.hpp </pre><p> Which added #pragma GCC visibility push (default). Unfortunately the pragma overrides our -fvisibility command line argument. This patch first appears in Boost 1.58. </p> <p> To use gcc visibility correctly asio should adopt the standard macro idiom described in <a class="ext-link" href="https://gcc.gnu.org/wiki/Visibility"><span class="icon">​</span>https://gcc.gnu.org/wiki/Visibility</a>. </p> mzeren@… https://svn.boost.org/trac10/ticket/12722 https://svn.boost.org/trac10/ticket/12722 Report #12721: intrusive key_of_value requires value to be returned by reference Wed, 04 Jan 2017 10:03:06 GMT Mon, 06 Feb 2017 12:21:43 GMT <p> key_of_value requires the key to be returned by reference, this is an unnecessary limitation and prevents using types which return the key by value through an accessor. If the type is returned by value, one will get a warning about returning a reference to a local variable. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/12721 https://svn.boost.org/trac10/ticket/12721 Report #12718: LD_LIBRARY_PATH shouldn't be applied to touch command Fri, 30 Dec 2016 13:29:53 GMT Fri, 30 Dec 2016 13:29:53 GMT <p> What causes problem is this line: <a class="ext-link" href="https://github.com/boostorg/build/blob/09b6788/src/tools/gcc.jam#L228"><span class="icon">​</span>https://github.com/boostorg/build/blob/09b6788/src/tools/gcc.jam#L228</a> </p> <p> The line adds the lib directories of custom toolchain to LD_LIBRARY_PATH before running: some-binary-built-by-boost.build &amp;&amp; touch some-file.passed </p> <p> For my case, it causes problem because my custom toolchain comes with a newer version of glibc. It has no problem running the binary under the modified LD_LIBRARY_PATH, but touch command complains about the new glibc. </p> <p> Logically speaking, only the first part requires the new LD_LIBRARY_PATH, while the touch command is pre-installed so it shouldn't be run under the modified LD_LIBRARY_PATH. </p> Kan Li <likan_999.student@…> https://svn.boost.org/trac10/ticket/12718 https://svn.boost.org/trac10/ticket/12718 Report #12717: Incomplete documentation of boost::lockfree::queue::queue Thu, 29 Dec 2016 18:13:56 GMT Thu, 29 Dec 2016 18:13:56 GMT <p> <code>boost::lockfree::queue::queue(void)</code> can only be called if if <code>boost::lockfree::capacity</code> was specified (as enforced by the <code>BOOST_ASSERT</code> in include/boost/lockfree/queue.hpp line 179. However this requirement is not enforced in a non-debug build and it is not mentioned in the documentation for <code>boost::lockfree::queue::queue(void)</code>. </p> <p> The same thing is true of <code>boost::lockfree::queue::queue(allocator const &amp;)</code> in include/boost/lockfree/queue.hpp line 198 and of <code>boost::lockfree::queue::queue(size_type)</code> in include/boost/lockfree/queue.hpp line 210. </p> <p> I think these restrictions should be included in the documentation. The docs would lead me to believe that one could write </p> <pre class="wiki">void some_function() { boost::lockfree::queue&lt;int&gt; q; } </pre><p> But if that is built in debug mode it will fail the assertion in include/boost/lockfree/queue.hpp line 179 </p> pmoran@… https://svn.boost.org/trac10/ticket/12717 https://svn.boost.org/trac10/ticket/12717 Report #12716: Python link broken in "build from source" documentation Wed, 28 Dec 2016 12:15:44 GMT Thu, 29 Dec 2016 11:02:28 GMT <p> In the "<a href="http://www.boost.org/doc/libs/1_63_0/more/getting_started/windows.html#or-build-binaries-from-source">Build from source</a>" documentation page there's a link "<a href="http://www.boost.org/doc/libs/1_63_0/libs/python/doc/building.html">Boost.Python build documentation</a>" that's broken. </p> jepessen https://svn.boost.org/trac10/ticket/12716 https://svn.boost.org/trac10/ticket/12716 Report #12715: nested BOOST_FOREACH: MSVC 14.0 Update 3 warning issued Wed, 28 Dec 2016 09:16:50 GMT Wed, 28 Dec 2016 09:16:50 GMT <p> Nested usage of BOOST_FOREACH issues the warnings: </p> <ul><li>warning C4456: declaration of '_foreach_col' hides previous local declaration </li><li>warning C4456: declaration of '_foreach_cur' hides previous local declaration </li><li>warning C4456: declaration of '_foreach_end' hides previous local declaration </li><li>warning C4456: declaration of '_foreach_continue' hides previous local declaration </li></ul><p> Example code: </p> <pre class="wiki">#include &lt;boost/foreach.hpp&gt; int main() { std::vector&lt;int&gt; iv(10); BOOST_FOREACH(int &amp;i, iv) { std::vector&lt;int&gt; iv2(10); BOOST_FOREACH(int &amp;i2, iv2) { i2 = 2; } i = 1; } } </pre> timo.euler@… https://svn.boost.org/trac10/ticket/12715 https://svn.boost.org/trac10/ticket/12715 Report #12714: boost 1.6.3 doesn't appear to be installing right Tue, 27 Dec 2016 20:56:12 GMT Tue, 27 Dec 2016 20:56:12 GMT <p> I built boost 1.6.3 using Visual Studio 2010's toolset but when it installed it made the include directory include\boost-1_63\boost instead of just include\boost as expected. </p> <blockquote> <p> --includedir=&lt;HDRDIR&gt; Install header files here. </p> <blockquote> <p> Default; &lt;PREFIX&gt;/include </p> </blockquote> </blockquote> <p> .\b2 --prefix=X:\code\boost\boost --build-dir=X:\code\boost\tmpbuild install </p> <p> that command put the includes in X:\code\boost\boost\include\boost-1_63\boost </p> <p> libs installed ok </p> Ray Satiro <raysatiro@…> https://svn.boost.org/trac10/ticket/12714 https://svn.boost.org/trac10/ticket/12714 Report #12711: Cross-compiling with GCC on windows will hang due cygwin path resolution Fri, 23 Dec 2016 09:19:10 GMT Fri, 23 Dec 2016 09:19:10 GMT <p> Recently, since release 1.61. There were changes in Boost.Build which breaks cross-compilation on windows platform with GCC toolchain. </p> <h2 class="section" id="Howtoreproduce">How to reproduce</h2> <p> We use following user-config.jam </p> <pre class="wiki"> using gcc : 4.9 : arm-linux-androideabi-g++.exe ; </pre><p> or we tried </p> <pre class="wiki"> using gcc : 4.9 : arm-linux-androideabi-g++.exe : &lt;flavor&gt;android ; </pre><p> The toolchain is in %PATH% </p> <p> Trying to run bjam command: </p> <div class="wiki-code"><div class="code"><pre> b2 --clean-all -d+5 <span class="nv">variant</span><span class="o">=</span>release </pre></div></div><p> Will leads to endless loops in cygwin path resolving: </p> <div class="wiki-code"><div class="code"><pre>(builtin):&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt; cygwin.software-registry-value Cygnus Solutions\Cygwin\mounts v2\c:/ : native (builtin):&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt; W32_GETREG HKEY_CURRENT_USER\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\c:/ : native (builtin):&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt; W32_GETREG HKEY_CURRENT_USER\SOFTWARE\Wow6432node\Cygnus Solutions\Cygwin\mounts v2\c:/ : native (builtin):&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt; W32_GETREG HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\c:/ : native (builtin):&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt; W32_GETREG HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432node\Cygnus Solutions\Cygwin\mounts v2\c:/ : native </pre></div></div><h2 class="section" id="Underthehood">Under the hood</h2> <p> There is new rule (since Boost 1.61) </p> <pre class="wiki"># Uses -print-prog-name to get the name of the tool. # Converts the path to native form if using cygwin. rule .get-prog-name ( command-string : tool : flavor ? ) { local prog-name = [ NORMALIZE_PATH [ MATCH "(.*)[\n]+" : [ SHELL "$(command-string) -print-prog-name=$(tool)" ] ] ] ; if $(flavor) != mingw &amp;&amp; [ os.name ] = NT { prog-name = [ cygwin.cygwin-to-windows-path $(prog-name) ] ; } return $(prog-name) ; } </pre><p> flavor will be empty or android. And the cygwin path resolution will be triggered. Though no Cygwin is used or installed. I think this is not a good idea to trigger cygwin specific code but checking another falavor. Probably it is better to define <code>cygwin</code> flavor and check <code>if $(flavor) = cygwin &amp;&amp; [ os.name ] = NT</code> </p> <p> But why the <code>cygwin.cygwin-to-windows-path</code> goes to dead loop? </p> <pre class="wiki">rule cygwin-to-windows-path ( path ) { path = $(path:R="") ; # strip any trailing slash local drive-letter = [ SUBST $(path) $(.cygwin-drive-letter-re) $1:/$2 ] ; if $(drive-letter) { path = $(drive-letter) ; } else if $(path:R=/x) = $(path) # already rooted? { # Look for a cygwin mount that includes each head sequence in $(path). local head = $(path) ; local tail = "" ; while $(head) { local root = [ software-registry-value "Cygnus Solutions\\Cygwin\\mounts v2\\"$(head) : native ] ; if $(root) { path = $(tail:R=$(root)) ; head = ; } tail = $(tail:R=$(head:D=)) ; if $(head) = / { head = ; } else { head = $(head:D) ; } } } return [ regex.replace $(path:R="") / \\ ] ; } </pre><p> <code>path</code> is already rooted since it starts with <code>c:/</code> and <code>$(path:R=/x) = $(path)</code> will be true. <code>root</code> will be empty since not cygwin is involved. <code>head</code> variable will finally ends equal to <code>c:/</code> but never <code>/</code> or empty. </p> <h2 class="section" id="Possiblesolutions">Possible solutions</h2> <p> So as a quick solution I create a patch for cygwin.jam </p> <div class="wiki-code"> <div class="diff"> <ul class="entries"> <li class="entry"> <h2> <a>boost_1_63_0/tools/build/src/tools/cygwin.jam</a> </h2> <pre>diff -r -u4 a/boost_1_63_0/tools/build/src/tools/cygwin.jam b/boost_1_63_0/tools/build/src/tools/cygwin.jam</pre> <table class="trac-diff inline" cellspacing="0"> <colgroup> <col class="lineno"/><col class="lineno"/><col class="content"/> </colgroup> <thead> <tr> <th title="File a/boost_1_63_0/tools/build/src/tools/cygwin.jam Wed Nov 9 18:10:39 2016"> a </th> <th title="File b/boost_1_63_0/tools/build/src/tools/cygwin.jam Fri Dec 23 15:53:29 2016"> b </th> <td> <em></em> &nbsp; </td> </tr> </thead> <tbody class="unmod"> <tr> <th>59</th><th>59</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; head = ;</span></td> </tr> <tr> <th>60</th><th>60</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></td> </tr> <tr> <th>61</th><th>61</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tail = $(tail:R=$(head:D=)) ;</span></td> </tr> <tr> <th>62</th><th>62</th><td class="l"><span></span></td> </tr> </tbody> <tbody class="mod"> <tr class="first"> <th>63</th><th>&nbsp;</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if $(head) = <del>/</del></span></td> </tr> <tr class="last"> <th>&nbsp;</th><th>63</th><td class="r"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if $(head) = <ins>"/" || [ MATCH&nbsp; "^([a-zA-Z]:/)$" : $(head) ]</ins></span></td> </tr> </tbody> <tbody class="unmod"> <tr> <th>64</th><th>64</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span></td> </tr> <tr> <th>65</th><th>65</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; head = ;</span></td> </tr> <tr> <th>66</th><th>66</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></td> </tr> <tr> <th>67</th><th>67</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else</span></td> </tr> </tbody> </table> </li> </ul> </div></div><p> This will change <code>cygwin-to-windows-path</code> behavior to accepts full windows path (but not UNC path unfortunately). </p> <p> Another, I think better, approach is to introduce cygwin flavor and do cygwin specific things only for this flavor. But deeper knowledge is required for this (I think there is a reason for introducing mingw flavor but not cygwin, and it is necessary to track all dependency) </p> kirill.erofeev@… https://svn.boost.org/trac10/ticket/12711 https://svn.boost.org/trac10/ticket/12711 Report #12710: Asio with OpenSSL 1.1.0 compiles but does not work Thu, 22 Dec 2016 22:36:02 GMT Sun, 17 Sep 2017 19:45:36 GMT <p> Setup: </p> <p> Debian Boost 1.62.0 OpenSSL 1.1.0c-2 </p> <p> Problem: Previously written program that works perfectly well with the same Boost version and the older version of OpenSSL compiles just fine but does not work. </p> <p> The program yields "stream truncated" error. </p> <p> Desired outcome: Boost Asio works equally well with the newer OpenSSL. </p> vygis.d@… https://svn.boost.org/trac10/ticket/12710 https://svn.boost.org/trac10/ticket/12710 Report #12709: Boost.Asio uses Boost.Coroutine v1, yet Boost.Coroutine v2 references it as a usage example Thu, 22 Dec 2016 17:30:57 GMT Sat, 04 Nov 2017 02:36:12 GMT <p> In <a href="http://www.boost.org/doc/libs/1_62_0/libs/coroutine2/doc/html/coroutine2/motivation.html">http://www.boost.org/doc/libs/1_62_0/libs/coroutine2/doc/html/coroutine2/motivation.html</a> there is a code sample using <code>boost::asio::yield</code> to demonstrate the benefits of using coroutines. </p> <p> This code sample seems to be copy-pasted from Boost.Coroutine v1 <a href="http://www.boost.org/doc/libs/1_62_0/libs/coroutine/doc/html/coroutine/motivation.html">http://www.boost.org/doc/libs/1_62_0/libs/coroutine/doc/html/coroutine/motivation.html</a>, and it's <strong>quite misleading</strong> since from what I can tell (documentation and include chains in the code, <code>boost::asio::yield</code> is built on top of Coroutine v1 and not Coroutine2. </p> <p> So if I try to build the code sample from Coroutine2 documentation, I get a warning saying that Boost.Coroutine is deprecated and I should be using the v2, which I thought I was because that's where the sample came from. </p> <p> Ideally it would be good if Boost.ASIO was ported to Coroutine v2, but in the meantime it might be better to remove the ASIO code sample in Coroutine v2 documentation. </p> Antoine Poliakov <antoinep92@…> https://svn.boost.org/trac10/ticket/12709 https://svn.boost.org/trac10/ticket/12709 Report #12708: Cannot use Boost Units cmath.hpp with custom systems Thu, 22 Dec 2016 08:11:53 GMT Thu, 22 Dec 2016 08:11:53 GMT <p> When creating a new, custom unit sustem in Boost Units using boost::units::make_system, there's an issue when including cmath.hpp: </p> <pre class="wiki">In file included from boost/boost/units/cmath.hpp:29: In file included from boost/boost/units/systems/si/plane_angle.hpp:14: In file included from boost/boost/units/systems/si/base.hpp:20: In file included from boost/boost/units/base_units/si/meter.hpp:17: /boost/boost/units/base_unit.hpp:108:9: error: functions that differ only in their return type cannot be overloaded check_double_register(const units::base_unit_ordinal&lt;N&gt;&amp;) ^ Common/Units.h:26:15: note: in instantiation of template class 'boost::units::base_unit&lt;VA::Units::SquareBaseUnit, boost::units::list&lt;boost::units::dim&lt;boost::units::length_base_dimension, boost::units::static_rational&lt;1, 1&gt; &gt;, boost::units::dimensionless_type&gt;, -9, void&gt;' requested here : boost::units::base_unit&lt;SquareBaseUnit, boost::units::length_dimension, -9&gt; ^ boost/boost/units/base_unit.hpp:108:9: note: previous declaration is here check_double_register(const units::base_unit_ordinal&lt;N&gt;&amp;) ^ boost/boost/units/base_unit.hpp:114:9: error: redefinition of 'boost_units_unit_is_registered' </pre><p> As you can see, cmath includes the full si system and you cannot make your own after that. </p> Kamil Rojewski <kamil.rojewski@…> https://svn.boost.org/trac10/ticket/12708 https://svn.boost.org/trac10/ticket/12708 Report #12707: Missing edges in Voronoi Diagram Wed, 21 Dec 2016 18:42:02 GMT Wed, 21 Dec 2016 18:42:02 GMT <p> A couple finite edges are missing from the Voronoi diagram built for the following segments: </p> <pre class="wiki">LINESTRING(42127548 699996,42127548 10135750) LINESTRING(42127548 10135750,50487352 10135750) LINESTRING(50487352 10135750,50487352 699995) LINESTRING(50487352 699995,51187348 0) LINESTRING(51187348 0,64325952 0) LINESTRING(64325952 0,65025956 699996) LINESTRING(65025956 699996,65025956 10135750) LINESTRING(65025956 10135750,72633752 10135750) LINESTRING(72633752 10135750,72633752 699995) LINESTRING(72633752 699995,73333744 0) LINESTRING(73333744 0,86471456 0) LINESTRING(86471456 0,87171440 699996) LINESTRING(87171440 699996,87171440 10121802) LINESTRING(87171440 10121802,92690455 10323692) LINESTRING(92690455 10323692,93364864 11023201) LINESTRING(93364864 11023201,93364864 15074997) LINESTRING(93364864 15074997,92664848 15074997) LINESTRING(92664848 15074997,92664848 11023201) LINESTRING(92664848 11023201,86471456 10796700) LINESTRING(86471456 10796700,86471456 699996) LINESTRING(86471456 699996,73333744 699996) LINESTRING(73333744 699996,73333744 10835701) LINESTRING(73333744 10835701,64325952 10835701) LINESTRING(64325952 10835701,64325952 699996) LINESTRING(64325952 699996,51187348 699996) LINESTRING(51187348 699996,51187348 10835701) LINESTRING(51187348 10835701,41427552 10835701) LINESTRING(41427552 10835701,41427552 699996) LINESTRING(41427552 699996,28664848 699996) LINESTRING(28664848 699996,28664848 10835701) LINESTRING(28664848 10835701,19280052 10835701) LINESTRING(19280052 10835701,19280052 699996) LINESTRING(19280052 699996,5767387 699996) LINESTRING(5767387 699996,5767387 10796699) LINESTRING(5767387 10796699,699996 11023200) LINESTRING(699996 11023200,699996 15074997) LINESTRING(699996 15074997,0 15074997) LINESTRING(0 15074997,7 11023201) LINESTRING(7 11023201,668738 10323952) LINESTRING(668738 10323952,5067390 10127281) LINESTRING(5067390 10127281,5067390 699996) LINESTRING(5067390 699996,5767387 0) LINESTRING(5767387 0,19285884 5831) LINESTRING(19285884 5831,19980050 699996) LINESTRING(19980050 699996,19980050 10135750) LINESTRING(19980050 10135750,27964852 10135750) LINESTRING(27964852 10135750,27964852 699996) LINESTRING(27964852 699996,28664848 0) LINESTRING(28664848 0,41427551 0) LINESTRING(41427551 0,42127548 699996) </pre><p> I'm attaching a SVG showing the Voronoi diagram. (The input segments are the contours of the grey polygon; the black edges are the finite edges of the diagram.) </p> <p> It might be related to <a class="new ticket" href="https://svn.boost.org/trac10/ticket/12067" title="#12067: Bugs: polygon/voronoi missing edges (new)">#12067</a>, but a finite edge is missing here instead of an infinite one. </p> alessandro@… https://svn.boost.org/trac10/ticket/12707 https://svn.boost.org/trac10/ticket/12707 Report #12706: missing including to restriction namespace boost placeholders conflicting with C++ std::placeholders Wed, 21 Dec 2016 08:20:57 GMT Wed, 21 Dec 2016 08:20:57 GMT <p> hpp file: <strong>include/boost/property_tree/detail/json_parser/parser.hpp</strong> </p> <p> effect boost version: <strong>1.59 ~ 1.62</strong> </p> <p> solutions: add "#include &lt;boost/bind/placeholders.hpp&gt;" in parser.hpp </p> <p> here is compiling errors for this case: [ 62%] Building CXX object src/lib/explorer/CMakeFiles/explorer_static.dir/command_extension.cpp.o cd /home/jiang/source/mvs-private/build/src/lib/explorer &amp;&amp; /usr/bin/c++ -DBCX_STATIC=1 -DMVS_DEBUG=1 -I/usr/local/include -I/home/jiang/source/mvs-private/contrib -I/home/jiang/source/mvs-private/include -std=c++11 -static-libstdc++ -fstrict-aliasing -fvisibility=hidden -Wall -Werror -Wextra -Wstrict-aliasing=2 -Wno-unused-parameter -Wno-unused-variable -Wno-type-limits -pthread -fno-enforce-eh-specs -fnothrow-opt -Wno-reorder -Wno-ignored-qualifiers -Wno-unused-function -Wno-unused-but-set-variable -Wno-sign-compare -Wno-unused-but-set-parameter -g -o CMakeFiles/explorer_static.dir/command_extension.cpp.o -c /home/jiang/source/mvs-private/src/lib/explorer/command_extension.cpp In file included from /usr/local/include/boost/property_tree/detail/json_parser/read.hpp:13:0, </p> <blockquote> <p> from /usr/local/include/boost/property_tree/json_parser.hpp:16, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:5: </p> </blockquote> <p> /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp: In member function ‘void boost::property_tree::json_parser::detail::string_callback_adapter&lt;Callbacks, Encoding, Iterator, std::input_iterator_tag&gt;::process_codepoint(Sentinel, <a class="missing wiki">EncodingErrorFn</a>)’: /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp:211:52: error: ‘_1’ was not declared in this scope </p> <blockquote> <p> boost::ref(callbacks), _1), </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp:211:52: note: suggested alternatives: In file included from /usr/include/c++/5/memory:79:0, </p> <blockquote> <p> from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/monitor.hpp:25, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/assert.hpp:38, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/impl/utility/data.ipp:26, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/data.hpp:155, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/message/network_address.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/constants.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin.hpp:19, from /home/jiang/source/mvs-private/include/bitcoin/explorer/dispatch.hpp:24, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:3: </p> </blockquote> <p> /usr/include/c++/5/functional:782:34: note: ‘std::placeholders::_1’ </p> <blockquote> <p> extern const _Placeholder&lt;1&gt; _1; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/local/include/boost/mpl/aux_/include_preprocessed.hpp:37:0, </p> <blockquote> <p> from /usr/local/include/boost/mpl/placeholders.hpp:43, from /usr/local/include/boost/mpl/apply.hpp:24, from /usr/local/include/boost/mpl/aux_/iter_apply.hpp:17, from /usr/local/include/boost/mpl/aux_/find_if_pred.hpp:14, from /usr/local/include/boost/mpl/find_if.hpp:17, from /usr/local/include/boost/multiprecision/number.hpp:13, from /usr/local/include/boost/multiprecision/cpp_int.hpp:12, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/chain/header.hpp:23, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/chain/block.hpp:28, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/message/block_message.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/messages.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin.hpp:23, from /home/jiang/source/mvs-private/include/bitcoin/explorer/dispatch.hpp:24, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:3: </p> </blockquote> <p> /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ </p> <blockquote> <p> typedef arg&lt;1&gt; _1; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ In file included from /usr/local/include/boost/property_tree/detail/json_parser/read.hpp:13:0, </p> <blockquote> <p> from /usr/local/include/boost/property_tree/json_parser.hpp:16, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:5: </p> </blockquote> <p> /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp: In member function ‘void boost::property_tree::json_parser::detail::parser&lt;Callbacks, Encoding, Iterator, Sentinel&gt;::feed(unsigned int)’: /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp:514:72: error: ‘_1’ was not declared in this scope </p> <blockquote> <p> boost::ref(callbacks), _1)); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/property_tree/detail/json_parser/parser.hpp:514:72: note: suggested alternatives: In file included from /usr/include/c++/5/memory:79:0, </p> <blockquote> <p> from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/monitor.hpp:25, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/assert.hpp:38, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/impl/utility/data.ipp:26, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/utility/data.hpp:155, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/message/network_address.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/constants.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin.hpp:19, from /home/jiang/source/mvs-private/include/bitcoin/explorer/dispatch.hpp:24, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:3: </p> </blockquote> <p> /usr/include/c++/5/functional:782:34: note: ‘std::placeholders::_1’ </p> <blockquote> <p> extern const _Placeholder&lt;1&gt; _1; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/local/include/boost/mpl/aux_/include_preprocessed.hpp:37:0, </p> <blockquote> <p> from /usr/local/include/boost/mpl/placeholders.hpp:43, from /usr/local/include/boost/mpl/apply.hpp:24, from /usr/local/include/boost/mpl/aux_/iter_apply.hpp:17, from /usr/local/include/boost/mpl/aux_/find_if_pred.hpp:14, from /usr/local/include/boost/mpl/find_if.hpp:17, from /usr/local/include/boost/multiprecision/number.hpp:13, from /usr/local/include/boost/multiprecision/cpp_int.hpp:12, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/chain/header.hpp:23, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/chain/block.hpp:28, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/message/block_message.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin/messages.hpp:27, from /home/jiang/source/mvs-private/include/bitcoin/bitcoin.hpp:23, from /home/jiang/source/mvs-private/include/bitcoin/explorer/dispatch.hpp:24, from /home/jiang/source/mvs-private/src/lib/explorer/command_assistant.cpp:3: </p> </blockquote> <p> /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ </p> <blockquote> <p> typedef arg&lt;1&gt; _1; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ /usr/local/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp:29:16: note: ‘mpl_::_1’ src/lib/explorer/CMakeFiles/explorer_static.dir/build.make:89: recipe for target 'src/lib/explorer/CMakeFiles/explorer_static.dir/command_assistant.cpp.o' failed </p> betachen@… https://svn.boost.org/trac10/ticket/12706 https://svn.boost.org/trac10/ticket/12706 Report #12704: scope_exit: MSVC 14.0 Update 3 warning issued Tue, 20 Dec 2016 13:15:17 GMT Tue, 20 Dec 2016 13:15:17 GMT <p> Hi, </p> <p> BOOST_SCOPE_EXIT emits<br /> <strong>warning C4459: declaration of 'boost_scope_exit_aux_args' hides global declaration</strong><br /> using compiler setting /W4 for Visual Studio 2015 Update 3 (VC 14) </p> <p> Example code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/scope_exit.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">test</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">BOOST_SCOPE_EXIT</span><span class="p">(</span><span class="o">&amp;</span><span class="n">test</span><span class="p">)</span> <span class="p">{</span> <span class="n">test</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span> <span class="p">}</span> <span class="n">BOOST_SCOPE_EXIT_END</span><span class="p">;</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> thomas.forell@… https://svn.boost.org/trac10/ticket/12704 https://svn.boost.org/trac10/ticket/12704 Report #12703: BOOST_MPL_ASSERT_MSG cannot be used in constexpr functions Tue, 20 Dec 2016 02:51:25 GMT Tue, 20 Dec 2016 02:51:25 GMT <p> The current implementation of BOOST_MPL_ASSERT_MSG use a static const std::size_t varieble that cannot be used in constexpr functions. I think this can be replaced by an enum declare. why use static const varieble? </p> socgerlia@… https://svn.boost.org/trac10/ticket/12703 https://svn.boost.org/trac10/ticket/12703 Report #12702: boost_1_62_0 issue Mon, 19 Dec 2016 21:54:05 GMT Fri, 30 Dec 2016 01:26:03 GMT <p> I have the following error. </p> <p> Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved. </p> <p> C:\Users\carma&gt;cd c:/ </p> <p> c:\&gt;boost_1_62_0 'boost_1_62_0' is not recognized as an internal or external command, operable program or batch file. </p> <p> c:\&gt;cd boost_1_62_0 </p> <p> c:\boost_1_62_0&gt;bootstrap.bat Building Boost.Build engine 'cl' is not recognized as an internal or external command, operable program or batch file. </p> <p> Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. </p> <p> You can try to obtain a prebuilt binary from </p> <blockquote> <p> <a class="ext-link" href="http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941"><span class="icon">​</span>http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941</a> </p> </blockquote> <p> Also, you can file an issue at <a class="ext-link" href="http://svn.boost.org"><span class="icon">​</span>http://svn.boost.org</a> Please attach bootstrap.log in that case. </p> <p> c:\boost_1_62_0&gt; </p> henriaghaei@… https://svn.boost.org/trac10/ticket/12702 https://svn.boost.org/trac10/ticket/12702 Report #12701: Numerical error cause invalid input to dijkstra algorithm in min cost max flow code Mon, 19 Dec 2016 16:50:55 GMT Tue, 20 Dec 2016 00:53:42 GMT <p> Line 46 of successive_shortest_path_nonnegative_weights.hpp computes a new weight for Dijkstra algorithm. The weigh is guaranteed to be non-negative in theory. In practice numerical rounding errors may make it a small negative number causing the failure of Dijkstra algorithm. </p> <p> Do something like this for floating point types: return std::max(value_type(0), get(distance_, source(v, g_)) - get(distance_, target(v, g_)) + get(weight_, v)); </p> Dmitrii Marin <dmitry.marin@…> https://svn.boost.org/trac10/ticket/12701 https://svn.boost.org/trac10/ticket/12701 Report #12700: Returned type mess with find_flow_cost Mon, 19 Dec 2016 16:41:56 GMT Mon, 19 Dec 2016 16:41:56 GMT <p> There are several overloads for find_flow_cost in find_flow_cost.hpp. However they differ by the return type. For example find_flow_cost(const Graph &amp;g) returns edge capacity type while others return weight type. As a result the true flow cost can be lost due to type conversions, e.g. casting double (weight type) to int (capacity type). </p> <p> It should be determined which type to return (weight or capacity type). I think there should be a process determining which type is the best. Something like decltype(weight_t(0)*capacity_t(0)) </p> Dmitrii Marin <dmitry.marin@…> https://svn.boost.org/trac10/ticket/12700 https://svn.boost.org/trac10/ticket/12700 Report #12699: posix_time\time_formatters removes trailing 0 fractional seconds Fri, 16 Dec 2016 22:53:41 GMT Fri, 16 Dec 2016 22:53:41 GMT <p> When calling boost::posix_time::to_iso_extended_string(), the returned format will differ depending on the value of the fractional seconds. This cannot be configured. In time_formatters.hpp, function 'to_simple_string_type' checks if the value of the fractional seconds is 0 (zero). If it is, it will not print the corresponding fractional seconds digits. </p> <p> I consider this a bug because if one is to display multiple ptimes in this format they could have differing widths which would not be visually appealing. </p> <p> I propose that this is changed to be either: </p> <p> 1) User controlled. The user can set whether or not to print the characters. </p> <p> OR </p> <p> 2) It should always print the fractional seconds digits. </p> <p> I believe that option 1) is the correct solution, though at the very least I believe option 2) to be more correct than the current implementation. </p> Jonathan Zuber <jonathan.zuber@…> https://svn.boost.org/trac10/ticket/12699 https://svn.boost.org/trac10/ticket/12699 Report #12690: Boost Asio race condition Wed, 14 Dec 2016 14:39:48 GMT Wed, 14 Dec 2016 14:39:48 GMT <p> The following test case issues an warning when executed with the thread sanitizer. The problem occurs when there is a pending job and the associated work is canceled. </p> <pre class="wiki">BOOST_AUTO_TEST_CASE(ioServiceShallWaitForPendingJobs) { auto test = []() { boost::asio::io_service service; std::unique_ptr&lt;boost::asio::io_service::work&gt; work (new boost::asio::io_service::work(service)); std::thread t( [&amp;service]() { service.run(); } ); std::atomic_bool called{false}; service.post( [&amp;called]() { std::this_thread::sleep_for (std::chrono::milliseconds(50)); called = true; } ); std::this_thread::sleep_for (std::chrono::milliseconds(1)); work.reset(); // -&gt; race t.join(); BOOST_REQUIRE(called); }; for( size_t i = 0 ; i &lt; 100000; ++i) { BOOST_TEST_MESSAGE(i); test(); } } </pre><p> The fix is in asio/detail/posix_event.hpp:55 </p> <pre class="wiki"> // Signal the event and unlock the mutex. template &lt;typename Lock&gt; void signal_and_unlock(Lock&amp; lock) { BOOST_ASIO_ASSERT(lock.locked()); signalled_ = true; // lock.unlock(); ::pthread_cond_signal(&amp;cond_); // Ignore EINVAL. lock.unlock(); // first signal and then unlock as the name implies } </pre><p> Please find the output of the Clang as an attachment </p> Ivan Kostov <ikostov@…> https://svn.boost.org/trac10/ticket/12690 https://svn.boost.org/trac10/ticket/12690 Report #12688: Boost..Accumulators test/median.cpp testing method is flawed Wed, 14 Dec 2016 12:25:18 GMT Wed, 14 Dec 2016 17:43:24 GMT <p> I am going to stick with Stats terminology, because I get confused. I am going to use the word <em>sample</em> to mean a collection of data points or draws or observations, not a single one. </p> <ol><li>In the test, you generate a sample of 100,000 observations from N(1,1), and check if the medians computed by the implementations are close enough to the true population median of 1. </li></ol><p> That is flawed: The algorithms are for calculating the median of the set of numbers you have. Therefore, the medians they produce should be compared to the actual median of the sample you just generated. The median of that sample can be obtained by storing the draws in a <code>vector</code> and getting the exact median from that. </p> <p> This is not hard to do. I am not, however, submitting a pull request to do that because I am not convinced this approach is the right way to test the algorithms. </p> <ol start="2"><li>In the case of P<sup>2</sup>, the original paper contains a worked-out example by the authors using 20 observations. They show exactly what the algorithm should produce at each step. Your implementation does not match those steps. </li></ol><p> The following short program demonstrates this: </p> <pre class="wiki">#include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;utility&gt; #include &lt;vector&gt; #include &lt;boost/accumulators/accumulators.hpp&gt; #include &lt;boost/accumulators/statistics/stats.hpp&gt; #include &lt;boost/accumulators/statistics/median.hpp&gt; namespace bacc = boost::accumulators; int main(void) { bacc::accumulator_set&lt;double, bacc::stats&lt;bacc::tag::median(bacc::with_p_square_quantile)&gt; &gt; acc; // See http://www.cse.wustl.edu/~jain/papers/psqr.htm // First five observations acc(0.02); acc(0.5); acc(0.74); acc(3.39); acc(0.83); const std::vector&lt;std::pair&lt;double, double&gt; &gt; jain_chlamtac { { 22.37, 0.74 }, { 10.15, 0.74 }, { 15.43, 2.18 }, { 38.62, 4.75 }, { 15.92, 4.75 }, { 34.60, 9.28 }, { 10.28, 9.28 }, { 1.47, 9.28 }, { 0.40, 9.28 }, { 0.05, 6.30 }, { 11.39, 6.30 }, { 0.27, 6.30 }, { 0.42, 6.30 }, { 0.09, 4.44 }, { 11.37, 4.44 }, }; for (auto p: jain_chlamtac) { acc(p.first); std::cout &lt;&lt; "calculated= " &lt;&lt; bacc::median(acc) &lt;&lt; "\texpected= " &lt;&lt; p.second &lt;&lt; '\n'; } return 0; } </pre><p> This produces </p> <pre class="wiki">calculated= 0.74 expected= 0.74 calculated= 0.74 expected= 0.74 calculated= 2.06167 expected= 2.18 calculated= 4.55176 expected= 4.75 calculated= 4.55176 expected= 4.75 calculated= 9.15196 expected= 9.28 calculated= 9.15196 expected= 9.28 calculated= 9.15196 expected= 9.28 calculated= 9.15196 expected= 9.28 calculated= 6.17976 expected= 6.3 calculated= 6.17976 expected= 6.3 calculated= 6.17976 expected= 6.3 calculated= 6.17976 expected= 6.3 calculated= 4.24624 expected= 4.44 calculated= 4.24624 expected= 4.44 </pre><p> More a more detailed exposition, see my blog post <a class="ext-link" href="https://www.nu42.com/2016/12/cpp-boost-median-test.html"><span class="icon">​</span>https://www.nu42.com/2016/12/cpp-boost-median-test.html</a> </p> <p> This is the first time I am looking at Boost.Accumulators and I haven't figured out everything yet, so I do not have a fix (and I can't promise I am going to have a fix soon), but I thought I would get the ball rolling. Maybe the issue will be more transparent to you. </p> <p> To summarize: </p> <ol><li>The implementations should be tested against cases where we know what they are supposed to do. </li></ol><ol start="2"><li>It looks like there is a problem in the implementation of the P<sup>2</sup> algorithm. </li></ol><p> HTH, </p> <p> -- Sinan </p> A. Sinan Unur <sinan@…> https://svn.boost.org/trac10/ticket/12688 https://svn.boost.org/trac10/ticket/12688 Report #12685: boost::iostream library does not correctly mark exported symbols as visible on macOS as BOOST_IOSTREAMS_DECL is not defined Tue, 13 Dec 2016 15:31:36 GMT Tue, 13 Dec 2016 15:34:55 GMT <p> if iostream library is compiled with gcc visibility support on macOS the symbols are not correctly exported. </p> <p> The symbols to be exported are marked with BOOST_IOSTREAMS_DECL. However, BOOST_IOSTREAMS_DECL is not defined for non Windows platforms. </p> vishalshetye@… https://svn.boost.org/trac10/ticket/12685 https://svn.boost.org/trac10/ticket/12685 Report #12684: Application crashing when collector maximum size is reached Tue, 13 Dec 2016 10:26:10 GMT Wed, 14 Dec 2016 06:30:13 GMT <p> 0 down vote favorite I am using BOOST for my Logger API. I have a scenario when the maximum size of collector is reached it should stop logging. but currently the application is crashing. </p> <p> Example: maximum size of collector = 10MB and Maximum file size =4MB so it generates two files with size 4MB each and 1 with 2MB and the application should stop but its crashing here. </p> <p> Code is given below: sink = boost::make_shared&lt;file_sink&gt;(keywords::file_name = file_name, </p> <blockquote> <p> keywords::rotation_size = m_maxLogFileSize, keywords::open_mode = std::ios_base::out | std::ios_base::app, keywords::auto_flush = true ); </p> </blockquote> <p> try{ </p> <blockquote> <p> sink-&gt;locked_backend()-&gt;set_file_collector(sinks::file::make_collector(keywords::target = m_dirLocation, keywords::max_size = 1 * 1024));<em> m_maxLogFileSize)); </em>sink-&gt;locked_backend()-&gt;set_file_collector(sinks::file::make_collector(keywords::target = m_dirLocation, keywords::max_size = 10 * 1024 *1024, keywords::min_free_space = 1024)); </p> </blockquote> <p> } catch (exception e) { </p> <blockquote> <p> std::cout &lt;&lt; "Maximum size reached in collector" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> <p> sink-&gt;set_formatter( </p> <blockquote> <p> expr::stream &lt;&lt; expr::format_date_time&lt; boost::posix_time::ptime &gt;("<a class="missing wiki">TimeStamp</a>", m_timeFormat) &lt;&lt; m_logSeparator &lt;&lt; "[" &lt;&lt; expr::attr&lt; boost::log::trivial::severity_level &gt;("Severity") &lt;&lt; "]" &lt;&lt; m_logSeparator &lt;&lt; " " &lt;&lt; expr::attr&lt; boost::thread::id &gt;("ThreadID") &lt;&lt; m_logSeparator &lt;&lt; " " &lt;&lt; expr::attr&lt;std::string&gt;("<a class="missing wiki">FileName</a>") &lt;&lt; "" &lt;&lt; ":" &lt;&lt; expr::attr&lt;int&gt;("Line") &lt;&lt; m_logSeparator &lt;&lt; " " &lt;&lt; expr::attr&lt;std::string&gt;("Function") &lt;&lt; m_logSeparator &lt;&lt; " " &lt;&lt; expr::xml_decor[expr::stream &lt;&lt; expr::smessage] </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <p> sink-&gt;locked_backend()-&gt;scan_for_files(); sink-&gt;locked_backend()-&gt;auto_flush(true); </p> <p> <em> Add the sink to the core logging::core::get()-&gt;add_sink(sink); </em></p> ketan0712@… https://svn.boost.org/trac10/ticket/12684 https://svn.boost.org/trac10/ticket/12684 Report #12683: Using std::string for options_description Tue, 13 Dec 2016 08:07:44 GMT Tue, 13 Dec 2016 08:07:44 GMT <p> Hello out there, </p> <p> I see no any life in the <a class="missing wiki">GitHub</a> of program_options library, hence my request here. I also have posted in <a class="missing wiki">StackOverflow</a>: <a class="ext-link" href="https://stackoverflow.com/questions/41085325/using-gettext-like-translation-with-boost-programoptions"><span class="icon">​</span>https://stackoverflow.com/questions/41085325/using-gettext-like-translation-with-boost-programoptions</a> </p> <p> Basically, what is the reason not to include a std::string for the description parameter? If none, how I can help? </p> <p> Best regards, Rado. </p> Rado https://svn.boost.org/trac10/ticket/12683 https://svn.boost.org/trac10/ticket/12683 Report #12679: Merging heaps causes them to "forget" pending lazy updates. Mon, 12 Dec 2016 07:11:49 GMT Wed, 14 Dec 2016 05:03:27 GMT <p> In my opinion, a reasonable behavior for the code below would be to print out: 99, 2, 1, In reality, though, the output is: 2, 99, 1, </p> <p> This means that the lazy_update() is somehow forgotten in the process of merging the two heaps. </p> <pre class="wiki"> boost::heap::fibonacci_heap&lt;float&gt; q1, q2; std::vector&lt;boost::heap::fibonacci_heap&lt;float&gt;::handle_type&gt; handles; handles.push_back(q1.push(0.f)); handles.push_back(q1.push(1.f)); handles.push_back(q2.push(2.f)); q1.update_lazy(handles[0], 99.f); q1.merge(q2); while (!q1.empty()) { std::cout &lt;&lt; q1.top() &lt;&lt; ", "; q1.pop(); } </pre> shirpeled+boost@… https://svn.boost.org/trac10/ticket/12679 https://svn.boost.org/trac10/ticket/12679 Report #12665: boost::filesystem::path::replace_extension(const path& new_extension) produces inintuitive path on special directory Fri, 09 Dec 2016 00:21:00 GMT Fri, 09 Dec 2016 00:27:08 GMT <p> Hi, I have read the specification of boost::filesystem::path::replace_extension(const path&amp; new_extension). It is very helpful in most of common use but the method may be ignore replacement when path represents the following cases: </p> <ul><li>dot (.) </li><li>dot-dot (..) </li><li>root-name (C:, <em>myserver, <br />myserver) </em></li></ul><p> The version available in boost 1.62.0 provide the following behaviour </p> <pre class="wiki">Replace extension on root path: (arguable) ------------------------------------------ replace_extension("/","txt") = "/.txt" replace_extension("C:\","txt") = "C:\.txt" Replace extension on special file-name -------------------------------------- replace_extension(".","txt") = "..txt" replace_extension("..","txt") = "...txt" replace_extension("/foo/.","txt") = "/foo/..txt" replace_extension("/foo/..","txt") = "/foo/...txt" Replace extension on root-name ------------------------------ replace_extension("C:","txt") = "C:.txt" replace_extension("\\myserver","txt") = "\\myserver.txt" </pre><p> Regards, Guillaume </p> Guillaume Labourey <guillaume.labourey@…> https://svn.boost.org/trac10/ticket/12665 https://svn.boost.org/trac10/ticket/12665 Report #12663: geometry::equals fails when points differ by small value Thu, 08 Dec 2016 20:21:07 GMT Wed, 28 Dec 2016 13:30:20 GMT <p> It seems the geometry::equals function is very strict when dealing w/ floating point precision. I have 2 polygons that are the same except for one point (15.0, 10.0) vs (14.9999999999, 10.0), but geometry::equals returns false. I don't know if this is a bug or the expected behavior. What is the tolerance and is there a way to specify it? </p> <p> bg_polygon polygon1; boost::geometry::read_wkt("POLYGON((10.0 10.0, 10.0 20.0, 15.0 20.0, 14.9999999999 10.0, 10.0 10.0))", polygon1); </p> <p> bg_polygon polygon2; boost::geometry::read_wkt("POLYGON((10.0 10.0, 10.0 20.0, 15.0 20.0, 15.0 10.0, 10.0 10.0))", polygon2); </p> <p> boost::geometry::equals(polygon1, polygon2); --&gt; returns false </p> anonymous https://svn.boost.org/trac10/ticket/12663 https://svn.boost.org/trac10/ticket/12663 Report #12659: Deadlocked with boost::interprocess::managed_mapped_file find Thu, 08 Dec 2016 10:16:11 GMT Thu, 26 Jul 2018 08:38:37 GMT <p> Scenario : I have a existing file which at first is opened &amp; loaded using </p> <pre class="wiki">m_file.reset(new boost::interprocess::managed_mapped_file(boost::interprocess::open_or_create, file_name.c_str(), m_size)); </pre><p> then I am using find member function </p> <pre class="wiki">Type *vect = m_file-&gt;find&lt;Type&gt;(key).first; </pre><p> Here my code halts(deadlock). </p> <pre class="wiki">boost::interprocess::ipcdetail::posix_recursive_mutex::lock (this=0x7ffff572d070) at /home/dev/build/third_party/64-rhel5/boost_1_59_0/include/boost/interprocess/sync/posix/recursive_mutex.hpp:90 90 if (pthread_mutex_lock(&amp;m_mut) != 0) (gdb) p m_mut $1 = {__data = {__lock = 2, __count = 1, __owner = **16792**, __nusers = 1, __kind = 129, __spins = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = "\002\000\000\000\001\000\000\000\230A\000\000\001\000\000\000\201", '\000' &lt;repeats 22 times&gt;, __align = 4294967298} (gdb) info threads all 4 Thread 0x7ffff6af0700 (LWP 23305) 0x00000038dceac6aa in times () from /lib64/libc.so.6 3 Thread 0x7ffff75dd700 (LWP 23304) 0x00000038dd20b68c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 2 Thread 0x7ffff7fde700 (LWP 23303) 0x00000038dd20eca3 in recvfrom () from /lib64/libpthread.so.0 * 1 Thread 0x7ffff7fe27e0 (LWP 23300) boost::interprocess::ipcdetail::posix_recursive_mutex::lock (this=0x7ffff572d070) at /home/dev/build/third_party/64-rhel5/boost_1_59_0/include/boost/interprocess/sync/posix/recursive_mutex.hpp:90 </pre><p> If you see here onwer is 16792, but I don't see any such thread. </p> <p> Some more info. </p> <pre class="wiki"> p *mp_header ..... static PayloadPerAllocation = &lt;optimized out&gt;, m_header = {&lt;boost::interprocess::interprocess_recursive_mutex&gt; = {mutex = {m_mut = { __data = {__lock = 2, __count = 1, __owner = 16792, __nusers = 1, __kind = 129, __spins = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = "\002\000\000\000\001\000\000\000\230A\000\000\001\000\000\000\201", '\000' &lt;repeats 22 times&gt;, __align = 4294967298}}}, m_named_index = ..... </pre><p> previous mutex informations are still stored. </p> soumyadutta13@… https://svn.boost.org/trac10/ticket/12659 https://svn.boost.org/trac10/ticket/12659 Report #12658: Lack of check for matching end tag in read_xml. Wed, 07 Dec 2016 21:03:53 GMT Wed, 07 Dec 2016 21:03:53 GMT <p> When using boost::property_tree::read_xml and parsing for example: </p> <pre class="wiki">&lt;Element&gt;Item&lt;/Whatever&gt; </pre><p> function will not throw an exception and input will be parsed into xml which look like this: </p> <pre class="wiki">&lt;Element&gt;Item&lt;/Element&gt; </pre><p> There is no checking if end tag match start tag. End Tag like this: &lt;/&gt; is enough no matter what start tag you have. </p> <p> Is it a bug or maybe it is intentional? This behaviour is present at least from version 1.53 but probably from the begining of property_tree component. </p> <p> example cpp file attached. </p> jakjas https://svn.boost.org/trac10/ticket/12658 https://svn.boost.org/trac10/ticket/12658 Report #12656: `vf2_subgraph_iso` fails to find matchings in mutually connected vertices Wed, 07 Dec 2016 02:11:22 GMT Sun, 11 Dec 2016 08:00:20 GMT <p> The attached example tries to find <code>graph1</code> in <code>graph2</code> defined as follows:<br /> <code>graph1</code> </p> <pre class="wiki">(0) ---&gt; (1) </pre><p> <code>graph2</code> </p> <pre class="wiki"> +--------+ V | (0) ---&gt; (1) ---&gt; (2) </pre><p> I expect that <code>vf2_subgraph_iso</code> finds matchings <code>(0) ---&gt; (1)</code>, <code>(1) ---&gt; (2)</code>, and <code>(2) ---&gt; (1)</code>, but it finds <code>(0) ---&gt; (1)</code> only. </p> araijn@… https://svn.boost.org/trac10/ticket/12656 https://svn.boost.org/trac10/ticket/12656 Report #12648: Missing includes in boost/icl/left_open_interval.hpp Mon, 05 Dec 2016 15:02:38 GMT Mon, 05 Dec 2016 15:06:01 GMT <p> This example does not compile </p> <pre class="wiki">#include &lt;boost/icl/left_open_interval.hpp&gt; int main(int argc, char** argv) { return 0; } </pre><p> compilation result: </p> <pre class="wiki">In file included from /usr/include/boost/config.hpp:61:0, from /usr/include/boost/concept/assert.hpp:7, from /usr/include/boost/icl/left_open_interval.hpp:12, from main.cpp:1: /usr/include/boost/icl/type_traits/rep_type_of.hpp:36:9: error: ‘is_same’ was not declared in this scope BOOST_STATIC_CONSTANT(bool, </pre> Vincenzo Giovanni Comito <clynamen@…> https://svn.boost.org/trac10/ticket/12648 https://svn.boost.org/trac10/ticket/12648 Report #12647: Support for arm instruction-set for arm64-v8a Sun, 04 Dec 2016 08:59:53 GMT Thu, 29 Dec 2016 11:36:15 GMT <p> Please add support for boost build for instruction-set = arm64-v8a when building boost for arm architecture. </p> tungchingkai@… https://svn.boost.org/trac10/ticket/12647 https://svn.boost.org/trac10/ticket/12647 Report #12646: Compilation error when using a property type other than int with property_merge_45 Sun, 04 Dec 2016 05:12:28 GMT Sun, 04 Dec 2016 05:12:28 GMT <p> The following usage of property merge leads to compilation errors: </p> <p> property_merge_45&lt;int,string&gt; pm; </p> <p> The issue is simple to correct. I was able to get the following to compile and function as expected by making a one line edit to polygon/detail/property_merge_45.hpp. I modified line 34 in class <a class="missing wiki">CountMerge</a> to be: </p> <p> typename std::vector&lt;std::pair&lt;property_type, int&gt; &gt;::iterator itr = lower_bound(counts.begin(), counts.end(), std::make_pair(index, int(0))); </p> <p> instead of: </p> <p> std::vector&lt;std::pair&lt;int, int&gt; &gt;::iterator itr = lower_bound(counts.begin(), counts.end(), std::make_pair(index, int(0))); </p> <p> which make it consistent with the declaration in class <a class="missing wiki">CountMerge</a>: </p> <p> std::vector&lt;std::pair&lt;property_type, int&gt; &gt; counts; </p> <p> -Charles </p> Charles A Cornell <cacornell@…> https://svn.boost.org/trac10/ticket/12646 https://svn.boost.org/trac10/ticket/12646 Report #12644: Windows store - vcvarsall.bat is invoked with wrong arguments Fri, 02 Dec 2016 22:50:51 GMT Tue, 13 Dec 2016 23:34:59 GMT <p> When building a store app (ie, <code>windows-api=store</code> in boost), the vcvarsall.bat script (part of Visual Studio) is supposed to be invoked, for example, as </p> <pre class="wiki">&lt;VSPath&gt;\VC\vcvarsall.bat x86_arm store </pre><p> Boost's build system, however, invokes it without the 'store' argument, resulting in a flawed compiler environment. </p> <p> This typically doesn't make a difference when building for desktop, but when building store apps for phone (arm), it can result in missing dll:s when trying to run the app consuming boost. Specifically, various boost dll:s will try to link with kernel32.lib, which does not exist on phone. </p> <p> The origin of the error appears to be in boost_1_62_0/tools/build/src/tools/msvc.jam in the invocation of the <code>maybe-rewrite-setup</code> rule. Here, the <code>setup-options</code> parameter should probably contain 'store', but the <code>&lt;windows-api&gt;</code> feature is never checked to add it. </p> <p> The end result is that, during boost compilation, the library include paths end up wrong and the boost binaries will link with desktop libraries instead of store libraries (eg, VCRUNTIME140D.dll instead of VCRUNTIME140D_APP.dll). </p> bjorn.aili@… https://svn.boost.org/trac10/ticket/12644 https://svn.boost.org/trac10/ticket/12644 Report #12643: Compiler internal error in VS2013 Release mode Fri, 02 Dec 2016 14:32:08 GMT Fri, 02 Dec 2016 14:32:08 GMT <p> The simplest example is following: </p> <pre class="wiki">#include "boost/lockfree/stack.hpp" int _tmain(int argc, _TCHAR* argv[]) { boost::lockfree::stack&lt;int&gt;( 128 ); return 0; } </pre><p> Compilation in <strong>Release</strong> configuration in the Visual Studio 2013 (version 12.0.40629.00 Update 5) fails with the following report: </p> <pre class="wiki">1&gt;BoostTest.cpp(5): fatal error C1001: An internal error has occurred in the compiler. 1&gt; (compiler file 'msc1.cpp', line 1325) 1&gt; To work around this problem, try simplifying or changing the program near the locations listed above. 1&gt; Please choose the Technical Support command on the Visual C++ 1&gt; Help menu, or open the Technical Support help file for more information 1&gt; BoostTest.cpp(5) : see reference to class template instantiation 'boost::lockfree::stack&lt;int,&gt;' being compiled ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </pre> grigorryev@… https://svn.boost.org/trac10/ticket/12643 https://svn.boost.org/trac10/ticket/12643 Report #12641: binary_oarchive_impl constructor calls derived class before it is constructed. Thu, 01 Dec 2016 23:46:57 GMT Thu, 01 Dec 2016 23:46:57 GMT <p> If I inherit from binary_oarchive_impl and hide the save_override method with one of my own, it gets called before my archive class is constructed. </p> <p> I call base class binary_orachive_impl constructor from my constructor. It calls its init() method which calls basic_binary_oarchive init() from detail/basic_binary_oarchive.ipp which calls this-&gt;This()::operator&lt;&lt; to output the file signature and version </p> <p> This() refers to my derived class which has not been constructed. Local variables required for the archive are not yet initialized. It is possible to avoid this by inheriting directly from oprimitive and oarchive and calling their init from the derived class but calling on a derived class from a base class constructor seems like a problem and the manual does say to inherit from the impl classes. </p> Jess Peterson <jess@…> https://svn.boost.org/trac10/ticket/12641 https://svn.boost.org/trac10/ticket/12641 Report #12640: is_empty and remove_all may throw even when called with error_code& argument. Thu, 01 Dec 2016 18:48:26 GMT Sat, 03 Dec 2016 06:38:58 GMT <p> Some of the code that underpins is_empty and remove_all constructs directory_iterator objects without passing through an error_code&amp; argument. I have spotted this in both is_empty_directory and remove_all_aux . The latter also uses operator++ on the iterator rather than calling increment, I haven't checked whether this is more widespread. </p> nigel.pattinson@… https://svn.boost.org/trac10/ticket/12640 https://svn.boost.org/trac10/ticket/12640 Report #12637: The FAQ should address the difference from the C++ standard library version Wed, 30 Nov 2016 22:13:49 GMT Wed, 30 Nov 2016 22:13:49 GMT <p> Since C++17 now has a filesystem library based on this library, one of the frequently-asked questions - in real life - is "What's the difference between the Boost version and the standard version of the filesystem library?" </p> <p> This should be added to the FAQ page: </p> <p> <a href="http://www.boost.org/doc/libs/1_62_0/libs/filesystem/doc/faq.htm">http://www.boost.org/doc/libs/1_62_0/libs/filesystem/doc/faq.htm</a> </p> <p> possibly as one of the general questions. </p> eyalroz@… https://svn.boost.org/trac10/ticket/12637 https://svn.boost.org/trac10/ticket/12637 Report #12634: optional_config.hpp: needs update for Oracle Developer Studio compiler Tue, 29 Nov 2016 19:29:27 GMT Tue, 29 Nov 2016 19:29:27 GMT <p> Test libs/bimap/test/../example/bimap_and_boost/xpressive.cpp fails with Oracle Developer Studio compiler in -std=c++11 mode as follows: </p> <blockquote> <p> "CC" -std=c++11 -temp=/tmp/bn -xO4 -mt -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o "/export/home/sstrunk-tester/boost_regression/boost_regression_develop/boost_sparc-S2_cpp11/results/boost/bin.v2/libs/bimap/test/xpressive.test/sun-12.5_next_cpp11/release/threading-multi/xpressive.o" "../libs/bimap/test/../example/bimap_and_boost/xpressive.cpp" </p> </blockquote> <p> "../boost/proto/detail/preprocessed/expr_variadic.hpp", line 687: Warning: A class with a reference member lacks a user-defined constructor, which can lead to errors. </p> <p> ... </p> <p> "../boost/xpressive/match_results.hpp", line 747: Error: Overloading ambiguity between "boost::optional&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&gt;::operator=&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&amp;&gt;(<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&amp;)" and "boost::optional&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&gt;::operator=&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&amp;&gt;(<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::string&gt;&amp;)". </p> <p> ... </p> <p> See <a href="http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-12-5_next-cpp11-boost-bin-v2-libs-bimap-test-xpressive-test-sun-12-5_next_cpp11-release-threading-multi.html">http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-12-5_next-cpp11-boost-bin-v2-libs-bimap-test-xpressive-test-sun-12-5_next_cpp11-release-threading-multi.html</a> </p> <p> for details. </p> <p> The following diff resolves the issue: % !diff diff ./optional_config.hpp optional_config.hpp_orig 47c47 </p> <table class="wiki"> <tr>&lt; #if (defined(<span class="underline">GNUC</span>) <td> defined(<span class="underline">SUNPROC_CC)) &amp;&amp; !defined(</span>INTEL_COMPILER) </td></tr></table> <p> --- </p> <blockquote class="citation"> <p> #if defined(<span class="underline">GNUC</span>) &amp;&amp; !defined(<span class="underline">INTEL_COMPILER) </span></p> </blockquote> <p> 99c99 &lt; #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) &amp;&amp; !defined(BOOST_NO_CXX11_DECLTYPE) &amp;&amp; !BOOST_WORKAROUND(BOOST_MSVC, &lt; 1800) &amp;&amp; !BOOST_WORKAROUND(BOOST_GCC_VERSION, &lt; 40500) --- </p> <blockquote class="citation"> <p> #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) &amp;&amp; !defined(BOOST_NO_CXX11_DECLTYPE) &amp;&amp; !BOOST_WORKAROUND(BOOST_MSVC, &lt; 1800) &amp;&amp; !BOOST_WORKAROUND(BOOST_GCC_VERSION, &lt; 40500) &amp;&amp; !defined(<span class="underline">SUNPRO_CC) </span></p> </blockquote> <p> 100a101 </p> <blockquote class="citation"> <blockquote> <p> <em> I also disable SUNPRO, as it seems not to support type_traits correctly </em></p> </blockquote> </blockquote> <p> 105c106 &lt; #if (defined _MSC_FULL_VER) &amp;&amp; (_MSC_FULL_VER &lt; 190023026) --- </p> <blockquote class="citation"> <p> #if defined <span class="underline">SUNPRO_CC </span></p> </blockquote> <p> 106a108,109 </p> <blockquote class="citation"> <p> #elif (defined _MSC_FULL_VER) &amp;&amp; (_MSC_FULL_VER &lt; 190023026) # define BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS </p> </blockquote> <p> $ </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/12634 https://svn.boost.org/trac10/ticket/12634 Report #12629: temp_directory_path does not conform to GetTempPath on Windows Mon, 28 Nov 2016 18:47:49 GMT Mon, 28 Nov 2016 18:54:37 GMT <p> The documentation for <code>temp_directory_path</code> specifies that on Windows, it shall return "The path reported by the Windows <a class="missing wiki">GetTempPath</a> API function." </p> <p> However, <code>GetTempPath</code> adds a trailing separator and <code>temp_directory_path</code> does not. </p> Michael Chadwick <josephholyheart@…> https://svn.boost.org/trac10/ticket/12629 https://svn.boost.org/trac10/ticket/12629 Report #12626: Building boost with Python and MPI failed (MSVC) Sat, 26 Nov 2016 16:14:56 GMT Thu, 29 Dec 2016 11:32:43 GMT <p> I don't which component is not working. </p> <p> I've checked out <a class="ext-link" href="https://github.com/boostorg/boost.git"><span class="icon">​</span>https://github.com/boostorg/boost.git</a> and create the configuration file: </p> <pre class="wiki">using python : 3.5 : E:/Work/Tools/python-3.5.2.3-portable32/python-3.5.2/python.exe : E:/Work/Tools/python-3.5.2.3-portable32/python-3.5.2/include : E:/Work/Tools/python-3.5.2.3-portable32/python-3.5.2/libs ; using mpi ; </pre><p> I've installed python 3.5 and Microsoft MPI v7.1 (and SDK). Now I try to build boost: </p> <pre class="wiki">b2.exe --user-config=user-config.jam -j 4 --toolset=msvc-12.0 --build-type=complete --build-dir=build-vc12-x86 -sBZIP2_SOURCE=E:\workspace\deps\bzip2\src -sBZIP2_BINARY=bzip2 -sBZIP2_INCLUDE=E:\workspace\deps\bzip2\install\include -sBZIP2_LIBPATH=E:\workspace\deps\bzip2\install\lib\Release -sZLIB_SOURCE=E:\workspace\deps\zlib\src -sZLIB_BINARY=zlib -sZLIB_INCLUDE=E:\workspace\deps\zlib\install\include -sZLIB_LIBPATH=E:\workspace\deps\zlib\install\lib architecture=x86 address-model=32 stage --stagedir=E:\workspace\install </pre><p> The result is: </p> <pre class="wiki">Performing configuration checks - 32-bit : yes (cached) - arm : no (cached) - mips1 : no (cached) - power : no (cached) - sparc : no (cached) - x86 : yes (cached) - symlinks supported : no (cached) - junctions supported : yes (cached) - hardlinks supported : yes (cached) - C++11 mutex : yes (cached) - Boost.Config Feature Check: cxx11_auto_declarations : yes (cached) - Boost.Config Feature Check: cxx11_constexpr : no (cached) - Boost.Config Feature Check: cxx11_defaulted_functions : yes (cached) - Boost.Config Feature Check: cxx11_final : yes (cached) - Boost.Config Feature Check: cxx11_hdr_tuple : yes (cached) - Boost.Config Feature Check: cxx11_lambdas : yes (cached) - Boost.Config Feature Check: cxx11_noexcept : no (cached) - Boost.Config Feature Check: cxx11_nullptr : yes (cached) - Boost.Config Feature Check: cxx11_rvalue_references : yes (cached) - Boost.Config Feature Check: cxx11_template_aliases : yes (cached) - Boost.Config Feature Check: cxx11_thread_local : no (cached) - Boost.Config Feature Check: cxx11_variadic_templates : yes (cached) - has_icu builds : no (cached) - iconv (libc) : no (cached) - iconv (separate) : no (cached) - icu : no (cached) - icu (lib64) : no (cached) - native-atomic-int32-supported : yes (cached) - message-compiler : yes (cached) - native-syslog-supported : no (cached) - pthread-supports-robust-mutexes : no (cached) - compiler-supports-visibility : no (cached) - compiler-supports-ssse3 : yes (cached) - compiler-supports-avx2 : yes (cached) - gcc visibility : no (cached) - long double support : yes (cached) warning: Skipping Boost.Locale library with threading=single. warning: Skipping Boost.Thread library with threading=single. warning: Skipping Boost.Wave library with threading=single. error: Name clash for '&lt;pE:\workspace\install\lib&gt;mpi.pyd' error: error: Tried to build the target twice, with property sets having error: these incompatible properties: error: error: - &lt;debug-symbols&gt;on &lt;inlining&gt;off &lt;library&gt;object(file-target)@12756 &lt;library&gt;object(file-target)@12758 &lt;library&gt;object(file-target)@12760 &lt;library&gt;object(file-target)@12774 &lt;library&gt;object(file-target)@12776 &lt;library&gt;object(file-target)@12778 &lt;library&gt;object(file-target)@6809 &lt;library&gt;object(file-target)@6811 &lt;library&gt;object(file-target)@6813 &lt;library&gt;object(file-target)@6919 &lt;library&gt;object(file-target)@6921 &lt;library&gt;object(file-target)@6923&lt;library&gt;object(searched-lib-target)@12605 &lt;optimization&gt;off &lt;runtime-debugging&gt;on &lt;variant&gt;debug &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/mpi/build/msvc-12.0/debug/threading-multi &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/python/build/msvc-12.0/debug/threading-multi &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/serialization/build/msvc-12.0/debug/threading-multi error: - &lt;debug-symbols&gt;off &lt;define&gt;NDEBUG &lt;inlining&gt;full &lt;library&gt;object(file-target)@16291 &lt;library&gt;object(file-target)@16293 &lt;library&gt;object(file-target)@16360 &lt;library&gt;object(file-target)@16362 &lt;library&gt;object(file-target)@19297 &lt;library&gt;object(file-target)@19299 &lt;library&gt;object(file-target)@19312 &lt;library&gt;object(file-target)@19314 &lt;library&gt;object(searched-lib-target)@19202 &lt;optimization&gt;speed &lt;runtime-debugging&gt;off &lt;variant&gt;release &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/mpi/build/msvc-12.0/release/threading-multi &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/python/build/msvc-12.0/release/threading-multi &lt;xdll-path&gt;/E:/workspace/src/build-vc12-x86/boost/bin.v2/libs/serialization/build/msvc-12.0/release/threading-multi error: error: Please make sure to have consistent requirements for these error: properties everywhere in your project, especially for install error: targets. </pre><p> I can build boost by removing <em>using mpi</em> or <em>using python</em>. </p> <p> using python: OK </p> <p> using mpi: OK </p> <p> using python + using mpi: error </p> MailMr_S@… https://svn.boost.org/trac10/ticket/12626 https://svn.boost.org/trac10/ticket/12626 Report #12624: bug error calling boost::make_u32regex() Fri, 25 Nov 2016 05:22:18 GMT Thu, 09 Feb 2017 19:08:36 GMT <p> os: SunOS 5.11 11.2 sun4v sparc sun4v gcc:gcc (GCC) 4.8.2 boost regex:tried 1.59-&gt;1_63+ </p> <p> When calling boost::make_u32regex() with a regex like: '302-Found <br />(<a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a>+A<a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a>+<br />)' </p> <p> The core occurs: </p> <p> <a class="missing ticket">#0</a> 0x00142854 in boost::re_detail_106300::basic_regex_creator&lt;int, boost::icu_regex_traits&gt;::append_set (this=0xffbfd5b0, char_set=...) at ./boost/regex/v4/basic_regex_creator.hpp:380 380 result-&gt;cclasses = char_set.classes(); </p> <p> I added some debug for char_set, and it was fine. The issue is with result ( boost::re_detail_106300::re_set_long&lt;unsigned long long&gt; *); this structure has 2 long long variables (8byte): cclasses, cnclasses after 3 * 4byte variables (csingles,cranges,cequivalents). </p> <p> from boost/regex/v4/states.hpp, the structure is: </p> <p> 203 /<strong>* struct re_set_long </strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong>* 204 A wide character set of characters, following this structure will be 205 an array of type charT: 206 First csingles null-terminated strings 207 Then 2 * cranges NULL terminated strings 208 Then cequivalents NULL terminated strings 209 <strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong>*/ 210 template &lt;class mask_type&gt; 211 struct re_set_long : public re_syntax_base 212 { 213 unsigned int csingles, cranges, cequivalents; 214 mask_type cclasses; 215 mask_type cnclasses; 216 bool isnot; 217 bool singleton; 218 }; </strong></p> <p> When this struct definition is changed to force alignment: </p> <p> 203 /<strong>* struct re_set_long </strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong>* 204 A wide character set of characters, following this structure will be 205 an array of type charT: 206 First csingles null-terminated strings 207 Then 2 * cranges NULL terminated strings 208 Then cequivalents NULL terminated strings 209 <strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong></strong><strong>*/ 210 template &lt;class mask_type&gt; 211 struct <span class="underline">attribute</span>((<span class="underline">packed</span>)) re_set_long : public re_syntax_base 212 { 213 unsigned int csingles, cranges, cequivalents; 214 mask_type cclasses; 215 mask_type cnclasses; 216 bool isnot; 217 bool singleton; 218 }; </strong></p> <p> All our unit tests pass, and no core occurs. </p> <p> This change also resolves the solaris issue mentioned here: <a class="ext-link" href="http://lists.boost.org/boost-users/2010/03/57717.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2010/03/57717.php</a> </p> shane.quinlivan@… https://svn.boost.org/trac10/ticket/12624 https://svn.boost.org/trac10/ticket/12624 Report #12623: MSVC Warning in boyer_moore.hpp Fri, 25 Nov 2016 00:12:31 GMT Fri, 25 Nov 2016 16:13:34 GMT <p> Building a program that uses the 1.62.0 version of boost::algorithm::boyer_moore, with Visual Studio 15 Update 3 produces this warning: </p> <p> boost_1_62_0\boost/algorithm/searching/boyer_moore.hpp(175): warning C4458: declaration of 'pat_first' hides class member </p> <p> It does not appear that a fix has been committed for 1.63.0 </p> vinnie.falco@… https://svn.boost.org/trac10/ticket/12623 https://svn.boost.org/trac10/ticket/12623 Report #12621: property_tree::read_json does not work with BOOST_BIND_NO_PLACEHOLDERS Thu, 24 Nov 2016 14:35:16 GMT Thu, 24 Nov 2016 14:40:05 GMT <p> Minimal code example: </p> <pre class="wiki">#define BOOST_BIND_NO_PLACEHOLDERS #include &lt;boost/property_tree/json_parser.hpp&gt; #include &lt;functional&gt; using namespace std::placeholders; int main () { boost::property_tree::ptree pt; boost::property_tree::read_json("lol", pt); } </pre><p> Visual Studio 2015 Update 3 with v120 toolkit generates: </p> <pre class="wiki">\lib\native\include\boost\bind\bind.hpp(319): error C2664: 'void boost::_mfi::mf1&lt;void,boost::property_tree::json_parser::detail::standard_callbacks&lt;Ptree&gt;,char&gt;::operator ()(T *,A1) const' : cannot convert argument 2 from 'std::_Ph&lt;1&gt;' to 'char' 1&gt; with 1&gt; [ 1&gt; Ptree=boost::property_tree::ptree 1&gt; , T=boost::property_tree::json_parser::detail::standard_callbacks&lt;boost::property_tree::ptree&gt; 1&gt; , A1=char 1&gt; ] 1&gt; No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called </pre><p> First affected version: 1.59 [which introduces the new json parser] </p> <p> My investigation shows that <code>property_tree::json_parser::detail::standard_callbacks::operator()</code> uses unqualified <code>_1</code> symbol. Since <code>#define BOOST_BIND_NO_PLACEHOLDERS</code> is used, compiler don't know nothing about <code>_1</code>. </p> <p> Error msg generated in msvc shows that <code>boost::bind</code> is messed up with <code>std::placeholders::_1</code>. The problem might be causes by no two-phase-lookup in <code>cl</code>. <code>using namespace std::placeholders</code> affects mentioned <code>_1</code> usage in <code>operator()</code> since lookup for non dependent <code>_1</code> is done later. Fixing issue in boost should workaround the msvc issue. </p> <p> Please note that without <code>#define BOOST_BIND_NO_PLACEHOLDERS</code> everything works ok. </p> ja2222ja@… https://svn.boost.org/trac10/ticket/12621 https://svn.boost.org/trac10/ticket/12621 Report #12619: Boost.Regex partial_match fails (see also Ticket #11776 feature request) Wed, 23 Nov 2016 17:15:14 GMT Wed, 23 Nov 2016 17:15:14 GMT <p> Boost.Regex is a great library that we use extensively. I am re-raising Ticket 11776 as a bug. The <code>partial_match</code> implementation is broken because regex repetitions (*, +) may behave lazy or greedy depending on input text buffer size. This is very unfortunate, because <code>partial_match</code> provides the <strong>only</strong> possible mechanism to search streaming input text without buffering the entire text. To restrict the regex to simple forms that do not include repetitions (*, +) is not a viable workaround. There are use cases in which we must take interactive input (i.e. buffering one char at a time) or take large files in which the pattern searched may not fit in the current buffer allocated, thus not producing the longest match, and worse we don't know if the buffer must be enlarged to continue iterating to find the longest match. </p> <p> The correct <code>partial_match</code> algorithm should consider that <strong>as long as backtracking on a repetition pattern in the regex is still possible given some partial input text, Boost.Regex should flag the result as a partial match instead of a full match.</strong>. With this change, matching "<code>abc.*123</code>" may require the whole input, but in this case that is OK! We need this flexibility of the matcher with a buffering approach. </p> <p> Unfortunately, the suggested workaround by the Boost.Regex documentation to check if the pattern matched the input up to the buffer end (which indicates a partial match) does not always work. </p> Dr. Robert van Engelen <engelen@…> https://svn.boost.org/trac10/ticket/12619 https://svn.boost.org/trac10/ticket/12619 Report #12618: Unused "str_icase_" member in xpression_peeker struct Tue, 22 Nov 2016 20:31:28 GMT Tue, 22 Nov 2016 20:31:28 GMT <p> There seem to be unused "str_icase_" member in xpression_peeker struct in "boost\xpressive\detail\core\peeker.hpp" file. </p> anonymous https://svn.boost.org/trac10/ticket/12618 https://svn.boost.org/trac10/ticket/12618 Report #12616: Cannot build boost 1.62 for x32 ABI Mon, 21 Nov 2016 12:03:44 GMT Mon, 21 Nov 2016 14:07:15 GMT <p> To build boost for the X32 ABI (which is x86-64 but with 32-bit pointers) we set CFLAGS to -mx32. </p> <p> However boost then decides that it knows best and also passes in -march=i686 -m32. </p> <p> For example: </p> <pre class="wiki">| "x86_64-poky-linux-gnux32-g++" "-mx32" "-Wl,-O1" "-Wl,--hash-style=gnu" "-Wl,--as-needed" "--sysroot=/data/poky-master/tmp-glibc/sysroots/intel-corei7-64" -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/data/poky-master/tmp-glibc/work/x86_64_x32-poky-linux-gnux32/boost/1.62.0-r1=/usr/src/debug/boost/1.62.0-r1 -fdebug-prefix-map=/data/poky-master/tmp-glibc/sysroots/x86_64-linux= -fdebug-prefix-map=/data/poky-master/tmp-glibc/sysroots/intel-corei7-64= -fvisibility-inlines-hidden -O3 -finline-functions -Wno-inline -Wall -march=i686 -pthread -fPIC -m32 -DBOOST_ALL_NO_LIB=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_DYN_LINK=1 -DNDEBUG -I"." -c -o "/data/poky-master/tmp-glibc/work/x86_64_x32-poky-linux-gnux32/boost/1.62.0-r1/boost_1_62_0/x86_64-poky-linux-gnux32/boost/bin.v2/libs/filesystem/build/aca09349fdb84d131321425f6c3a38ed/windows_file_codecvt.o" "libs/filesystem/src/windows_file_codecvt.cpp" | | In file included from /data/poky-master/tmp-glibc/sysroots/intel-corei7-64/usr/include/features.h:392:0, | from /data/poky-master/tmp-glibc/sysroots/intel-corei7-64/usr/include/c++/6.2.0/x86_64-poky-linux-gnux32/bits/os_defines.h:39, | from /data/poky-master/tmp-glibc/sysroots/intel-corei7-64/usr/include/c++/6.2.0/x86_64-poky-linux-gnux32/bits/c++config.h:495, | from /data/poky-master/tmp-glibc/sysroots/intel-corei7-64/usr/include/c++/6.2.0/cstddef:49, | from ./boost/config/compiler/gcc.hpp:165, | from ./boost/config.hpp:39, | from ./boost/filesystem/config.hpp:28, | from libs/filesystem/src/windows_file_codecvt.cpp:20: | /data/poky-master/tmp-glibc/sysroots/intel-corei7-64/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory | # include &lt;gnu/stubs-32.h&gt; </pre><p> The -mx32 is our CFLAGS. -m32 -march=i686 is from boost/tools/build. The compiler ends up thinking that its doing a i686 build and tries to open stubs-32.h which doesn't exist as this sysroot is x32 so only stubs-x32.h is present. </p> ross@… https://svn.boost.org/trac10/ticket/12616 https://svn.boost.org/trac10/ticket/12616 Report #12614: Boost graph vf2 isomorphism algo runs for ever for this test case Mon, 21 Nov 2016 08:20:56 GMT Wed, 23 Nov 2016 16:13:36 GMT <p> Boost graph vf2 isomorphism algo runs for ever for this test case Steps to reproduce: </p> <ol><li>Unzip the attached file, you should see three files </li><li>Add the cpp file to your build system </li><li>Compile and execute. </li></ol><hr /> Praveen Vs <praveen_v-s@…> https://svn.boost.org/trac10/ticket/12614 https://svn.boost.org/trac10/ticket/12614 Report #12613: Problem in vf2_subgraph_iso handling self-loops when using undirectedS Fri, 18 Nov 2016 11:48:51 GMT Fri, 18 Nov 2016 11:48:51 GMT <p> The attached example (with 1 vertex and 1 self-loop) illustrates that <code>vf2_subgraph_iso</code> fails to detect the isomorphism when using <code>underictedS</code> and e.g. <code>vecS</code> as edge list. This is because adding a single self-loop to a vertex (when using <code>vecS</code> as edge list) results in 2 out-edges having the same edge descriptor. Is this intended? (In contrast, using <code>setS</code> as edge list to describe the same graph (1 vertex and 1 self-loop) results in only one out-edge. In this case vf2_subgraph_iso finds the isomorphism because each out-edge has a unique edge descriptor). </p> <p> This affects also previous versions. </p> <p> Best wishes, Flavio </p> Flavio De Lorenzi <fdlorenzi@…> https://svn.boost.org/trac10/ticket/12613 https://svn.boost.org/trac10/ticket/12613 Report #12612: Inconsistency in vf2_subgraph_iso documentation / return value Fri, 18 Nov 2016 11:24:48 GMT Thu, 24 Nov 2016 19:21:40 GMT <p> In the documentation it's said that <code>vf2_subgraph_iso</code> returns true if a graph-subgraph isomorphism exists and false otherwise. But the return value is actually given by the return value of <code>detail::match</code>, which returns true if the entire search space was explored and false otherwise. (This affects also previous versions). </p> <p> Should I fix the return value or the documentation? </p> <p> Best wishes, Flavio </p> Flavio De Lorenzi <fdlorenzi@…> https://svn.boost.org/trac10/ticket/12612 https://svn.boost.org/trac10/ticket/12612 Report #12608: boost::polygon crashing on get function after substruction operaion Mon, 14 Nov 2016 15:22:41 GMT Mon, 14 Nov 2016 15:22:41 GMT <p> I have one polygon set that was built from one polygon and I'm substracting other polygon set built from 17 polygons. assign operation passed successfully but then library is crashing on get operation when I'm trying to get vector with polygons with holes. Stackdump: </p> <p> ...:polygon::polygon_arbitrary_formation&lt;long double&gt;::active_tail_arbitrary*&gt; &gt;::_M_insert&lt;boost::polygon::polygon_arbitrary_formation&lt;long double&gt;::active_tail_arbitrary* const&amp;&gt;, FP=7fffffff5d30 ...n::polygon_arbitrary_formation&lt;long double&gt;::active_tail_arbitrary*,std::allocator&lt;boost::polygon::polygon_arbitrary_formation&lt;long double&gt;::active_tail_arbitrary*&gt; &gt;::push_back, FP=7fffffff5d50 boost::polygon::polygon_arbitrary_formation&lt;long double&gt;::active_tail_arbitrary::addHole, FP=7fffffff5d70 ...e&gt;::vertex_half_edge*,std::vector&lt;boost::polygon::scanline_base&lt;long double&gt;::vertex_half_edge,std::allocator&lt;boost::polygon::scanline_base&lt;long double&gt;::vertex_half_edge&gt; &gt; &gt; &gt;, FP=7fffffff6440 ...e&gt;::vertex_half_edge*,std::vector&lt;boost::polygon::scanline_base&lt;long double&gt;::vertex_half_edge,std::allocator&lt;boost::polygon::scanline_base&lt;long double&gt;::vertex_half_edge&gt; &gt; &gt; &gt;, FP=7fffffff64a0 ...::vector&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt;,std::allocator&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt; &gt; &gt;,boost::polygon::polygon_with_holes_concept&gt;, FP=7fffffff6640 ...on_set_data&lt;long double&gt;::get_dispatch&lt;std::vector&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt;,std::allocator&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt; &gt; &gt; &gt;, FP=7fffffff6670 ...on::polygon_set_data&lt;long double&gt;::get&lt;std::vector&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt;,std::allocator&lt;boost::polygon::polygon_with_holes_data&lt;long double&gt; &gt; &gt; &gt;, FP=7fffffff66a0 main, FP=7fffffffb9a0 </p> <p> Reproduction code is attached Thanks, Roman </p> shroman@… https://svn.boost.org/trac10/ticket/12608 https://svn.boost.org/trac10/ticket/12608 Report #12607: boost telnet client Mon, 14 Nov 2016 10:10:55 GMT Tue, 15 Nov 2016 00:00:25 GMT <p> I'm using code from boost::asio telnet example without modification. Boost ver: 1.62. </p> <p> I need this telnet client to interact with memcached server. I use memcached-1.4.5-x86 and also Couchbase. </p> <p> When I try to <strong>get</strong> or <strong>delete</strong> key via application based on boost's code everything is ok. But when I try to use <strong>set</strong> - something goes wrong and both memcached servers behaves in similar way. Example input, first line: "set key 0 0 3",second line "XYZ". And "STORED" output is expected - instead of this nothing happens, and <em>read</em> methods of telnet_client is not invoked... if I press Enter one more time or add spaces - then "CLIENT_ERROR bad data chunk" will be outputted. Please help to solve this issue, I'm very newb to Sockets and boost::asio, I'm reading manuals, but issue is very urgent. Thank you for your attention. </p> Oleg https://svn.boost.org/trac10/ticket/12607 https://svn.boost.org/trac10/ticket/12607 Report #12606: Boost.ASIO not throwing EOF exception when using coroutine reading from pipe Mon, 14 Nov 2016 04:07:22 GMT Mon, 14 Nov 2016 04:07:22 GMT <p> The coroutine just hangs when the end of file is reached. If the coroutine is used with an error code, i.e. "yield[ec]" then an error is properly returned. </p> <p> This is on Ubuntu Xenial (16.04), clang 3.8 &amp; gcc 5.4.1, libstdc++.so.6. </p> <p> More details are in this SO question: <a class="ext-link" href="http://stackoverflow.com/questions/40571429/stdin-pipe-not-closing-when-read-with-boost-asio"><span class="icon">​</span>http://stackoverflow.com/questions/40571429/stdin-pipe-not-closing-when-read-with-boost-asio</a> </p> kirit.saelensminde@… https://svn.boost.org/trac10/ticket/12606 https://svn.boost.org/trac10/ticket/12606 Report #12604: neither scoped_array nor checked_delete do check for nullptr Fri, 11 Nov 2016 10:15:47 GMT Fri, 11 Nov 2016 14:07:20 GMT <p> Hi, I recently ran across a problem where a scoped_array::reset was called with a nullptr argument. As this is not checked within scoped_array::reset or further down the callstack in scoped_array::swap, a checked_delete was called on a nullptr and threw a Segfault. For me, I'd consider this a bug as scoped_array assumes ownership and hence is responsible for delete it's allocated memory. the problem occurred during an ill-posed usage of the boost utf as documented in the file attached. </p> steinbac@… https://svn.boost.org/trac10/ticket/12604 https://svn.boost.org/trac10/ticket/12604 Report #12603: C++11 Raw string literals with delimiters are not lexed correctly Fri, 11 Nov 2016 04:23:08 GMT Fri, 11 Nov 2016 04:23:08 GMT <p> The optional delimiter feature of raw string literals allows you to have even the terminating characters of a raw string literal <em>within</em> a raw string literal. See for example <a class="ext-link" href="http://stackoverflow.com/a/30308184/192737"><span class="icon">​</span>http://stackoverflow.com/a/30308184/192737</a> </p> <p> Wave terminates the raw string literal token at the appearance of the first )" sequence, regardless of whether the optional delimiter is in effect. </p> edaskel@… https://svn.boost.org/trac10/ticket/12603 https://svn.boost.org/trac10/ticket/12603 Report #12602: C++11 raw string literals with embedded escapes are mislexed Fri, 11 Nov 2016 03:38:33 GMT Fri, 11 Nov 2016 03:38:33 GMT <p> Raw string literals are partly intended to make it easier to write strings that would otherwise require extensive escaping - e.g., regular expressions. Unfortunately Wave seems to get confused when backslashes appear in C++11 raw string literals. For example: </p> <p> R"(A\+)" </p> <p> is parsed by compilers as a string of three characters: A, backslash, and +. Wave lexes this as an unterminated raw string literal followed by six individual character tokens. By contrast: </p> <p> R"(A+)" </p> <p> is correctly parsed as a two-character raw string literal. </p> edaskel@… https://svn.boost.org/trac10/ticket/12602 https://svn.boost.org/trac10/ticket/12602 Report #12601: system_complete doc error Thu, 10 Nov 2016 23:28:34 GMT Thu, 10 Nov 2016 23:28:34 GMT <p> In <a href="http://www.boost.org/doc/libs/1_62_0/libs/filesystem/doc/reference.html">http://www.boost.org/doc/libs/1_62_0/libs/filesystem/doc/reference.html</a>, the documentation for system_complete refers several times to the complete method, which is no longer documented (it's listed as deprecated on a separate page). There's also a broken link to "the complete note". </p> anonymous https://svn.boost.org/trac10/ticket/12601 https://svn.boost.org/trac10/ticket/12601 Report #12598: Function definition not found reported by intellisense Wed, 09 Nov 2016 14:09:17 GMT Wed, 09 Nov 2016 14:09:17 GMT <p> This occurs in Visual Studio 2015, update 1. C++/CLI </p> <p> ======================================= </p> <pre class="wiki">test.h class MyClass { public: void MyMethod(); }; test.cpp #include "test.h" #include &lt;boost/foreach.hpp&gt; void MyClass::MyMethod() { std::string word = "Hello"; BOOST_FOREACH(char character, word) { } } </pre><p> ======================================= </p> <p> <a class="missing wiki">IntelliSense</a> shows a function not defined for the function. if i remove the BOOST_FOREACH its OK. It can compile however in both cases!? </p> bjorn.holmgren@… https://svn.boost.org/trac10/ticket/12598 https://svn.boost.org/trac10/ticket/12598 Report #12595: Unexpected result when using type_erased adaptor to a transformed_range when clang optimizations are enabled Tue, 08 Nov 2016 06:11:41 GMT Tue, 08 Nov 2016 06:11:41 GMT <p> If clang optimizations -O1 are enabled, when using type_erased adapter on a transformed_range, the range will yield wrong values. </p> <p> For example: </p> <p> int addOne(int b) { </p> <blockquote> <p> return b + 1; </p> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> std::vector&lt;int&gt; nums{ 1, 2, 3 }; auto result = nums | boost::adaptor::transformed(addOne) | boost::adaptor::type_erased&lt;int, boost::forward_traversal_tag&gt;(); </p> </blockquote> <p> } </p> <p> When printing result, it yielded { 1, 1, 1 } instead of { 2, 3, 4 } when compiling with -O1. It worked as expected with no optimization flags. I am compiling the code with clang++. The version of clang is Apple LLVM version 8.0.0 (clang-800.0.38). And I am using c++11. </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/40479397/getting-unexpected-result-when-compiling-with-clang-optimization?noredirect=1#comment68203492_40479397"><span class="icon">​</span>http://stackoverflow.com/questions/40479397/getting-unexpected-result-when-compiling-with-clang-optimization?noredirect=1#comment68203492_40479397</a> </p> Alfredo Altamirano <fredy.altamirano8@…> https://svn.boost.org/trac10/ticket/12595 https://svn.boost.org/trac10/ticket/12595 Report #12594: zlib is always missed when ZLIB_SOURCE contains spaces Mon, 07 Nov 2016 21:03:35 GMT Mon, 07 Nov 2016 21:03:35 GMT <p> Real command line: </p> <pre class="wiki">"C:\Work\_GitHub\boost\b2.exe" -q -s "ZLIB_SOURCE=C:\Work\_GitHub\zlib 1" --without-python --without-mpi define=_WIN32_WINNT=0x0501 define=_SECURE_SCL=0 define=_HAS_ITERATOR_DEBUGGING=0 toolset=msvc-12.0 --layout=versioned --build-type=complete --build-dir=bin.v2\vc120.static.xp.x86 --stagedir=stage\vc120.static.xp.x86 threading=multi address-model=32 variant=release link=static runtime-link=static stage </pre><p> After renaming directory "zlib 1" to "zlib" everything works. </p> mikhail@… https://svn.boost.org/trac10/ticket/12594 https://svn.boost.org/trac10/ticket/12594 Report #12591: Error compiling boost with mingw Mon, 07 Nov 2016 12:35:06 GMT Mon, 09 Oct 2017 21:24:12 GMT <p> Bootstrap.log: # </p> <p> Using 'mingw' toolset. </p> <p> # </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;if exist bootstrap rd /S /Q bootstrap </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;md bootstrap </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;gcc -DNT -o bootstrap\jam0.exe command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;.\bootstrap\jam0 -f build.jam --toolset=mingw "--toolset-root= " clean </p> <p> # </p> <p> Unknown toolset: mingw </p> <p> # </p> <p> Known toolsets are: acc, borland, cc, como, clang, darwin, gcc, gcc-nocygwin, intel-darwin, intel-linux, intel-win32, kcc, kylix, </p> <p> metrowerks, mipspro, msvc, qcc, pathscale, pgi, sun, sunpro, tru64cxx, vacpp, xlcpp, vc7, vc8, vc9, vc10, vc11, vc12, vc14, vmsdecc </p> <p> # </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;.\bootstrap\jam0 -f build.jam --toolset=mingw "--toolset-root= " </p> <p> # </p> <p> Unknown toolset: mingw </p> <p> # </p> <p> Known toolsets are: acc, borland, cc, como, clang, darwin, gcc, gcc-nocygwin, intel-darwin, intel-linux, intel-win32, kcc, kylix, </p> <p> metrowerks, mipspro, msvc, qcc, pathscale, pgi, sun, sunpro, tru64cxx, vacpp, xlcpp, vc7, vc8, vc9, vc10, vc11, vc12, vc14, vmsdecc </p> <p> # </p> <p> C:\Users\moh\Desktop\boost_1_62_0\boost_1_62_0\tools\build\src\engine&gt;exit /b 1 </p> anonymous https://svn.boost.org/trac10/ticket/12591 https://svn.boost.org/trac10/ticket/12591 Report #12590: C++11 raw string literal support incomplete Sun, 06 Nov 2016 18:14:54 GMT Mon, 07 Nov 2016 16:17:37 GMT <p> Raw string literals containing control characters (ESC in particular) cause errors when lexed by the wave driver: </p> <p> error: generic lexer error: invalid character '\033' in input stream </p> edaskel@… https://svn.boost.org/trac10/ticket/12590 https://svn.boost.org/trac10/ticket/12590 Report #12586: String algorithm fails to compile using Visual Studio 2015 Update 3 Sat, 05 Nov 2016 16:37:17 GMT Sun, 13 Aug 2017 10:01:42 GMT <p> The following fails to compile due to several compiler errors when using Visual Studio 2015 Update 3, compiler option /std:c++latest. </p> <pre class="wiki">#include &lt;boost/algorithm/string.hpp&gt; int main() { } </pre><p> A snippet of compile errors: </p> <blockquote> <p> 1&gt;boost_1_62_0\boost\algorithm\string\detail\case_conv.hpp(33): error C2143: syntax error: missing ',' before '&lt;' </p> </blockquote> <blockquote> <p> 1&gt;boost_1_62_0\boost\algorithm\string\detail\case_conv.hpp(49): note: see reference to class template instantiation 'boost::algorithm::detail::to_lowerF&lt;CharT&gt;' being compiled </p> </blockquote> <blockquote> <p> 1&gt;boost_1_62_0\boost\algorithm\string\detail\case_conv.hpp(53): error C2143: syntax error: missing ',' before '&lt;' </p> </blockquote> <blockquote> <p> 1&gt;boost_1_62_0\boost\algorithm\string\detail\case_conv.hpp(69): note: see reference to class template instantiation boost::algorithm::detail::to_upperF&lt;CharT&gt;' being compiled </p> </blockquote> <p> Presumably this is because std::binary_function and std::unary_function are removed from C++17. </p> lex21@… https://svn.boost.org/trac10/ticket/12586 https://svn.boost.org/trac10/ticket/12586 Report #12585: Functional fails to compile using Visual Studio 2015 Update 3 Sat, 05 Nov 2016 16:21:46 GMT Sat, 05 Nov 2016 16:21:46 GMT <p> The following fails to compile due to several compiler errors when using Visual Studio 2015 Update 3, compiler option /std:c++latest. </p> <pre class="wiki">#include &lt;boost/functional.hpp&gt; int main() { } </pre><p> A snippet of compiler errors: </p> <blockquote> <p> 1&gt;d:\development\libs\boost_1_62_0\boost\functional.hpp(150): error C2143: syntax error: missing ',' before '&lt;' </p> </blockquote> <blockquote> <p> 1&gt; d:\development\libs\boost_1_62_0\boost\functional.hpp(163): note: see reference to class template instantiation 'boost::unary_negate&lt;Predicate&gt;' being compiled </p> </blockquote> <blockquote> <p> 1&gt;d:\development\libs\boost_1_62_0\boost\functional.hpp(150): error C2518: keyword 'typename' illegal in base class list; ignored </p> </blockquote> <p> Presumably this is because std::binary_function and std::unary_function are removed from c++17. </p> lex21@… https://svn.boost.org/trac10/ticket/12585 https://svn.boost.org/trac10/ticket/12585 Report #12582: Error catching specific "regex_error" Fri, 04 Nov 2016 14:58:54 GMT Thu, 09 Feb 2017 18:50:17 GMT <p> The following try catch doesn't work in 1.61, but did work in 1.55. Other boost exceptions are caught properly. I've provided two examples (one working, one failing) </p> <h2 class="section" id="Exceptionisnevercaught">Exception is never caught</h2> <pre class="wiki">try { boost::smatch m1; std::string long_String= "@VOOfPHslmjhdQGM4CHjMII4tf-5-FjBnxaC6D8C3jQs09cdw8gDlF0bI7jfmN6cGKeZdJVOCt5GoeOVA3ao35rN-NV3Oy3A9V2hMUO0hHHVdWeGSoRY8ua3lnsXZsaOmz9YTZhR-Xtq13xAnYP5sHHbfM6tuuqWetdgCGNeMlckGyEKBW0MTtRq7Lhns8t7QW_59x77LRz2n0LtSS46sdN970eQ04llaeXZQDUv4coz6VuOBmEUUfLcxxc3HACSqdLQ-EmD_olxqPjR_mO2_ltjv_m2edvtn-5psCXZVpdVLKtcjl8ezLJQx5l30tIiPWkLDP_jot-lUe7ypMjXY68fo_E33L3eIyVTzyCWLSQdC9616-xA9gpMlHLDYOZL9MsxeOsK5v86OYkTn88IDtWV_bXfdEsN9m_p1CYKjwyhlBWH1h3uSz0WAzcIqqMDkNbQrF8sFmX7fVSC5OhazMnJHRnfcKCHfyCoTqA5horkQn0Kded3qFdtnZEvrOKgrGeiLjNwwlPuRQI2pD9StWHiI5b2ACyJ2wV8Xl7f4FKhr3H6xXpWKTEXNt4VjWZgfcVq9UCiThSLEBfHOEe1voARPHrDBw26VSjHVWacUZAAJ6Cf4AXsx8kvBsiw4HKyG6qdlYp6v03BEtLv_vP2neOGrDQAV5s9ED_qGGJVDgAxb_auZwL5lNE5Sw0KdWDBd"; static const boost::regex b1("((?:[A-z0-9]+|[A-z\\-]+ ?)?(?: the )?(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[A-Za-z0-9-]*(?:[^C][^Uu])[Bb]ot|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]*)(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"); boost::regex_search(sample_kaspersky, m1, b1); } catch (...) { //should catch a regex_error: The complexity of matching the regular expression exceeded predefined bounds.... } </pre><p> The previous code block doesn't catch the exception but instead calls terminate: </p> <pre class="wiki">terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;std::runtime_error&gt; &gt;' what(): The complexity of matching the regular expression exceeded predefined bounds. Try refactoring the regular expression to make each choice made by the state machine unambiguous. This exception is thrown to prevent "eternal" matches that take an indefinite period time to locate. </pre><h2 class="section" id="Exceptioniscaughtproperly">Exception is caught properly</h2> <pre class="wiki"> try { // forcing an exception static const boost::regex b2("((?:[?)?)?"); boost::smatch m2; boost::regex_search(sample_kaspersky, m2, b2); } catch (...) { //this work perfectly } </pre> Pierre Vaillancourt <pierre.vaillancourt@…> https://svn.boost.org/trac10/ticket/12582 https://svn.boost.org/trac10/ticket/12582 Report #12576: Segmentation fault when use bcp for asio lin in Mac Clang6.0 Wed, 02 Nov 2016 09:58:10 GMT Mon, 17 Jul 2017 18:59:12 GMT <p> segmention fault occurs when use bcp command for asio lib in Mac with clang 6.0. command : </p> <blockquote> <p> ./dist/bin/bcp --namespace=boost --namespace-alias asio config build boost </p> </blockquote> <p> Log error: </p> <blockquote> <p> CAUTION: don't know how to trace depenencies through macro: "BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/caps_)" in file: boost/atomic/capabilities.hpp </p> </blockquote> <p> CAUTION: don't know how to trace depenencies through macro: "BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/ops_)" in file: boost/atomic/detail/operations_lockfree.hpp INFO: tracking source dependencies of library atomic due to presence of "struct lockpool {" in file "boost/atomic/detail/lockpool.hpp" INFO: tracking source dependencies of library exception due to presence of " int clone_current_exception_non_intrusive( clone_base const * &amp; cloned );" in file "boost/exception/detail/clone_current_exception.hpp" INFO: tracking source dependencies of library serialization due to presence of "class BOOST_SYMBOL_VISIBLE extended_type_info : </p> <blockquote> <p> private boost::noncopyable </p> </blockquote> <p> {" in file "boost/serialization/extended_type_info.hpp" INFO: tracking source dependencies of library coroutine due to presence of "struct BOOST_COROUTINES_DECL stack_traits {" in file "boost/coroutine/stack_traits.hpp" Segmentation fault: 11 </p> julien.dauba@… https://svn.boost.org/trac10/ticket/12576 https://svn.boost.org/trac10/ticket/12576 Report #12575: fix compilation of software using libressl and boost asio Wed, 02 Nov 2016 09:20:33 GMT Thu, 02 Feb 2017 22:06:38 GMT <p> Some software packages fail to compile when using libressl as ssl provider, e.g. <a class="ext-link" href="https://bugs.gentoo.org/show_bug.cgi?id=596666#c9"><span class="icon">​</span>https://bugs.gentoo.org/show_bug.cgi?id=596666#c9</a> </p> <p> This can be fixed by checking for presence of LIBRESSL_VERSION_NUMBER in addition to the value of OPENSSL_VERSION_NUMBER in boost/asio/ssl/impl/context.ipp </p> Reinhard Biegel <r.biegel@…> https://svn.boost.org/trac10/ticket/12575 https://svn.boost.org/trac10/ticket/12575 Report #12573: b2 ignores <archiver> <ranlib> and other flags selecting toolchain Tue, 01 Nov 2016 14:51:20 GMT Wed, 15 Mar 2017 21:40:23 GMT <p> Building boost from sources git tag 1.62.0 (4f2bdeb93a4be13ba0dc5e9f44920a2bf67191fc) I want to crossbuild it, on linux (ubuntu) host, for Mac OS X target. </p> <p> Goal: crossbuild the lib boost, with boost-locale </p> <p> Result: boost calls my crossbuilder clang++, but calls incorrect (native system) ar, ranlib, etc. As result the produced .a files contain .o objects for Mach-O, but are packed it seems in some incorrect way, they fail when trying to actually use them in crossbuild of a hello world that uses them. </p> <p> Expected result: b2 build should call provided -ar and -ranlib tools, e.g. /home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-ar </p> <p> Reproduce: </p> <p> I write the configuration file: </p> <p> $ cat ~/user-config.jam </p> <pre class="wiki">using clang : : /home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-clang++ : &lt;archiver&gt;"/home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-ar-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" &lt;striper&gt;"/home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-strip" &lt;ranlib&gt;"/home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-ranlib" : ; </pre><p> Mac OSX SDK is provided in e.g. /home/ubuntu/build/macsdk/MacOSX10.11.sdk </p> <p> Then I call boost build as: </p> <pre class="wiki">export WITH_ICONV="/home/ubuntu/build/macsdk/MacOSX10.11.sdk/usr/" &amp;&amp; git clean -xdf ; git submodule foreach git clean -xdf; ./bootstrap.sh --without-icu &amp;&amp; ./b2 headers &amp;&amp; export OSX_CPU_ARCH="core2" &amp;&amp; export OSX_VERSION_MIN="10.8" &amp;&amp; time strace -fffff -s 2000 -e trace=process ./b2 --toolset=clang --build-type=complete "--with-filesystem" "--with-system" "--with-program_options" "--with-thread" "--with-locale" cxxflags=-mmacosx-version-min=${OSX_VERSION_MIN} cxxflags=-march=${OSX_CPU_ARCH} target-os=darwin architecture=x86 address-model=64 --layout=tagged link=static runtime-link=static -sNO_BZIP2=1 --sNO_ZLIB=1 --prefix=/home/ubuntu/build/boost/build-osx/ threading=multi -sICONV_PATH="$WITH_ICONV" --prefix="/home/ubuntu/build/boost/build-osx/" --user-config=/home/ubuntu/user-config.jam install &amp;&gt; ~/strace </pre><p> You can also remove the strace part "strace -fffff -s 2000 -e trace=process" and the end redirection. </p> <p> Then I see in ~/strace that normal systems ar and ranlib are used. Also, providing not-existing ar program "-AAAAAAAAAAAAA" should cause build error, but it does not. </p> hbadger@… https://svn.boost.org/trac10/ticket/12573 https://svn.boost.org/trac10/ticket/12573 Report #12570: b2 ignores Iconv and disabled boost-locale lib, even though has_iconv.cpp passed Mon, 31 Oct 2016 13:59:58 GMT Wed, 07 Dec 2016 17:18:45 GMT <p> Building boost from sources git tag 1.62.0 (4f2bdeb93a4be13ba0dc5e9f44920a2bf67191fc) I want to crossbuild it, on linux (ubuntu) host, for Mac OS X target. </p> <p> Goal: crossbuild the lib boost, with boost-locale </p> <p> Result: boost says that locale needs either ICU or iconv, and it does not build library for locale. </p> <p> Expected result: it would build the library for boost locale. </p> <p> Error messages: </p> <p> ... </p> <ul><li>iconv (libc) : no </li><li>iconv (separate) : no </li></ul><p> ... </p> <ul><li>Boost.Locale needs either iconv or ICU library to be built. </li></ul><p> ... ls stage/lib/ libboost_atomic-mt-s.a libboost_filesystem-mt-s.a libboost_program_options-mt-s.a libboost_system-mt-s.a libboost_thread-mt-s.a libboost_atomic-mt-sd.a libboost_filesystem-mt-sd.a libboost_program_options-mt-sd.a libboost_system-mt-sd.a libboost_thread-mt-sd.a </p> <p> Environment: </p> <p> Crosscompiler and it's toolchain is built in /home/ubuntu/build/osxcross/target/bin/ and is proven to work (builds Mach-O executables, they work when copied ontop real Mac OS X). </p> <p> Mac SDK is available in /home/ubuntu/build/macsdk/MacOSX10.11.sdk/ And it provides the iconv.h file (<strong>though I do not see any .a</strong> or other file for it - is that ok?) </p> <p> find /home/ubuntu/build/macsdk/MacOSX10.11.sdk/usr/include | grep iconv /home/ubuntu/build/macsdk/MacOSX10.11.sdk/usr/include/iconv.h </p> <p> Executed command (in place where I downloaded boost, with needed submodules) </p> <p> export WITH_ICONV="/home/ubuntu/build/macsdk/MacOSX10.11.sdk/usr/" &amp;&amp; git clean -xdf ; git submodule foreach git clean -xdf; ./bootstrap.sh --with-icu &amp;&amp; ./b2 headers &amp;&amp; export OSX_CPU_ARCH="core2" &amp;&amp; export OSX_VERSION_MIN="10.8" &amp;&amp; time ./b2 --toolset=clang --build-type=complete --with-filesystem --with-system --with-program_options --with-thread --with-locale cxxflags=-mmacosx-version-min=${OSX_VERSION_MIN} cxxflags=-march=${OSX_CPU_ARCH} target-os=darwin architecture=x86 address-model=64 --layout=tagged link=static runtime-link=static -sNO_BZIP2=1 --sNO_ZLIB=1 --prefix=/home/ubuntu/build/boost/build-osx/ threading=multi boost.locale.icu=off boost.locale.std=off boost.locale.iconv=on -sICONV_PATH="$WITH_ICONV" </p> <p> Running strace debug (strace b2), I can confirm that Boost does try to build the has_ionv.cpp program, and it seems to work fine. All invocations I seen return with 0 exit code. </p> <p> E.g: </p> <p> [pid 22980] execve("/home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-clang++", ["/home/ubuntu/build/osxcross/target/bin/x86_64-apple-darwin15-clang++", "-c", "-x", "c++", "-march=core2", "-mmacosx-version-min=10.8", "-O0", "-g", "-fno-inline", "-Wall", "-g", "-fPIC", "-m64", "-march=core2", "-mmacosx-version-min=10.8", "-DBOOST_ALL_NO_LIB=1", "-I.", "-I/home/ubuntu/build/macsdk/MacOSX10.11.sdk/usr/include", "-o", "bin.v2/libs/locale/build/clang-linux-3.8.0/debug/target-os-darwin/has_iconv_libc_ext.o", "libs/locale/src/../build/has_iconv.cpp"], <a href="https://svn.boost.org/trac10/*">22 vars */</a>) = 0 </p> <p> Repeating this test manually also works, creates the .o file, and it is indeed in Mach-O format. </p> <p> No idea why then it still tells me that iconv was not enabled, and as result does not build locale. </p> <p> This bug disallows me from at all using Boost until fixed. </p> hbadger@… https://svn.boost.org/trac10/ticket/12570 https://svn.boost.org/trac10/ticket/12570 Report #12567: boost::filesystem::path::generic crashes on Windows while attempting to build a network share path Fri, 28 Oct 2016 16:02:50 GMT Fri, 28 Oct 2016 16:02:50 GMT <p> I'm attempting to check whether a file on a shared path exists. The path is an unaccessible RDC share on WinXP. </p> <p> Code snippet: </p> <pre class="wiki">bool fileOk = boost::filesystem::exists(i_pFileName, ec) &amp;&amp; boost::filesystem::is_regular_file(i_pFileName, ec); </pre><p> pFileName is a const char*, value </p> <pre class="wiki">\\tsclient\E\floating_Jasper.cap </pre><p> That specific path is inaccessible. </p> <p> I can't post the whole call stack because of company policy, but the faulting boost frames are as follows: </p> <pre class="wiki">0:000&gt; kb ChildEBP RetAddr Args to Child WARNING: Stack unwind information not available. Following frames may be wrong. 0012f2f8 78ac872d e06d7363 00000001 00000003 kernel32!RaiseException+0x52 0012f330 02785a5f 0012f354 027939fc 7d335a21 MSVCR100!CxxThrowException+0x45 0012f3b8 02786a5a 0012f460 0012f48c 00000000 boost_filesystem_vc100_mt_1_60!boost::filesystem::path::generic+0xc1f 0012f418 00b47169 0012f460 0012f48c 00000000 boost_filesystem_vc100_mt_1_60!boost::filesystem::detail::status+0x5a </pre><p> I'd expect this to return an error code and not crash. </p> alexandra.ghecenco@… https://svn.boost.org/trac10/ticket/12567 https://svn.boost.org/trac10/ticket/12567 Report #12561: program_options fails with clang++/libc++ Thu, 27 Oct 2016 18:47:12 GMT Mon, 07 Nov 2016 16:26:37 GMT <p> trying to use it fails with </p> <pre class="wiki">undefined reference to `boost::program_options::options_description::options_description (std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;, unsigned int, unsigned int)' </pre><p> libboost_program_options.so.1.62.0 has </p> <pre class="wiki">000000000003ac70 T boost::program_options::options_description::options_description (std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned int, unsigned int) </pre><p> boost was built with "-stdlib=libc++" and clang 3.9 </p> Jörg Plate <patterner@…> https://svn.boost.org/trac10/ticket/12561 https://svn.boost.org/trac10/ticket/12561 Report #12558: reverse_graph is missing degree() Thu, 27 Oct 2016 03:18:44 GMT Thu, 27 Oct 2016 03:25:31 GMT <p> Commit 50bfd8d added the missing check for degree in <a class="missing wiki">BidirectionalGraphConcept</a>, but reverse_graph doesn't implement degree and thus fails the concept check. </p> matthew.barr@… https://svn.boost.org/trac10/ticket/12558 https://svn.boost.org/trac10/ticket/12558 Report #12557: new_iterator_tests.hpp has a missing #include Wed, 26 Oct 2016 22:55:30 GMT Wed, 26 Oct 2016 22:55:30 GMT <p> <code>iterator/new_iterator_tests.hpp</code> uses the <code>mpl::and_</code> metafunction, but does not <code>#include</code> the <code>boost/mpl/and.hpp</code> header that defines it. Among other things, this prevents Boost.Iterator from being built using C++ modules (see <a class="ext-link" href="http://clang.llvm.org/docs/Modules.html"><span class="icon">​</span>http://clang.llvm.org/docs/Modules.html</a>), because modules require headers to be self-contained. </p> <p> A fix is attached (relative to 1.60.0). </p> gromer@… https://svn.boost.org/trac10/ticket/12557 https://svn.boost.org/trac10/ticket/12557 Report #12555: Graph headers are not self-contained Wed, 26 Oct 2016 21:45:17 GMT Wed, 26 Oct 2016 22:08:28 GMT <p> Many BGL header files are not self-contained, meaning that they will not compile if <code>#include</code>d into a translation unit that doesn't <code>#include</code> anything else. For example, <code>boost/graph/bandwidth.hpp</code> refers to <code>vertex_index</code>, but does not <code>#include boost/graph/properties.hpp</code>, the header which declares <code>vertex_index</code>. </p> <p> Among other things, this prevents BGL from being adapted to take advantage of C++ modules (see <a class="ext-link" href="http://clang.llvm.org/docs/Modules.html"><span class="icon">​</span>http://clang.llvm.org/docs/Modules.html</a>), because modules require headers to be self-contained. </p> <p> Attached is a patch (against 1.60.0) to correct these problems, usually by adding missing <code>#include</code>s. The change to <code>howard_cycle_ratio.hpp</code> is slightly more subtle: the problem there is that the code refers to <code>boost::num_edges(g)</code>, but doesn't <code>#include</code> a header that declares that function. However, the choice of the right header to <code>#include</code> depends on the type <code>Graph</code> of <code>g</code>, which is a template parameter. This points to the real problem: this code should be calling <code>num_edges(g)</code> unqualified, so that it uses argument-dependent lookup to find the <code>num_edges()</code> overload in the namespace of <code>Graph</code>, rather than restricting itself to the overloads defined in namespace <code>boost</code>. </p> gromer@… https://svn.boost.org/trac10/ticket/12555 https://svn.boost.org/trac10/ticket/12555 Report #12554: boost/core/typeinfo.hpp creates unwanted strings in release binary Wed, 26 Oct 2016 21:11:09 GMT Sat, 18 Nov 2017 09:49:18 GMT <p> If a program is compiled for a production build then strings are created in program binary. Location where the strings are created: boost/core/typeinfo.hpp -&gt; boost::core::detail::core_typeid_::name -&gt; BOOST_CURRENT_FUNCTION. </p> <p> Current behavior has two drawbacks for a production version of a program: </p> <ol><li>binary program file size become larger </li><li>code symbols are present in production version of a program </li></ol><p> Five minutes proposed solution from me is replace function "name" by </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">static</span> <span class="kt">char</span> <span class="k">const</span> <span class="o">*</span> <span class="nf">name</span><span class="p">()</span> <span class="p">{</span> <span class="cp">#ifdef NDEBUG</span> <span class="k">return</span> <span class="s">&quot;&quot;</span><span class="p">;</span> <span class="cp">#else</span> <span class="k">return</span> <span class="n">BOOST_CURRENT_FUNCTION</span><span class="p">;</span> <span class="cp">#endif</span> <span class="p">}</span> </pre></div></div></div><p> </p> <p> Sorry for English... </p> <p> Thank you for attention. </p> Lev Sch <Zorechfan@…> https://svn.boost.org/trac10/ticket/12554 https://svn.boost.org/trac10/ticket/12554 Report #12550: output operator for multiprecision cpp_dec_float does not recognise locale settings for decimal point Tue, 25 Oct 2016 14:21:06 GMT Tue, 25 Oct 2016 14:21:06 GMT <p> A cpp_dec_float_50 variable being transformed to a string will always contain a decimal *point* - independent of the locale used for the stream. </p> <p> The reason is that all branches in format_float_string (number_base.hpp, line 806) append a decimal point. The function might need an additional parameter for the actual decimal separator in use. </p> Rüdiger Brünner <rbruenner@…> https://svn.boost.org/trac10/ticket/12550 https://svn.boost.org/trac10/ticket/12550 Report #12548: Build system fails to find Python 3.5 on macOS Mon, 24 Oct 2016 20:11:59 GMT Mon, 24 Oct 2016 20:11:59 GMT <p> Hi, boost_1_62_0/tools/build/src/tools/python.jam only looks for binaries named "python" in the "usual locations" (line 432). However, with the Packages from python.org at least for 3.5.1 and 3.5.2 there is only a "python3" binary in that path. Also, the includes are not in "include/python$(version)" (line 542) but in "include/python$(version)m". Quickfix attached. </p> Bob Pepin <bobpepin@…> https://svn.boost.org/trac10/ticket/12548 https://svn.boost.org/trac10/ticket/12548 Report #12546: Using lambda in transformed or filtered adaptors result in non assignable iterator Mon, 24 Oct 2016 15:04:54 GMT Thu, 08 Jun 2017 14:37:49 GMT <p> Hi, </p> <p> boost::range::adaptor is a great fit for lambda, but since they have their assignment operator (as well as default constructor) deleted, transform iterator and filter iterator cannot be re-assigned which can make it more difficult to work with. </p> <p> transformed and filtered adaptors booth work around the non default constructible, would it make sense to handle the non assignable case as well? </p> <p> This pull request describe the problem through test, and a potential fix. <a class="ext-link" href="https://github.com/boostorg/range/pull/46"><span class="icon">​</span>https://github.com/boostorg/range/pull/46</a> </p> <p> Kind regards, Jean-Philippe. </p> Jean-Philippe DUFRAIGNE <j.dufraigne@…> https://svn.boost.org/trac10/ticket/12546 https://svn.boost.org/trac10/ticket/12546 Report #12545: stream_socket_service forcibly takes responsibility for closing the native_handle Mon, 24 Oct 2016 09:06:19 GMT Mon, 24 Oct 2016 09:06:19 GMT <p> When using the <code>basic_stream_socket</code> <a class="ext-link" href="https://github.com/boostorg/asio/blob/36eef63a9cf8ae609716d76ccb3906ff9769d53a/include/boost/asio/basic_stream_socket.hpp#L130"><span class="icon">​</span>constructor with a native_handle_type</a>, it seems that the service will call <code>close()</code> on it <a class="ext-link" href="https://github.com/boostorg/asio/blob/36eef63a9cf8ae609716d76ccb3906ff9769d53a/include/boost/asio/detail/impl/reactive_socket_service_base.ipp#L91"><span class="icon">​</span>upon destruction</a>. </p> <p> I have no expectation on this behavior, but this should be stressed in the documentation. Using this constructor (or the <code>assign()</code> method) is very handy when dealing with third-parties, but those very same third-parties can have the same policy of auto-closing. </p> <p> This will lead to double closing, which is the best way for data corruption in a process that constantly opens and closes files. </p> <p> I will go for a call to <code>dup()</code> before using the <code>ip::tcp::socket</code> for now. </p> Adrien CLERC <adrien.clerc@…> https://svn.boost.org/trac10/ticket/12545 https://svn.boost.org/trac10/ticket/12545 Report #12541: Permit test cases that are templated *and* data-driven Fri, 21 Oct 2016 17:44:45 GMT Fri, 21 Oct 2016 17:44:45 GMT <p> The data-driven test cases and template test cases are both really useful but AFAIU, it isn't possible to use both these features in one testcase. </p> <p> I propose that this should be possible because I think it would be very helpful. In this case, the testcase would be performed for all combinations of types and values (ie a Cartesian product / grid). Through smart packaging of their types and values, users would then be able to run a testcase on any possible combination. </p> Tony Lewis <TonyELewis@…> https://svn.boost.org/trac10/ticket/12541 https://svn.boost.org/trac10/ticket/12541 Report #12539: error category thread safety (system + asio) c++98 Wed, 19 Oct 2016 22:17:17 GMT Wed, 19 Oct 2016 22:17:17 GMT <blockquote> <p> Foo.exe!boost::system::error_code::category() Line 355 </p> </blockquote> <p> I produced this with a global io_service and calling poll_once in a loop inside a second win32 thread. The program runs for an indeterminate amount of time before one of the calls to the handler results in an access violation (see above). </p> <p> Is asio meant to work without c++11 suppport? </p> richard@… https://svn.boost.org/trac10/ticket/12539 https://svn.boost.org/trac10/ticket/12539 Report #12536: Implement small_flat_set and small_flat_map in terms of small_vector. Wed, 19 Oct 2016 17:19:54 GMT Wed, 19 Oct 2016 17:19:54 GMT <p> Currently flat_set and flat_map use a vector as their underlying container type. These two containers can have small space optimised variations that use a small_vector as the underlying type instead. </p> samkellett@… https://svn.boost.org/trac10/ticket/12536 https://svn.boost.org/trac10/ticket/12536 Report #12535: boost::program_options cannot handle std::uint8_t arguments Wed, 19 Oct 2016 07:23:01 GMT Sat, 08 Jul 2017 11:59:41 GMT <p> When using std::uint8_t (and probably std::int8_t as well) as a value type for parameters, the store method crashes with an exception: the argument (value) for option '(option)' is invalid. </p> gilgamash https://svn.boost.org/trac10/ticket/12535 https://svn.boost.org/trac10/ticket/12535 Report #12533: Difficulty building boost 1.62.0 using current mingw distribution Mon, 17 Oct 2016 23:54:34 GMT Mon, 17 Oct 2016 23:54:34 GMT <p> This was really frustrating - am not experienced bat file user so don't know what the "proper" fixes would be. I fixed 3 specific issues. </p> <ol><li>bootstrap.bat never reached the section looking for MinGW gcc compiler. I moved that earlier in the script (just before checking for msvc compilers). </li><li>the path for the gcc compiler was hardwired - I had to modify the script to look in the right place and also properly adjust the value for the BOOST_JAM variable. </li><li>toolset=mingw is not supported by jam - had to set it to gcc instead </li><li>project-config.jam still had toolset=mingw, had to set it to gcc. </li></ol><p> After those changes (and loss of *many* chunks of hair!!) bootstrap and b2 seem to be working correctly. Will update this ticket or post a new if further problems arise. </p> drmhkelley@… https://svn.boost.org/trac10/ticket/12533 https://svn.boost.org/trac10/ticket/12533 Report #12529: Sending two int values Fri, 14 Oct 2016 11:48:31 GMT Fri, 14 Oct 2016 11:48:31 GMT <p> Dear all, </p> <p> I would like trough a C++ program send two int values via the serial port. I configured correctly the serial port with Boost::asio, but I don't know how to send those two int values in a buffer (Newbie in c++). I saw a lot of tutorials, but unfortunatly, I didn't find my answer. </p> <p> Could you help me please ? </p> anonymous https://svn.boost.org/trac10/ticket/12529 https://svn.boost.org/trac10/ticket/12529 Report #12528: boost::asio::ssl_stream "short read error" when a connection is closed Fri, 14 Oct 2016 07:30:06 GMT Fri, 14 Oct 2016 07:30:06 GMT <p> I use boost::asio to make client/server programs using SSL and I use boost::asio example as a reference. The problem is that when client or server closes the connection, the other side has "short read error". Using NOT SSL, this problem isn't detected, this is the problem using SSL. When the client program closes connection, the server has "short read error". The other way, the server program closes connection, the client has "short read error" too. The original sample programs don't output errors, so I add the codes which output errors. </p> <p> <a href="http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio/example/cpp03/ssl/server.cpp">http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio/example/cpp03/ssl/server.cpp</a> <a href="http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio/example/cpp03/ssl/client.cpp">http://www.boost.org/doc/libs/1_62_0/doc/html/boost_asio/example/cpp03/ssl/client.cpp</a> </p> <p> [server.cpp] </p> <pre class="wiki">void handle_read(const boost::system::error_code&amp; error, size_t bytes_transferred) { if (!error) { boost::asio::async_write(socket_, boost::asio::buffer(data_, bytes_transferred), boost::bind(&amp;session::handle_write, this, boost::asio::placeholders::error)); } else { std::cout &lt;&lt; "Server Error: " &lt;&lt; error.message() &lt;&lt; "\n"; //add delete this; } } void handle_write(const boost::system::error_code&amp; error) { if (!error) { socket_.async_read_some(boost::asio::buffer(data_, max_length), boost::bind(&amp;session::handle_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } else { std::cout &lt;&lt; "Server Error: " &lt;&lt; error.message() &lt;&lt; "\n"; //add delete this; } } </pre><p> The sample programs don't use "socket_.shutdown()" and "socket_.lowest_layer().close()". The shutting down process is automatically executed by the destructor. I use "socket_.shutdown()" and "socket_.lowest_layer().close()" using the following page as a reference, but the same error happens. <a class="ext-link" href="http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error"><span class="icon">​</span>http://stackoverflow.com/questions/25587403/boost-asio-ssl-async-shutdown-always-finishes-with-an-error</a> </p> <p> Other hand, the release note of Boost_1.58.0 has the Updated Libraries log which is "Fixed an ssl::stream&lt;&gt; bug that may result in spurious 'short read' errors". I can't figure out this change has relations about this problem, but this event is already detected. <a href="http://www.boost.org/users/history/version_1_58_0.html">http://www.boost.org/users/history/version_1_58_0.html</a> </p> Nakao_Kazuhiro@… https://svn.boost.org/trac10/ticket/12528 https://svn.boost.org/trac10/ticket/12528 Report #12527: cpp_bin_float: Anal fixation. Part 3. Double rounding when result of convert_to<double>() is a subnormal Thu, 13 Oct 2016 23:46:51 GMT Tue, 29 Nov 2016 22:43:55 GMT <p> When convert_to&lt;double&gt;() applied to numbers in subnormal range the value is initially rounded to 53-bit precision and then rounded again, by ldexp() routine, to the target precision which is lower than 53 bits. The problem is exactly the same as the well-known problem that makes it virtually impossible to produce 100% IEEE-754 compliant results with Intel x87 FPU. </p> <p> Because of double rounding, resulting subnormals are not always the closest representable double-precision numbers to the original value or, in case of tie, they are not always even. </p> <p> Exactly the same problem applies to convert_to&lt;float&gt;() </p> <p> The attached files demonstrate the problem and one possible workaround, not necessarily that fastest, but likely the simplest. </p> Michael Shatz https://svn.boost.org/trac10/ticket/12527 https://svn.boost.org/trac10/ticket/12527 Report #12526: test_graphs.cpp :Error: The operation "boost::undirected_graph*** is illegal Thu, 13 Oct 2016 21:34:23 GMT Thu, 13 Oct 2016 21:34:23 GMT <p> Compiling libs/graph/test/test_graphs.cpp with Oracle Developer Studio 12.5, wq see the following error: <br /> $ CC -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o ./test_graphs.o ../libs/graph/test/test_graphs.cpp <br /> "../libs/graph/test/test_properties.hpp", line 20: Error: The operation "boost::undirected_graph&lt;<a class="missing wiki">VertexBundle</a>, <a class="missing wiki">EdgeBundle</a>, <a class="missing wiki">GraphBundle</a>&gt;[boost::graph_bundle_t]" is illegal. <br /> "../libs/graph/test/test_properties.hpp", line 120: Where: While instantiating "test_graph_bundle&lt;boost::undirected_graph&lt;VertexBundle, EdgeBundle, GraphBundle&gt;&gt;(boost::undirected_graph&lt;<a class="missing wiki">VertexBundle</a>, <a class="missing wiki">EdgeBundle</a>, <a class="missing wiki">GraphBundle</a>&gt;&amp;, mpl_::bool_&lt;1&gt;)". <br /> ... <br /> </p> <p> See: <br /> <a href="http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-12-5-stlport4-boost-bin-v2-libs-graph-test-test_graphs-test-sun-12-5_stlport4-release-threading-multi.html">http://www.boost.org/development/tests/develop/developer/output/oracle-sparc-S2-12-5-stlport4-boost-bin-v2-libs-graph-test-test_graphs-test-sun-12-5_stlport4-release-threading-multi.html</a> </p> <p> The following changes to boost/graph/properties.hpp resolves the issue. </p> <p> $diff properties.hpp properties.hpp_orig </p> <pre class="wiki">325a326,333 &gt; &gt; #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) &amp;&amp; !defined (BOOST_GRAPH_NO_BUNDLED_PROPERTIES) &gt; // This compiler cannot define a partial specialization based on a &gt; // pointer-to-member type, as seen in boost/graph/subgraph.hpp line 985 (as of &gt; // trunk r53912) &gt; # define BOOST_GRAPH_NO_BUNDLED_PROPERTIES &gt; #endif &gt; </pre> Aparna.kumta@… https://svn.boost.org/trac10/ticket/12526 https://svn.boost.org/trac10/ticket/12526 Report #12523: configuration issue in foreach.hpp for Oracle Developer Studio compiler Thu, 13 Oct 2016 17:26:52 GMT Thu, 13 Oct 2016 17:26:52 GMT <p> Compiling rvalue_const.cpp with Oracle Developer Studio 12.5, we see the following error: </p> <blockquote> <p> CC -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o ./rvalue_const.o ../libs/foreach/test/rvalue_const.cpp </p> </blockquote> <p> "../libs/foreach/test/rvalue_const.cpp", line 18: Error: #error Expected failure : const rvalues disallowed. </p> <p> Solution: <br /> The following change to boost/foreach.hpp resolves the issue <br /> $ diff foreach.hpp foreach.hpp_orig <br /> 59a60 <br /> </p> <blockquote class="citation"> <blockquote> <table class="wiki"> <tr><td> BOOST_WORKAROUND(<span class="underline">SUNPRO_CC, &gt;= 0x5100) </span></td></tr></table> </blockquote> </blockquote> <p> $ </p> Aparna.kumta@… https://svn.boost.org/trac10/ticket/12523 https://svn.boost.org/trac10/ticket/12523 Report #12522: boost/math/tools/minima.hpp pass functor by ref Wed, 12 Oct 2016 23:15:53 GMT Wed, 12 Oct 2016 23:15:53 GMT <p> Would it be better to pass the functor f by ref for the following </p> <p> template &lt;class F, class T&gt; std::pair&lt;T, T&gt; brent_find_minima(F f, T min, T max, int bits); </p> <p> template &lt;class F, class T&gt; std::pair&lt;T, T&gt; brent_find_minima(F f, T min, T max, int bits, boost::uintmax_t&amp; max_iter); </p> <p> To instead be: </p> <p> template &lt;class F, class T&gt; std::pair&lt;T, T&gt; brent_find_minima(F&amp; f, T min, T max, int bits); </p> <p> template &lt;class F, class T&gt; std::pair&lt;T, T&gt; brent_find_minima(F&amp; f, T min, T max, int bits, boost::uintmax_t&amp; max_iter); </p> ch816772@… https://svn.boost.org/trac10/ticket/12522 https://svn.boost.org/trac10/ticket/12522 Report #12521: runtime error placement_new.cpp with Oracle Developer Studio compiler Tue, 11 Oct 2016 21:03:21 GMT Tue, 11 Oct 2016 21:03:21 GMT <p> Test placement_new.pp fails during runtime with non-zero exit status with Oracle Developer Studio compiler. <a href="http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5_next-cpp11-boost-bin-v2-libs-numeric-ublas-test-placement_new-test-sun-12-5_next_cpp11-release-threading-multi.html">http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5_next-cpp11-boost-bin-v2-libs-numeric-ublas-test-placement_new-test-sun-12-5_next_cpp11-release-threading-multi.html</a> </p> <p> Solution: Modify number/ublas/detail/config.hpp <br /> diff config.hpp config.hpp_orig <br /> 61,66d60 <br /> &lt; <em> Oracle Developer Studio compiler <br /> &lt; #if defined (<span class="underline">SUNPRO_CC) &amp;&amp; ! defined (BOOST_STRICT_CONFIG) <br /> &lt; #if </span>SUNPRO_CC &gt;= 0x5130 <br /> &lt; #define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW <br /> &lt; #endif <br /> &lt; #endif </em></p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/12521 https://svn.boost.org/trac10/ticket/12521 Report #12520: Boost.Fiber requirements are executed when cross-compiling Tue, 11 Oct 2016 14:30:50 GMT Tue, 11 Oct 2016 14:30:50 GMT <p> I have tried to build Boost.Fiber using the OpenWRT cross-compiler for Raspberry Pi B platform (armv6k) but without success. </p> <p> The ./fiber/build/Jamfile.v2 has cxx11_* requirements, which in order to be successfully detected, the Boost Building system executes in order to check them out. If Boost is being cross-compiled to another platform, those tests will always fail even though the binaries are correctly compiled. </p> <p> This should not happen when cross-compiling. </p> carlosmf.pt@… https://svn.boost.org/trac10/ticket/12520 https://svn.boost.org/trac10/ticket/12520 Report #12518: boost::filesystem::unique_path throws std::exception and not filesystem_error Tue, 11 Oct 2016 12:09:54 GMT Tue, 06 Dec 2016 11:41:56 GMT <p> try this </p> <p> path tmp = boost::filesystem::temp_directory_path(); tmp /= "<a class="missing wiki">MyApp</a>-%%%%-%%%%-%%%%-%%%%"; </p> <p> path folderName; try { </p> <blockquote> <p> folderName= boost::filesystem::unique_path(tmp ); </p> </blockquote> <p> } catch(boost::filesystem::filesystem_error&amp; roE) { </p> <blockquote> <p> std::cout &lt;&lt; "Never come here on windows temporary user account" &lt;&lt; std::endl; </p> </blockquote> <p> } catch (std::exception&amp; roE) { </p> <blockquote> <p> std::cout &lt;&lt; "Here i come on windows temporary user account" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> <p> in fact a boost exception should be thrown. Tested on Windows 8.1 x64 </p> gerald.lodron@… https://svn.boost.org/trac10/ticket/12518 https://svn.boost.org/trac10/ticket/12518 Report #12516: Missing boost::serialization::array_wrapper in built serialization binary Tue, 11 Oct 2016 10:58:53 GMT Thu, 01 Jun 2017 05:31:50 GMT <p> When building code that links against libboost_serialization with the intel compiler I receive a link error saying </p> <pre class="wiki">undefined reference to `boost::serialization::array_wrapper&lt;unsigned long&gt; const boost::serialization::make_array&lt;unsigned long&gt;(unsigned long*, unsigned long) </pre><p> This bug is affecting also Boost MPI, that exploits Boost Serialization.<br /> The bug is not present into Boost 1.59.0. I've not tried Boost 1.62.0.<br /> <br /> Some more details:<br /> <br /> <strong>OS:</strong> CentOS6<br /> <strong>Compiler:</strong><br /> Intel 16, over gcc 4.9.2 (tried building with both -std=c++11 or -std=c++14).<br /> Tried also with Intel 13, over gcc 4.8.5 (-std=c++11) and the issue is the same. </p> michele.de.stefano@… https://svn.boost.org/trac10/ticket/12516 https://svn.boost.org/trac10/ticket/12516 Report #12515: bjam "python=X.X" option not recognized anymore Tue, 11 Oct 2016 09:11:55 GMT Mon, 20 Feb 2017 13:55:08 GMT <p> In Boost 1.62, specifying "python=3.5" is not working anymore: Always the first python entry in user-config.jam is selected. It seems to be related to a change in tools/build/src/tools/python.jam (line 905 ff), which appeared between 1.61.0 and 1.62.0. </p> boost@… https://svn.boost.org/trac10/ticket/12515 https://svn.boost.org/trac10/ticket/12515 Report #12513: Boost optional (1.60/1.61/1.62) generates "may be used uninitialized" warnings with gcc 6 Mon, 10 Oct 2016 21:57:44 GMT Tue, 14 Feb 2017 22:44:39 GMT <p> Hi, </p> <p> I have met a small case where boost::optional wrongly generates gcc warnings about maybe uninitialized values. I could reduce my case and provide the attached reproducer. </p> <p> Note that this warning only happens when optimization are used (-O1 or -O2 while strangely no warning is emitted with -O3). </p> <p> It's built with (from a Fedora rawhide Docker container just cloned): [root@a064b4c04fc9 tmp]# g++ -std=gnu++14 -O2 -Wall -c -o test.o test.cpp test.cpp: In function 'void someFunction(const void*)': test.cpp:22:16: warning: '*((void*)&amp; aOptional +4)' may be used uninitialized in this function [-Wmaybe-uninitialized] </p> <blockquote> <p> Optional_t aOptional; </p> <blockquote> <p> <sup><del></del><del></del> </sup></p> </blockquote> </blockquote> <p> [root@a064b4c04fc9 tmp]# g++ --version g++ (GCC) 6.2.1 20160916 (Red Hat 6.2.1-2) Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. </p> <p> Other bug reports in Boost are always mentioning <a class="ext-link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679"><span class="icon">​</span>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679</a> as the root cause, but this is not true anymore since this gcc bug was closed last year and all commits made at the time have been released in gcc 6. Please note that I could reproduce as well with the latest trunk from gcc 7. </p> <p> This was reproduced with both Boost 1.60 and 1.61, but should happen as well in Boost 1.62 given that boost::optional did almost not change. </p> <p> Also note that using std::experiment::optional from gcc's libstdc++ implementation works just fine. </p> <p> I am not sure whether this is actually a Boost bug or a gcc one. If it's a gcc one then it's seems to be different from <a class="ext-link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679"><span class="icon">​</span>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679</a>. </p> <p> Can you please have a look. </p> <p> Thanks, Romain </p> romain.geissler@… https://svn.boost.org/trac10/ticket/12513 https://svn.boost.org/trac10/ticket/12513 Report #12504: Use types from <cinttypes> in boost::uint_t and boost::int_t Fri, 07 Oct 2016 20:44:01 GMT Fri, 07 Oct 2016 20:44:01 GMT <p> I'd like to suggest that instead of using built-in types to implement <code>boost::uint_t</code> and <code>boost::int_t</code> that the explicitly sized types from &lt;cinttypes&gt; be used. </p> <p> Take for instance <a class="ext-link" href="https://github.com/boostorg/integer/blob/develop/include/boost/integer.hpp#L67"><span class="icon">​</span>this definition</a>: </p> <pre class="wiki">template&lt;&gt; struct int_least_helper&lt;4&gt; { typedef short least; }; </pre><p> Is there any reason not to replace <code>short</code> with <code>std::int16_t</code> in this line? </p> <p> My (entirely selfish) reason to suggesting this is that I've hit <a class="ext-link" href="https://travis-ci.org/johnmcfarlane/fixed_point/builds/165888344"><span class="icon">​</span>an odd case</a> in code I am writing in which <code>boost::uint_t&lt;64&gt;::fast</code> is a different type to <code>std::uint64_t</code>. It would appear that <code>std::uint64_t</code> is defined as <code>unsigned long long</code> under XCode 7 but <code>unsigned long</code> under XCode 6. I fear that weirdness like this is inevitable given the many combinations of widths which built-in integer types can assume. But using the known-width types provided by &lt;cinttypes&gt; would seem like a more reliable way to proceed. </p> <p> Many thanks, John <a class="missing wiki">McFarlane</a> </p> john@… https://svn.boost.org/trac10/ticket/12504 https://svn.boost.org/trac10/ticket/12504 Report #12502: boost/asio/error.hpp: fix warnings about unused static variables Thu, 06 Oct 2016 13:21:11 GMT Thu, 12 Jan 2017 16:45:17 GMT <p> Please add the following pre-processor define (or similar) around the static variables in "boost/asio/error.hpp" such that the warnings about unused variables can be switched off in client code. </p> <p> Analog to boost/system/error_code.hpp: </p> <p> #ifndef BOOST_SYSTEM_NO_DEPRECATED static const boost::system::error_category&amp; system_category </p> <h1 class="section" id="boost::asio::error::get_system_category">boost::asio::error::get_system_category();</h1> <p> static const boost::system::error_category&amp; netdb_category </p> <h1 class="section" id="boost::asio::error::get_netdb_category">boost::asio::error::get_netdb_category();</h1> <p> static const boost::system::error_category&amp; addrinfo_category </p> <h1 class="section" id="boost::asio::error::get_addrinfo_category">boost::asio::error::get_addrinfo_category();</h1> <p> static const boost::system::error_category&amp; misc_category </p> <h1 class="section" id="boost::asio::error::get_misc_category">boost::asio::error::get_misc_category();</h1> <p> #endif </p> bachmann@… https://svn.boost.org/trac10/ticket/12502 https://svn.boost.org/trac10/ticket/12502 Report #12496: clang 3.9 fails to generate precompiled headers Sun, 02 Oct 2016 08:15:41 GMT Fri, 13 Jan 2017 17:12:57 GMT <p> Bootstrapping </p> <pre class="wiki">./bootstrap.sh --with-toolset=clang --with-icu=/usr --prefix=~/lib/boost_clang --with-python=python3 </pre><p> b2 </p> <pre class="wiki">./b2 toolset=clang variant=release link=shared threading=multi address-model=64 cxxflags="-march=native -O3 -pipe -I~/lib -std=c++14 -libstd=libc++" linkflags="-L~/lib -lc++ -lc++abi" </pre><p> Result: </p> <pre class="wiki">clang-linux.compile.c++.pch bin.v2/libs/math/build/clang-linux-3.9.0/release/threading-multi/../src/tr1/pch.hpp.pth clang-3.9: error: cannot specify -o when generating multiple output files "clang++" -x c++-header -O3 -Wno-inline -Wall -pthread -fPIC -m64 -march=native -O3 -pipe -I~/lib -std=c++14 -libstd=libc++ -DBOOST_ALL_NO_LIB=1 -DBOOST_BUILD_PCH_ENABLED -DBOOST_MATH_TR1_DYN_LINK=1 -DNDEBUG -I"." -I"libs/math/src/tr1" -Xclang -emit-pth -o "bin.v2/libs/math/build/clang-linux-3.9.0/release/threading-multi/../src/tr1/pch.hpp.pth" "libs/math/build/../src/tr1/pch.hpp" </pre> Jörg Plate <patterner@…> https://svn.boost.org/trac10/ticket/12496 https://svn.boost.org/trac10/ticket/12496 Report #12493: Compile error in boost::intrusive with Sun compiler 12.4 Fri, 30 Sep 2016 16:21:28 GMT Fri, 30 Sep 2016 16:21:28 GMT <p> When trying to compile the unit tests in boost::container, I get compile errors in boost/intrusive/detail/to_raw_pointer.hpp on Sun with the 12.4 Sun Studio compiler in non-C++11 mode when using the ancient STLport 4.5. </p> <p> "/boost/intrusive/detail/to_raw_pointer.hpp", line 41: Error: Variable p of type void*const is not a structure. "/boost/container/detail/multiallocation_chain.hpp", line 66: Where, temwhileinst: While instantiating "boost::intrusive::detail::to_raw_pointer&lt;void*&gt;(void*const&amp;)". "/boost/boost/container/detail/multiallocation_chain.hpp", line 66: Where, teminstend: Instantiated from non-template code. </p> <p> For me it seems that the Sun compiler picks the wrong overload here. Why is the code there not "disambiguated" via boost::enable_if? </p> <p> The following code seems to work: </p> <p> template&lt;class Pointer&gt; inline typename boost::intrusive::pointer_element&lt;Pointer&gt;::type* to_raw_pointer(const Pointer &amp;p, typename boost::disable_if&lt;boost::is_pointer&lt;Pointer&gt; &gt;::type * = 0) { ... } </p> <p> At least, the unit tests are running. </p> <p> The code in this file did not change in this regards in Boost 1.61. </p> kilian.kilger@… https://svn.boost.org/trac10/ticket/12493 https://svn.boost.org/trac10/ticket/12493 Report #12492: No libbost_fiber files after building boost 1_62 Thu, 29 Sep 2016 11:21:53 GMT Thu, 29 Sep 2016 12:24:50 GMT <p> Hi, </p> <p> I've been trying to get boost:fiber library file. I've downloaded newest version of boost from sourceforge and installed boost with those commends: </p> <pre class="wiki">./bootstrap.sh --prefix=PREFIX ./b2 ./b2 install --prefix=PREFIX </pre><p> (With PREFIX being some directory of course) Next I've tried to compile this code: </p> <pre class="wiki">#include &lt;boost/fiber/all.hpp&gt; int main() { boost::fibers::promise&lt;int&gt; promise; boost::fibers::future&lt;int&gt; future(promise.get_future()); return 0; } </pre><p> With: </p> <pre class="wiki">g++ -I PREFIX/include/ -std=c++11 -L PREFIX/lib/ -lboost_fiber test.cpp </pre><p> Unfortunately I've got: </p> <pre class="wiki">/usr/bin/ld: cannot find -lboost_fiber </pre><p> I've checked in PREFIX/lib, and there is no libbost_fiber.*. There are others though, like, system, or filesystem etc. Hope you can help. Best regards </p> filwoz@… https://svn.boost.org/trac10/ticket/12492 https://svn.boost.org/trac10/ticket/12492 Report #12489: file_lock and fstream read causes "permission denied" Wed, 28 Sep 2016 09:34:18 GMT Wed, 28 Sep 2016 09:34:18 GMT <p> The following code causes an exception in the std::getline. The error message received by strerror() is "permission denied". </p> <p> The exception goes away by removing the lock and unlock line. </p> <p> This issue is related to to <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/2796"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/2796</a> which focuses on writing to the filelock. A "workaround" for that issue is to unlock before flushing the stream. It is not an option to read file before locking it. </p> <p> How can this issue be fixed? Any possible workaround? </p> <p> #include "stdafx.h" </p> <p> #include &lt;iostream&gt; </p> <p> #include &lt;fstream&gt; </p> <p> #include &lt;boost/interprocess/sync/file_lock.hpp&gt; </p> <p> int main(int argc, char* argv[]) </p> <p> { </p> <blockquote> <p> std::fstream stream("lock", std::fstream::in | std::fstream::out); </p> </blockquote> <blockquote> <p> stream.exceptions(std::fstream::badbit | std::fstream::failbit); </p> </blockquote> <blockquote> <p> boost::interprocess::file_lock lock("lock"); </p> </blockquote> <blockquote> <p> lock.lock(); </p> </blockquote> <blockquote> <p> std::string content; try { </p> <blockquote> <p> std::getline(stream, content); </p> </blockquote> <p> } catch (std::exception) { </p> <blockquote> <p> auto desc = strerror(errno); </p> </blockquote> <p> } </p> </blockquote> <p> </p> <blockquote> <p> std::cout &lt;&lt; content &lt;&lt; std::endl; </p> </blockquote> <blockquote> <p> lock.unlock(); </p> </blockquote> <blockquote> <p> stream.close(); </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> anonymous https://svn.boost.org/trac10/ticket/12489 https://svn.boost.org/trac10/ticket/12489 Report #12485: accessing message_queue created by 64bit process from a 32bit process results in blocked process. Mon, 26 Sep 2016 19:32:02 GMT Mon, 26 Sep 2016 19:32:02 GMT <p> Environment: </p> <ul><li>Development and target: Windows 7 Pro, 64-bit; </li><li>MSVS 2013; </li><li>boost is used as header-only </li></ul><p> Sequence of events: </p> <ol><li>process A (64-bit) creates message queue "msgq1" </li><li>process B (32-bit) opens "msgq1" (successfully) </li><li>process B (32-bit) calls _msg_queue1_object-&gt;<strong>get_num_msg()</strong>; <em> process B is blocked forever. </em></li></ol><p> Note: naturally, no problems when the two processes are both 64bit or both 32bit. </p> alex parkov <alex.parkov@…> https://svn.boost.org/trac10/ticket/12485 https://svn.boost.org/trac10/ticket/12485 Report #12483: signals2 bind to member function by value fail to signal when using trackable Mon, 26 Sep 2016 13:03:57 GMT Mon, 26 Sep 2016 13:03:57 GMT <p> In my trail to learn and get comfortable with signals2 I wrote a small test program. In this program I encountered what I believe to be inconsistency in the way that signals2 connect to member functions when using bind, when using trackable aswell. </p> <div class="wikipage" style="font-size: 80%"><p> Test program: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&quot;boost/signals2.hpp&quot;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="k">class</span> <span class="nc">SignalTest</span> <span class="o">:</span> <span class="k">public</span> <span class="n">boost</span><span class="o">::</span><span class="n">signals2</span><span class="o">::</span><span class="n">trackable</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="n">SignalTest</span><span class="p">()</span> <span class="p">{};</span> <span class="kt">void</span> <span class="nf">printInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">,</span> <span class="kt">int</span> <span class="n">num</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Signal: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">name</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">};</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">signals2</span><span class="o">::</span><span class="n">signal</span><span class="o">&lt;</span><span class="kt">void</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">sig</span><span class="p">;</span> <span class="n">SignalTest</span> <span class="n">test1</span><span class="p">;</span> <span class="n">sig</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">SignalTest</span><span class="o">::</span><span class="n">printInfo</span><span class="p">,</span> <span class="n">test1</span><span class="p">,</span> <span class="n">_1</span><span class="p">,</span> <span class="n">_2</span><span class="p">));</span> <span class="n">sig</span><span class="p">(</span><span class="s">&quot;Test&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="p">{</span> <span class="n">SignalTest</span> <span class="n">test2</span><span class="p">;</span> <span class="n">sig</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">SignalTest</span><span class="o">::</span><span class="n">printInfo</span><span class="p">,</span> <span class="n">test2</span><span class="p">,</span> <span class="n">_1</span><span class="p">,</span> <span class="n">_2</span><span class="p">));</span> <span class="n">sig</span><span class="p">(</span><span class="s">&quot;Test&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span> <span class="p">}</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><p> The code above compiles and running it I'd expect both signals to be printed, however nothing is printed. If however I bind the signalTest object "test2" by reference like the code below: </p> <div class="wikipage" style="font-size: 80%"><p> Bind by reference: </p> <div class="wiki-code"><div class="code"><pre><span class="n">sig</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">SignalTest</span><span class="o">::</span><span class="n">printInfo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">test2</span><span class="p">,</span> <span class="n">_1</span><span class="p">,</span> <span class="n">_2</span><span class="p">));</span> </pre></div></div></div><p> The following is printed: </p> <div class="wikipage" style="font-size: 80%"><p> test2 bind by reference print </p> <div class="wiki-code"><div class="code"><pre>Signal: Test 2 </pre></div></div></div><p> And if I also bind signalTest object "test1" by reference the following is printed: </p> <div class="wikipage" style="font-size: 80%"><p> test1 and test2 bind by reference print </p> <div class="wiki-code"><div class="code"><pre>Signal: Test 1 Signal: Test 2 Signal: Test 2 </pre></div></div></div><p> As I was lead to understand from the example code of section "Automatic Connection Management" in the tutorial at <a href="http://www.boost.org/doc/libs/1_61_0/doc/html/signals2/tutorial.html#idp394616720">http://www.boost.org/doc/libs/1_61_0/doc/html/signals2/tutorial.html#idp394616720</a> I should be able to call the member function by value, however this is not the case using trackable. </p> kim.lykke.johansen@… https://svn.boost.org/trac10/ticket/12483 https://svn.boost.org/trac10/ticket/12483 Report #12482: No longer builds without warnings on MAC OS X 10.11.6 after upgrade to Xcode with Clang 8.0 Mon, 26 Sep 2016 03:02:56 GMT Fri, 18 Nov 2016 10:39:33 GMT <p> After an update to Xcode (version 8) on OS X 10.11.6 I found that my projects won't build due to 'OSMemoryBarrier being deprecated. I tried to rebuild the library with the new tools and found that it won't build either due to the same error. </p> <pre class="wiki">In file included from /usr/local/include/boost/asio/detail/fenced_block.hpp:24: /usr/local/include/boost/asio/detail/macos_fenced_block.hpp:51:5: warning: 'OSMemoryBarrier' is deprecated: first deprecated in macOS 10.12 - Use std::atomic_thread_fence() from &lt;atomic&gt; instead [-Wdeprecated-declarations] OSMemoryBarrier(); ^ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libkern/OSAtomicDeprecated.h:749:9: note: 'OSMemoryBarrier' has been explicitly marked deprecated here void OSMemoryBarrier( void ); ^ 2 warnings generated. </pre> anonymous https://svn.boost.org/trac10/ticket/12482 https://svn.boost.org/trac10/ticket/12482 Report #12477: [math] error: while reading precompiled header: No such file or directory Fri, 23 Sep 2016 07:18:37 GMT Sat, 24 Sep 2016 15:53:10 GMT <p> Compilation of boost 1.61.1 with GCC 6.2.0 compiler sometimes fail (35%: 7 failure out of 20 builds, with "-j64") with many erros like: </p> <hr /> <p> libs/math/build/../src/tr1/assoc_legendre.cpp:6:21: error: while reading precompiled header: No such file or directory </p> <blockquote> <p> # include &lt;pch.hpp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> libs/math/build/../src/tr1/cyl_bessel_j.cpp:6:21: error: while reading precompiled header: No such file or directory </p> <blockquote> <p> # include &lt;pch.hpp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <hr /> <p> It seems to be a race condition in parallel compiling. </p> <p> And I also observed many warnings like: </p> <hr /> <p> libs/math/build/../src/tr1/cyl_bessel_i.cpp:6:21: warning: /ala-lpggp51/jhuang0/builds/p90_i64-sato_160920/bitbake_build/tmp/work/corei7-64-wrs-linux/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_61_0/x86_64-wrs-linux/boost/bin</a>.v2/libs/math/build/69ffc88faf507005827aa061bd65b9bd/../src/tr1/pch.hpp.gch: created and used with different settings of -fpic libs/math/build/../src/tr1/cyl_bessel_jf.cpp:6:21: warning: /ala-lpggp51/jhuang0/builds/p90_i64-sato_160920/bitbake_build/tmp/work/corei7-64-wrs-linux/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_61_0/x86_64-wrs-linux/boost/bin</a>.v2/libs/math/build/69ffc88faf507005827aa061bd65b9bd/../src/tr1/pch.hpp.gch: created and used with different settings of -fpic libs/math/build/../src/tr1/cyl_neumannf.cpp:6:21: warning: /ala-lpggp51/jhuang0/builds/p90_i64-sato_160920/bitbake_build/tmp/work/corei7-64-wrs-linux/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_61_0/x86_64-wrs-linux/boost/bin</a>.v2/libs/math/build/69ffc88faf507005827aa061bd65b9bd/../src/tr1/pch.hpp.gch: created and used with different settings of -fpic </p> <hr /> <p> libs/math/build/../src/tr1/assoc_legendre.cpp:6:21: warning: /ala-lpggp51/jhuang0/builds/p90_i64-sato_160920/bitbake_build/tmp/work/corei7-64-wrs-linux/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_61_0/x86_64-wrs-linux/boost/bin</a>.v2/libs/math/build/69ffc88faf507005827aa061bd65b9bd/../src/tr1/pch.hpp.gch: not used because `<span class="underline">LDBL_MAX_EX' not defined [-Winvalid-pch] </span></p> <blockquote> <p> # include &lt;pch.hpp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> libs/math/build/../src/tr1/sph_legendre.cpp:6:21: warning: /ala-lpggp51/jhuang0/builds/p90_i64-sato_160920/bitbake_build/tmp/work/corei7-64-wrs-linux/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0/boost_1_61_0/x86_64-wrs-linux/boost/bin</a>.v2/libs/math/build/69ffc88faf507005827aa061bd65b9bd/../src/tr1/pch.hpp.gch: not used because `<span class="underline">LDBL_MAX_EX' not defined [-Winvalid-pch] </span></p> <blockquote> <p> # include &lt;pch.hpp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <hr /> <p> BTW, my builds are based on yocto project. </p> jackie.huang@… https://svn.boost.org/trac10/ticket/12477 https://svn.boost.org/trac10/ticket/12477 Report #12476: Using named_condition_any with a readers-writer lock Wed, 21 Sep 2016 14:01:32 GMT Wed, 21 Sep 2016 14:01:32 GMT <p> I am trying to use condition variables to signify updated data in a managed_shared_memory segment. I have one "writer" and multiple "readers" of the shared state, so I am using a readers-writer lock. </p> <p> Unfortunately, although the code compiles, the reader processes are never awakened from wait() and block forever. </p> <p> It seems named_condition_any may be incompatible with named_sharable_mutex, scoped_lock, sharable_lock, or some combination of the three. Attached is a producer and consumer process that demonstrates the behavior. Run the producer first, then run the consumer. </p> <p> Expected behavior: consumer process will print values for "copy of int" every 2 seconds (as producer updates) </p> <p> Observed behavior: consumer process blocks on named_condition_any::wait() and never awakens. </p> <p> Including the code here in case the attachments don't go through: </p> <p> PRODUCER: </p> <pre class="wiki">#include &lt;thread&gt; #include &lt;chrono&gt; #include &lt;iostream&gt; #include &lt;boost/interprocess/sync/scoped_lock.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; #include &lt;boost/interprocess/sync/named_sharable_mutex.hpp&gt; #include &lt;boost/interprocess/sync/sharable_lock.hpp&gt; #include &lt;boost/interprocess/sync/named_condition_any.hpp&gt; #include &lt;boost/interprocess/managed_shared_memory.hpp&gt; namespace bi = boost::interprocess; using SharedMutex = bi::named_sharable_mutex; using ReadLock = bi::sharable_lock&lt;SharedMutex&gt;; using WriteLock = bi::scoped_lock&lt;SharedMutex&gt;; using NewEntryCondition = bi::named_condition_any; constexpr char SHM_NAME[] = "shared_mem"; constexpr char MUT_NAME[] = "shm_mut"; constexpr char COND_NAME[] = "shm_cond"; constexpr char CUR_INT_NAME[] = "shm_int"; int main(int argc, char *argv[]) { // Remove the shared mem, condition variable, mutex struct shm_remove { shm_remove() { bi::shared_memory_object::remove( SHM_NAME ); } ~shm_remove() { bi::shared_memory_object::remove( SHM_NAME ); } } remover; struct mut_remove { mut_remove() { SharedMutex::remove(MUT_NAME); } ~mut_remove() { SharedMutex::remove(MUT_NAME); } } mut_remover; struct cond_remove { cond_remove() { NewEntryCondition::remove(COND_NAME); } ~cond_remove() { NewEntryCondition::remove(COND_NAME); } } cond_remover; // Create the shared mem, condition variable, mutex bi::managed_shared_memory segment(bi::create_only, SHM_NAME, 2*65536); SharedMutex sh_mut(bi::create_only, MUT_NAME); NewEntryCondition sh_cond(bi::create_only, COND_NAME); int&amp; shared_int = *segment.construct&lt;int&gt;("shared_int")(0); for (int i=0;;i++) { std::this_thread::sleep_for(std::chrono::seconds(2)); { WriteLock w_lock( sh_mut ); shared_int = i; std::cout &lt;&lt; "set shared_int to: " &lt;&lt; shared_int &lt;&lt; std::endl; sh_cond.notify_all(); } } return 0; } </pre><p> CONSUMER: </p> <pre class="wiki">#include &lt;thread&gt; #include &lt;chrono&gt; #include &lt;iostream&gt; #include &lt;boost/interprocess/sync/scoped_lock.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; #include &lt;boost/interprocess/sync/named_sharable_mutex.hpp&gt; #include &lt;boost/interprocess/sync/sharable_lock.hpp&gt; #include &lt;boost/interprocess/sync/named_condition_any.hpp&gt; #include &lt;boost/interprocess/managed_shared_memory.hpp&gt; namespace bi = boost::interprocess; using SharedMutex = bi::named_sharable_mutex; using ReadLock = bi::sharable_lock&lt;SharedMutex&gt;; using WriteLock = bi::scoped_lock&lt;SharedMutex&gt;; using NewEntryCondition = bi::named_condition_any; constexpr char SHM_NAME[] = "shared_mem"; constexpr char MUT_NAME[] = "shm_mut"; constexpr char COND_NAME[] = "shm_cond"; constexpr char CUR_INT_NAME[] = "shm_int"; int main(int argc, char *argv[]) { // Open the shared mem, condition variable, mutex bi::managed_shared_memory segment(bi::open_only, SHM_NAME); SharedMutex sh_mut(bi::open_only, MUT_NAME); NewEntryCondition sh_cond(bi::open_only, COND_NAME); int&amp; shared_int = *segment.find&lt;int&gt;("shared_int").first; int copy_of_int = -1; for (int i=0;;i++) { { ReadLock r_lock( sh_mut ); std::cout &lt;&lt; "calling named_condition_any::wait()" &lt;&lt; std::endl; sh_cond.wait( r_lock, [&amp;shared_int, &amp;copy_of_int]() { std::cout &lt;&lt; "checking predicate..." &lt;&lt; std::endl; return (copy_of_int &lt; shared_int); }); copy_of_int = shared_int; std::cout &lt;&lt; "copy of int = " &lt;&lt; copy_of_int &lt;&lt; std::endl; } } return 0; } </pre> Chris Evans <chris.evans@…> https://svn.boost.org/trac10/ticket/12476 https://svn.boost.org/trac10/ticket/12476 Report #12475: boost::fast_pool_allocator causes a deadlock on Windows 7 Wed, 21 Sep 2016 13:31:32 GMT Wed, 21 Sep 2016 13:31:32 GMT <p> When invoked from a DLL, Boost.Wave's C++ lexer causes the application to hang on Windows 7 (and only on Windows 7) and to crash when interrupted with CTRL+C on other Windows versions. </p> <p> Here is a minimal test program in two parts, a DLL and an EXE, that reproduces the problem: </p> <h4 class="section" id="DLL">DLL</h4> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/wave.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/wave/cpplexer/cpp_lex_token.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/wave/cpplexer/cpp_lex_iterator.hpp&gt;</span><span class="cp"></span> <span class="kr">__declspec</span><span class="p">(</span><span class="n">dllexport</span><span class="p">)</span> <span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">wave</span><span class="o">::</span><span class="n">cpplexer</span><span class="o">::</span><span class="n">lex_token</span><span class="o">&lt;&gt;</span> <span class="n">token_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">wave</span><span class="o">::</span><span class="n">cpplexer</span><span class="o">::</span><span class="n">lex_iterator</span><span class="o">&lt;</span><span class="n">token_type</span><span class="o">&gt;</span> <span class="n">lex_iterator_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">wave</span><span class="o">::</span><span class="n">context</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">::</span><span class="n">iterator</span><span class="p">,</span> <span class="n">lex_iterator_type</span><span class="o">&gt;</span> <span class="n">context_type</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">s</span> <span class="o">=</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">context_type</span> <span class="nf">ctx</span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">s</span><span class="p">.</span><span class="n">end</span><span class="p">());</span> <span class="k">auto</span> <span class="n">first</span> <span class="o">=</span> <span class="o">*</span><span class="n">ctx</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><h4 class="section" id="EXE">EXE</h4> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp"></span> <span class="kr">__declspec</span><span class="p">(</span><span class="n">dllimport</span><span class="p">)</span> <span class="kt">void</span> <span class="n">foo</span><span class="p">();</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">foo</span><span class="p">();</span> <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Press CTRL+C to terminate...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span> <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{}</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> On Windows 7, this program will hang at startup, before entering <code>main()</code>. On other versions of Windows, the program will start and print the message, but pressing CTRL+C to terminate it will cause a crash. </p> <hr /> <p> A deeper investigation reveals that the problem is actually caused by Boost's <code>fast_pool_allocator</code>. Here is another minimal example that triggers the same bug as the program above: </p> <h4 class="section" id="DLL1">DLL</h4> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/pool/pool_alloc.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;list&gt;</span><span class="cp"></span> <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span> <span class="kt">int</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">fast_pool_allocator</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">container</span><span class="p">;</span> <span class="k">static</span> <span class="n">container</span> <span class="n">last</span><span class="p">;</span> <span class="kr">__declspec</span><span class="p">(</span><span class="n">dllexport</span><span class="p">)</span> <span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="p">{}</span> </pre></div></div><h4 class="section" id="EXE1">EXE</h4> <p> <em>Same as in the previous program.</em> </p> <p> The symptoms of this program should be exactly the same as those of the previous one. </p> dictoon@… https://svn.boost.org/trac10/ticket/12475 https://svn.boost.org/trac10/ticket/12475 Report #12474: Using two different resolver instances on the same io_service causes a race condition Wed, 21 Sep 2016 09:47:04 GMT Wed, 21 Sep 2016 10:09:14 GMT <p> Dear developer (or developers) of Boost Asio,<br /> <br /> I think I've found a bug in Asio. If I instantiate two different TCP resolvers on the same io_service and I use these two distinct resolvers for resolving the same endpoint, a race condition is generated.<br /> <br /> I have attached two sources (C++11 is required) that reproduce the issue. Unfortunately you need to run the programs many times to experience a failure ... I have bash scripts that allow me to run these programs thousands of times, each time using a different, random, free port on the local host.<br /> <br /> Quick instructions for running the tests:<br /> <br /> <code>test_engine_client_dbg_x -s -p &lt;port&gt;</code><br /> <br /> runs the server.<br /> <br /> <code>test_engine_client_dbg_x -c -p &lt;port&gt;</code><br /> <br /> Runs the client.<br /> <br /> <code>test_engine_client_dbg_2.cpp</code> is the source that fails (at line 364) because, with no apparent reason, we find (sometimes) the pointer to <code>mEngineClient</code> to be <code>NULL</code>. I've also verified that if in this code I insert a <code>while</code> loop that waits until <code>mEngineClient.get() != nullptr</code>, the code proceeds with no error (meaning that, at some point, that pointer is reset to the correct value). But, I repeat, there is no reason why <code>mEngineClient.get()</code> should be <code>NULL</code> in this point.<br /> <br /> <code>test_engine_client_dbg_4.cpp</code> is the source that works. Notice that this time I'm not instantiating a second resolver within the <code>EngineClient</code> class, but I'm simply passing the already-resolved endpoint iterator to the <code>EngineClient</code>'s constructor. With this change, we never loose the <code>mEngineClient</code> pointer.<br /> <br /> This race condition can be experienced only if we call <code>io_service.run()</code> from multiple threads. I've verified that this does not happen if we call a single <code>io_service.run()</code>.<br /> <br /> Also, I think it is difficult to be reproduced, because I've experienced it only on one specific machine that, maybe, has a different timing with respect to the others I have (because of its hardware). On this machine (which has Fedora 23 OS, with kernel 4.7.3 and gcc 5.3.1) I've also tried re-building by using gcc 4.8.5, but the issue is the same (so this is not a compiler bug). I've also tried, on the same machine, with Fedora 24 OS (yes ... I re-installed the OS) and so I was also able to test with gcc 6.1 and the issue comes out again. On other machines (I've tried also a CentOS6, with 8 cores and gcc 4.8.5) I was not able to reproduce this issue even running the tests thousands of times, while on the Fedora machine where I'm experiencing this issue, it happens basically for sure within 1000 runs.<br /> <br /> In summary, stress test is the only way to hope to experience this bug (but sometimes it also comes out at the first run). </p> michele.de.stefano@… https://svn.boost.org/trac10/ticket/12474 https://svn.boost.org/trac10/ticket/12474 Report #12472: accumulator statistics.hpp may cause build to fail due to no viable overloaded operator[] Tue, 20 Sep 2016 20:28:28 GMT Fri, 30 Sep 2016 16:09:37 GMT <p> This occurred on both 1.61.0 and trunk. This was tested using Apple's Xcode 8 toolchain on macOS 10.12, through CMake, with Boost installed through Homebrew. </p> <p> This program shows the error on my computer: </p> <pre class="wiki">#include &lt;boost/accumulators/accumulators.hpp&gt; #include &lt;boost/accumulators/statistics.hpp&gt; using namespace boost::accumulators; static accumulator_set&lt;int, stats&lt;tag::tail&lt;right&gt;&gt;&gt; acc; int main(int argv, char* argc[]) { return 0; } </pre><p> Compilation was done using the command <code>clang++ -std=c++11 test.cpp</code> </p> <p> Interestingly, the build succeeds when <code>#include &lt;boost/accumulators/statistics/tail.hpp&gt;</code> is used instead of including <code>statistics.hpp</code>. </p> Alex Wang <aw1621107@…> https://svn.boost.org/trac10/ticket/12472 https://svn.boost.org/trac10/ticket/12472 Report #12471: gzip compressor decompressor broken Tue, 20 Sep 2016 14:40:52 GMT Sat, 13 Jan 2018 17:30:42 GMT <p> Hi guys, when I use the iostreams with the gzip tools it fails to give correct answers on final dezip. my data is all small integers separated by commas, and the recovered data interchanges the order of commas and numbers as if it was a bad multithreaded program. The result is worse than useless. This is a big file phenomena (up to gb size). </p> <p> Looking at the compressor code (gzip.hpp) I see many problems between 32 and 64 bit. Currently I am looking at an assignment: One that is problematic at the </p> <pre class="wiki"> template&lt;typename Sink&gt; std::streamsize write(Sink&amp; snk, const char_type* s, std::streamsize n) { if (!(flags_ &amp; f_header_done)) { std::streamsize amt = static_cast&lt;std::streamsize&gt;(header_.size() - offset_); offset_ += boost::iostreams::write(snk, header_.data() + offset_, amt); if (offset_ == header_.size()) flags_ |= f_header_done; else return 0; } return base_type::write(snk, s, n); } </pre><p> offset_ is size_t while boost::iostreams::write(returns streamsize a signed 64 bit type (long long). So in 32 bit code there is a problem. Streamsize occurs many places, as does size_t; but one seems to be consistently 64 bit across platforms. offset seems to be 32 bit in 32 bit code. I do not think this this is the cause of the issues with gzip but short of rewriting it I don't know where to start. </p> <p> I would like ot use and have confidence in this compression code but so far it only gives grief... </p> anonymous https://svn.boost.org/trac10/ticket/12471 https://svn.boost.org/trac10/ticket/12471 Report #12470: gzip compressor decompressor broken Tue, 20 Sep 2016 14:40:47 GMT Tue, 20 Sep 2016 14:40:47 GMT <p> Hi guys, when I use the iostreams with the gzip tools it fails to give correct answers on final dezip. my data is all small integers separated by commas, and the recovered data interchanges the order of commas and numbers as if it was a bad multithreaded program. The result is worse than useless. This is a big file phenomena (up to gb size). </p> <p> Looking at the compressor code (gzip.hpp) I see many problems between 32 and 64 bit. Currently I am looking at an assignment: One that is problematic at the </p> <pre class="wiki"> template&lt;typename Sink&gt; std::streamsize write(Sink&amp; snk, const char_type* s, std::streamsize n) { if (!(flags_ &amp; f_header_done)) { std::streamsize amt = static_cast&lt;std::streamsize&gt;(header_.size() - offset_); offset_ += boost::iostreams::write(snk, header_.data() + offset_, amt); if (offset_ == header_.size()) flags_ |= f_header_done; else return 0; } return base_type::write(snk, s, n); } </pre><p> offset_ is size_t while boost::iostreams::write(returns streamsize a signed 64 bit type (long long). So in 32 bit code there is a problem. Streamsize occurs many places, as does size_t; but one seems to be consistently 64 bit across platforms. offset seems to be 32 bit in 32 bit code. I do not think this this is the cause of the issues with gzip but short of rewriting it I don't know where to start. </p> <p> I would like ot use and have confidence in this compression code but so far it only gives grief... </p> anonymous https://svn.boost.org/trac10/ticket/12470 https://svn.boost.org/trac10/ticket/12470 Report #12469: BOOST_MPL_PRINT_HPP generates error: negative integral constant converted to unsigned type Tue, 20 Sep 2016 14:17:27 GMT Tue, 01 Nov 2016 22:02:49 GMT <p> Hi, serialization in win32 generates compile error in VS2015. The error is: c:\program files\boost\boost_1_61_0\boost\mpl\print.hpp(52): error C4308: negative integral constant converted to unsigned type </p> <pre class="wiki">#elif defined(BOOST_MSVC) enum { n = sizeof(T) + -1 }; #elif defined(__MWERKS__) </pre><p> And ultimately this was triggered by: </p> <pre class="wiki">private: // the range of the output hashed variable size_t mWidth; size_t mPrime; size_t mKindependent; std::shared_ptr&lt;std::vector&lt;size_t&gt; &gt; mpCoefficients; friend class boost::serialization::access; template&lt;class Archive&gt; void serialize(Archive &amp; ar, const unsigned int version) { ar &amp; mPrime ; ar &amp; mKindependent ; ar &amp; mpCoefficients ; ar &amp; mWidth; } </pre><p> All works in 64 bit mode. </p> anonymous https://svn.boost.org/trac10/ticket/12469 https://svn.boost.org/trac10/ticket/12469 Report #12467: [regression] clang 3.9 and trunk fail to compile small_vector (ICE) Fri, 16 Sep 2016 08:58:32 GMT Wed, 14 Nov 2018 13:31:56 GMT <p> <a class="ext-link" href="https://llvm.org/bugs/show_bug.cgi?id=29091"><span class="icon">​</span>https://llvm.org/bugs/show_bug.cgi?id=29091</a> </p> <p> Minimal example: </p> <p> #include &lt;boost/container/small_vector.hpp&gt; #include &lt;type_traits&gt; </p> <p> using boost::container::small_vector; </p> <p> struct A : small_vector&lt;int, 3&gt; { </p> <blockquote> <p> using vector_t = small_vector&lt;int, 3&gt;; using vector_t::vector_t; using vector_t::operator=; </p> </blockquote> <p> }; </p> <p> template &lt;typename P&gt; inline void foo(P) { </p> <blockquote> <p> small_vector&lt;P, 3&gt; pls; pls.push_back(P{}); </p> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> foo(A{}); return 0; </p> </blockquote> <p> } </p> <p> Results in an internal compiler error. </p> anonymous https://svn.boost.org/trac10/ticket/12467 https://svn.boost.org/trac10/ticket/12467 Report #12466: property_tree::string_path<StringT, TranslatorT>'s operator / won't accept StringT as an argument Fri, 16 Sep 2016 07:09:18 GMT Fri, 16 Sep 2016 07:09:18 GMT <p> A very simple example of the problem can be seen with this code: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">property_tree</span><span class="o">::</span><span class="n">path_of</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">path</span><span class="p">(</span><span class="s">&quot;parent&quot;</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">component</span><span class="p">(</span><span class="s">&quot;child&quot;</span><span class="p">);</span> <span class="n">path</span> <span class="o">/</span> <span class="n">component</span><span class="p">;</span> </pre></div></div><p> This produces an error of "no match for operator/". I have tested this on G++ 6.2.0, VS 14 Update 3, and Apple's clang-800.0.38, and they all produce roughly the same error. This issue can be worked around by replacing the third line with <code>path / boost::property_tree::path_of&lt;std::string&gt;::type(component)</code> or <code>path / component.c_str();</code>, as those types are both explicitly overloaded. Adding an additional overload for the String type will fix this issue. </p> LRFLEW <LRFLEW.Coll@…> https://svn.boost.org/trac10/ticket/12466 https://svn.boost.org/trac10/ticket/12466 Report #12465: Suggest promoting -j to "Important Options" in help output Thu, 15 Sep 2016 14:37:30 GMT Thu, 15 Sep 2016 14:37:30 GMT <p> Currently ./b2 --help doesn't mention -j; one has to ./b2 --help-options, which is described as "Print more obscure command line options". </p> <p> Almost everyone has multi-CPU system these days (even in their phones!). Building Boost on one CPU would be a mistake. Maybe Boost.Build should default to using multiple processors. Failing that, the -jN option should be considered an "important" option and be mentioned more prominently. Wanting to use multiple CPUs is not "obscure" any more. </p> Phil Endecott https://svn.boost.org/trac10/ticket/12465 https://svn.boost.org/trac10/ticket/12465 Report #12464: Mention dependencies on zlib etc. and how to reconfigure Thu, 15 Sep 2016 14:31:45 GMT Thu, 15 Sep 2016 14:31:45 GMT <p> I suggest that the Getting Started docs should mention: </p> <ul><li>Installing dependencies, in particular zlib-dev packages, before building. (zlib always seems to catch me out!) </li></ul><ul><li>Checking which dependencies b2 has and hasn't found before they scroll off the top of the screen. </li></ul><ul><li>How to re-run b2 after installing missing dependencies; b2 doesn't automatically detect that e.g. zlib-dev has been installed and caches the previous state, so --reconfigure is needed. </li></ul> Phil Endecott https://svn.boost.org/trac10/ticket/12464 https://svn.boost.org/trac10/ticket/12464 Report #12463: Mention -j option for b2 Thu, 15 Sep 2016 14:26:05 GMT Thu, 15 Sep 2016 14:26:05 GMT <p> Most people have multi-core systems now, and building Boost concurrently will be dramatically faster. b2 doesn't do this automatically, so I suggest that the getting started docs mention the -j option. </p> Phil Endecott https://svn.boost.org/trac10/ticket/12463 https://svn.boost.org/trac10/ticket/12463 Report #12462: Wish INSTALL file had more content Thu, 15 Sep 2016 14:22:17 GMT Thu, 15 Sep 2016 14:22:17 GMT <p> Each time I build Boost, which is every year or two, I seem to go through the same process: </p> <p> $ cat INSTALL See ./index.html for information about this release. The "Getting Started" section is a useful starting place. </p> <hr /> <p> Copyright Beman Dawes, 2008 </p> <p> Distributed under the Boost Software License, Version 1.0. See ./LICENSE_1_0.txt or <a href="http://www.boost.org/LICENSE_1_0.txtphil@norway">http://www.boost.org/LICENSE_1_0.txtphil@norway</a> $ </p> <p> (Note the missing newline at the end of the file.) </p> <p> "Sigh", I think, "I remember from last time, I can't just ./configure; make -j4; make install; and the instructions for what I should do are hidden deep in some HTML file." </p> <p> Note that I'm never building on a machine with a web browser; it's always a headless system of some sort. I don't think that's too unusual. I consider installing a text-mode web browser like lynx or links of whatever, but think "it can't be that difficult". </p> <p> $ more index.html Scanning a few pages of raw HTML I find a link to... $ more more/getting_started/index.html And then... $ more more/getting_started/unix-variants.html Scanning 280 lines of HTML, I find the start of the instructions that I need. </p> <p> It would be really great if the essence of this could be copied into the INSTALL text file: </p> <p> $ ./bootstrap.sh $ ./b2 -j4 $ ./b2 install </p> <p> I.e. a translation of what autotools-based packages typically say. </p> Phil Endecott https://svn.boost.org/trac10/ticket/12462 https://svn.boost.org/trac10/ticket/12462 Report #12461: Consider using parallel bzip2 for .tar.bz2 downloads Thu, 15 Sep 2016 14:00:46 GMT Thu, 15 Sep 2016 14:00:46 GMT <p> pbzip2 is a parallel implementation of the bzip2 file compressor; files compressed using it are compatible with regular bzip2, but to get speedup while decompressing with pbzip2 the file must have been compressed with pbzip2. </p> <p> In a quick test, decompressing/untaring Boost 1.61.0 is more than 4 times faster on an 8-CPU system using pbzip2 than using regular bzip2 on the same machine. </p> <p> There is a minute increase in file size, much less than 1%. </p> <p> Please consider using pbzip2 to create the official .tar.bz2 files. </p> <p> (Not sure of component to file bug against!) </p> Phil Endecott https://svn.boost.org/trac10/ticket/12461 https://svn.boost.org/trac10/ticket/12461 Report #12458: Boost should use /utf8 compiler option for Visual C++ builds Thu, 15 Sep 2016 09:07:20 GMT Thu, 15 Sep 2016 09:07:20 GMT <p> This prevents non-ascii and non-utf8 encoded characters to sneak into the source code of modules. Preventing this helps library users that compile with /utf8 to avoid a C4828 warning from the cl compiler. </p> thomas.sondergaard@… https://svn.boost.org/trac10/ticket/12458 https://svn.boost.org/trac10/ticket/12458 Report #12456: mapped_file issues with huge file support Wed, 14 Sep 2016 16:27:34 GMT Wed, 14 Sep 2016 16:27:34 GMT <p> I worked on an application that handles huge files (tens of Gb). Using memory mapped file is a common way to deal with such amounts of data. I'd like to use boost::iostreams::mapped_file to read and write those files. Sadly enough I faced a number of issues that makes it nearly impossible. </p> <p> I describe all the problems in one ticket instead of several tickets because all the issues are tightly connected to each other and fixing one of those requires fixing another. </p> <p> First, let us take a look at the mapped_file::open declaration: </p> <pre class="wiki"> template&lt;typename Path&gt; void open( const Path&amp; path, BOOST_IOS::openmode mode = BOOST_IOS::in | BOOST_IOS::out, size_type length = max_length, stream_offset offset = 0 ); </pre><p> It has length parameter that says how many bytes of file we wish to map into the memory. By default it try to map the whole file, but in general this parameter should be much lesser than the file size. Consider working with file of 100 Gb. Mapping the whole file is too expencive and in many cases simply impossible (consider x86 OS, for example). </p> <p> This length parameter is stored in the size_ member. </p> <pre class="wiki"> size_ = static_cast&lt;std::size_t&gt;( p.length != max_length ? std::min&lt;boost::intmax_t&gt;(p.length, size) : size ); </pre><p> </p> <pre class="wiki">std::size_t size() const { return size_; } </pre><p> That leads us to the following problem: </p> <ol><li>mapped_file::size() returns us NOT the file size. In general case it returns memory view size. If I need to know the file size </li></ol><p> I must do additional queries outside of mapped_file code. It's a painful work because I need to reimplement a lot of mapped_file::open code. Mapped_file::open already knows this size, but doesn't expose it outside. I guess mapped_file should have two methods: size() and file_size() or view_size() and size() to separately get the whole file size and the size of mapped region. </p> <ol start="2"><li>mapped_file::resize ignores length parameter. Consider: </li></ol><pre class="wiki">void mapped_file_impl::resize(stream_offset new_size) { ... size_ = new_size; param_type p(params_); map_file(p); // May modify p.hint ... } </pre><p> Compare to the code from open. No min(length, size), it just uses the new_size as view size. Again, in case of a huge file it is inappropriate and sometimes impossible. </p> <ol start="3"><li>mapped_file doesn't allow remapping file without closing it and open with new offset and length. That approach kills performance in case of application that needs intensively read huge file piece by piece. I guess mapped_file should have method remap that accepts new offset and do job similar to resize, but without resizing file, just remapping. </li></ol> Igor Minin <igorm6387@…> https://svn.boost.org/trac10/ticket/12456 https://svn.boost.org/trac10/ticket/12456 Report #12455: Missing include boost/config.hpp and boost/assert.hpp in download package 1.61.0 Wed, 14 Sep 2016 15:10:58 GMT Wed, 14 Sep 2016 15:15:12 GMT <p> It seems that the file boost/config.hpp (and also boost/assert.hpp) is missing from the download package 1.61.0. </p> <p> When we add #include &lt;boost/xpressive/xpressive.hpp&gt; to the source file an error comes up: </p> <p> P:\Projekte\ITK\3rdParty\boost_1_61_0\boost/type_traits/remove_reference.hpp(12): fatal error C1083: Cannot open include file: 'boost/config.hpp': No such file or directory </p> <p> <a class="missing wiki">AdditionalIncludeDirectories</a> are set correctly in Visual Studio project setup. </p> alexander.hetzl@… https://svn.boost.org/trac10/ticket/12455 https://svn.boost.org/trac10/ticket/12455 Report #12454: multi_array: operator= does not resize array Wed, 14 Sep 2016 11:04:57 GMT Wed, 14 Sep 2016 11:04:57 GMT <p> Hello, </p> <p> the copy operator does not resize the array in contrast to the copy constructor, which does. That is a pitfall. </p> <p> In case of a multi_array_ref the size cannot be changed, but for a multi_array it can and it also should change the size. </p> <p> #include &lt;boost/multi_array.hpp&gt; </p> <p> int main() { </p> <blockquote> <p> boost::multi_array&lt;double, 2&gt; a(boost::extents<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a>); boost::multi_array&lt;double, 2&gt; b = a; <em> ok boost::multi_array&lt;double, 2&gt; c; </em> has size <a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="missing changeset" title="No changeset 0 in the repository">[0]</a> c = a; <em> fails </em></p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> martin.koerner@… https://svn.boost.org/trac10/ticket/12454 https://svn.boost.org/trac10/ticket/12454 Report #12452: XML log can contain unescaped characters from test output Tue, 13 Sep 2016 11:40:36 GMT Tue, 13 Sep 2016 12:51:04 GMT <p> XML log format does not escape user test output, so the resulting XML file is not valid, e.g. </p> <pre class="wiki">BOOST_AUTO_TEST_CASE(test) { std::cout &lt;&lt; "&amp;"; } </pre><p> This issue makes it impossible to parse the output with standard XML parsers. </p> <p> A file log sink can be used to separate Boost.Test output from user output. Unfortunately, the XML reporter does not flush the output stream, so if a unit test runner wants to show test results as soon as they are available, the stderr sink is the only option. </p> <p> For comparison, the Catch unit test framework redirects cout and cerr and later prints escaped output inside a corresponding XML node. </p> Igor Akhmetov <igor.akhmetov@…> https://svn.boost.org/trac10/ticket/12452 https://svn.boost.org/trac10/ticket/12452 Report #12450: oost/serialization/singleton.hpp:131: undefined reference to `boost::serialization::singleton_module::is_locked()' Mon, 12 Sep 2016 11:50:27 GMT Fri, 08 Sep 2017 17:27:10 GMT <p> When I am using the &lt;boost/serialization/singleton.hpp&gt; and compile my code, there is an error: oost/serialization/singleton.hpp:131: undefined reference to `boost::serialization::singleton_module::is_locked()' </p> <p> I find the body of member functions of singleton_module is removed since version 1.61.0. Since user use only hpp file to inlucde and compile, so please reset the code as the pervious version such as 1.60 and 1.59 </p> NASa Qian <cj.nasa@…> https://svn.boost.org/trac10/ticket/12450 https://svn.boost.org/trac10/ticket/12450 Report #12448: Boost fails to build when path contains % (percent sign) Mon, 12 Sep 2016 09:13:46 GMT Mon, 12 Sep 2016 12:04:16 GMT <p> Ubuntu 14.04, Boost 1.61.0: </p> <pre class="wiki">zaytsev@work:~/src/boost/bad%path/boost_1_61_0$ ./bootstrap.sh --prefix=$(pwd)/../install Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2 Detecting Python version... 2.7 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... not found. Generating Boost.Build configuration in project-config.jam... Bootstrapping is done. To build, run: ./b2 To adjust configuration, edit 'project-config.jam'. Further information: - Command line help: ./b2 --help - Getting started guide: http://www.boost.org/more/getting_started/unix-variants.html - Boost.Build documentation: http://www.boost.org/build/doc/html/index.html zaytsev@work:~/src/boost/bad%path/boost_1_61_0$ ./b2 install /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/kernel/modules.jam:107: in modules.call-in ERROR: rule "&lt;abi&gt;sysv" unknown in root module. /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/util/indirect.jam:98: in indirect.call /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:1054: in evaluate-requirements /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:1112: in common-properties2 /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:977: in targets.common-properties /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:1303: in alias-target-class.generate /home/zaytsev/src/boost/bad%path/boost_1_61_0/boostcpp.jam:432: in build-multiple /home/zaytsev/src/boost/bad%path/boost_1_61_0/boostcpp.jam:394: in class@top-level-target.generate /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:774: in generate-really /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build/targets.jam:746: in class@main-target.generate /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/build-system.jam:714: in load /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/kernel/modules.jam:295: in import /home/zaytsev/src/boost/bad%path/boost_1_61_0/tools/build/src/kernel/bootstrap.jam:139: in boost-build /home/zaytsev/src/boost/bad%path/boost_1_61_0/boost-build.jam:17: in module scope </pre> yury.zaytsev@… https://svn.boost.org/trac10/ticket/12448 https://svn.boost.org/trac10/ticket/12448 Report #12446: flat unordered/hash map Sat, 10 Sep 2016 06:08:59 GMT Sat, 10 Sep 2016 06:08:59 GMT <p> If/when feasible ;) </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12446 https://svn.boost.org/trac10/ticket/12446 Report #12445: static_vector is not noexcept Sat, 10 Sep 2016 05:56:19 GMT Sat, 10 Sep 2016 05:56:19 GMT <p> Resizing operations on static_vector completely delegate to the corresponding generic vector functionality which throws bad_alloc when the allocator returns null/runs out of storage. This is a bug which defeats the idea of static_vector as a lightweight wrapper around std::array, I don't want EH code generated for static_vectors. Just like array asserts on out-of-bounds access, so should static_vector (i.e. trying to resize a fixed capacity container beyond its capacity is a programming error). </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12445 https://svn.boost.org/trac10/ticket/12445 Report #12444: build failure of boost::date_time::string_parse_tree on HP-UX 11i v3 Fri, 09 Sep 2016 05:05:58 GMT Fri, 09 Sep 2016 05:05:58 GMT <p> OS: HP-UX B.11.31 U ia64 <br /> Compiler: aCC: HP C/aC++ B3910B A.06.15 [May 16 2007] </p> <p> Test exposing the problem: </p> <pre class="wiki">#include &lt;boost/date_time/posix_time/posix_time_io.hpp&gt; boost::posix_time::time_input_facet const x(""); </pre><p> Compilation (<code>aCC -c test.cc</code>) output: </p> <pre class="wiki">"/opt/aCC/include_std/utility", line 100: error #2070: incomplete type is not allowed second_type second; ^ detected during: instantiation of class "std::pair&lt;_TypeT, _TypeU&gt; [with _TypeT=const char, _TypeU=boost::date_time::string_parse_tree&lt;char&gt;]" at line 97 of "/opt/aCC/include_std/rw/tree" instantiation of class "__rw::__rw_rb_tree_node&lt;_Alloc, _Val, _Key, _KeyOf&gt; [with _Alloc=std::allocator&lt;std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;&gt;, _Val=std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;, _Key=char, _KeyOf=__rw::__select1st&lt;std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;, char&gt;]" at line 282 of "/opt/aCC/include_std/rw/tree" instantiation of class "__rw::__rb_tree&lt;_Key, _Val, _KeyOf, _Comp, _Alloc&gt; [with _Key=char, _Val=std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;, _KeyOf=__rw::__select1st&lt;std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;, char&gt;, _Comp=std::less&lt;char&gt;, _Alloc=std::allocator&lt;std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;&gt;]" at line 361 of "/opt/aCC/include_std/map" instantiation of class "std::multimap&lt;_Key, _TypeT, _Compare, _Allocator&gt; [with _Key=char, _TypeT=boost::date_time::string_parse_tree&lt;char&gt;, _Compare=std::less&lt;char&gt;, _Allocator=std::allocator&lt;std::pair&lt;const char, boost::date_time::string_parse_tree&lt;char&gt;&gt;&gt;]" at line 90 of "/opt/boost/include/boost/date_time/string_parse_tree.hpp" instantiation of class "boost::date_time::string_parse_tree&lt;charT&gt; [with charT=char]" at line 165 of "/opt/boost/include/boost/date_time/format_date_parser.hpp" instantiation of class "boost::date_time::format_date_parser&lt;date_type, charT&gt; [with date_type=boost::gregorian::date, charT=char]" at line 719 of "/opt/boost/include/boost/date_time/date_facet.hpp" instantiation of class "boost::date_time::date_input_facet&lt;date_type, CharT, InItrT&gt; [with date_type=boost::gregorian::date, CharT=char, InItrT=std::istreambuf_iterator&lt;char, std::char_traits&lt;char&gt;&gt;]" at line 657 of "/opt/boost/include/boost/date_time/time_facet.hpp" instantiation of class "boost::date_time::time_input_facet&lt;time_type, CharT, InItrT&gt; [with time_type=boost::posix_time::ptime, CharT=char, InItrT=std::istreambuf_iterator&lt;char, std::char_traits&lt;char&gt;&gt;]" at line 3 of "test.cc" </pre> kostrzewa@… https://svn.boost.org/trac10/ticket/12444 https://svn.boost.org/trac10/ticket/12444 Report #12442: container_traits is closed for extension Thu, 08 Sep 2016 22:38:37 GMT Thu, 08 Sep 2016 22:38:37 GMT <p> I was split between filing this as a request to add support for std::deque to boost/pending/container_traits or the current title. Chose the latter. I believe container traits is only used by graph library and I could not see a component for "pending" so filing as a graph ticket. </p> <p> Summary: The problem is that the definitions for the supported containers and all the functions used for dispatching wrt to the given container are within a single file. So it is not easy/possible to extend it to add support for new containers. Especially for containers within the std namespace where it would be illegal extend into. </p> <p> Details: When trying to add support for std::deque to be used with adjacency_list, I kept getting compile errors as the compiler would not pick up the definitions for the specialized container traits. </p> <p> The attached file fails to compile with basically multiple variations of the error message "no matching function for container_category(...)" in the push_dispatch() function: </p> <p> { </p> <blockquote> <p> return push_dispatch(c, BOOST_PENDING_FWD_VALUE(T, v), container_category(c)); </p> </blockquote> <p> } </p> <p> Possible fix: Separate the container_traits to multiple files so that it would be possible to define specializations for other containers using the existing tags. For example for std::deque, existing tags are completely enough to specify. It can be defined by "random_access_container_tag" and "back_insertion_sequence_tag". If the tag definitions would be moved to another header file, then it would be possible to include that to define a new container in terms of the existing tag specifications. </p> <p> Please see the attached repro. </p> erdem.cilingir@… https://svn.boost.org/trac10/ticket/12442 https://svn.boost.org/trac10/ticket/12442 Report #12440: incorrect configuration in boost/graph/properties.hpp for Oracle Developer Studio Tue, 06 Sep 2016 21:35:22 GMT Tue, 06 Sep 2016 21:35:22 GMT <blockquote> <p> Compiling libs/graph/test/subgraph_props.cpp and few other tests with Oracle Developer Studio 12.5 shows the following error: </p> </blockquote> <p> %CC -std=c++11 -std=c++11 -xO4 -mt -erroff=%none -m32 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I".." -c -o ./subgraph_props.o ../libs/graph/test/subgraph_props.cpp </p> <p> "../libs/graph/test/subgraph_props.cpp", line 102: Error: The operation "boost::subgraph&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, TestBundles::Node, boost::property&lt;boost::edge_index_t, unsigned, TestBundles::Arc&gt;, boost::no_property, boost::listS&gt;&gt;[unsigned]" is illegal. </p> <p> "../libs/graph/test/subgraph_props.cpp", line 107: Error: The operation "boost::subgraph&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, TestBundles::Node, boost::property&lt;boost::edge_index_t, unsigned, TestBundles::Arc&gt;, boost::no_property, boost::listS&gt;&gt;[boost::local_property&lt;unsigned&gt;]" is illegal. </p> <p> 2 Error(s) detected. </p> <p> % </p> <p> See: </p> <p> <a href="http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5_next-cpp11-boost-bin-v2-libs-graph-test-subgraph_props-test-sun-12-5_next_cpp11-release-threading-multi.html">http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5_next-cpp11-boost-bin-v2-libs-graph-test-subgraph_props-test-sun-12-5_next_cpp11-release-threading-multi.html</a> </p> <p> Solution: Commenting out/removing lines in boost/graph/propoerties.hpp </p> <blockquote> <p> 327 #if BOOST_WORKAROUND(<span class="underline">SUNPRO_CC, BOOST_TESTED_AT(0x590)) &amp;&amp; !defined (BOOST_GRAPH_NO_BUNDLED_ </span></p> </blockquote> <blockquote> <p> 328 <em> This compiler cannot define a partial specialization based on a </em></p> </blockquote> <blockquote> <p> 329 <em> pointer-to-member type, as seen in boost/graph/subgraph.hpp line 985 (as of </em></p> </blockquote> <blockquote> <p> 330 <em> trunk <a class="changeset" href="https://svn.boost.org/trac10/changeset/53912" title="Added newline to end of file; refs #3134">r53912</a> </em></p> </blockquote> <blockquote> <p> 331 # define BOOST_GRAPH_NO_BUNDLED_PROPERTIES </p> </blockquote> <blockquote> <p> 332 #endif </p> </blockquote> <p> seems to resolve the issue. </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/12440 https://svn.boost.org/trac10/ticket/12440 Report #12439: Problems with 180 and -180 meridian, using bg::cs::geographic<bg::degree> Tue, 06 Sep 2016 19:13:54 GMT Tue, 03 Jan 2017 17:06:15 GMT <p> While calculating the envelope: </p> <pre class="wiki"> #include &lt;boost/range.hpp&gt; #include &lt;boost/iterator/iterator_facade.hpp&gt; #include &lt;boost/geometry/geometries/concepts/ring_concept.hpp&gt; #include &lt;boost/geometry/geometries/register/ring.hpp&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/geometries.hpp&gt; namespace bg = boost::geometry; namespace bgi = boost::geometry::index; typedef bg::model::point&lt;double, 2, bg::cs::geographic&lt; bg::degree&gt;&gt; point_t; typedef bg::model::ring&lt;point_t&gt; ring_t; ring_t ring {{-180, 0}, {180, 0}, {180, -85}, {-180, -85}, {-180, 0}}; auto aabb = bg::return_envelope&lt; bg::model::box&lt;point_t&gt; &gt;(ring); std::cout &lt;&lt; "max_corner lon =" &lt;&lt; aabb.max_corner().get&lt;0&gt;(); std::cout &lt;&lt; "min_corner lon =" &lt;&lt; aabb.min_corner().get&lt;0&gt;(); </pre><p> It prints both max_corner and min_corner longitude as 180 </p> ostroukhov@… https://svn.boost.org/trac10/ticket/12439 https://svn.boost.org/trac10/ticket/12439 Report #12437: asio::async_read with a tcp socket gives erroneous results under Windows Mon, 05 Sep 2016 05:09:12 GMT Mon, 05 Sep 2016 15:15:52 GMT <p> I'm seeing asio::async_read give erroneous results with a tcp socket under Windows. </p> <p> From the asio source code, async_read under Windows calls WSARecv, and it directly violates the "specification" of that function. The line in error is in the function "start_receive_op" in the source file socket_ops.ipp. It reads: </p> <p> int result = ::WSARecv(impl.socket_, buffers, </p> <blockquote> <p> static_cast&lt;DWORD&gt;(buffer_count), &amp;bytes_transferred, &amp;recv_flags, op, 0); </p> </blockquote> <p> asio is using both the 3rd parameter lpNumberOfBytesRecvd which is set to "&amp;bytes_transferred" and the 5th parameter lpOverlapped which is set to "op". This violates the documentation for WSARecv. </p> <p> According to Microsoft's documentation for WSARecv's 3rd parameter lpNumberOfBytesRecvd: "Use NULL for this parameter if the lpOverlapped parameter is not NULL to avoid potentially erroneous results." Because the 5th parameter lpOverlapped is not NULL, the 3rd parameter lpNumberOfBytesRecvd must be set to NULL and bytes_transferred must be determined by some other method (probably by examining the contents of the lpOverlapped parameter). </p> anonymous https://svn.boost.org/trac10/ticket/12437 https://svn.boost.org/trac10/ticket/12437 Report #12436: BOOST_FUSION_DEFINE_STRUCT fails if a member type starts with "::" Mon, 05 Sep 2016 03:45:07 GMT Thu, 06 Oct 2016 16:01:47 GMT <p> The following code compiles fine in boost-1.57 but fails in boost-1.59 and later. </p> <p> Example: </p> <pre class="wiki">#include &lt;string&gt; #include &lt;boost/fusion/adapted/struct/define_struct.hpp&gt; #include &lt;boost/fusion/include/define_struct.hpp&gt; #include &lt;boost/fusion/include/adapt_struct.hpp&gt; BOOST_FUSION_DEFINE_STRUCT( (demo), employee, (::std::size_t, age)) </pre><p> The error shown by clang: </p> <pre class="wiki">fusion.cpp:6:1: error: pasting formed 'BOOST_PP_IS_EMPTY_DEF_::', an invalid preprocessing token BOOST_FUSION_DEFINE_STRUCT( ^ /Users/grubber/src/work/boost-1.59.0/boost/fusion/adapted/struct/define_struct.hpp:38:5: note: expanded from macro 'BOOST_FUSION_DEFINE_STRUCT' BOOST_FUSION_ADAPT_STRUCT( \ ^ /Users/grubber/src/work/boost-1.59.0/boost/fusion/adapted/struct/adapt_struct.hpp:110:17: note: expanded from macro 'BOOST_FUSION_ADAPT_STRUCT' BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES, \ ^ /Users/grubber/src/work/boost-1.59.0/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp:25:5: note: expanded from macro 'BOOST_FUSION_ADAPT_STRUCT_FILLER_0' BOOST_FUSION_ADAPT_STRUCT_FILLER_1 ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /Users/grubber/src/work/boost-1.59.0/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp:35:17: note: expanded from macro 'BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR' BOOST_PP_IF(BOOST_PP_IS_EMPTY(X), \ ^ /Users/grubber/src/work/boost-1.59.0/boost/preprocessor/facilities/is_empty.hpp:35:34: note: expanded from macro 'BOOST_PP_IS_EMPTY' # define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(x BOOST_PP_IS_EMPTY_HELPER) ^ /Users/grubber/src/work/boost-1.59.0/boost/preprocessor/facilities/is_empty.hpp:36:93: note: expanded from macro 'BOOST_PP_IS_EMPTY_I' # define BOOST_PP_IS_EMPTY_I(contents) BOOST_PP_TUPLE_ELEM(2, 1, (BOOST_PP_IS_EMPTY_DEF_ ## contents())) ^ 1 error generated. </pre> jaredgrubb https://svn.boost.org/trac10/ticket/12436 https://svn.boost.org/trac10/ticket/12436 Report #12433: Make use of make_shared whenever possible in future.hpp Sat, 03 Sep 2016 18:06:36 GMT Sat, 03 Sep 2016 18:06:47 GMT <p> Even if boost::make_shared is not aware of Boost.Move there are a lot of places in future.hpp where make shared could be used and improve the performances. </p> viboes https://svn.boost.org/trac10/ticket/12433 https://svn.boost.org/trac10/ticket/12433 Report #12431: BOOST_PP_TUPLE_PUSH_FRONT fails to expand with BOOST_PP_EXPAND Thu, 01 Sep 2016 23:48:43 GMT Tue, 20 Sep 2016 21:36:26 GMT <p> This problem probably affects other preprocessor macros added in the 1.56.0 release, but this is one I bumped into. It is unfortunate that more bugs are appearing in the preprocessor code, since the original source code has been very useful and stable in the past, when it was first added. To compile the attached test2.cpp, use: </p> <pre class="wiki">g++ -Wall -Wextra -Werror -g -O0 -save-temps -o test2.o -c -fpic test2.cpp </pre><p> My testing has been using version 1.58, though this problem should have existed since 1.56. </p> mjtruog@… https://svn.boost.org/trac10/ticket/12431 https://svn.boost.org/trac10/ticket/12431 Report #12430: Adapt boost for cygwin - patches provided Thu, 01 Sep 2016 22:34:03 GMT Fri, 21 Sep 2018 09:09:50 GMT <p> Boost comes badly for cygwin. Mainly is assumes that cygwin is Windows environment where cygwin does everything to be as close as possible to linux. I found here what cygwin people do each time they want to compile boost for cygwin: <a class="ext-link" href="https://github.com/cygwinports/boost"><span class="icon">​</span>https://github.com/cygwinports/boost</a> Could we integrate those patches to boost so that boost comes ready to be compiled in the future? </p> frederic.bron@… https://svn.boost.org/trac10/ticket/12430 https://svn.boost.org/trac10/ticket/12430 Report #12428: string_view. absence of documentation Thu, 01 Sep 2016 08:50:31 GMT Sun, 12 Feb 2017 02:33:59 GMT <p> In changelog for Boost 1.61 - "* The support for boost::basic_string_ref and its specializations is deprecated; users are encouraged to switch to boost::basic_string_view" But there isn't any information about string_view in boost documentation. </p> voropaev_sg@… https://svn.boost.org/trac10/ticket/12428 https://svn.boost.org/trac10/ticket/12428 Report #12426: boost/preprocessor/seq/for_each_i.hpp fails on gcc 5.4.0 and appleclang 7.3.0 Wed, 31 Aug 2016 22:47:20 GMT Tue, 20 Sep 2016 21:38:07 GMT <p> I have attached test1.cpp which can be compiled with: </p> <pre class="wiki">g++ -Wall -Wextra -Werror -g -O0 -save-temps -o test1.o -c -fpic test1.cpp </pre><p> There appears to be more than 1 problem, but this at least shows that BOOST_PP_SEQ_FOR_EACH_I is broken when using these compilers (the string should not be present in the output, but is, with these compilers). Just check the test1.ii file to observe this. </p> mjtruog@… https://svn.boost.org/trac10/ticket/12426 https://svn.boost.org/trac10/ticket/12426 Report #12423: fusion::make_map breaks when passing references Tue, 30 Aug 2016 15:51:30 GMT Tue, 30 Aug 2016 17:28:45 GMT <p> When using variadic maps the following code doesn't compile: </p> <pre class="wiki">int i = 0; fusion::make_map&lt;int&gt;(ref(i)); </pre><p> Clang gives this error: error : no matching constructor for initialization of 'detail::map_impl&lt;0, pair&lt;int, int &amp;&gt; &gt;' 1&gt; : base_type(first, rest...) 1&gt; <sup> <del></del>~ </sup></p> <p> There is a constructor in fusion::pair that can do the required conversion: </p> <pre class="wiki"> template &lt;typename Second2&gt; BOOST_FUSION_GPU_ENABLED pair(Second2&amp;&amp; val , typename boost::disable_if&lt;is_lvalue_reference&lt;Second2&gt; &gt;::type* /* dummy */ = 0 , typename boost::enable_if&lt;is_convertible&lt;Second2, Second&gt; &gt;::type* /*dummy*/ = 0 ) : second(BOOST_FUSION_FWD_ELEM(Second, val)) {} </pre><p> But it's not being invoked since there's no make_map function that takes rvalue refs. I was able to make this work by adding another make_map overload: </p> <pre class="wiki"> template &lt;typename ...Key, typename ...T&gt; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline map&lt; fusion::pair&lt; Key , typename detail::as_fusion_element&lt;T&gt;::type &gt;...&gt; make_map(T &amp;&amp;... arg) { typedef map&lt; fusion::pair&lt; Key , typename detail::as_fusion_element&lt;T&gt;::type &gt;...&gt; result_type; return result_type(std::forward&lt;T&gt;(arg)...); } </pre> oleg00@… https://svn.boost.org/trac10/ticket/12423 https://svn.boost.org/trac10/ticket/12423 Report #12421: Even with BOOST_ALL_NO_LIB defined, VS14 linker looks for mt-s variant Mon, 29 Aug 2016 22:50:00 GMT Tue, 06 Sep 2016 18:59:23 GMT <p> We do not use the default library names for boost. In fact, we only compile filesystem, system and date_time libraries. We define BOOST_ALL_NO_LIB, compile with b2 and rename the libraries to filesystem.lib, system.lib and date_time.lib for a static link with static linkage to standard lib. This worked for us for many Boost lib versions and different Visual Studio versions. With Boost 1.61 and Visual Studio 2015 (vc14), we receive the following error when linking a project to our renamed filesystem.lib for example: </p> <p> LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc140-mt-s-1_61.lib' </p> <p> No matter if we even specify --layout=sytem as a build option to generate libboost_filesystem.lib: we still get a linkage error on the complete -vc140-mt-s-1_61 variant. </p> <p> Leaving both renamed libraries and boost named libraries in our library path fixes the issue. </p> <p> Why is Visual Studio 14.0 linker still using autolink features with boost 1.61, even though we specify boost not to use autolink (ie, we define BOOST_ALL_NO_LIB). </p> <p> We also get a macro redefinition warning when we define BOOST_ALL_NO_LIB in user.hpp header. It looks like it is correctly defined, but linker will still look for the -vc140-mt-s-1_61 variant of the library. </p> <p> I tried about all possibilities when compiling with b2, to no avail. </p> emonette123@… https://svn.boost.org/trac10/ticket/12421 https://svn.boost.org/trac10/ticket/12421 Report #12420: Boost filesystem should use POSIX API on cygwin Mon, 29 Aug 2016 10:53:43 GMT Mon, 29 Aug 2016 11:09:41 GMT <p> Hi, </p> <p> On cygwin, the following program </p> <p> #include &lt;iostream&gt; </p> <p> #include &lt;boost/filesystem.hpp&gt; </p> <p> int main() { </p> <blockquote> <p> auto p = boost::filesystem::path{"foo"}; p /= "bar"; std::cout &lt;&lt; p.string() &lt;&lt; '\n'; return 0; </p> </blockquote> <p> } </p> <p> outputs: foo\bar </p> <p> but cygwin is a posix system and I expect: foo/bar </p> <p> I read in the doc that "User-defined BOOST_POSIX_API and BOOST_WINDOWS_API macros are no longer supported." </p> <p> I guess system/api_config.hpp should be: </p> <table class="wiki"> <tr>-# if defined(_WIN32) <td> defined(<span class="underline">CYGWIN</span>) <em> Windows default, </em></td></tr></table> <p> including MinGW and Cygwin +# if defined(_WIN32) <em> Windows default, including MinGW # define BOOST_WINDOWS_API # else # define BOOST_POSIX_API # endif </em></p> frederic.bron@… https://svn.boost.org/trac10/ticket/12420 https://svn.boost.org/trac10/ticket/12420 Report #12419: use POSIX poll.h instead of glibc-specific sys/poll.h Mon, 29 Aug 2016 08:41:54 GMT Mon, 29 Aug 2016 08:41:54 GMT <blockquote> <p> POSIX specifies that &lt;poll.h&gt; is the correct header to include for poll() </p> <blockquote> <p> <a class="ext-link" href="http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html"><span class="icon">​</span>http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html</a> </p> </blockquote> <p> whereas &lt;sys/poll.h&gt; is only needed for ancient glibc (&lt;2.3), so let's follow POSIX instead. </p> </blockquote> <p> </p> <blockquote> <p> As a side-effect, this silences a warnings when compiling against the musl C-library: </p> </blockquote> <p> </p> <blockquote> <p> In file included from ./boost/asio/detail/socket_types.hpp:61:0, </p> <blockquote> <p> from ./boost/asio/ip/address_v4.hpp:21, from ./boost/asio/ip/address.hpp:21, from libs/log/src/init_from_settings.cpp:65: </p> </blockquote> <p> &lt;sysroot&gt;/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include &lt;sys/poll.h&gt; to &lt;poll.h&gt; [-Wcpp] </p> <blockquote> <p> #warning redirecting incorrect #include &lt;sys/poll.h&gt; to &lt;poll.h&gt; </p> <blockquote> <p> <sup><del></del><del> </del></sup></p> </blockquote> </blockquote> </blockquote> <p> </p> <blockquote> <p> etc. </p> </blockquote> git@… https://svn.boost.org/trac10/ticket/12419 https://svn.boost.org/trac10/ticket/12419 Report #12418: boost.smart_ptr: mips assembly doesn't compile in mips16e mode Mon, 29 Aug 2016 08:32:15 GMT Fri, 02 Sep 2016 17:18:20 GMT <blockquote> <p> gcc.compile.c++ &lt;builddir&gt;/boost/bin.v2/libs/date_time/build/gcc-4.3.1/release/threading-multi/gregorian/greg_month.o </p> </blockquote> <blockquote> <blockquote> <p> "mipsel-poky-linux-musl-g++" "-mel" "-mabi=32" "-msoft-float" "-march=mips32r2" "-mips16" "-minterlink-compressed" "-mtune=24kec" "-mdsp" "-Wl,-O1" "-Wl,--as-needed" "-fstack-protector-strong" "-Wl,-z,relro,-z,now" "--sysroot=&lt;sysroot&gt;" -ftemplate-depth-128 -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=&lt;srcdir&gt;=/usr/src/debug/boost/1.61.0-<a class="missing changeset" title="No changeset 0 in the repository">r0</a> -fdebug-prefix-map=&lt;sysroot_host&gt;= -fdebug-prefix-map=&lt;sysroot&gt;= -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fvisibility-inlines-hidden -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "&lt;builddir&gt;/boost/bin.v2/libs/date_time/build/gcc-4.3.1/release/threading-multi/gregorian/greg_month.o" "libs/date_time/src/gregorian/greg_month.cpp" </p> </blockquote> </blockquote> <p> </p> <blockquote> <p> {standard input}: Assembler messages: {standard input}:17603: Warning: the `dsp' extension requires MIPS32 revision 2 or greater {standard input}:17604: Error: unrecognized opcode `ll $3,4($16)' {standard input}:17606: Error: unrecognized opcode `sc $2,4($16)' {standard input}:17734: Error: unrecognized opcode `ll $3,8($16)' {standard input}:17736: Error: unrecognized opcode `sc $2,8($16)' {standard input}:18084: Error: unrecognized opcode `ll $3,4($4)' {standard input}:18086: Error: unrecognized opcode `sc $2,4($4)' {standard input}:18318: Error: unrecognized opcode `ll $3,8($4)' {standard input}:18320: Error: unrecognized opcode `sc $2,8($4)' {standard input}:19921: Error: unrecognized opcode `ll $3,4($2)' {standard input}:19923: Error: unrecognized opcode `sc $3,4($2)' {standard input}:20199: Error: unrecognized opcode `ll $4,4($16)' {standard input}:20201: Error: unrecognized opcode `sc $2,4($16)' {standard input}:23392: Error: unrecognized opcode `ll $4,8($16)' {standard input}:23394: Error: unrecognized opcode `sc $2,8($16)' ...failed updating 1 target... </p> </blockquote> <p> </p> <blockquote> <p> include/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp contains hand-written MIPS assembly, which is not compatible with the MIPS16e instruction set. </p> </blockquote> git@… https://svn.boost.org/trac10/ticket/12418 https://svn.boost.org/trac10/ticket/12418 Report #12416: Windows: shared_mutex::state_data exceptions thrown in synthetic tests Sun, 28 Aug 2016 23:21:13 GMT Sun, 19 Feb 2017 10:53:41 GMT <p> Hi, My name is Tomer Gal. </p> <p> We have created synthetic benchmarks in which we create many threads. This causes shared_mutex to throw an exception when it has more than 2047 waiting threads due to the following limits: </p> <blockquote> <p> struct state_data { </p> <blockquote> <p> unsigned shared_count:11, </p> <blockquote> <p> shared_waiting:11, exclusive:1, upgrade:1, exclusive_waiting:7, exclusive_waiting_blocked:1; </p> </blockquote> </blockquote> </blockquote> <p> Obviously, creating more than 2047 threads waiting for a lock is too much for 'normal' code... however, the boost library shouldn't be the limiting factor for such a usage in my opinion. </p> <p> The state_data is currently limited to the size of(long) which is 32 bits, and it looks like it could be increased to 64 bits. </p> <p> Could this be fixed? </p> <p> Regards, Tomer Gal, CTO at <a class="missing wiki">OpTeamizer</a> </p> Tomer Gal <Tomer.Gal@…> https://svn.boost.org/trac10/ticket/12416 https://svn.boost.org/trac10/ticket/12416 Report #12409: Building boost using different calling conventions Tue, 23 Aug 2016 22:51:54 GMT Tue, 23 Aug 2016 22:51:54 GMT <p> Hi all, I need the boost libraries built using the stdcall convention, as opposed to the cdecl convention I believe the pre-compiled libraries are built on. I have been doing so using Boost.Build using the CXXFLAGS=\Gz option. Unfortunately, it seems that the library naming doesn't cater for this variation (unlike release/debug, 32/64, etc.), just as it is not identified in config/auto_link.hpp. Is there a reason behind that, or am I missing something? It's a long shot, but should I assume this is not something considered for addition? Any guidance on how best to build, name, identify and link the boost libraries using a different calling convention than cdecl would much appreciated. </p> fabrice.lecuyer@… https://svn.boost.org/trac10/ticket/12409 https://svn.boost.org/trac10/ticket/12409 Report #12406: socket_select_interrupter throws exception when 127.0.0.1 was mapped to another IP address. Mon, 22 Aug 2016 15:38:02 GMT Mon, 22 Aug 2016 15:38:02 GMT <p> I’m developing an application using boost.asio for network communication under Windows. One of my customers complaints that the application crashes frequently. Later I find out that an system error exception was thrown within socket_select_interrupter::open_descriptors, at line 88, and the error code was 10061. </p> <p> As the code in that method shows, an acceptor socket is bound to 127.0.0.1, and then getsockname is called to get the actual address bound with the socket. This address will be used by a client socket to connect to. The problem is that after calling getsockname, the returned address is set to 127.0.0.1 immediately, for some broken firewalls. In most case, this is all right, getting address from a socket which bound to 127.0.0.1 will return 127.0.0.1, obviously. But here is an exception. My customer makes an IP mapping in his router, maps 127.0.0.1 to another IP, causing the socket is bound to a total different address. Thus the client socket fails to connect to 127.0.0.1, and an exception is thrown. </p> <p> My approach to solve this problem is setting the address to 127.0.0.1 only when it is 0.0.0.0, just like the code shows below. This fixes the crash of my customer. </p> <pre class="wiki">// Some broken firewalls on Windows will intermittently cause getsockname to // return 0.0.0.0 when the socket is actually bound to 127.0.0.1. We // explicitly specify the target address here to work around this problem. if (addr.sin_addr.s_addr == socket_ops::host_to_network_long(INADDR_ANY)) { addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK); } </pre><p> I think my customer is not the only one who meets this problem, and I hope it will be solved in the future version of boost. </p> zephyryu <zplutor@…> https://svn.boost.org/trac10/ticket/12406 https://svn.boost.org/trac10/ticket/12406 Report #12403: wave: #include with an empty file causes a crash under Windows Sat, 20 Aug 2016 22:31:14 GMT Sat, 20 Aug 2016 22:49:24 GMT <p> If a file included with #include is processed by boost wave, it will crash with an access violation under Windows. It doesn't appear to crash under Linux, though it could still be an issue that just isn't bad enough to bring down the whole system. </p> <p> The following is an example: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&quot;Empty.h&quot;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> Note that Empty.h must be <em>completely</em> empty, including no terminating newline. </p> anonymous https://svn.boost.org/trac10/ticket/12403 https://svn.boost.org/trac10/ticket/12403 Report #12399: minmax_element in Boost.Range Thu, 18 Aug 2016 02:12:25 GMT Thu, 18 Aug 2016 02:12:25 GMT <p> The Boost Range library has the min_element and max_element algorithms. However it's curiously missing the minmax_element algorithm from C++11. This is a request to add this algorithm to Boost.Range. </p> Brian Pantaleon <bpantaleonh@…> https://svn.boost.org/trac10/ticket/12399 https://svn.boost.org/trac10/ticket/12399 Report #12397: static_assert in arg.hpp failing when using boost::placeholder with std::bind Wed, 17 Aug 2016 10:42:49 GMT Fri, 19 Aug 2016 22:35:54 GMT <p> In our project we currently use std::bind with boost::placeholers because boost::placeholders are already global namespace and some some of the dependency (header) libraries might depend on this so we can't use BOOST_BIND_NO_PLACEHOLDERS currently. </p> <p> So we make boost::placeholers work with std::bin with this code: </p> <pre class="wiki">namespace std { template&lt;int N&gt; struct is_placeholder&lt;boost::arg&lt;N&gt;&gt; : public integral_constant&lt;int, N&gt; {}; } </pre><p> This worked fine, but since boost 1.60 when BOOST_CONSTEXPR was added to the boost::arg contructor the compliation fails for some of our developers with </p> <pre class="wiki">error: static assertion failed: I == is_placeholder&lt;T&gt;::value BOOST_STATIC_ASSERT( I == is_placeholder&lt;T&gt;::value ); </pre><p> from arg.hpp </p> anonymous https://svn.boost.org/trac10/ticket/12397 https://svn.boost.org/trac10/ticket/12397 Report #12395: Asio Serial_port does not work after unplug and plug the cable back (reconnection) Tue, 16 Aug 2016 13:13:30 GMT Tue, 16 Aug 2016 13:13:30 GMT <p> After unplug and plug the cable during runtime, the write_some operation returns the number of bytes written but if you check the other side no bytes were sent. If we restart the runtime, it works again. </p> <p> The workaround I am trying to implement is if I have any timeout conditions I will release the resources and open the port again. </p> paulorbhell@… https://svn.boost.org/trac10/ticket/12395 https://svn.boost.org/trac10/ticket/12395 Report #12394: boost::lockfree::queue with gcc-4.6 + optimization Mon, 15 Aug 2016 15:21:25 GMT Mon, 15 Aug 2016 15:23:45 GMT <p> I am seeing a potential issue with lockfree queue when using gcc-4.6 with compilation optimization turned on. </p> <p> The behavior i'm seeing is that call to push() which returns true does not guarantee that the pushed element is consumable immediately. (i.e. a subsequent call to pop() might return false. after further debugging it seems like the element _will become_ consumable but it might take few more cpu cycles till this happens. this issue is not happening when turning the compiler optimizations off or when using gcc-4.8. </p> <p> here is the test program i am using to reproduce the issue, which is spawning 2 threads, each of them looping through push() and then pop(), and at one point, the call to pop() fails which should never fail. </p> <p> compilation line: </p> <pre class="wiki">g++-4.6 -O1 -g -fno-inline -pthread -m64 -I/usr/local/include -c lockfree_test.cpp -o lockfree_test.cpp.o </pre><p> sample program: </p> <pre class="wiki">struct SemTask { int x; }; boost::lockfree::queue&lt;SemTask * &gt; queue(1); void* runner(void* arg) { std::cout &lt;&lt; '.' &lt;&lt; std::endl; while (!t_exit) { SemTask * task = new SemTask(); assert(queue.push(task)); assert(queue.pop(task)); delete task; } return NULL; } int main(int argc, char** argv) { assert(queue.is_lock_free()); #define NUM_THRD 2 pthread_t inc_x_thread[NUM_THRD]; for (int i = 0; i &lt; NUM_THRD; ++i) { if(pthread_create(&amp;inc_x_thread[i], NULL, runner, NULL)) { fprintf(stderr, "Error creating thread\n"); return -1; } } for (int i = 0; i &lt; NUM_THRD; ++i) { if(pthread_join(inc_x_thread[i], NULL)) { fprintf(stderr, "Error joining thread\n"); return -1; } } return 0; } </pre> ygabay@… https://svn.boost.org/trac10/ticket/12394 https://svn.boost.org/trac10/ticket/12394 Report #12393: Some geometry headers fail to compile indepedently Mon, 15 Aug 2016 08:10:55 GMT Fri, 19 Aug 2016 21:18:02 GMT <p> Following on from <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/12289" title="#12289: Bugs: Compile errors if you include boost/geometry/algorithms/buffer.hpp directly (closed: fixed)">ticket:12289</a>, I've identified some other Geometry headers that don't compile independently (under Clang) in violation of the <a href="http://www.boost.org/development/header.html">Boost header policy</a> : </p> <blockquote class="citation"> <p> Make sure that a translation unit consisting of just the contents of the header file will compile successfully. </p> </blockquote> <p> I attach an output file detailing the errors I've seen. </p> <p> I excluded <code>[...]/detail/[...]</code> headers from the list to check. </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/12393 https://svn.boost.org/trac10/ticket/12393 Report #12392: boost::iostreams::mapped_file fails during creating file with zero length Mon, 15 Aug 2016 07:09:07 GMT Mon, 15 Aug 2016 07:09:07 GMT <p> example <br /> </p> <pre class="wiki">boost::iostreams::mapped_file_params par; boost::iostreams::mapped_file file; par.path = 'some.file'; par.offset = 0; par.new_file_size = 0; file.open(par); </pre> surtaevm@… https://svn.boost.org/trac10/ticket/12392 https://svn.boost.org/trac10/ticket/12392 Report #12385: program_options ignores long_allow_next Tue, 09 Aug 2016 16:00:31 GMT Tue, 09 Aug 2016 16:00:31 GMT <p> Setting the style to long_allow_next does not work and only --file=filename style options are accepted. Was OK in 1.57 but does not work as of 1.60 </p> Shai Shasag <shai@…> https://svn.boost.org/trac10/ticket/12385 https://svn.boost.org/trac10/ticket/12385 Report #12384: GetCurrentProcessId : is filling to get definition on "WinCE platform" for Release mode Tue, 09 Aug 2016 08:25:20 GMT Thu, 02 Aug 2018 11:24:45 GMT <p> We are getting below error from process.hpp for "<a class="missing wiki">GetCurrentProcessId</a>" on WinCE platform: </p> <p> \boost\implementation\boost_1_59_0\include\boost\detail\winapi\process.hpp(34) : error C2039: '<a class="missing wiki">GetCurrentProcessId</a>' : is not a member of '`global namespace<em> </em></p> <p> I have tried by including "kfuncs.h" for avoiding "error C2039: '<a class="missing wiki">GetCurrentProcessId</a>' : is not a memmber of '`global namespace" in "boost\detail\winapi\process.hpp", which resolves the above error but leading to the deferent errors listed below leading to cascading errors like below. </p> <p> "error C2039: 'Sleep' : is not a member of '`global namespace, error C2873: 'Sleep' : symbol cannot be used in a using-declaration<em> in "boost\detail\winapi\thread.hpp" for that i have added "#include &lt;Winbase.h&gt;" </em></p> <p> After that getting errors like "error C2732: linkage specification contradicts earlier specification for '<a class="missing wiki">TlsAlloc</a>',see declaration of '<a class="missing wiki">TlsAlloc</a>" from "windows ce tools\sdks\sdk2wince7\include\armv4i\winbase.h". </p> manoharreddy620@… https://svn.boost.org/trac10/ticket/12384 https://svn.boost.org/trac10/ticket/12384 Report #12383: boost::asio fails to read more than 65536 bytes from file asyncronously Tue, 09 Aug 2016 07:10:21 GMT Wed, 10 Aug 2016 10:46:28 GMT <p> When more than <code>65536</code> bytes are read into a buffer from a file using <code>boost::asio::windows::stream_handle</code> asynchronously, then buffer contains the wrong data after reading is completed. </p> <p> Starting from <code>65537</code>th byte the buffer contains the the data from the very beginning of the file, rather than the expected data. </p> <p> Here is a code example, which reproduces the issue: </p> <pre class="wiki">auto handle = ::CreateFile(L"BigFile.xml", GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nullptr); boost::asio::io_service ios; boost::asio::windows::stream_handle streamHandle(ios, handle); const auto to_read_bytes = 100000; char buffer[to_read_bytes]; boost::asio::async_read(streamHandle, boost::asio::buffer(buffer, to_read_bytes), [](auto &amp;ec, auto read) { std::cout &lt;&lt; "Bytes read: " &lt;&lt; read &lt;&lt; std::endl; }); ios.run(); auto bufferBegin = std::string(buffer, 38); auto bufferCorrupted = std::string(buffer + 65536, 38); // &lt;- it contains bytes from the beginning of the file std::cout &lt;&lt; "offset 0: " &lt;&lt; bufferBegin &lt;&lt; std::endl; std::cout &lt;&lt; "offset 65536: " &lt;&lt; bufferCorrupted &lt;&lt; std::endl; ::CloseHandle(handle); </pre><p> That code produces an output: </p> <blockquote class="citation"> <p> <code>Bytes read: 100000</code> <br /> <code>offset 0: &lt;?xml version="1.0" encoding="UTF-8"?&gt;</code> <br /> <code>offset 65536: &lt;?xml version="1.0" encoding="UTF-8"?&gt;</code> <br /> </p> </blockquote> <p> The source file is a valid XML file, which is bigger than 65536 bytes in size. </p> <p> This is reproducible with boost 1.61 + VS2015. Also that issue was in boost 1.55 + VS2010. <br /> Operating systems are: Windows 7 and Windows Server 2008R2. </p> AStepanjuk@… https://svn.boost.org/trac10/ticket/12383 https://svn.boost.org/trac10/ticket/12383 Report #12382: nvcc 7.5 unable to compile boost/numeric/odeint example Mon, 08 Aug 2016 16:06:42 GMT Mon, 08 Aug 2016 16:06:42 GMT <p> I'm trying to compile the boost example <a class="ext-link" href="https://github.com/headmyshoulder/odeint-v2/blob/master/examples/thrust/lorenz_parameters.cu"><span class="icon">​</span>lorenz_parameters.cu</a> referenced by the <a href="http://www.boost.org/doc/libs/1_60_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/tutorial/using_cuda__or_openmp__tbb_______via_thrust.html">boost tutorial</a>. </p> <p> Changes I made to reduce the number of errors: </p> <pre class="wiki">$ diff lorenz_parameters.cu.orig lorenz_parameters.cu 32c32,34 &lt; typedef double value_type; --- &gt; //typedef double value_type; &gt; typedef float value_type; &gt; 35,38c37,40 &lt; typedef thrust::device_vector&lt; value_type &gt; state_type; &lt; typedef thrust::device_vector&lt; size_t &gt; index_vector_type; &lt; // typedef thrust::host_vector&lt; value_type &gt; state_type; &lt; // typedef thrust::host_vector&lt; size_t &gt; index_vector_type; --- &gt; //typedef thrust::device_vector&lt; value_type &gt; state_type; &gt; //typedef thrust::device_vector&lt; size_t &gt; index_vector_type; &gt; typedef thrust::host_vector&lt; value_type &gt; state_type; &gt; typedef thrust::host_vector&lt; size_t &gt; index_vector_type; </pre><p> compiler output: (same for gcc-4.9 and gcc-5) </p> <pre class="wiki">$ nvcc -std=c++11 -o lorenz_parameters lorenz_parameters.cu lorenz_parameters.cu(279): error: no instance of overloaded function "integrate_adaptive" matches the argument list argument types are: (boost::numeric::odeint::controlled_runge_kutta&lt;boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt;, lorenz_system, std::pair&lt;thrust::detail::normal_iterator&lt;value_type *&gt;, thrust::detail::normal_iterator&lt;value_type *&gt;&gt;, double, double, const value_type) /usr/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp(103): error: no instance of overloaded function "boost::numeric::odeint::controlled_runge_kutta&lt;ErrorStepper, ErrorChecker, StepAdjuster, Resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt;::try_step [with ErrorStepper=boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, ErrorChecker=boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, StepAdjuster=boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, Resizer=boost::numeric::odeint::initially_resizer]" matches the argument list argument types are: (lorenz_perturbation_system, state_type, double, double) object type is: boost::numeric::odeint::controlled_runge_kutta&lt;boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt; detected during: instantiation of "size_t boost::numeric::odeint::detail::integrate_adaptive(Stepper, System, State &amp;, Time &amp;, Time, Time &amp;, Observer, boost::numeric::odeint::controlled_stepper_tag) [with Stepper=boost::numeric::odeint::controlled_runge_kutta&lt;boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt;, System=lorenz_perturbation_system, State=state_type, Time=double, Observer=boost::numeric::odeint::null_observer]" /usr/include/boost/numeric/odeint/integrate/integrate_adaptive.hpp(45): here instantiation of "size_t boost::numeric::odeint::integrate_adaptive(Stepper, System, State &amp;, Time, Time, Time, Observer) [with Stepper=boost::numeric::odeint::controlled_runge_kutta&lt;boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt;, System=lorenz_perturbation_system, State=state_type, Time=double, Observer=boost::numeric::odeint::null_observer]" /usr/include/boost/numeric/odeint/integrate/integrate_adaptive.hpp(83): here instantiation of "size_t boost::numeric::odeint::integrate_adaptive(Stepper, System, State &amp;, Time, Time, Time) [with Stepper=boost::numeric::odeint::controlled_runge_kutta&lt;boost::numeric::odeint::runge_kutta_dopri5&lt;state_type, value_type, state_type, value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations, boost::numeric::odeint::initially_resizer&gt;, boost::numeric::odeint::default_error_checker&lt;value_type, boost::numeric::odeint::thrust_algebra, boost::numeric::odeint::thrust_operations&gt;, boost::numeric::odeint::default_step_adjuster&lt;value_type, value_type&gt;, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag&gt;, System=lorenz_perturbation_system, State=state_type, Time=double]" lorenz_parameters.cu(285): here lorenz_parameters.cu(43): warning: variable "sigma" was declared but never referenced lorenz_parameters.cu(44): warning: variable "b" was declared but never referenced 2 errors detected in the compilation of "/tmp/tmpxft_00000806_00000000-9_lorenz_parameters.cpp1.ii". </pre><p> system details: </p> <ul><li>Linux sid 4.6.0-1-amd64 SMP Debian 4.6.4-1 (2016-07-18) x86_64 GNU/Linux </li><li>libcuda1 361.45.18-2 </li><li>libthrust-dev 1.8.1-1 </li><li>nvidia-cuda-toolkit 7.5.18-2 <ul><li>nvcc V7.5.17 </li></ul></li><li>libboost1.60-all-dev 1.60.0+dfsg-6 </li><li>gcc: <ul><li>5.4.0-6 </li><li>4.9.3-14 </li></ul></li></ul> Olaf Pichler <boost.olaf@…> https://svn.boost.org/trac10/ticket/12382 https://svn.boost.org/trac10/ticket/12382 Report #12381: Bootstrap.bat error Thu, 04 Aug 2016 12:33:11 GMT Thu, 04 Aug 2016 12:33:11 GMT <p> Hi, i'm using visual studio 2015 and I am trying to run bootstrap however I get "ERROR: Cannot determine the location of the VS Common Tools folder." </p> kylej.ukr@… https://svn.boost.org/trac10/ticket/12381 https://svn.boost.org/trac10/ticket/12381 Report #12380: property_tree::ordered_end() missing Thu, 04 Aug 2016 07:25:05 GMT Thu, 04 Aug 2016 07:25:05 GMT <p> Surely there should be an ::ordered_end() to go with ::ordered_begin() ? </p> <p> Currently, you must use ::not_found(), and the only indication that it is the same as ordered_end() is in the comments in the code. </p> harris.pc@… https://svn.boost.org/trac10/ticket/12380 https://svn.boost.org/trac10/ticket/12380 Report #12379: Yet another problems with boolean operations with shared edges Wed, 03 Aug 2016 14:43:05 GMT Wed, 03 Aug 2016 14:46:05 GMT <p> Difference of polylineLINESTRING(4 4, 4 0, 2 0, 2 -2) and polygon POLYGON((0 0, 0 8, 8 8, 8 0, 4 0, 2 0, 0 0)) (see ascii-art below) is empty. </p> <p> +-------------+ | | | | | + | | | | +---+---+-----+ </p> <blockquote> <p> | + </p> </blockquote> anton.kovalev.239@… https://svn.boost.org/trac10/ticket/12379 https://svn.boost.org/trac10/ticket/12379 Report #12377: boost::filesystem::exist() returns false when file exist in system Wed, 03 Aug 2016 12:25:18 GMT Wed, 03 Aug 2016 12:25:18 GMT <p> I am writing a program for finding the particular file on windows. I have a file in C:\Windows\System32\FNTCACHE.DAT when I am finding for this boost::filesystem::exist() returns false. I checked the path, the file exist in system. </p> <p> I tried to check status though filesystem::status() funstion. It returns file_not_found. Please let me know why it is returning false and file_not_found ? </p> <p> I am working on Windows. </p> <p> Thanks </p> girishjoshi189@… https://svn.boost.org/trac10/ticket/12377 https://svn.boost.org/trac10/ticket/12377 Report #12376: boost::filesystem::exist() returns false when file exist in system Wed, 03 Aug 2016 12:24:58 GMT Tue, 16 Aug 2016 01:22:33 GMT <p> I am writing a program for finding the particular file on windows. I have a file in C:\Windows\System32\FNTCACHE.DAT when I am finding for this boost::filesystem::exist() returns false. I checked the path, the file exist in system. </p> <p> I tried to check status though filesystem::status() funstion. It returns file_not_found. Please let me know why it is returning false and file_not_found ? </p> <p> I am working on Windows. </p> <p> Thanks </p> girishjoshi189@… https://svn.boost.org/trac10/ticket/12376 https://svn.boost.org/trac10/ticket/12376 Report #12375: Patch fixing use of boost::icl w/ MSVC CL.exe /P Wed, 03 Aug 2016 10:51:40 GMT Wed, 03 Aug 2016 10:53:46 GMT <p> This patch makes it possible to use this header in programs built using the FASTbuild (<a class="ext-link" href="http://fastbuild.org"><span class="icon">​</span>http://fastbuild.org</a>) and more precisely its caching feature. </p> <p> Considering the following code: </p> <p> clmacro.cpp: </p> <pre class="wiki">int main(void) { #define funny_type(x) x funny_type(int)const a = 2; // cl.exe -P clmacro.cpp -&gt; `intconst a` } </pre><p> On MSVC (Visual Studio 2013) Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x86 Copyright (C) Microsoft Corporation. All rights reserved. </p> <p> This compiles correctly by default with <code>CL.exe</code> </p> <pre class="wiki">Cl.exe clmacro.cpp </pre><p> However when using the <code>/P</code> compilation flag to obtain the pre-processed source, then trying to compile the resulting file this will fail because const gets stitched to the other symbol before compilation. </p> <p> See: </p> <pre class="wiki">cl.exe -P -Ficlmacro.i.cpp clmacro.cpp &amp;&amp; cl.exe clmacro.i.cpp </pre> anonymous https://svn.boost.org/trac10/ticket/12375 https://svn.boost.org/trac10/ticket/12375 Report #12374: doku bug boost::adaptors::sliced Wed, 03 Aug 2016 09:09:49 GMT Sat, 24 Sep 2016 14:42:22 GMT <blockquote> <p> Precondition: 0 &lt;= n &amp;&amp; n &lt;= m &amp;&amp; m &lt; distance(rng) </p> </blockquote> <p> must be </p> <blockquote> <p> Precondition: 0 &lt;= n &amp;&amp; n &lt;= m &amp;&amp; m =&lt; distance(rng) </p> </blockquote> <p> example: </p> <p> std::vector&lt;int&gt; vec; vec.push_back(3); auto wholeVectorSlice=boost::adaptors::slice(vec,0,vec.size()); <em>distance(rng)==1 </em></p> <p> Otherwise it woudln't be possible to include the last element of the input range in the slice. </p> brix@… https://svn.boost.org/trac10/ticket/12374 https://svn.boost.org/trac10/ticket/12374 Report #12373: Basic sign conversion Wed, 03 Aug 2016 07:10:11 GMT Wed, 03 Aug 2016 07:10:11 GMT <p> Mature libraries like boost.filesystem shouldn't be giving these sorts of errors with '-Wconversion' checks... </p> <pre class="wiki">/Users/brett/local/include/boost/filesystem/string_file.hpp:27:27: warning: implicit conversion changes signedness: 'size_type' (aka 'unsigned long') to 'streamsize' (aka 'long') [-Wsign-conversion] file.write(str.c_str(), str.size()); ~~~~ ^~~~~~~~~~ /Users/brett/local/include/boost/filesystem/string_file.hpp:38:22: warning: implicit conversion changes signedness: 'std::size_t' (aka 'unsigned long') to 'streamsize' (aka 'long') [-Wsign-conversion] file.read(&amp;str[0], sz); </pre> Brett Hale <brettyhale@…> https://svn.boost.org/trac10/ticket/12373 https://svn.boost.org/trac10/ticket/12373 Report #12372: property_tree::get_optional without the template parameter Wed, 03 Aug 2016 01:25:11 GMT Wed, 03 Aug 2016 01:25:11 GMT <p> Is it possible to call </p> <p> tree.get_optional&lt;Data&gt;(path) without the &lt;Data&gt; ? Note that Data is the type of the tree's Data. </p> <p> Would also be nice to be able to get the data as a pointer so that data can be updated in-place instead of get/push. </p> <p> Like this, implemented as a free function (for the non-const variant): </p> <p> Data * get_dataptr_optional( Tree &amp; tree, string const&amp; path ) { </p> <blockquote> <p> if (optional&lt;Tree &amp;&gt; node = tree.get_child_optional(path)) </p> <blockquote> <p> return &amp;node-&gt;data(); </p> </blockquote> <p> return NULL; </p> </blockquote> <p> } </p> <p> cheers, Paul </p> harris.pc@… https://svn.boost.org/trac10/ticket/12372 https://svn.boost.org/trac10/ticket/12372 Report #12370: Make winapi_mutex_wrapper official Tue, 02 Aug 2016 15:56:43 GMT Tue, 02 Aug 2016 15:56:43 GMT <p> I couldn't find a reference in the documentation. The winapi_mutex_wrapper has some advantages over the named_mutex: </p> <ul><li>+ not file based; i.e. no chance of leaking files in case crash </li><li>+ no problem of singleton destruction order. We use 'remove' in our own singleton but that gives a problem being in 'atexit' </li><li>- Win32 / Win64 specific </li></ul><p> While portability is a good thing, we solely develop for Windows so the more handy Windows solution is ok. There is already a windows_shared_memory (which is also more handy than the portable shared_memory_object). Can't this one be promoted to official? </p> gast128@… https://svn.boost.org/trac10/ticket/12370 https://svn.boost.org/trac10/ticket/12370 Report #12368: Improve property_tree documentation for path_of Tue, 02 Aug 2016 08:44:13 GMT Tue, 10 Jan 2017 07:01:44 GMT <p> There is no documentation on the path_of system, </p> <p> I did find this helpful email: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2009/06/152883.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2009/06/152883.php</a> </p> <p> It would be great if something like that were in the official documentation. </p> <p> In the end, I managed to create my own extension for storing a tree of filenames, here is the key code, just in case you feel its a good example for the documentation. </p> <p> (Code is still not fully tested) </p> <pre class="wiki">// a custom path-string, // I am not using fs::path because I need to treat a directory and a file // differently in terms of the name, where // a directory has a / on the end of its name. // This allows me to have a tree with a file and folder existing in the tree // at the same time (the file may have been replaced with the folder, so one // is deleted and the other is created). // class PathString { string filename; public: PathString( string const&amp; p ) : filename(p) {} bool is_dir() const { return not empty() and filename[filename.size()-1] == '/'; } string const&amp; str() const { return filename; } bool empty() const { return filename.empty(); } bool operator&lt;( PathString const&amp; b ) const { return filename &lt; b.filename; } bool operator==( PathString const&amp; b ) const { return filename == b.filename; } }; namespace boost { namespace property_tree { // specialisation of path_of for PathString template &lt;&gt; struct path_of&lt;PathString&gt; { struct type { std::string filename; std::string::size_type start, size; public: type( std::string const&amp; s ) : filename(s), start(0), size(filename.size()) {} std::string dump() const { return filename.substr(start); } bool empty() const { return start == size; } // aka pop_front() and return the fragment // modifies this value std::string reduce() { assert(not empty()); std::string::size_type next_sep = filename.find('/', start); // no separator, or separator found at the end if (next_sep == std::string::npos or next_sep+1 == size) { std::string part; part.swap(filename); return part; } // include the trailing separator std::string::size_type old_start = start; start = next_sep+1; return filename.substr(old_start, start-old_start); } bool single() const { // will return true if empty, it should not be asked for empty paths anyway // it is a "single" path if there is a slash BEFORE the last character. // if the last character is /, then it can be a "single" directory. // // so check if idx &lt; filename.size()-1 --therefore--&gt; idx+1 &lt; filename.size() std::string::size_type idx = filename.find('/'); return idx == std::string::npos or idx+1 &lt; filename.size(); } }; }; </pre> harris.pc@… https://svn.boost.org/trac10/ticket/12368 https://svn.boost.org/trac10/ticket/12368 Report #12365: fail to build under mingw Sat, 30 Jul 2016 08:45:21 GMT Fri, 10 Feb 2017 09:25:00 GMT <p> Hi there. I cannot install boost under mingw. Accordingly to documentation i should start with bootstrap.bat without arguments in tools\build\ but it fails to run with reason: "'cl' is not recognized as an internal or external command" </p> <p> (of course it is not recognized, i don't have visual studio at all!) </p> <p> While i'm trying to run .\bootstrap.bat mingw i've got 'Unknown toolset: mingw' </p> <p> Please, create rigth documentation to build it under mingw so that user should'n try different propositions like from <a class="ext-link" href="http://stackoverflow.com/questions/38103244/building-boost-1-61-0-with-mingw-5-3-0"><span class="icon">​</span>http://stackoverflow.com/questions/38103244/building-boost-1-61-0-with-mingw-5-3-0</a> which doesn't work </p> anonymous https://svn.boost.org/trac10/ticket/12365 https://svn.boost.org/trac10/ticket/12365 Report #12361: in string_parse_tree one constructor does not initialize m_value Fri, 29 Jul 2016 13:05:25 GMT Fri, 29 Jul 2016 13:05:25 GMT <p> This will lead to undefined behavior. The constructor: </p> <pre class="wiki"> string_parse_tree(collection_type names, unsigned int starting_point=0) </pre><p> is at fault here and needs to be fixed. Identified by coverity and appears to be present in the development trunk. </p> James E. King, III <jim.king@…> https://svn.boost.org/trac10/ticket/12361 https://svn.boost.org/trac10/ticket/12361 Report #12360: dead code detected by coverity in mersenne_twister Fri, 29 Jul 2016 12:42:17 GMT Thu, 04 May 2017 04:00:00 GMT <p> This is from boost 1.54 - it would be wise to re-test this on the development trunk to ensure it is still there before resolving it. This would be considered a trivial performance optimization by removing a branch. </p> <pre class="wiki"> { assignment: Assigning: j = 623UL. const: At condition j &lt; 623UL, the value of j must be equal to 623. dead_error_condition: The condition j &lt; 623UL cannot be true. 430 for(std::size_t j = n-1-unroll_extra2; j &lt; n-1; j++) { CID 10152 (#1 of 1): Logically dead code (DEADCODE)dead_error_begin: Execution cannot reach this statement: y = (this-&gt;x[j] &amp; 0x8000000.... 431 UIntType y = (x[j] &amp; upper_mask) | (x[j+1] &amp; lower_mask); 432 x[j] = x[j-(n-m)] ^ (y &gt;&gt; 1) ^ ((x[j+1]&amp;1) * a); 433 } 434 } </pre> James E. King, III <jim.king@…> https://svn.boost.org/trac10/ticket/12360 https://svn.boost.org/trac10/ticket/12360 Report #12359: eventfd_select_interrupter calls fcntl without checking the return code Fri, 29 Jul 2016 12:27:03 GMT Fri, 29 Jul 2016 12:27:03 GMT <p> This occurs 8 times within the implementation file: </p> <p> Lines 51 to 55: </p> <pre class="wiki"> if (read_descriptor_ != -1) { ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); } </pre><p> Lines 67 to 71: </p> <pre class="wiki"> if (read_descriptor_ != -1) { ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); } </pre><p> Lines 78 to 86: </p> <pre class="wiki"> if (pipe(pipe_fds) == 0) { read_descriptor_ = pipe_fds[0]; ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); write_descriptor_ = pipe_fds[1]; ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK); ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC); } </pre><p> This goes as far back as 1.54 and is present in the development trunk. In these cases, what is the correct behavior if fcntl fails? I assume throwing a boost::system::error_code? Does any resource need to be released/closed explicitly in these cases? </p> James E. King, III <jim.king@…> https://svn.boost.org/trac10/ticket/12359 https://svn.boost.org/trac10/ticket/12359 Report #12358: epoll_reactor calls fcntl without checking return code Fri, 29 Jul 2016 12:12:09 GMT Fri, 29 Jul 2016 12:22:20 GMT <p> From lines 469 to 473 of epoll_reactor.ipp: </p> <pre class="wiki"> if (fd == -1 &amp;&amp; (errno == EINVAL || errno == ENOSYS)) { fd = epoll_create(epoll_size); if (fd != -1) ::fcntl(fd, F_SETFD, FD_CLOEXEC); } </pre><p> This is at least as far back as 1.54 however it is present in the development trunk too. Should this fcntl fail for some reason, what is the correct behavior? </p> jim.king@… https://svn.boost.org/trac10/ticket/12358 https://svn.boost.org/trac10/ticket/12358 Report #12357: Seg Fault running bcp in 1.61.0 when trying to build in custom namespace Thu, 28 Jul 2016 17:56:44 GMT Mon, 13 Feb 2017 14:27:02 GMT <p> Using Ubuntu 16.04.1 LTS, I was trying to install boost 1.61.0 in a custom name space. </p> <p> I downloaded boost, placed it into a directory, ran: </p> <p> $ ./booststap $ ./b2 tools/bcp $ mkdir -p /tmp/myboost $ ./dist/bin/bcp --namespace=myboost --namespace-alias accumulators algorithm array asio assign atomic bimap bind context chrono circular_buffer crc date_time filesystem foreach format fusion function geometry interprocess iostreams iterator lexical_cast lockfree math mpl pool program_options property_tree ptr_container random range regex signals2 system smart_ptr test thread timer tokenizer tuple utility uuid build boostrap.bat bootstrap.sh boostcpp.jam boost-build.jam /tmp/myboost/ </p> <p> This yields pages and pages of warnings, mostly about missing assets, and then seg faults. </p> <pre class="wiki"> CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_tester.hpp ... CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp INFO: tracking source dependencies of library smart_ptr due to presence of "void sp_scalar_constructor_hook( void * px, std::size_t size, void * pn );" in file "boost/smart_ptr/detail/sp_counted_impl.hpp" CAUTION: dependent file libs/accumulators/doc/html/boost/accumulators/impl/../../../images/accumulators//form_113.png does not exist. Found while scanning file libs/accumulators/doc/html/boost/accumulators/impl/weighted_variance_impl.html CAUTION: dependent file libs/accumulators/doc/html/boost/accumulators/impl/../../../images/accumulators//form_6.png does not exist. Found while scanning file libs/accumulators/doc/html/boost/accumulators/impl/weighted_variance_impl.html CAUTION: dependent file libs/accumulators/doc/html/boost/accumulators/impl/../../../images/accumulators//form_5.png does not exist. ... CAUTION: dependent file libs/asio/doc/html/boost_asio/reference/generic__datagram_protocol/../../../../../doc/src/boostbook.css does not exist. Found while scanning file libs/asio/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol.html CAUTION: dependent file libs/asio/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/../../../../../../doc/src/boostbook.css does not exist. Found while scanning file libs/asio/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/overload1.html CAUTION: dependent file libs/asio/doc/html/boost_asio/reference/generic__raw_protocol/../../../../../doc/src/boostbook.css does not exist. Found while scanning file libs/asio/doc/html/boost_asio/reference/generic__raw_protocol/endpoint.html Segmentation fault (core dumped) </pre><p> I've tried with relative paths and absolute paths, I've also reduced the number of packages, etc.. no difference. </p> <p> The same procedure works however with 1.60.0. </p> Matthew Russell <mrussell@…> https://svn.boost.org/trac10/ticket/12357 https://svn.boost.org/trac10/ticket/12357 Report #12356: Failed build for msvc 11.0 with global setup script in combination with rewrite option Thu, 28 Jul 2016 15:04:56 GMT Thu, 28 Jul 2016 15:04:56 GMT <p> <strong>Problem:</strong> The compilation of Boost with the utilization of a global setup script, that should be cached in C:\Temp, results in the error: "error: rewriting setup script for the second time". By the way, this error would be only shown, if one adds the line: </p> <pre class="wiki">import Errors ; </pre><p> in front of the proper error line in the file msvc.jam. Nevertheless the error occurs. </p> <hr /> <p> <strong>Prerequisite:</strong> </p> <ul><li>user-config.jam: <pre class="wiki">using msvc : 11.0 : : &lt;setup&gt;"C:\prepareEnvironment.bat" &lt;rewrite-setup-scripts&gt;always ; </pre></li></ul><hr /> <p> <strong>Reason:</strong> A closer look to the file msvc.jam shows that the global setup script is used to build the cache files for the standard as well as the phone setup in C:Ttemp. Although this is not bad, the circumstance that the script argument is additionally equal for both, the situation ends then badly with two problems. The first one is identified by the impossibility to differentiate the requests in the global setup scripts, and the second one leads to the reported error, becauser the generated name of the two different cache file is equal (C:\Temp\b2_msvc_prepareEnvironment_x86.cmd). The corresponding lines of code are: msvc.jam(985): </p> <pre class="wiki">local cpu = i386 amd64 ia64 arm ... local global-setup = [ feature.get-values &lt;setup&gt; : $(options) ] ; global-setup = $(global-setup[1]) ; local global-setup-phone = $(global-setup) ; ... local phone-cpu = i386 arm ; </pre><hr /> <p> <strong>Solution:</strong> Simply enable a second global script for the phone setup, which needs to have a different name, and/or append an additional postfix to the generated names of the cache files. This solution seems to be good, because the standard scripts in the Microsoft Visual Studio are also different (vcvarsall.bat versus vcvarsphoneall.bat). </p> <pre class="wiki">local global-setup = [ feature.get-values &lt;setup&gt; : $(options) ] ; global-setup = $(global-setup[1]) ; local global-setup-phone = [ feature.get-values &lt;setup-phone&gt; : $(options) ] ; global-setup-phone = $(global-setup-phone[1]) ; </pre> Christian.Steinle@… https://svn.boost.org/trac10/ticket/12356 https://svn.boost.org/trac10/ticket/12356 Report #12355: False self intersection Wed, 27 Jul 2016 15:00:08 GMT Wed, 27 Jul 2016 15:00:08 GMT <p> Please see the following code: </p> <pre class="wiki">#include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; using namespace boost::geometry; typedef double FloatType; typedef model::d2::point_xy&lt;FloatType&gt; Point; typedef model::polygon&lt;Point&gt; Polygon; typedef model::multi_polygon&lt;Polygon&gt; MultiPolygon; typedef model::ring&lt;Point&gt; Ring; typedef model::box&lt;Point&gt; Box; typedef model::linestring&lt;Point&gt; LineString; int main(int argc, char *argv[]) { using namespace std; Polygon p1; boost::geometry::read_wkt("POLYGON((440408.69120520249 5684415.5176829416," "440376.96050000004 5684329.5744000003," "440376.93154344801 5684329.5945822615," "440408.69005920028 5684415.5145825278," "440408.69120520249 5684415.5176829416))", p1); std::string err; bool valid = boost::geometry::is_valid(p1, err); cout &lt;&lt; "is_valid(p1): " &lt;&lt; (valid?"true":"false") &lt;&lt; ":\n" &lt;&lt; err &lt;&lt; endl; Polygon p2; boost::geometry::read_wkt("POLYGON((" "440408.83723096416 5684415.9121634094," "440421.56219999958 5684410.6604999993," "440423.30049999990 5684412.0036999993," "440439.33189999964 5684394.8839999996," "440423.75960000046 5684357.4199000001," "440420.99959999975 5684350.7814000007," "440404.12129999977 5684310.1740000006," "440393.24469999969 5684317.6517999992," "440377.49349999987 5684329.2028999999," "440376.96050000004 5684329.5744000003," "440408.69005920028 5684415.5145825278," "440408.69120520249 5684415.5176829416," "440408.83689894457 5684415.9118452258," "440408.83723096416 5684415.9121634094))", p2); MultiPolygon mp; union_(p1, p2, mp); cout &lt;&lt; "mp: " &lt;&lt; boost::geometry::wkt(mp) &lt;&lt; endl; return 0; } </pre><p> Output: </p> <pre class="wiki">is_valid(p1): false: Geometry has invalid self-intersections. A self-intersection point was found at (440409, 5.68442e+006); method: i; operations: i/u; segment IDs {source, multi, ring, segment}: {0, -1, -1, 0}/{0, -1, -1, 2} mp: MULTIPOLYGON(((440409 5.68442e+006,440409 5.68442e+006,440377 5.68433e+006,440409 5.68442e+006))) </pre><p> Both polygons (p1 and p2) are in fact valid, without any self-intersections. But boost.geometry sees one and can't union the two polygons correctly. </p> <p> Thank you, for the good work. </p> jan.kleemann@… https://svn.boost.org/trac10/ticket/12355 https://svn.boost.org/trac10/ticket/12355 Report #12354: boost::asio::connect crash when connect_condition sets iterator to end Wed, 27 Jul 2016 10:11:54 GMT Wed, 27 Jul 2016 10:11:54 GMT <p> example: </p> <pre class="wiki"> auto getIPV4Only = [](const error_code&amp; ec, iterator next) { resolver::iterator end; while (!ec &amp;&amp; next != end) { if (next-&gt;endpoint().address().is_v4()) return next; ++next; } return next; }; connect(socket, iterator, getIPV4Only, ec); //&lt;- crashes when getIPV4Only returns end </pre><p> fix: </p> <pre class="wiki"> --- include/boost/asio/impl/connect.hpp (revision 1.6.0) +++ include/boost/asio/impl/connect.hpp (working copy) @@ -122,7 +122,9 @@ s.connect(*iter, ec); if (!ec) return iter; - } + } else { + break; + } } if (!ec) </pre> snua12@… https://svn.boost.org/trac10/ticket/12354 https://svn.boost.org/trac10/ticket/12354 Report #12352: factory object fails to be assigned to function object when deducing constructor argument (C++11 only) Tue, 26 Jul 2016 14:08:36 GMT Tue, 26 Jul 2016 14:14:01 GMT <p> When assigning a constructed boost::factory to a boost::function and having the factory template automatically deduce the constructor parameter, it fails to build in C++11, but not C++98. </p> <p> I used g++ 5.4.0 on Linux, x86-64. </p> <p> I'm attaching both my minimal test program and the error output. </p> Matthew Hoops <matthewthoops@…> https://svn.boost.org/trac10/ticket/12352 https://svn.boost.org/trac10/ticket/12352 Report #12351: boost::make_shared doesn't use constructor forwarding through move emulation Tue, 26 Jul 2016 09:03:12 GMT Tue, 26 Jul 2016 09:03:12 GMT <p> Currently, boost::make_shared doesn't perform constructor forwarding unless C++11 r-value references are supported. This prevents using of MOVABLE_BUT_NOT_COPYABLE types as arguments to constructors. </p> <p> The Boost.Move documentation describes <a href="http://www.boost.org/doc/libs/1_59_0/doc/html/move/construct_forwarding.html">how to perform (limited) constructor forwarding</a>. It's example is perfectly applicable to boost::make_shared. </p> <p> The change in <a class="ext-link" href="https://github.com/boostorg/smart_ptr/pull/24"><span class="icon">​</span>boostorg/smart_ptr#24</a> implements constructor forwarding for make_shared as documented in Boost.Move's documentation. </p> <p> With this change the difference between the code supporting r-value references but not supporting variadic templates became the type signature and the call to boost::detail::sp_forward and boost::forward. The first difference was eliminated by using the macro BOOST_FWD_REF, the second by using boost::forward in both places, making the two pieces of code textually equal and thus I also removed the duplicate. </p> me@… https://svn.boost.org/trac10/ticket/12351 https://svn.boost.org/trac10/ticket/12351 Report #12347: linestring and polygon intersection wrong answer Sat, 23 Jul 2016 19:07:02 GMT Sat, 23 Jul 2016 19:07:02 GMT <p> LINESTRING(1 -1, 1 0, 1 1) and POLYGON((0 0, 0 2, 2 2, 2 0, 1 0, 0 0)) intersection is LINESTRING(1 -1, 1 0, 1 1) for integer coordinate type. Test code is attached. </p> <p> I beleive that's because of middle point of ((1 -1), (1, 0)) segment is (1, 0) :( </p> Anton Kovalev <anton.kovalev.239@…> https://svn.boost.org/trac10/ticket/12347 https://svn.boost.org/trac10/ticket/12347 Report #12346: Boost downloaded docs for asio don't work Fri, 22 Jul 2016 17:12:23 GMT Sun, 02 Oct 2016 17:07:57 GMT <p> The docs for asio located in the Boost download (<a class="ext-link" href="https://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.gz"><span class="icon">​</span>https://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.gz</a>) don't work. </p> anonymous https://svn.boost.org/trac10/ticket/12346 https://svn.boost.org/trac10/ticket/12346 Report #12344: boost::fusion::extension::struct_member_name doesn't work with a const sequence Fri, 22 Jul 2016 12:33:18 GMT Thu, 13 Oct 2016 15:29:41 GMT <p> Here is the code to reproduce the bug: </p> <div class="wiki-code"><div class="code"><pre><span class="k">struct</span> <span class="n">Hello</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">World</span><span class="p">;</span> <span class="p">};</span> <span class="n">BOOST_FUSION_ADAPT_STRUCT</span><span class="p">(</span><span class="n">Hello</span><span class="p">,</span> <span class="n">World</span><span class="p">);</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="n">Seq</span> <span class="o">=</span> <span class="k">const</span> <span class="n">Hello</span><span class="p">;</span> <span class="c1">// &lt;- works when const is removed</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">fusion</span><span class="o">::</span><span class="n">extension</span><span class="o">::</span><span class="n">struct_member_name</span><span class="o">&lt;</span><span class="n">Seq</span><span class="p">,</span> <span class="mi">0</span><span class="o">&gt;::</span><span class="n">call</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> <a class="ext-link" href="http://melpon.org/wandbox/permlink/0LiQIP59uLbWXFR6"><span class="icon">​</span>Link to wandbox</a> </p> <p> As stated in the comment, the code works fine when <code>const</code> is removed. </p> <p> I think that <code>struct_member_name</code> should call <code>std::remove_const</code> or <code>std::remove_cv</code>. </p> Benoit Blanchon <benoit@…> https://svn.boost.org/trac10/ticket/12344 https://svn.boost.org/trac10/ticket/12344 Report #12341: Enhancement for multi_array resize Thu, 21 Jul 2016 18:48:30 GMT Thu, 21 Jul 2016 18:48:30 GMT <p> Multi_array can have index_bases, it's really great, but resize only works for growing to the higher indexes. Would be nice to put a bit more code to resize it to the lower indexes as well, just add offset during a copy view to transfer data into a new array inside of the resize method. I've made an implementation outside of boost as a separate method. But it simple enough to add this resize downwards as well as upwards into the boost multi_array::resize implementation. </p> eugvor@… https://svn.boost.org/trac10/ticket/12341 https://svn.boost.org/trac10/ticket/12341 Report #12338: compiler warnings in unused variables and typedef Thu, 21 Jul 2016 12:46:15 GMT Thu, 21 Jul 2016 12:46:15 GMT <p> Compiling boost/numeric/interval gave compiler warnings. </p> <p> The following changes fixes these: </p> <pre class="wiki">--- boost_1_61_0/boost/numeric/interval/arith2.hpp 2016-05-05 23:13:19.000000000 +0200 +++ b/boost/numeric/interval/arith2.hpp 2016-07-21 14:19:20.675084428 +0200 @@ -273,7 +273,6 @@ if (interval_lib::detail::test_input(x)) return I::empty(); assert(k &gt; 0); if (k == 1) return x; - typename Policies::rounding rnd; typedef typename interval_lib::unprotect&lt;I&gt;::type R; if (!interval_lib::user::is_pos(x.upper())) { if (interval_lib::user::is_zero(x.upper())) { --- boost_1_61_0/boost/numeric/interval/utility.hpp 2016-05-05 23:13:19.000000000 +0200 +++ b/boost/numeric/interval/utility.hpp 2016-07-21 14:19:54.064881144 +0200 @@ -248,7 +248,6 @@ template&lt;class T, class Policies&gt; inline T norm(const interval&lt;T, Policies&gt;&amp; x) { - typedef interval&lt;T, Policies&gt; I; if (interval_lib::detail::test_input(x)) { typedef typename Policies::checking checking; return checking::nan(); </pre> anonymous https://svn.boost.org/trac10/ticket/12338 https://svn.boost.org/trac10/ticket/12338 Report #12335: Integer overflow in use counter of shared pointers. Wed, 20 Jul 2016 09:27:16 GMT Wed, 20 Jul 2016 09:27:16 GMT <p> We (Christian Wressnegger, Fabian Yamaguchi, and Alwin Maier) would like to report an integer overflow of the use counter in the <code>share_pointer</code> object of the Boost Libraries version 1.61.0 and before. Exploiting the flaw requires some very specific prerequisites to be met, a successful attempt however allows an attacker to execute code. Consequently, this might be worth addressing. </p> <p> The following conditions must hold true in order to trigger the overflow: </p> <ul><li>The target is compiled and runs on an architecture where sizeof(size_t) is larger than sizeof(int), e.g. 64 bit systems with the LP64 (Linux/ BSD) or LLP64 (Windows) data model in order to allocate more UINT_MAX Objects. </li></ul><ul><li>The attacker is capable of triggering the creation of a multitude of shared objects. </li></ul><ul><li>The attacker can make one of these shared pointers go out of scope, e.g., by instructing the system to remove a state object. </li></ul><p> The following short program (shared_ptr_overflow.cpp) demonstrates the bug: First, we create a shared pointer referencing a minimal class <code>MyClass</code>. Second, 0xFFFFFFFF more references are created which results in the use counter to flip over to 0 again. Finally, we add one more reference (use counter is incremented to 1) and make one of the shared pointers go out of scope. As a result the use counter is decremented to 0 and the contained object is freed, leaving 0xFFFFFFFF shared pointer object behind, that still reference that memory region. Subsequently, an attacker may allocate memory containing arbitrary data such as executable code to take the place of the freed object and make all references left behind point to that piece of data. </p> <pre class="wiki">--- snip (shared_ptr_overflow.cpp) ---- //#define HAS_ENOUGH_MEMORY int main() { std::cout &lt;&lt; "1) Create an object and pass it over to a shared pointer..." &lt;&lt; std::endl; // We initialize the object on the heap and set x to 10. shared_ptr&lt;MyClass&gt; ptr(new MyClass(10)); std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 1 const size_t numPtrs = (size_t) 0xFFFFFFFF; #ifdef HAS_ENOUGH_MEMORY std::cout &lt;&lt; "2) Create 0x" &lt;&lt; std::hex &lt;&lt; numPtrs &lt;&lt; " more references to that object..." &lt;&lt; std::endl; std::vector&lt;shared_ptr&lt;MyClass&gt;&gt; v(numPtrs); for (size_t i = 0; i &lt; numPtrs; i++) { v[i] = ptr; } std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 0 std::cout &lt;&lt; "3) Create one more reference..." &lt;&lt; std::endl; { shared_ptr&lt;MyClass&gt; ptr2 = ptr; std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 1 std::cout &lt;&lt; "4) That last reference goes out of scope again now..." &lt;&lt; std::endl; } #else { std::cout &lt;&lt; "2) Create an extra reference to that object..." &lt;&lt; std::endl; shared_ptr&lt;MyClass&gt; ptr2 = ptr; std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 2 std::cout &lt;&lt; "3) Emulate 0x" &lt;&lt; std::hex &lt;&lt; numPtrs &lt;&lt; " more references to that object..." &lt;&lt; std::endl; for(size_t i = 0; i &lt; numPtrs; i++){ memset(&amp;ptr, '\0', sizeof(shared_ptr&lt;MyClass&gt;)); ptr = ptr2; } std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 1 std::cout &lt;&lt; "4) One reference goes out of scope again now..." &lt;&lt; std::endl; } #endif std::cout &lt;&lt; " ptr.use_count() -&gt; " &lt;&lt; ptr.use_count() &lt;&lt; std::endl; // use-count is 0 std::cout &lt;&lt; "5) We now spray the heap with 'A's to overwrite the freed memory" &lt;&lt; std::endl; for(int i = 0; i &lt; 1000; i++){ char *foo = new char[4]; memset(foo, 'A', 4); } // The address stored in ptr is still that of the free'd object std::cout &lt;&lt; " ptr: " &lt;&lt; (void *) ptr.get() &lt;&lt; std::endl; // ptr-&gt;x is now 0x41414141 std::cout &lt;&lt; " value: " &lt;&lt; std::hex &lt;&lt; ptr-&gt;x &lt;&lt; std::endl; std::cout &lt;&lt; "*) Bye!" &lt;&lt; std::endl; #ifdef HAS_ENOUGH_MEMORY v.clear(); std::cout &lt;&lt; std::endl; std::cout &lt;&lt; "Destroying the last reference causes a double-free of the object..." &lt;&lt; std::endl; #endif return 0; } --- /snip --- </pre><p> For testing purposes the program can be compiled and run with the HAS_ENOUGH_MEMORY definition commented out, in order to reduce the hardware prerequisites. To test this, build the demo application using the provided make file, and execute the program as follows: </p> <pre class="wiki">--- snip --- $ make boost $ "./boost::shared_ptr" --- /snip --- </pre><p> This results in the following output: </p> <pre class="wiki">--- snip (output) --- 1) Create an object and pass it over to a shared pointer... ptr.use_count() -&gt; 1 2) Create an extra reference to that object... ptr.use_count() -&gt; 2 3) Emulate 0xffffffff more references to that object... ptr.use_count() -&gt; 1 4) One reference goes out of scope again now... destruct: 0x173d030 ptr.use_count() -&gt; 0 5) We now spray the heap with 'A's to overwrite the freed memory ptr: 0x173d030 value: 41414141 *) Bye! --- /snip --- </pre><p> In the following we point out the locations in the source code that make this attack possible. In the Boost library shared pointer (class shared_ptr) make use of <code>shared_count</code> objects for reference counting, which in turn uses a <code>sp_counted_base</code> implementation for a particular platform. </p> <pre class="wiki">--- snip (boost/smart_ptr/smart_ptr.hpp) --- template&lt;class T&gt; class shared_ptr { // ... private: element_type * px; // contained pointer boost::detail::shared_count pn; // reference counter (!) }; // shared_ptr --- /snip --- </pre><pre class="wiki">--- snip (boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp) --- class sp_counted_base { private: sp_counted_base( sp_counted_base const &amp; ); sp_counted_base &amp; operator= ( sp_counted_base const &amp; ); int use_count_; // #shared (A) int weak_count_; // #weak + (#shared != 0) public: sp_counted_base(): use_count_( 1 ), weak_count_( 1 ) { } virtual ~sp_counted_base() // nothrow { } // dispose() is called when use_count_ drops to zero, to release // the resources managed by *this. virtual void dispose() = 0; // nothrow // destroy() is called when weak_count_ drops to zero. virtual void destroy() // nothrow { delete this; } virtual void * get_deleter( sp_typeinfo const &amp; ti ) = 0; virtual void * get_untyped_deleter() = 0; void add_ref_copy() { atomic_increment( &amp;use_count_ ); (B) } bool add_ref_lock() // true on success { return atomic_conditional_increment( &amp;use_count_ ) != 0; } void release() // nothrow { if( atomic_decrement( &amp;use_count_ ) == 0 ) (C) { dispose(); weak_release(); } } // ... }; --- /snip --- </pre><p> Given that the hardware qualifications are met, on 64-bit systems the number of allocated objects is only limited by the register size. Due to the migration between platforms and the resulting difference in size a register may hold larger integers than the <code>int</code> type (A) allows. <em> sizeof(int) == 4 on 32 and 64-bit systems. </em></p> <p> Consequently, the <code>use_count_</code> variable is incremented until it flips over to negative numbers, zero and finally to 1 (B). This is particularily interesting as once a single reference is then destroyed the referenced object is destroyed as well (C). This however leaves 0xFFFFFFFF shared pointers behind that still reference the freed memory location. </p> <p> Kind regards, Christian Wressnegger (TU Braunschweig) </p> Christian Wressnegger <c.wressnegger@…> https://svn.boost.org/trac10/ticket/12335 https://svn.boost.org/trac10/ticket/12335 Report #12332: Couple of bugs found in version 1.60.0 Mon, 18 Jul 2016 13:58:07 GMT Mon, 18 Jul 2016 16:59:33 GMT <p> Hi Boost, </p> <p> Please note the following bug report </p> <p> <strong>BUG-1</strong><br /> File: 1.60.0\boost\program_options\detail\cmdline.hpp<br /> Line: 139<br /> Expression: 'args'<br /> The bug:<br /> This variable is a member of class 'cmdline', thus name should be prefixed with 'm_'. This later will become a problem as methods arguments are using the name 'args' for method arguments and thus new 'args' is hiding class member 'args'. </p> <p> <strong>BUG-2</strong><br /> File: 1.60.0\libs\program_options\src\variables_map.cpp<br /> Line: 71<br /> Expression: ' </p> <pre class="wiki">string original_token = </pre><blockquote> <p> ...'<br /> </p> </blockquote> <p> The bug:<br /> Variable 'original_token' is already defined in this scope at line 43. This new declaration of same variable hides previous declaraion. </p> <p> Thanks, Paz </p> Paz_Offer@… https://svn.boost.org/trac10/ticket/12332 https://svn.boost.org/trac10/ticket/12332 Report #12331: BOOST_FUSION_ADAPT_STRUCT doesn't work with empty struct on Visual Studio Mon, 18 Jul 2016 12:06:18 GMT Fri, 29 Jul 2016 08:00:15 GMT <p> The following code works fine on GCC and Clang: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/fusion/adapted/struct/adapt_struct.hpp&gt;</span><span class="cp"></span> <span class="k">class</span> <span class="nc">EmptyStruct</span> <span class="p">{};</span> <span class="n">BOOST_FUSION_ADAPT_STRUCT</span><span class="p">(</span><span class="n">EmptyStruct</span><span class="p">);</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{}</span> </pre></div></div><p> But on Visual Studio 2015 Update 3, it gives the following error: </p> <pre class="wiki">error C2220: warning treated as error - no 'object' file generated warning C4003: not enough actual parameters for macro 'BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY' warning C4003: not enough actual parameters for macro 'BOOST_PP_SEQ_DETAIL_EMPTY_SIZE </pre> Benoit Blanchon <benoit@…> https://svn.boost.org/trac10/ticket/12331 https://svn.boost.org/trac10/ticket/12331 Report #12326: boost::iostreams -- CRC error while decompressing certain gzip files Wed, 13 Jul 2016 14:08:38 GMT Wed, 13 Jul 2016 14:08:38 GMT <p> Given a gzip file that was written in multiple parts using Z_FULL_FLUSH, and one of those parts is empty (zero length), boost::iostreams::gzip_decompressor expects an incorrect CRC and fails. </p> <p> See attached example file. The zcat utility decompresses this file just fine, but boost::iostreams::gzip_decompressor fails after "Line 6". </p> <p> I have provided a test case and a fix for this issue, in a github pull request: <a class="ext-link" href="https://github.com/boostorg/iostreams/pull/29"><span class="icon">​</span>https://github.com/boostorg/iostreams/pull/29</a> </p> joel.nordell@… https://svn.boost.org/trac10/ticket/12326 https://svn.boost.org/trac10/ticket/12326 Report #12325: Boost syslog as TCP Wed, 13 Jul 2016 13:05:22 GMT Wed, 13 Jul 2016 13:05:22 GMT <p> The boost syslog backend only supports UDP. TCP would be appreciated. Log4j does support this e.g. </p> Hendrik Schall https://svn.boost.org/trac10/ticket/12325 https://svn.boost.org/trac10/ticket/12325 Report #12320: add an example to demonstrate how to leverage sockets concurrently in multithreading scenarios Sat, 09 Jul 2016 09:06:56 GMT Sat, 09 Jul 2016 09:06:56 GMT <p> The ideal solution of leveraging sockets concurrently in multithreading scenarios should 1. not block io workers (the threads where io_service.run() is invoked), 2. be free of lock race, 3. etc. </p> <p> There are many threads when you are searching this issue in google, but usable code is hard to find. </p> <p> In this proposal, I offer a reference implementation to the people who wanna call async_write family in multiple threads. </p> luxiaoshuang@… https://svn.boost.org/trac10/ticket/12320 https://svn.boost.org/trac10/ticket/12320 Report #12318: Problem using Boost 1.61.0 with VTK Marching Cubes Fri, 08 Jul 2016 12:42:13 GMT Fri, 08 Jul 2016 12:42:13 GMT <p> Hello, </p> <p> I seem to be having a problem using Boost 1.61.0 in conjunction with VTK 7.0.0. My purpose for using Boost is to obtain the filenames of all PNG files in any given folder using the following code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#define BOOST_FILESYSTEM_VERSION 3</span> <span class="cp">#define BOOST_FILESYSTEM_NO_DEPRECATED</span> <span class="cp">#include</span> <span class="cpf">&quot;boost/filesystem.hpp&quot;</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">fs</span> <span class="o">=</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="p">;</span> <span class="c1">// return the filenames of all files that have the specified extension</span> <span class="c1">// in the specified directory and all subdirectories</span> <span class="kt">void</span> <span class="nf">get_all</span><span class="p">(</span><span class="k">const</span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span><span class="o">&amp;</span> <span class="n">root</span><span class="p">,</span> <span class="k">const</span> <span class="n">string</span><span class="o">&amp;</span> <span class="n">ext</span><span class="p">,</span> <span class="n">vector</span><span class="o">&lt;</span><span class="n">fs</span><span class="o">::</span><span class="n">path</span><span class="o">&gt;&amp;</span> <span class="n">ret</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">fs</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">fs</span><span class="o">::</span><span class="n">is_directory</span><span class="p">(</span><span class="n">root</span><span class="p">))</span> <span class="k">return</span><span class="p">;</span> <span class="n">fs</span><span class="o">::</span><span class="n">recursive_directory_iterator</span> <span class="n">it</span><span class="p">(</span><span class="n">root</span><span class="p">);</span> <span class="n">fs</span><span class="o">::</span><span class="n">recursive_directory_iterator</span> <span class="n">endit</span><span class="p">;</span> <span class="k">while</span><span class="p">(</span><span class="n">it</span> <span class="o">!=</span> <span class="n">endit</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">is_regular_file</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">().</span><span class="n">extension</span><span class="p">()</span> <span class="o">==</span> <span class="n">ext</span><span class="p">)</span> <span class="n">ret</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">it</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">().</span><span class="n">filename</span><span class="p">());</span> <span class="o">++</span><span class="n">it</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> This code is used as part of the CXX file, which is built with an appropriate CMakeLists file using CMake 3.5.1 to produce a corresponding .xcodeproj file. </p> <p> However, the main problem that I'm facing is that attempting to build the project using an ALL_BUILD scheme in Xcode 7.0.1 leads to a series of errors pointing to the #include statements of the header files in the Boost folder (which is located in the same folder as the CXX and CMakeLists files). </p> <p> For instance, it starts off saying that "'boost/filesystem/config.hpp' file not found" in response to the following line of boost/filesystem.hpp: </p> <div class="wiki-code"><div class="code"><pre><span class="cp"># include &lt;boost/filesystem/config.hpp&gt;</span> </pre></div></div><p> Such errors could be resolved if I were to modify the syntax of the #include statements to follow a different format: </p> <div class="wiki-code"><div class="code"><pre><span class="cp"># include &quot;./filesystem/config.hpp&quot;</span> </pre></div></div><p> i.e., replacing the &lt;&gt; with "" and using relative paths to find the other required header files. </p> <p> However, going in to modify every single header file is a sort of tedium that I find it difficult to handle, and therefore I was hoping for a simpler solution to this problem. </p> <p> By the way, I am on a Mac, and my operating system is El Capitan version 10.11.5. </p> <p> Thank you in advance. </p> psmit057@… https://svn.boost.org/trac10/ticket/12318 https://svn.boost.org/trac10/ticket/12318 Report #12316: ASIO: "Undefined error: 0" on the Mac OS 10.10 and 10.11 Thu, 07 Jul 2016 14:30:49 GMT Sun, 12 Mar 2017 05:33:06 GMT <p> Hello. I have some issue with asio. When I try to connect/read/write (blocking and async operations), i get "Undefined error: 0" in the boost::error_code parameter. Interesting thing is that data transfers successfully. Only problem is Undefined error and infinity reads with zero bytes read. iOS (device and simulator) has this error too. If there's nobody listening on the port I try to connect to, "Connection refused" error is returned to the async_connect callback (which is correct behavior). So "Undefined error: 0" appears only if somebody is listening port on the other side. </p> <p> Compiling with xCode and standalone clang with command like clang++ -std=c++11 -Ipath/to/asio/include async_tcp_echo_server.cpp -oserver </p> <p> There's an issue on the asio's github tracker, but there's no activity at all. <a class="ext-link" href="https://github.com/chriskohlhoff/asio/issues/121"><span class="icon">​</span>https://github.com/chriskohlhoff/asio/issues/121</a> </p> <p> Thank you a lot! </p> David Dovodov <ddovod@…> https://svn.boost.org/trac10/ticket/12316 https://svn.boost.org/trac10/ticket/12316 Report #12315: boost::interprocess_exception - library_error exception when creating shared_memory_object Thu, 07 Jul 2016 08:59:17 GMT Mon, 20 Feb 2017 12:14:09 GMT <p> <a class="ext-link" href="http://stackoverflow.com/questions/38045857/boostinterprocess-exception-library-error-exception-when-creating-shared-mem"><span class="icon">​</span>Problem description and workaround</a> </p> Oleg https://svn.boost.org/trac10/ticket/12315 https://svn.boost.org/trac10/ticket/12315 Report #12314: boost::geometry::within for a point in a geographic coordinate system fails Thu, 07 Jul 2016 07:47:37 GMT Tue, 03 Jan 2017 13:51:34 GMT <blockquote> <p> I am using the geometry part of the library for a GIS application. The idea is to find points within defined regions (a rectangle in this case). This works sometimes but not always. Here is an example where the point should be within the rectangle but isn't... </p> </blockquote> <pre class="wiki"> #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/geometry/multi/geometries/multi_polygon.hpp&gt; #include &lt;boost/geometry/geometries/register/point.hpp&gt; #include &lt;iostream&gt; #include &lt;boost/geometry/io/wkt/wkt.hpp&gt; class wxPoint { public : double getx() const { return m_x; } double gety() const { return m_y; } void setx( double in) { m_x = in; } void sety(double in) { m_y = in; } private: double m_x; double m_y; }; BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET( wxPoint, double, boost::geometry::cs::geographic&lt;boost::geometry::degree&gt;, wxPoint::getx, wxPoint::gety, wxPoint::setx, wxPoint::sety ) int main() { boost::geometry::model::polygon&lt; wxPoint &gt; poly; boost::geometry::read_wkt( "POLYGON((0 89, 180 89, 180 0, 0 0, 0 89 ))", poly ); wxPoint point; point.setx( 150 ); point.sety( 88 ); bool within = boost::geometry::within( point, poly ); return 0; } </pre> oleary.simon@… https://svn.boost.org/trac10/ticket/12314 https://svn.boost.org/trac10/ticket/12314 Report #12313: sockaddr_storage_type doesn't have a member named ss_len Thu, 07 Jul 2016 05:17:21 GMT Tue, 25 Apr 2017 11:00:28 GMT <p> If the configuration macro BOOST_ASIO_HAS_GETADDRINFO is not defined, compile error is occurred the following line: <a class="ext-link" href="https://github.com/boostorg/asio/blob/boost-1.61.0/include/boost/asio/detail/impl/socket_ops.ipp#L3318"><span class="icon">​</span>https://github.com/boostorg/asio/blob/boost-1.61.0/include/boost/asio/detail/impl/socket_ops.ipp#L3318</a> </p> <p> Because the class sockaddr_storage_type doen't have a member variable ss_len. </p> <p> See: <a class="ext-link" href="https://github.com/boostorg/asio/blob/boost-1.61.0/include/boost/asio/detail/socket_types.hpp#L111"><span class="icon">​</span>https://github.com/boostorg/asio/blob/boost-1.61.0/include/boost/asio/detail/socket_types.hpp#L111</a> </p> Takatoshi Kondo <redboltz@…> https://svn.boost.org/trac10/ticket/12313 https://svn.boost.org/trac10/ticket/12313 Report #12312: UTF8 system error reporting for Win32 Tue, 05 Jul 2016 06:07:42 GMT Fri, 19 Aug 2016 21:19:06 GMT <p> Allow to get messages from error_code in UTF8 encoding on Win32. </p> <p> To enable UTF8 mode need define BOOST_WINDOWS_ERRORS_IN_UTF8 pre-processor directive </p> <p> Patch affect to Boost.Iostreams and Boost.System library. </p> anonymous https://svn.boost.org/trac10/ticket/12312 https://svn.boost.org/trac10/ticket/12312 Report #12310: xlc++: lexical_cast.hpp "invalid processing token" Fri, 01 Jul 2016 15:02:24 GMT Wed, 01 Mar 2017 15:53:14 GMT <p> Hi, compiling the following file with boost 1.61.0 and xlc++ on an IBM POWER8 system results in the following errors... </p> <p> File: test.cpp </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;map&gt; #include &lt;set&gt; #include &lt;boost/lexical_cast.hpp&gt; #include &lt;boost/algorithm/string.hpp&gt; using namespace boost; using namespace std; struct testing { }; </pre><p> Command: </p> <pre class="wiki">xlc++ ./test.cpp -I/home/u0017592/projects/boost_1_61_0 </pre><p> Output: </p> <pre class="wiki">In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token BOOST_concept(Integer, (T)) ^ /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_ELEM_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 13 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/elem.hpp:39:66: note: expanded from macro 'BOOST_PP_SEQ_ELEM_I' # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_ELEM_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 13 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/elem.hpp:39:66: note: expanded from macro 'BOOST_PP_SEQ_ELEM_I' # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:24:15: note: expanded from macro 'BOOST_concept' : name&lt; BOOST_PP_SEQ_ENUM(params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/enum.hpp:28:69: note: expanded from macro 'BOOST_PP_SEQ_ENUM' # define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:28:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:28:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:70:3: error: pasting formed 'BOOST_PP_SEQ_ELEM_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:28:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 13 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/elem.hpp:39:66: note: expanded from macro 'BOOST_PP_SEQ_ELEM_I' # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token BOOST_concept(SignedInteger,(T)) { ^ /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_ELEM_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:19:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 13 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/elem.hpp:39:66: note: expanded from macro 'BOOST_PP_SEQ_ELEM_I' # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_ELEM_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:22:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 13 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/elem.hpp:39:66: note: expanded from macro 'BOOST_PP_SEQ_ELEM_I' # define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:24:15: note: expanded from macro 'BOOST_concept' : name&lt; BOOST_PP_SEQ_ENUM(params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/enum.hpp:28:69: note: expanded from macro 'BOOST_PP_SEQ_ENUM' # define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:28:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:42:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \ ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ In file included from ./tools/test.cpp:13: In file included from /home/u0017592/projects/boost_1_61_0/boost/lexical_cast.hpp:30: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/iterator_range_core.hpp:38: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/functions.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size.hpp:21: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/size_type.hpp:20: In file included from /home/u0017592/projects/boost_1_61_0/boost/range/concepts.hpp:19: /home/u0017592/projects/boost_1_61_0/boost/concept_check.hpp:97:3: error: pasting formed 'BOOST_PP_SEQ_SIZE_0(', an invalid preprocessing token /home/u0017592/projects/boost_1_61_0/boost/concept/detail/concept_def.hpp:28:16: note: expanded from macro 'BOOST_concept' template &lt; BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) &gt; \ ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:30:55: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I' # define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/for_each_i.hpp:43:4: note: expanded from macro 'BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK' BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \ ^ note: (skipping 4 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /home/u0017592/projects/boost_1_61_0/boost/preprocessor/seq/size.hpp:26:69: note: expanded from macro 'BOOST_PP_SEQ_SIZE' # define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq)) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:22:32: note: expanded from macro 'BOOST_PP_CAT' # define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b) ^ /home/u0017592/projects/boost_1_61_0/boost/preprocessor/cat.hpp:29:36: note: expanded from macro 'BOOST_PP_CAT_I' # define BOOST_PP_CAT_I(a, b) a ## b ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. Error while processing ./tools/test.cpp. </pre><p> Version of xlc++: </p> <pre class="wiki">IBM XL C/C++ for Linux, V13.1.3 (5725-C73, 5765-J08) Version: 13.01.0003.0001 </pre><p> Any insight? </p> jlost@… https://svn.boost.org/trac10/ticket/12310 https://svn.boost.org/trac10/ticket/12310 Report #12306: boost::filesystem::remove_all(const path& p, system::error_code& ec) throws while it shouldn't Thu, 30 Jun 2016 10:41:58 GMT Sun, 04 Sep 2016 09:18:16 GMT <p> This issue has been reported 4y ago (boost 1.50.0) but it's still here. </p> <p> But I have an easier way to reproduce it. On a windows OS (I used win 8.1), create a folder somewhere, and use the windows properties on it to deny all access to it for you (FullAccess:Deny). Now, try to boost::filesystem::remove_all(folderPath, ec) on it. It will throw! </p> christophe.calmejane@… https://svn.boost.org/trac10/ticket/12306 https://svn.boost.org/trac10/ticket/12306 Report #12305: Requirements for traits::interior_{const,mutable}_type Thu, 30 Jun 2016 01:33:04 GMT Wed, 02 Nov 2016 14:07:41 GMT <p> The <a href="http://www.boost.org/doc/libs/1_61_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html">documentation of Polygon Concept</a> states: </p> <blockquote class="citation"> <p> there must be a specialization of <code>traits::interior_type</code> defining the type of the collection of its interior rings as type; <strong>this collection itself must fulfill a Boost.Range Random Access Range Concept</strong> </p> </blockquote> <p> (Emphasis mine; the mention of <code>traits::interior_type</code> should actually be <code>traits::interior_const_type</code> and <code>traits::interior_mutable_type</code> -- ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/12304" title="#12304: Bugs: Incorrect documentation for boost::geometry::traits::ring_type (new)">#12304</a> -- but the issue I'm reporting here has to do with the latter bolded part of the statement.) </p> <p> It appears that <code>boost::geometry::intersection</code> makes requirements on the interior type that are not a part of the Boost.Range Random Access Range Concept. Specifically, boost/geometry/algorithms/detail/overlay/convert_ring.hpp <a class="ext-link" href="https://github.com/boostorg/geometry/blob/boost-1.61.0/include/boost/geometry/algorithms/detail/overlay/convert_ring.hpp#L90"><span class="icon">​</span>calls `interior_rings(destination).resize(...)`</a>, and <code>resize</code> is not part of the Random Access Range Concept. </p> <p> A test case is attached; it fails to compile with the following error: </p> <pre class="wiki">&lt;path&gt;/boost/1.61.0/include/boost/geometry/algorithms/detail/overlay/convert_ring.hpp:90:45: error: no member named 'resize' in 'boost::iterator_range&lt;std::__1::__wrap_iter&lt;std::__1::vector&lt;point, std::__1::allocator&lt;point&gt; &gt; *&gt; &gt;' interior_rings(destination).resize( ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ </pre><p> Is this an error in convert_ring.hpp, or are there additional requirements on the interior type which are not documented? </p> john.firebaugh@… https://svn.boost.org/trac10/ticket/12305 https://svn.boost.org/trac10/ticket/12305 Report #12304: Incorrect documentation for boost::geometry::traits::ring_type Thu, 30 Jun 2016 01:15:50 GMT Fri, 26 Aug 2016 13:41:17 GMT <p> <a href="http://www.boost.org/doc/libs/1_61_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html">http://www.boost.org/doc/libs/1_61_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html</a> states: </p> <blockquote class="citation"> <p> there must be a specialization of <code>traits::ring_type</code> defining the type of its exterior ring and interior rings as type </p> </blockquote> <p> As far as I can tell, the specializations must actually be of <code>traits::ring_mutable_type</code> and <code>traits::ring_const_type</code>. There is no <code>traits::ring_type</code> template to specialize. </p> <p> A similar issue exists with the documentation referring to <code>traits::interior_type</code> -- this should instead refer to <code>traits::interior_mutable_type</code> and <code>traits::interior_const_type</code>. </p> john.firebaugh@… https://svn.boost.org/trac10/ticket/12304 https://svn.boost.org/trac10/ticket/12304 Report #12302: Warning while installing boost libraries Mon, 27 Jun 2016 12:02:26 GMT Fri, 19 Aug 2016 21:20:29 GMT <p> The command </p> <pre class="wiki">./b2 install </pre><p> gives the following warnings </p> <pre class="wiki">./boost/asio/error.hpp:258:45: warning: ‘boost::asio::error::system_category’ defined but not used [-Wunused-variable] static const boost::system::error_category&amp; system_category ^ ./boost/asio/error.hpp:260:45: warning: ‘boost::asio::error::netdb_category’ defined but not used [-Wunused-variable] static const boost::system::error_category&amp; netdb_category ^ ./boost/asio/error.hpp:262:45: warning: ‘boost::asio::error::addrinfo_category’ defined but not used [-Wunused-variable] static const boost::system::error_category&amp; addrinfo_category ^ ./boost/asio/error.hpp:264:45: warning: ‘boost::asio::error::misc_category’ defined but not used [-Wunused-variable] static const boost::system::error_category&amp; misc_category </pre><p> Any ideas why? </p> shopping_vineeshvs@… https://svn.boost.org/trac10/ticket/12302 https://svn.boost.org/trac10/ticket/12302 Report #12301: problem building 1.61.0 Sun, 26 Jun 2016 12:42:51 GMT Mon, 29 Aug 2016 10:50:12 GMT <p> Brand new to boost. Downloaded and (apparently successfully) built version 1.61.0. Using recent (I think most recent) version on cygwin64 on Windows 10. First use was to try the tutorial programs for the boost filesystem package. Below is the linker output for tut1.cpp </p> <p> Any suggestions what I may have done wrong or where to look for solution? </p> <p> tut1.o:tut1.cpp:(.text+0x11f): undefined reference to `boost::system::generic_category()' tut1.o:tut1.cpp:(.text+0x11f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol ` boost::system::generic_category()' tut1.o:tut1.cpp:(.text+0x12b): undefined reference to `boost::system::generic_category()' tut1.o:tut1.cpp:(.text+0x12b): relocation truncated to fit: R_X86_64_PC32 against undefined symbol ` </p> <p> boost::system::generic_category()' tut1.o:tut1.cpp:(.text+0x137): undefined reference to `boost::system::system_category()' tut1.o:tut1.cpp:(.text+0x137): relocation truncated to fit: R_X86_64_PC32 against undefined symbol ` boost::system::system_category()' collect2: error: ld returned 1 exit status make: <strong>* [Makefile:20: tut1] Error 1 </strong></p> drmhkelley@… https://svn.boost.org/trac10/ticket/12301 https://svn.boost.org/trac10/ticket/12301 Report #12298: epool_wait hang Thu, 23 Jun 2016 10:22:34 GMT Wed, 22 Feb 2017 06:58:01 GMT <p> We use sofarpc (<a class="ext-link" href="https://github.com/baidu/sofa-pbrpc"><span class="icon">​</span>https://github.com/baidu/sofa-pbrpc</a> ) which uses boost asio as network lib. </p> <p> code like </p> <p> boost::asio::io_service io_ser; auto work = new boost::asio::io_service::work(io_ser); </p> <p> after I delete work, io_ser still in run function and never stop. so i print io_ser class member as below </p> <p> (gdb) p *(boost::asio::detail::task_io_service * const) 0x22738e0 $26 = {&lt;boost::asio::detail::service_base&lt;boost::asio::detail::task_io_service&gt;&gt; = {&lt;boost::asio::io_service::service&gt; = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, </p> <blockquote> <p> _vptr.service = 0xa24a90 &lt;vtable for boost::asio::detail::task_io_service+16&gt;, key_ = {type_info_ = 0xa245a0 &lt;typeinfo for boost::asio::detail::typeid_wrapper&lt;boost::asio::detail::task_io_service&gt;&gt;, </p> <blockquote> <p> id_ = 0x0}, owner_ = @0x228f6d0, next_ = 0x0}, static id = {&lt;boost::asio::io_service::id&gt; = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, &lt;No data fields&gt;}, &lt;No data fields&gt;}}, </p> </blockquote> </blockquote> <blockquote> <p> one_thread_ = false, mutex_ = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, mutex_ = {<span class="underline">data = {</span>lock = 0, <span class="underline">count = 0, </span>owner = 0, <span class="underline">nusers = 7, </span>kind = 0, <span class="underline">spins = 0, </span>list = { </p> <blockquote> <p> <span class="underline">prev = 0x0, </span>next = 0x0}}, <span class="underline">size = '\000' &lt;repeats 12 times&gt;, "\a", '\000' &lt;repeats 26 times&gt;, </span>align = 0}}, task_ = 0x2266e10, </p> </blockquote> <p> task_operation_ = {&lt;boost::asio::detail::task_io_service_operation&gt; = {next_ = 0x0, func_ = 0x0, task_result_ = 0}, &lt;No data fields&gt;}, task_interrupted_ = false, outstanding_work_ = {value_ = 3}, op_queue_ = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, front_ = 0x0, back_ = 0x0}, stopped_ = false, shutdown_ = false, first_idle_thread_ = 0x7f182991fce0} </p> </blockquote> <p> and I found one of the thread stack as belows Thread 6 (Thread 0x7f182a321700 (LWP 30142)): <a class="missing ticket">#0</a> 0x00007f1833fb2163 in epoll_wait () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x000000000061f888 in boost::asio::detail::epoll_reactor::run (this=0x2266e10, block=&lt;optimized out&gt;, ops=...) at /usr/local/include/boost/asio/detail/impl/epoll_reactor.ipp:392 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x0000000000624671 in boost::asio::detail::task_io_service::do_run_one (ec=..., this_thread=..., lock=..., this=0x22738e0) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:396 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> boost::asio::detail::task_io_service::run (this=0x22738e0, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:153 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x000000000062521e in boost::asio::io_service::run (this=0x228f6d0) at /usr/local/include/boost/asio/impl/io_service.ipp:59 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> sofa::pbrpc::ThreadGroupImpl::thread_run (param=0x22bf100) at src/sofa/pbrpc/thread_group_impl.h:263 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00007f1834e7a9d1 in start_thread () from /lib64/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x00007f1833fb1b6d in clone () from /lib64/libc.so.6 </p> <p> because of its hanging, i want see if i see time_out parameter of epoll_wait function is -1. so i print epoll_reactor::timer_fd_ (gdb) p timer_fd_ $6 = 515 so we don't use time_out a normal value . so why epoll_wait never has a return ?? </p> baibin <406455861@…> https://svn.boost.org/trac10/ticket/12298 https://svn.boost.org/trac10/ticket/12298 Report #12297: epoll_wait hang Thu, 23 Jun 2016 10:15:07 GMT Thu, 23 Jun 2016 10:15:07 GMT <p> We use sofarpc(<a class="ext-link" href="https://github.com/baidu/sofa-pbrpc"><span class="icon">​</span>https://github.com/baidu/sofa-pbrpc</a> ) which use boost asio as network lib. </p> <p> boost::asio::io_service io_ser; auto work = new boost::asio::io_service::work(io_ser); after I delete work, io_ser still in run function and never stop. so i print io_ser class member as below (gdb) p *(boost::asio::detail::task_io_service * const) 0x22738e0 $26 = {&lt;boost::asio::detail::service_base&lt;boost::asio::detail::task_io_service&gt;&gt; = {&lt;boost::asio::io_service::service&gt; = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, </p> <blockquote> <p> _vptr.service = 0xa24a90 &lt;vtable for boost::asio::detail::task_io_service+16&gt;, key_ = {type_info_ = 0xa245a0 &lt;typeinfo for boost::asio::detail::typeid_wrapper&lt;boost::asio::detail::task_io_service&gt;&gt;, </p> <blockquote> <p> id_ = 0x0}, owner_ = @0x228f6d0, next_ = 0x0}, static id = {&lt;boost::asio::io_service::id&gt; = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, &lt;No data fields&gt;}, &lt;No data fields&gt;}}, </p> </blockquote> </blockquote> <blockquote> <p> one_thread_ = false, mutex_ = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, mutex_ = {<span class="underline">data = {</span>lock = 0, <span class="underline">count = 0, </span>owner = 0, <span class="underline">nusers = 7, </span>kind = 0, <span class="underline">spins = 0, </span>list = { </p> <blockquote> <p> <span class="underline">prev = 0x0, </span>next = 0x0}}, <span class="underline">size = '\000' &lt;repeats 12 times&gt;, "\a", '\000' &lt;repeats 26 times&gt;, </span>align = 0}}, task_ = 0x2266e10, </p> </blockquote> <p> task_operation_ = {&lt;boost::asio::detail::task_io_service_operation&gt; = {next_ = 0x0, func_ = 0x0, task_result_ = 0}, &lt;No data fields&gt;}, task_interrupted_ = false, outstanding_work_ = {value_ = 3}, op_queue_ = {&lt;boost::noncopyable_::noncopyable&gt; = {&lt;No data fields&gt;}, front_ = 0x0, back_ = 0x0}, stopped_ = false, shutdown_ = false, first_idle_thread_ = 0x7f182991fce0} </p> </blockquote> <p> and I found one of the stack as belows Thread 6 (Thread 0x7f182a321700 (LWP 30142)): <a class="missing ticket">#0</a> 0x00007f1833fb2163 in epoll_wait () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x000000000061f888 in boost::asio::detail::epoll_reactor::run (this=0x2266e10, block=&lt;optimized out&gt;, ops=...) at /usr/local/include/boost/asio/detail/impl/epoll_reactor.ipp:392 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x0000000000624671 in boost::asio::detail::task_io_service::do_run_one (ec=..., this_thread=..., lock=..., this=0x22738e0) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:396 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> boost::asio::detail::task_io_service::run (this=0x22738e0, ec=...) at /usr/local/include/boost/asio/detail/impl/task_io_service.ipp:153 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x000000000062521e in boost::asio::io_service::run (this=0x228f6d0) at /usr/local/include/boost/asio/impl/io_service.ipp:59 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> sofa::pbrpc::ThreadGroupImpl::thread_run (param=0x22bf100) at src/sofa/pbrpc/thread_group_impl.h:263 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00007f1834e7a9d1 in start_thread () from /lib64/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x00007f1833fb1b6d in clone () from /lib64/libc.so.6 </p> <p> so i want see if i see time_out parameter of epoll_wait function is -1. so i print epoll_reactor::timer_fd_ (gdb) p timer_fd_ $6 = 515 </p> <p> so why epoll_wait never has a return ?? </p> baibin <406455861@…> https://svn.boost.org/trac10/ticket/12297 https://svn.boost.org/trac10/ticket/12297 Report #12295: Boost Asio Serial Port does not work with Exar (Baudrate zero) Wed, 22 Jun 2016 18:47:15 GMT Fri, 09 Feb 2018 09:46:50 GMT <p> Calling boost::asio::serial_port.open("COM4") returns a error under windows. We use a Exar XR22804 using the latest official drivers for Windows. The problem is located in boost::asio::win_iocp_serial_port_service where the windows driver returns dcb.Baudrate=0. After that it tries to set new settings with <a class="missing wiki">SetCommState</a> and it fails if dcb.Baudrate is 0. A solution would be to preset the baudrate if 0 or even better to read a user parameter with the wanted baudrate as it is done in some other frameworks. </p> <p> Someone else has sent the same bug to the people of the qt-framework, and they solved it: <a class="ext-link" href="https://bugreports.qt.io/browse/QTBUG-46993"><span class="icon">​</span>https://bugreports.qt.io/browse/QTBUG-46993</a> </p> Andreas Schmitz <andreas.schmitz13@…> https://svn.boost.org/trac10/ticket/12295 https://svn.boost.org/trac10/ticket/12295 Report #12294: boost::geometry::union_ empty result Wed, 22 Jun 2016 18:10:53 GMT Wed, 22 Jun 2016 18:23:45 GMT <p> union_() sometimes return an empty result. It seems like there is a bug with union_() if some vertices are too close to each other. I inspected the polygons and they seem to be valid (no self intersections). I created a SHP file and WTK file with a few problematic polygons. The polygons are in pairs, and if you call union_() on each pair, the result will be empty. </p> phelippeneveu@… https://svn.boost.org/trac10/ticket/12294 https://svn.boost.org/trac10/ticket/12294 Report #12292: [TypeErasure] Construction of any from static_binding fails if compiling with rvalue-ref support Wed, 22 Jun 2016 11:05:31 GMT Wed, 22 Mar 2017 21:47:47 GMT <p> Although the documentation of <strong>Boost.Type<code></code>Erasure</strong> explicitly shows how to default-construct an <code>any</code><code></code> from the binding of another <code>any</code>, this seems not to work when rvalue-references are supported by the compiler. </p> <blockquote> <p> The reason is, that the wrong constructor overload is chosen. </p> </blockquote> <p> <code>binding_of</code><code></code> returns a <code>static_binding</code><code></code> for which no explicit <code>any</code>-constructor is available. If rvalue-references are not supported by the compiler the constructor-overload which takes a <code>binding</code><code></code> is chosen (due to implicit conversion from <code>static_binding</code><code></code> to <code>binding</code>). </p> <p> If rvalue-references are supported the constructor which takes a "universal reference" <code>[1]</code><code></code> is chosen instead which does not expect and therefore cannot handle the <code>static_binding</code>. </p> <p> <code>[1]</code> <a class="ext-link" href="https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers"><span class="icon">​</span>https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers</a> </p> Deniz Bahadir <D.Bahadir@…> https://svn.boost.org/trac10/ticket/12292 https://svn.boost.org/trac10/ticket/12292 Report #12284: Library requirements errors. Fri, 17 Jun 2016 18:47:02 GMT Fri, 17 Jun 2016 18:47:02 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/wave: error: file not found; Did not find a Boost Build file in the [project-root]/test directory. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12284 https://svn.boost.org/trac10/ticket/12284 Report #12283: Library requirements errors. Fri, 17 Jun 2016 18:35:12 GMT Fri, 17 Jun 2016 18:35:12 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/dynamic_bitset: error: directory not found; Missing [project-root]/doc directory. The [project-root]/doc directory is required for all libraries. Sources to build with and built documentation for the library. If the library needs to build documentation from non-HTML files this location must be buildable with Boost Build. </p> <p> libs/dynamic_bitset: warning: file found; Found extra files in [project-root]/include/boost directory. </p> <p> libs/dynamic_bitset: error: directory not found; Missing [project-root]/test directory. The [project-root]/test directory is required for all libraries. Regression or other test programs or scripts. This is the only location considered for automated testing. If you have additional locations that need to be part of automated testing it is required that this location refer to the additional test locations. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12283 https://svn.boost.org/trac10/ticket/12283 Report #12281: Library requirements errors. Fri, 17 Jun 2016 18:30:30 GMT Fri, 17 Jun 2016 18:30:30 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/concept_check: error: directory not found; Missing [project-root]/test directory. The [project-root]/test directory is required for all libraries. Regression or other test programs or scripts. This is the only location considered for automated testing. If you have additional locations that need to be part of automated testing it is required that this location refer to the additional test locations. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12281 https://svn.boost.org/trac10/ticket/12281 Report #12279: Library requirements errors. Fri, 17 Jun 2016 18:28:02 GMT Tue, 25 Apr 2017 20:20:30 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/tokenizer: error: directory not found; Missing [project-root]/doc directory. The [project-root]/doc directory is required for all libraries. Sources to build with and built documentation for the library. If the library needs to build documentation from non-HTML files this location must be buildable with Boost Build. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12279 https://svn.boost.org/trac10/ticket/12279 Report #12278: Library requirements errors. Fri, 17 Jun 2016 18:26:15 GMT Fri, 17 Jun 2016 18:26:56 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/smart_ptr: error: directory not found; Missing [project-root]/build directory. The [project-root]/build directory is required for libraries that have a [project-root]/src directory. </p> <p> libs/smart_ptr: error: directory not found; Missing [project-root]/doc directory. The [project-root]/doc directory is required for all libraries. Sources to build with and built documentation for the library. If the library needs to build documentation from non-HTML files this location must be buildable with Boost Build. </p> <p> libs/smart_ptr: warning: file found; Found extra files in [project-root]/include/boost directory. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12278 https://svn.boost.org/trac10/ticket/12278 Report #12277: Library requirements errors. Fri, 17 Jun 2016 18:07:44 GMT Fri, 17 Jun 2016 18:07:44 GMT <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> libs/rational: error: directory not found; Missing [project-root]/doc directory. The [project-root]/doc directory is required for all libraries. Sources to build with and built documentation for the library. If the library needs to build documentation from non-HTML files this location must be buildable with Boost Build. </p> <p> EXIT STATUS: 1 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> René Rivera https://svn.boost.org/trac10/ticket/12277 https://svn.boost.org/trac10/ticket/12277 Report #12272: vertex_iterator dereference has odd return value Wed, 15 Jun 2016 16:22:37 GMT Wed, 15 Jun 2016 16:22:37 GMT <p> graph_traits::vertex_iterator::operator* seems to not return Value&amp; as it should. This not only differs from STL iterators but can and does easily cause segfaults. </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span><span class="cpf">&lt;list&gt;</span><span class="cp"></span> <span class="cp">#include</span><span class="cpf">&lt;boost/graph/adjacency_list.hpp&gt;</span><span class="cp"></span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">adjacency_list</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">vecS</span><span class="p">,</span><span class="n">boost</span><span class="o">::</span><span class="n">vecS</span><span class="o">&gt;</span> <span class="n">Graph</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">graph_traits</span><span class="o">&lt;</span><span class="n">Graph</span><span class="o">&gt;::</span><span class="n">vertex_descriptor</span> <span class="n">Vertex</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">graph_traits</span><span class="o">&lt;</span><span class="n">Graph</span><span class="o">&gt;::</span><span class="n">vertex_iterator</span> <span class="n">VIter</span><span class="p">;</span> <span class="k">const</span> <span class="n">Vertex</span><span class="o">&amp;</span> <span class="n">deref</span><span class="p">(</span><span class="k">const</span> <span class="n">VIter</span><span class="o">&amp;</span> <span class="n">it</span><span class="p">){</span> <span class="k">return</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span> <span class="c1">// warning: returning reference to temporary [-Wreturn-local-addr]</span> <span class="p">}</span> <span class="k">const</span> <span class="n">Vertex</span><span class="o">&amp;</span> <span class="n">deref</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">Vertex</span><span class="o">&gt;::</span><span class="n">iterator</span><span class="o">&amp;</span> <span class="n">it</span><span class="p">){</span> <span class="k">return</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span> <span class="c1">// no warning, works fine</span> <span class="p">}</span> <span class="kt">int</span> <span class="n">main</span><span class="p">(){</span> <span class="n">Graph</span> <span class="n">g</span><span class="p">;</span> <span class="n">Vertex</span> <span class="n">u</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">add_vertex</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="n">Vertex</span> <span class="n">v</span> <span class="o">=</span> <span class="n">deref</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">vertices</span><span class="p">(</span><span class="n">g</span><span class="p">).</span><span class="n">first</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">Vertex</span><span class="o">&gt;</span> <span class="n">vl</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">u</span><span class="p">);</span> <span class="n">Vertex</span> <span class="n">w</span> <span class="o">=</span> <span class="n">deref</span><span class="p">(</span><span class="n">vl</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div> ich.freak@… https://svn.boost.org/trac10/ticket/12272 https://svn.boost.org/trac10/ticket/12272 Report #12271: segfaults in options_description with -fipa-pta Wed, 15 Jun 2016 08:23:18 GMT Tue, 28 Jun 2016 00:55:07 GMT <p> With gcc-6.1.0, I'm seeing a lot of segfaults associated with boost::program_options::options_description. I had an older, but recent version of gcc lying around (5.3.0) that did not exhibit this behavior, so there's a decent chance that the fault lines in gcc itself vs. a newly exhibited bug here. </p> <p> If I make an empty one and just let it fall out of scope, I get a segfault from the destructor: </p> <pre class="wiki">seth@luca:~$ cat example.cpp #include &lt;boost/program_options.hpp&gt; int main() { boost::program_options::options_description d; return 0; } seth@luca:~$ g++ -g3 example.cpp -llibboost_program_options -fipa-pta -o example seth@luca:~$ gdb ./example (gdb) r Starting program: /home/seth/./example Traceback (most recent call last): Program received signal SIGSEGV, Segmentation fault. 0x00000000004026db in boost::detail::atomic_exchange_and_add (pw=0x200c5f2d8d48e02c, dv=-1) at /toolchain/toolchain9/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:50 50 ); (gdb) bt #0 0x00000000004026db in boost::detail::atomic_exchange_and_add (pw=0x200c5f2d8d48e02c, dv=-1) at /toolchain/toolchain9/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:50 #1 0x0000000000402709 in boost::detail::sp_counted_base::release (this=0x200c5f2d8d48e024) at /toolchain/toolchain9/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:144 #2 0x00000000004027a7 in boost::detail::shared_count::~shared_count (this=0x4033a8 &lt;__libc_csu_init+8&gt;, __in_chrg=&lt;optimized out&gt;) at /toolcain/toolchain9/include/boost/smart_ptr/detail/shared_count.hpp:473 #3 0x0000000000402de0 in boost::shared_ptr&lt;boost::program_options::options_description&gt;::~shared_ptr (this=0x4033a0 &lt;__libc_csu_init&gt;, __in_chrg=&lt;optimized out&gt;) at /toolchain/toolchain9/include/boost/smart_ptr/shared_ptr.hpp:336 #4 0x0000000000402dfb in std::_Destroy&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt; &gt; (__pointer=0x4033a0 &lt;__libc_csu_init&gt;) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_construct.h:93 #5 0x0000000000402ce9 in std::_Destroy_aux&lt;false&gt;::__destroy&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt;*&gt; ( __first=0x4033a0 &lt;__libc_csu_init&gt;, __last=0x0) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_construct.h:103 #6 0x0000000000402b98 in std::_Destroy&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt;*&gt; (__first=0x4033a0 &lt;__libc_csu_init&gt;, __last=0x0) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_construct.h:126 #7 0x0000000000402a23 in std::_Destroy&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt;*, boost::shared_ptr&lt;boost::program_options::options_description&gt; &gt; (__first=0x4033a0 &lt;__libc_csu_init&gt;, __last=0x0) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_construct.h:151 #8 0x000000000040288b in std::vector&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt;, std::allocator&lt;boost::shared_ptr&lt;boost::program_options::options_description&gt; &gt; &gt;::~vector (this=0x7fffffffdf58, __in_chrg=&lt;optimized out&gt;) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_vector.h:426 #9 0x00000000004027c6 in boost::program_options::options_description::~options_description (this=0x7fffffffdef0, __in_chrg=&lt;optimized out&gt;) at /toolchain/toolchain9/include/boost/program_options/options_description.hpp:173 #10 0x00000000004026b9 in main () at example.cpp:4 </pre><p> Alternatively, if I actually add any options, it segfaults during that: </p> <pre class="wiki">seth@luca:~$ cat example2.cpp #include &lt;boost/program_options.hpp&gt; int main() { namespace po = boost::program_options; po::options_description d; int x = 0; d.add_options() ("xs,x", po::value(&amp;x)); return 0; } Program received signal SIGSEGV, Segmentation fault. 0x000000000040dc66 in push_back (__x=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_bvector.h:89 89 *_M_p &amp;= ~_M_mask; (gdb) bt #0 0x000000000040dc66 in push_back (__x=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /toolchain/toolchain9/include/c++/6.1.0/bits/stl_bvector.h:89 #1 add () at libs/program_options/src/options_description.cpp:288 #2 boost::program_options::options_description_easy_init::operator() (this=0x4, name=0x7fffffffdee0 " \305\334\367\377\177", s=0x62ed80) at libs/program_options/src/options_description.cpp:246 #3 0x0000000000403d78 in main () at example2.cpp:8 </pre><pre class="wiki">seth@luca:~$ g++ --version g++ (GCC) 6.1.0 Copyright (C) 2016 Free Software Foundation, Inc. </pre><p> I'm linking statically against program_options. </p> <p> Let me know if there's any more information I can provide that would be helpful. </p> Seth <sshannin@…> https://svn.boost.org/trac10/ticket/12271 https://svn.boost.org/trac10/ticket/12271 Report #12269: wrong error code Tue, 14 Jun 2016 08:30:47 GMT Tue, 14 Jun 2016 08:30:47 GMT <p> On Windows, attempting to call async_read_until (and probably other async functions) after the other side close the connection returns boost::system::error_code with value 1236 (ERROR_CONNECTION_ABORTED) instead of expected 10053 (WSAECONNABORTED). </p> anonymous https://svn.boost.org/trac10/ticket/12269 https://svn.boost.org/trac10/ticket/12269 Report #12268: Boost Polygon: Overflow issue with euclidean_distance() when using large (32-bit) coordinates. Tue, 14 Jun 2016 07:46:32 GMT Wed, 15 Jun 2016 20:49:28 GMT <p> Hi, </p> <p> When using large (32-bit) ints for coordinates, there seems to be a problem in getting the correct result with boost::polygon::euclidean_distance(). The sample program demonstrates the issue (compiled with GCC 4.7.3 + Boost 1.61.0). </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;boost/polygon/polygon.hpp&gt; #include &lt;boost/geometry.hpp&gt; namespace gtl = boost::polygon; using namespace boost::polygon::operators; typedef gtl::rectangle_data&lt;int&gt; LayoutRectangle; int main(int argc, char** argv) { LayoutRectangle t(16740130,29759232,16740350,29760652); LayoutRectangle n(16808130,29980632,16808350,29982052); std::cout &lt;&lt; gtl::euclidean_distance(t, n) &lt;&lt; std::endl; std::cout &lt;&lt; gtl::euclidean_distance(t, n, gtl::HORIZONTAL) &lt;&lt; " " &lt;&lt; gtl::euclidean_distance(t, n, gtl::VERTICAL) &lt;&lt; std::endl; std::cout &lt;&lt; gtl::square_euclidean_distance(t, n) &lt;&lt; std::endl; std::cout &lt;&lt; std::sqrt(gtl::square_euclidean_distance(t, n)) &lt;&lt; std::endl; std::cout &lt;&lt; (int) std::sqrt(gtl::square_euclidean_distance(t, n)) &lt;&lt; std::endl; return 0; } </pre><p> The output of this program is: </p> <p> 38022.6 67780 219980 52985328800 230185 230185 </p> <p> 230185 is the correct answer, but euclidean_distance() gives 38022.6. I traced the program above in GDB, and the culprit seems to be 'return (xdist * xdist) + (ydist * ydist)' in the library code shown below. xdist/ydist have correct values but taking the square root is most likely causing overflow. </p> <p> rectangle_concept.hpp: </p> <pre class="wiki"> square_euclidean_distance(const rectangle_type&amp; lvalue, const rectangle_type_2&amp; rvalue) { typename coordinate_traits&lt;typename rectangle_coordinate_type&lt;rectangle_type&gt;::type&gt;::coordinate_difference xdist, ydist; xdist = euclidean_distance(lvalue, rvalue, HORIZONTAL); ydist = euclidean_distance(lvalue, rvalue, VERTICAL); return (xdist * xdist) + (ydist * ydist); } </pre><p> I notice coordinate_difference is defined as 'long long' which is 8 bytes (sizeof(long long)) on my machine. So not sure why this is happening. </p> <p> I also posted this as a question on stackoverflow: <a class="ext-link" href="http://stackoverflow.com/questions/37804930/boost-polygon-issue-with-euclidean-distance"><span class="icon">​</span>http://stackoverflow.com/questions/37804930/boost-polygon-issue-with-euclidean-distance</a> </p> <p> For now, I can use std::sqrt(gtl::square_euclidean_distance())' as a workaround. Thanks. </p> Pallav Gupta <drpallavgupta@…> https://svn.boost.org/trac10/ticket/12268 https://svn.boost.org/trac10/ticket/12268 Report #12267: How to build boost with Boost.Build using Clang 3.7 with Microsoft CodeGen instead of the original Visual C++ compiler? Sun, 12 Jun 2016 00:14:28 GMT Sun, 12 Jun 2016 00:14:28 GMT <p> Hi, I have been trying to compile the latest boost libraries in Windows with Microsoft's Clang 3.7 compiler (instead of the default Visual C++ compiler) and doing that using the IDE which is *A LOT OF WORK* and does not build the tests and examples, etc. What I am looking for is a way to build boost using Boost.Build but telling it to use Microsoft's Clang compiler instead of default Visual C++ compiler... Clang is actually much better at issuing warnings and explaining syntax errors and overall I think it's better </p> <p> However, how can I do this? Is there a toolset to be specified in the command line to b2? </p> <p> Thanks!! Juan </p> JUAN DENT <juandent@…> https://svn.boost.org/trac10/ticket/12267 https://svn.boost.org/trac10/ticket/12267 Report #12266: Visual Studio 2015 Express for Desktop and 64-bit builds Sat, 11 Jun 2016 21:15:15 GMT Sat, 11 Jun 2016 21:37:27 GMT <p> When building Boost statically as a set of 64-bit static libraries, I have found that using the "usual" Command Prompt doesn't yield 64-bit objects, but rather 32-bit ones. </p> <p> The build commands I am issuing are: </p> <p> bootstrap.bat b2 toolset=msvc-14.0 address-model=64 link=static --with-thread --with-system --with-regex --with-date_time --with-chrono </p> <p> If I open a "Developer Command Prompt" (equivalent to executing %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\<a class="missing wiki">VsDevCmd</a>.bat"") and then build with the commands above, the libraries generated are 32-bit. </p> <p> If I open a "standard" command prompt (equivalent to %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" x86) and then build with the commands above, the libraries generated are 32-bit. </p> <p> Finally, if I open a "Visual Studio 2015 x86 x64 Cross Tools Command Prompt" (equivalent to %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" x86_amd64) and then build with the commands above, the libraries generated are 64-bit. </p> <p> This is in my opinion a problem because of two reasons: </p> <p> 1) This contradicts the documentation in: <a href="http://www.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.msvc">http://www.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.msvc</a> where it says: "Configure you compiler as usual. If you provide a path to the compiler explicitly, provide the path to the 32-bit compiler. If you try to specify the path to any of 64-bit compilers, configuration will not work." The usual configuration on Windows is the standard Developer Command Prompt. </p> <p> 2) The build doesn't fail or complain that it cannot generate 64-bit binaries, and instead silently disregards the "address-model=64" option and generates 32-bit binaries. </p> <p> Please note that with other tools (CMake for example) one can build both 32 and 64-bit binaries from a "standard" command prompt (i.e. no need to invoke vcvarsall.bat x86_amd64). </p> carles.cufi@… https://svn.boost.org/trac10/ticket/12266 https://svn.boost.org/trac10/ticket/12266 Report #12264: queue<Apple*> can pop to Orange* even when Apples don't relate to Oranges Fri, 10 Jun 2016 20:04:29 GMT Fri, 10 Jun 2016 20:04:29 GMT <p> The following program successfully compiles, but I think it should give a compiler error since it is casting an Apple pointer to an Orange pointer. Apple and Orange have no inheritance relationship so I think the cast should be invalid. </p> <pre class="wiki">#include &lt;boost/lockfree/queue.hpp&gt; class Apple {}; class Orange {}; int main() { boost::lockfree::queue&lt;Apple*&gt; m_queue(1); Orange *orange; m_queue.pop(orange); } </pre><p> For the following program, g++ says "error: cannot convert ‘Orange*’ to ‘Apple*’". If someone forgets what type of object that are storing in boost::lockfree::queue then they could make the above mistake of trying to extract the wrong type and it would be helpful if the compiler and boost caught the error. </p> <pre class="wiki">class Apple {}; class Orange {}; int main() { Orange *orange = new Orange; Apple *apple = orange; } </pre><p> When I make the following change, g++ says "error: cannot convert ‘Apple*’ to ‘Orange*’" for the first program: </p> <pre class="wiki">diff --git a/include/boost/lockfree/detail/copy_payload.hpp b/include/boost/lockfree/detail/copy_payload.hpp index 75b1b52..7679d50 100644 --- a/include/boost/lockfree/detail/copy_payload.hpp +++ b/include/boost/lockfree/detail/copy_payload.hpp @@ -35,7 +35,7 @@ struct copy_constructible_and_copyable template &lt;typename T, typename U&gt; static void copy(T &amp; t, U &amp; u) { - u = U(t); + u = t; } }; </pre><p> Even though that change helps my case by warning me of my error, I think it probably breaks other cases, but at least this might help in understanding the reason why the original version of lockfree does not give an error message. In my case, U is a pointer type. It looks like it is calling the U constructor but I'm not sure what it means to call a constructor of a pointer type. Apparently what it means is to perform some kind of dangerous cast like an old style C cast instead of one of the more safer types of casts like a newer C++ cast. Perhaps you can make lockfree use my change only when U is a pointer type, but use the old version of the code for non-pointer types? </p> <p> I tested with g++ (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) </p> <p> I used this version of lockfree: </p> <p> commit c112c29bee1d35089d4a603027dbbc4e1744d59b Apr 2 12:02:35 2016 +0200 </p> Jacob Burckhardt <JBurckhardt@…> https://svn.boost.org/trac10/ticket/12264 https://svn.boost.org/trac10/ticket/12264 Report #12263: ublas matrix iterators do not include "->" member access (dereferencing) operator, although the operator is referenced in the documentation Fri, 10 Jun 2016 14:09:03 GMT Fri, 10 Jun 2016 14:09:32 GMT <p> The documentation for the ublas matrix iterators includes the "-&gt;" operator for member access (dereferencing), but the source code does not include this operator in either the exposed iterator classes (i.e. iterator1/2) nor the base classes (i.e. random_access_iterator_base). </p> <p> Documentation: <a href="http://www.boost.org/doc/libs/1_61_0/libs/numeric/ublas/doc/iterator_concept.html#1IndexedBidirectionalIterator">http://www.boost.org/doc/libs/1_61_0/libs/numeric/ublas/doc/iterator_concept.html#1IndexedBidirectionalIterator</a> </p> <p> Iterator1 class reference: <a href="http://www.boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/html/classboost_1_1numeric_1_1ublas_1_1matrix_1_1iterator1.html">http://www.boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/html/classboost_1_1numeric_1_1ublas_1_1matrix_1_1iterator1.html</a> </p> <p> Similar observations have been made on <a class="missing wiki">StackOverflow</a>, but appear to have not been written up. See here: <a class="ext-link" href="http://stackoverflow.com/questions/26462271/why-doesnt-the-arrow-operator-work-on-boostnumericublasvector"><span class="icon">​</span>http://stackoverflow.com/questions/26462271/why-doesnt-the-arrow-operator-work-on-boostnumericublasvector</a> </p> <p> This appears to be an oversight, but appears to reach throughout uBLAS. </p> douglas.schuyler@… https://svn.boost.org/trac10/ticket/12263 https://svn.boost.org/trac10/ticket/12263 Report #12261: LT_HalfPrevLoT and GT_HalfSuccHiT are not symmetrical Fri, 10 Jun 2016 12:38:46 GMT Fri, 12 Aug 2016 19:49:12 GMT <p> Reusing low boost conversion policies to implement my own roundToInt method... </p> <p> If you try the following code: </p> <pre class="wiki">template &lt;class To, class From&gt; struct NumericRangeCheckerTraits { typedef To target_type; typedef From source_type; typedef From argument_type; }; struct ToTextOverflowHandlerPolicy { void operator() ( boost::numeric::range_check_result result) { switch (result) { case boost::numeric::cInRange: std::cout &lt;&lt; "the value is in range"&lt;&lt; std::endl; break; case boost::numeric::cNegOverflow: case boost::numeric::cPosOverflow: std::cout &lt;&lt; "the value is out of range"&lt;&lt; std::endl; break; } }; }; double dmax = std::numeric_limits&lt;int&gt;::max() + 0.5; double dmin = std::numeric_limits&lt;int&gt;::min() - 0.5; boost::numeric::convdetail::generic_range_checker&lt;NumericRangeCheckerTraits&lt;int, double&gt;, boost::numeric::convdetail::LT_HalfPrevLoT&lt;NumericRangeCheckerTraits&lt;int, double&gt;&gt;, boost::numeric::convdetail::GT_HalfSuccHiT&lt;NumericRangeCheckerTraits&lt;int, double&gt;&gt;, ToTextOverflowHandlerPolicy&gt;::validate_range(dmax); boost::numeric::convdetail::generic_range_checker&lt;NumericRangeCheckerTraits&lt;int, double&gt;, boost::numeric::convdetail::LT_HalfPrevLoT&lt;NumericRangeCheckerTraits&lt;int, double&gt;&gt;, boost::numeric::convdetail::GT_HalfSuccHiT&lt;NumericRangeCheckerTraits&lt;int, double&gt;&gt;, ToTextOverflowHandlerPolicy&gt;::validate_range(dmin); </pre><p> You will get: </p> <pre class="wiki">the value is out of range the value is in range </pre><p> When they should be both out of range. </p> <p> This is because GT_HalfSuccHiT should implement range_check_result as such: </p> <pre class="wiki">static range_check_result apply ( argument_type s ) { return s &gt; static_cast&lt;S&gt;(bounds&lt;T&gt;::highest()) + static_cast&lt;S&gt;(0.5) ? cPosOverflow : cInRange ; </pre><p> instead of using &gt;=. </p> <p> The comment to describe GT_HalfSuccHiT should be changed as well to: </p> <pre class="wiki">// s &gt; Highest(T) + 0.5 ? cPosgOverflow : cInRange </pre> Christophe Brassart <christophe.brassart@…> https://svn.boost.org/trac10/ticket/12261 https://svn.boost.org/trac10/ticket/12261 Report #12259: improved version of boost::property_tree::ini_parser, which handles comments in INI-files Thu, 09 Jun 2016 09:20:30 GMT Thu, 09 Jun 2016 09:20:30 GMT <p> The original implementation of boost::property_tree::ini_parser does ignore comments when reading, therefore they are also deleted when writing back the Contents of a boost::property_tree. </p> <p> For us this behaviour was not very desirable, as we cannot comment our ini files properly then. </p> <p> Therefore I implemented an alternative Version of boost::property_tree::ini_parser that reads comments into special entries in the boost::property_tree and then uses these entries when writing an INI file to reconstruct the comments. I think the boost library (and other users) might well Profit from such functions and they can easily be provided alongside the already available functions as an alternative. </p> <p> I'm attaching my Version of the ini_parser and hope you can incorporate it into the next Releases of boost. </p> <p> Best, JAN Krieger (Deidelberger Druckmaschinen AG) </p> jan.krieger@… https://svn.boost.org/trac10/ticket/12259 https://svn.boost.org/trac10/ticket/12259 Report #12255: Centroid for polygon failed to compile for rational coordinate Tue, 07 Jun 2016 13:41:47 GMT Thu, 09 Jun 2016 10:48:59 GMT <p> If I use rational coordinate, centroid function for polygon failed to compile. </p> andyplekhanov@… https://svn.boost.org/trac10/ticket/12255 https://svn.boost.org/trac10/ticket/12255 Report #12254: NULL reference to error_code passing to noexcept functions caused std::terminate Tue, 07 Jun 2016 08:27:29 GMT Tue, 07 Jun 2016 10:39:07 GMT <p> With compilers that support noexcept, the following simple code may end up in std::terminate(): </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; int main(int argc, char *argv[]) { try { boost::filesystem::path p(argv[0]); copy(p, p); // EEXIST, then std::terminate } catch (...) {} return 0; } </pre><p> This is because the noexcept function copy_file() has received a NULL reference, which causes one of its subroutines throws an exception. Since copy_file() is noexcept and it throws exceptions, the std::terminate() is called. </p> <p> The call stack is (functions are called from bottom to top): </p> <pre class="wiki">noexcept? function ----------------------------------------------------- false error(unsigned long error_num, const boost::filesystem::path &amp; p1, const boost::filesystem::path &amp; p2, boost::system::error_code * ec, const char * message) false detail::copy_file(const boost::filesystem::path &amp; from, const boost::filesystem::path &amp; to, boost::filesystem::detail::copy_option option, boost::system::error_code * ec) true copy_file(const boost::filesystem::path &amp; from, const boost::filesystem::path &amp; to, boost::filesystem::copy_option option, boost::system::error_code &amp; ec) false detail::copy(const boost::filesystem::path &amp; from, const boost::filesystem::path &amp; to, boost::system::error_code * ec) false copy(const boost::filesystem::path &amp; from, const boost::filesystem::path &amp; to) false main(int argc, char * * argv) </pre><p> The function copy() calls detail::copy() without providing the ec parameter, so ec in detail::copy() is using the default value 0. detail::copy() then calls copy_file(), passing *ec as its parameter. Since ec in detail:copy() is NULL, copy_file() will receive a NULL reference. It then use &amp;ec(that is NULL) to call detail::copy_file(). Since the target file exists, detail::copy_file() will generates EEXIST. Then an exception will be thrown from error(). The exception will be passed through the call stack until it reaches copy_file(). copy_file() is noexcept so it cannot throw exceptions. Then std::terminate() is called. </p> <p> There may be other similar situations apart from this case in Boost.Filesystem. I think the current workaround is removing the BOOST_NOEXCEPT from these functions. For a complete solution, the functions may need careful reviews. </p> aerisnju@… https://svn.boost.org/trac10/ticket/12254 https://svn.boost.org/trac10/ticket/12254 Report #12252: numeric_cast<int64_t>(pow(2.0, 63.0)) doesn't throw Mon, 06 Jun 2016 19:11:33 GMT Mon, 06 Jun 2016 19:11:33 GMT <p> The following code produces an overflow but doesn't throw: </p> <pre class="wiki">int64_t v = numeric_cast&lt;int64_t&gt;(pow(2.0, 63.0)); </pre><p> For an explanation, see <a class="ext-link" href="http://stackoverflow.com/a/30424410/1956010"><span class="icon">​</span>http://stackoverflow.com/a/30424410/1956010</a> </p> wellnhofer@… https://svn.boost.org/trac10/ticket/12252 https://svn.boost.org/trac10/ticket/12252 Report #12251: Add constexpr support to random number generators Fri, 03 Jun 2016 17:06:37 GMT Fri, 03 Jun 2016 17:31:13 GMT <p> Since C++11 the Standard requires the min/max functions of a random number generator to be constexpr [26.5.1.3]. Annotating the min/max functions with BOOST_CONSTEXPR should be enough to fix this. </p> <p> Because of this defect using random number generators from boost::random with random number distributions from libc++ results in a compile time error. (Tested with libc++-3.7) </p> Guillem Blanco <gblanco92@…> https://svn.boost.org/trac10/ticket/12251 https://svn.boost.org/trac10/ticket/12251 Report #12249: Wrong operator|() overload being found on multiple platforms & causing compilation failure Thu, 02 Jun 2016 15:47:39 GMT Thu, 02 Jun 2016 18:21:00 GMT <p> When using the pipe syntax (operator| overloads) for range adaptors I'm finding that the overloads taking replace_holder are being incorrectly selected when using other adaptors over a range exposing abstract base class references. </p> <p> I can reproduce this with filtered, transformed and indexed adaptors; on Clang, gcc &amp; MSVC; and with Boost 1.57 and 1.61. </p> <p> The minimal failing testcase is attached, and compiles fine when the replaced.hpp include is commented out. </p> <p> The error I get with clang for the attached file is: </p> <pre class="wiki">In file included from invoke-boost-failure.cpp:1: In file included from /usr/include/boost/range/adaptor/indexed.hpp:23: /usr/include/boost/range/adaptor/argument_fwd.hpp:36:15: error: field type 'Base' is an abstract class T val1, val2; ^ /usr/include/boost/range/adaptor/replaced.hpp:93:39: note: in instantiation of template class 'boost::range_detail::holder2&lt;Base&gt;' requested here class replace_holder : public holder2&lt;T&gt; ^ invoke-boost-failure.cpp:17:33: note: in instantiation of template class 'boost::range_detail::replace_holder&lt;Base&gt;' requested here for (const auto&amp; b : refs | boost::adaptors::indexed()) ^ invoke-boost-failure.cpp:8:13: note: unimplemented pure virtual method '~Base' in 'Base' virtual ~Base() = 0; ^ In file included from invoke-boost-failure.cpp:1: In file included from /usr/include/boost/range/adaptor/indexed.hpp:23: /usr/include/boost/range/adaptor/argument_fwd.hpp:36:21: error: field type 'Base' is an abstract class T val1, val2; ^ 2 errors generated. </pre><p> I can work around this by using the function call syntax for adaptors, but I can't suggest a fix as I don't understand why that overload is being selected at all. </p> rob.desbois@… https://svn.boost.org/trac10/ticket/12249 https://svn.boost.org/trac10/ticket/12249 Report #12243: Boost.Serialization compilation error in Visual Studio with Zc:wchar_t- Wed, 01 Jun 2016 15:30:09 GMT Tue, 13 Jun 2017 17:10:38 GMT <p> The error is following: </p> <pre class="wiki">C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\limits(85) : error C2090: function returns array H:\Third_party_src\boost\boost_1_61_0-compiled\boost/archive/basic_text_oprimitive.hpp(147) : see reference to class template instantiation 'std::numeric_limits&lt;_Ty&gt;' being compiled with [ _Ty=const unsigned short [24] ] H:\Third_party_src\boost\boost_1_61_0-compiled\boost/archive/basic_text_oprimitive.hpp(180) : see reference to class template instantiation 'boost::archive::basic_text_oprimitive&lt;OStream&gt;::is_float&lt;T&gt;' being compiled with [ OStream=std::wostream, T=const unsigned short [24] ] H:\Third_party_src\boost\boost_1_61_0-compiled\boost/archive/xml_woarchive.hpp(73) : see reference to function template instantiation 'void boost::archive::basic_text_oprimitive&lt;OStream&gt;::save&lt;const unsigned short[24]&gt;(T (&amp;))' being compiled with [ OStream=std::wostream, T=const unsigned short [24] ] H:\Third_party_src\boost\boost_1_61_0-compiled\boost/archive/xml_woarchive.hpp(73) : see reference to function template instantiation 'void boost::archive::basic_text_oprimitive&lt;OStream&gt;::save&lt;const unsigned short[24]&gt;(T (&amp;))' being compiled with [ OStream=std::wostream, T=const unsigned short [24] ] H:\Third_party_src\boost\boost_1_61_0-compiled\boost/archive/impl/xml_woarchive_impl.ipp(144) : see reference to function template instantiation 'void boost::archive::xml_woarchive_impl&lt;Archive&gt;::save&lt;const unsigned short[24]&gt;(T (&amp;))' being compiled with [ Archive=boost::archive::xml_woarchive, T=const unsigned short [24] ] ............................... </pre><p> The problem is with <strong>boost/archive/impl/xml_woarchive_impl.ipp(144)</strong> line: </p> <pre class="wiki"> save(L"&lt;/boost_serialization&gt;\n"); </pre><p> It's fixed by replacing line with </p> <pre class="wiki"> save((const wchar_t*)L"&lt;/boost_serialization&gt;\n"); </pre><p> Interesting error, as it treats the literal L"&lt;/boost_serialization&gt;\n" as 'const unsigned short <a class="changeset" href="https://svn.boost.org/trac10/changeset/24" title="*** empty log message *** ">[24]</a>' and picks </p> <pre class="wiki">template&lt;class T&gt; void save(const T &amp; t){ basic_text_oprimitive&lt;std::wostream&gt;::save(t); } </pre><p> from <strong>boost/archive/xml_woarchive.hpp</strong> , instead of correct </p> <pre class="wiki"> #ifndef BOOST_NO_INTRINSIC_WCHAR_T BOOST_WARCHIVE_DECL void save(const wchar_t * t); #endif </pre><p> And... If we remove the </p> <pre class="wiki"> #ifndef BOOST_NO_INTRINSIC_WCHAR_T </pre><p> everything (including /Zc:wchar_t and /Zc:wchar_t- configurations) compiles fine. </p> <p> <strong>So the actual bug is this 'ifndef'.</strong> </p> <p> Why it was placed here? Most likely by mistake. </p> <p> Please remove this 'ifndef'. </p> anonymous https://svn.boost.org/trac10/ticket/12243 https://svn.boost.org/trac10/ticket/12243 Report #12240: Documentation for data-driven testing should explictly mention std::tuple Tue, 31 May 2016 14:09:03 GMT Thu, 29 Sep 2016 14:14:53 GMT <p> <code>BOOST_DATA_TEST_CASE()</code> handles ranges of <code>std::tuple</code>s differently to ranges of other types, in that it expects to be able to expand the parts of the tuples out to multiple variables. Whether or not this is intended or just a side-effect of the implementation, I think it's a sensible behaviour. Indeed, it's quite useful to be able to supply <code>BOOST_DATA_TEST_CASE()</code> with pre-zipped data rather than always having to use <code>^</code>. </p> <p> However at the moment, this special handling of <code>std::tuple</code> is not documented. Hence I suggest that this be included in the documentation (possibly near the "Zips" section) or otherwise that the implementation is changed so that users' ranges of <code>std::tuple</code>s are treated like ranges of other types (ie each tuple is expanded to one variable). </p> <p> Many thanks for your work on this library. </p> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/12240 https://svn.boost.org/trac10/ticket/12240 Report #12239: Filesystem compiler error when using Clang 3.7 in Microsoft Windows Tue, 31 May 2016 01:15:53 GMT Sun, 05 Jun 2016 17:38:29 GMT <p> Hi, I am getting the following error as I compile the filesystem source files: </p> <p> 'void <span class="underline">cdecl boost::detail::atomic_increment(struct </span>clang::_Atomic&lt;int&gt; * <span class="underline">ptr64)': Unexpected atomic instruction -- use Windows interlock intrinsics </span></p> <blockquote> <p> %6 = atomicrmw add i32* %4, i32 %5 monotonic, !dbg !9335 </p> </blockquote> <blockquote> <p> c:\users\juan_\documents\github\boost_1_61_0\boost_1_61_0\boost/smart_ptr/detail/sp_counted_base_clang.hpp(31): fatal error C1001: </p> </blockquote> <p> An internal error has occurred in the compiler. </p> <p> There is no error if I compile with the default Visual Studio 2015 Update 2 compiler </p> <p> Regards, Juan </p> JUAN DENT <juandent@…> https://svn.boost.org/trac10/ticket/12239 https://svn.boost.org/trac10/ticket/12239 Report #12238: Boost fails to compile using OpenSSL 1.1.0 Mon, 30 May 2016 23:32:58 GMT Wed, 28 Sep 2016 23:31:24 GMT <p> Boost 1.61 cannot compile when using OpenSSL 1.1.0. Also see <a class="ext-link" href="http://stackoverflow.com/q/37517730"><span class="icon">​</span>http://stackoverflow.com/q/37517730</a>. </p> <p> My apologies if this has been reported. A quick search appears to show there are no reports (<a class="ext-link" href="https://svn.boost.org/trac/boost/search?q=%22openssl+1.1.0%22"><span class="icon">​</span>https://svn.boost.org/trac/boost/search?q=%22openssl+1.1.0%22</a>). </p> noloader@… https://svn.boost.org/trac10/ticket/12238 https://svn.boost.org/trac10/ticket/12238 Report #12232: boost::interprocess::intermodule_singleton initialization failed in Windows 2012 Server Sat, 28 May 2016 00:57:40 GMT Wed, 28 Sep 2016 11:01:39 GMT <p> Hi, </p> <p> I've got the following exception from Boost Interprocess using Windows 2012 Server: "boost::interprocess::intermodule_singleton initialization". </p> <p> I've tried to fix it removing <a class="missing wiki">SharedMemory</a> and Shared variables previously created, but it doesn't work. The only solution for it is restarting the server. </p> <p> The expcetion happens using this code: </p> <p> <em>Removing previously created </em></p> <p> boost::interprocess::named_mutex::remove("TEST.SHARED.MEMORY0000002.MTX1.0.000000000000000000000000009"); if (mtx1 != nullptr) { </p> <blockquote> <p> delete mtx1; mtx1 = nullptr; </p> </blockquote> <p> } </p> <p> boost::interprocess::named_condition::remove("TEST.SHARED.MEMORY0000004.NMC1.0.000000000000000000000000050")); if (condition1 != nullptr) { </p> <blockquote> <p> delete condition1; condition1 = nullptr; </p> </blockquote> <p> } </p> <p> boost::interprocess::shared_memory_object::remove("TEST.SHARED.MEMORY0000001.XXX.0.000000000000000000000000021"); if (shmObj1 != nullptr) { </p> <blockquote> <p> delete shmObj1; shmObj1 = nullptr; </p> </blockquote> <p> } </p> <p> <em>Creating <a class="missing wiki">SharedMemory</a> boost::interprocess::permissions shared_memory_Perm; shared_memory_Perm.set_unrestricted(); boost::interprocess::managed_shared_memory shmObj1 = new boost::interprocess::managed_shared_memory </em></p> <blockquote> <p> (boost::interprocess::create_only_t(), "TEST.SHARED.MEMORY0000001.XXX.0.000000000000000000000000021", 42768, static_cast&lt;const void*&gt;(NULL), shared_memory_Perm ); </p> </blockquote> <p> boost::interprocess::named_mutex* mtx1 = new boost::interprocess::named_mutex(boost::interprocess::create_only_t(), "TEST.SHARED.MEMORY0000002.MTX1.0.000000000000000000000000009"); boost::interprocess::named_condition* condition1 = new boost::interprocess::named_condition(boost::interprocess::create_only_t(), "TEST.SHARED.MEMORY0000004.NMC1.0.000000000000000000000000050"); </p> <p> Please, I need some help to fix this problem. Is there any solution without restaring the server for it? </p> <p> Thanks! </p> rafael.bronzeri@… https://svn.boost.org/trac10/ticket/12232 https://svn.boost.org/trac10/ticket/12232 Report #12231: How to build boost with CMake? Fri, 27 May 2016 17:31:05 GMT Fri, 27 May 2016 23:00:27 GMT <p> Hi, I need to build Boost with the Clang 3.7 with Microsoft <a class="missing wiki">CodeGen</a> compiler and the only way I know how to do this is using CMake ... I downloaded Boost via: </p> <blockquote> <p> svn co <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk</a> boost-trunk </p> </blockquote> <p> but it has no CMakeLists.txt files. I had read that it was possible to use CMake to build Boost??? </p> <p> Please help, Juan Dent </p> juandent@… https://svn.boost.org/trac10/ticket/12231 https://svn.boost.org/trac10/ticket/12231 Report #12229: intrusive::unordered_set<T>::rehash() broken Fri, 27 May 2016 11:13:19 GMT Thu, 10 Nov 2016 09:04:45 GMT <p> I do use the intrusive::unordered_set&lt;T&gt; to store language-dependent objects, and when the language changes, I used to use </p> <p> mymap::rehash() </p> <p> to update the buckets. Notice the bucket count does not change! </p> <p> As it is now (1.61), "fast_shrink" becomes true: </p> <blockquote> <p> const bool fast_shrink = (!incremental) &amp;&amp; (old_bucket_count &gt;= new_bucket_count) &amp;&amp; </p> <blockquote> <table class="wiki"> <tr>(power_2_buckets <td> (old_bucket_count % new_bucket_count) == 0); </td></tr></table> </blockquote> </blockquote> <p> while in the previouis version used, it was </p> <blockquote> <p> const bool fast_shrink = (!incremental) &amp;&amp; (old_bucket_count &gt; new_bucket_count) &amp;&amp; </p> <blockquote> <table class="wiki"> <tr>(power_2_buckets <td style="text-align: left">(old_bucket_count % new_bucket_count) == 0); </td></tr></table> </blockquote> </blockquote> <p> and "fast_shrink" was false. </p> <p> Due to </p> <blockquote> <p> if(same_buffer &amp;&amp; fast_shrink &amp;&amp; (n &lt; new_bucket_count)){ </p> <blockquote> <p> new_first_bucket_num = n; n = new_bucket_count; </p> </blockquote> <p> } </p> </blockquote> <p> the "n" is set to the bucket count, and the loop that is rehashing is <strong>NOT</strong> entered any more, thus rehash() does nothing any more. </p> <p> This is according to the documentation, but a change in behaviour. So I add this as as a warning that the change might cause trouble for some people. A "rehash(bucket_size+1)" still does its job, though not as optimal as the size is then not a prime any more. An optional "force_rehash" parameter or such to the rehash() function might be handy. </p> Christian Kaiser <boost@…> https://svn.boost.org/trac10/ticket/12229 https://svn.boost.org/trac10/ticket/12229 Report #12219: Compilation error using input_seekable with gzip_decompressor() Sun, 22 May 2016 01:19:15 GMT Sun, 05 Jun 2016 17:41:36 GMT <p> Hello: </p> <p> I am trying to use boost:iostream::input_seekable and GZIP decompressor. But, when the push function is called the compiler show me the error below. I posted the code too. </p> <pre class="wiki">std::ifstream file("file.tgz"); boost::iostreams::filtering_streambuf&lt;boost::iostreams::input_seekable&gt; in; in.push(boost::iostreams::gzip_decompressor());// here the error C2338, if I comment this line the error is gone in.push(file); </pre><p> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(244): error C2338: (is_convertible&lt;category, Mode&gt;::value) 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; source\c_archive.cpp(60) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push&lt;boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt;&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; source\c_archive.cpp(60) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push&lt;boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt;&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt;C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/stream_buffer.hpp(68): error C2338: ( is_convertible&lt; BOOST_DEDUCED_TYPENAME iostreams::category_of&lt;T&gt;::type, Mode &gt;::value ) 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(257) : see reference to class template instantiation 'boost::iostreams::stream_buffer&lt;component_type,std::char_traits&lt;char&gt;,Alloc,Mode&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Alloc=std::allocator&lt;char&gt; 1&gt; , Mode=boost::iostreams::input_seekable 1&gt; ] </p> efrain.astudillo58@… https://svn.boost.org/trac10/ticket/12219 https://svn.boost.org/trac10/ticket/12219 Report #12218: Compilation error using input_seekable with gzip_decompressor() Sun, 22 May 2016 01:18:41 GMT Fri, 19 Aug 2016 21:21:40 GMT <p> Hello: </p> <p> I am trying to use boost:iostream::input_seekable and GZIP decompressor. But, when the push function is called the compiler show me the error below. I posted the code too. </p> <pre class="wiki">std::ifstream file("file.tgz"); boost::iostreams::filtering_streambuf&lt;boost::iostreams::input_seekable&gt; in; in.push(boost::iostreams::gzip_decompressor());// here the error C2338, if I comment this line the error is gone in.push(file); </pre><p> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(244): error C2338: (is_convertible&lt;category, Mode&gt;::value) 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499) : see reference to function template instantiation 'void boost::iostreams::detail::chain_base&lt;boost::iostreams::chain&lt;Mode,Ch,Tr,Alloc&gt;,Ch,Tr,Alloc,Mode&gt;::push&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Mode=boost::iostreams::input_seekable 1&gt; , Ch=char 1&gt; , Tr=std::char_traits&lt;char&gt; 1&gt; , Alloc=std::allocator&lt;char&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push_impl&lt;T&gt;(const T &amp;,std::streamsize,std::streamsize)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; source\c_archive.cpp(60) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push&lt;boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt;&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; source\c_archive.cpp(60) : see reference to function template instantiation 'void boost::iostreams::detail::chain_client&lt;Self&gt;::push&lt;boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt;&gt;(const T &amp;,std::streamsize,std::streamsize,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; Self=boost::iostreams::chain&lt;boost::iostreams::input_seekable,char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , T=boost::iostreams::basic_bzip2_decompressor&lt;std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt;C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/stream_buffer.hpp(68): error C2338: ( is_convertible&lt; BOOST_DEDUCED_TYPENAME iostreams::category_of&lt;T&gt;::type, Mode &gt;::value ) 1&gt; C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(257) : see reference to class template instantiation 'boost::iostreams::stream_buffer&lt;component_type,std::char_traits&lt;char&gt;,Alloc,Mode&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Alloc=std::allocator&lt;char&gt; 1&gt; , Mode=boost::iostreams::input_seekable 1&gt; ] }}} </p> anonymous https://svn.boost.org/trac10/ticket/12218 https://svn.boost.org/trac10/ticket/12218 Report #12217: boost.iostreams on Android can't find ZLIB Fri, 20 May 2016 10:09:21 GMT Fri, 20 May 2016 10:10:36 GMT <p> boost.iostreams on Android can't find ZLIB if host is Linux. Works fine for OSX host. </p> <p> Build options: </p> <pre class="wiki">-a link=static threading=multi variant=debug,release --layout=tagged toolset=gcc-ndk --user-config=/home/travis/.hunter/_Base/1e7fc8f/3bce312/7416caa/Build/Boost/__iostreams/Build/boost.user.jam --with-iostreams -s NO_COMPRESSION=0 -s NO_ZLIB=0 -s NO_BZIP2=1 -s ZLIB_INCLUDE=/home/travis/.hunter/_Base/1e7fc8f/3bce312/7416caa/Install/include -s ZLIB_LIBPATH=/home/travis/.hunter/_Base/1e7fc8f/3bce312/7416caa/Install/lib -s ZLIB_BINARY=zd linkflags= -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,nocopyreloc -fPIE -pie -j 2 </pre><p> boost.user.jam content: </p> <pre class="wiki">using gcc : ndk : "/home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++" -fexceptions -frtti -Wno-psabi --sysroot=/home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/platforms/android-19/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=neon -fdata-sections -ffunction-sections -Wa,--noexecstack -std=c++11 -DANDROID -isystem /home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/platforms/android-19/arch-arm/usr/include -isystem /home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -isystem /home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward : &lt;archiver&gt; "/home/travis/build/ruslo/hunter_sandbox/_ci/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ar" ; </pre><p> On Linux '-lrt' library added and it breaks ZLIB linking test: </p> <pre class="wiki">"/.../android-ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++" "-fexceptions" "-frtti" "-Wno-psabi" "--sysroot=/.../android-ndk/android-ndk-r10e/platforms/android-19/arch-arm" "-funwind-tables" "-finline-limit=64" "-fsigned-char" "-no-canonical-prefixes" "-march=armv7-a" "-mfloat-abi=softfp" "-mfpu=neon" "-fdata-sections" "-ffunction-sections" "-Wa,--noexecstack" "-std=c++11" "-DANDROID" "-isystem" "/.../android-ndk/android-ndk-r10e/platforms/android-19/arch-arm/usr/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward" -L"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -Wl,-R -Wl,"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -Wl,-rpath-link -Wl,"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -o "bin.v2/standalone/ac/gcc-ndk/debug/link-static/threading-multi/zd" -Wl,--start-group "bin.v2/standalone/ac/gcc-ndk/debug/link-static/threading-multi/main.o" -Wl,-Bstatic -lzd -Wl,-Bdynamic -lrt &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; -Wl,--end-group -g -pthread -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,nocopyreloc -fPIE -pie /.../android-ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lrt </pre><p> There is no '-lrt' on OSX and same configuration works fine: </p> <pre class="wiki">"/.../android-ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++" "-fexceptions" "-frtti" "-Wno-psabi" "--sysroot=/.../android-ndk/android-ndk-r10e/platforms/android-19/arch-arm" "-funwind-tables" "-finline-limit=64" "-fsigned-char" "-no-canonical-prefixes" "-march=armv7-a" "-mfloat-abi=softfp" "-mfpu=neon" "-fdata-sections" "-ffunction-sections" "-Wa,--noexecstack" "-std=c++11" "-DANDROID" "-isystem" "/.../android-ndk/android-ndk-r10e/platforms/android-19/arch-arm/usr/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include" "-isystem" "/.../android-ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward" -L"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -Wl,-R -Wl,"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -Wl,-rpath-link -Wl,"/.../hunter/_Base/xxxxxxx/3bce312/7416caa/Install/lib" -o "bin.v2/standalone/ac/gcc-ndk/debug/link-static/threading-multi/zd" -Wl,--start-group "bin.v2/standalone/ac/gcc-ndk/debug/link-static/threading-multi/main.o" -Wl,-Bstatic -lzd -Wl,-Bdynamic -Wl,--end-group -g -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,nocopyreloc -fPIE -pie </pre><p> There should be no difference because same Android toolchain used on both hosts. OS of host should not affect Android build. </p> <ul><li>Linux log: <a class="ext-link" href="https://s3.amazonaws.com/archive.travis-ci.org/jobs/131643137/log.txt"><span class="icon">​</span>https://s3.amazonaws.com/archive.travis-ci.org/jobs/131643137/log.txt</a> </li><li>OSX log: <a class="ext-link" href="https://s3.amazonaws.com/archive.travis-ci.org/jobs/131643139/log.txt"><span class="icon">​</span>https://s3.amazonaws.com/archive.travis-ci.org/jobs/131643139/log.txt</a> </li></ul> ruslan_baratov@… https://svn.boost.org/trac10/ticket/12217 https://svn.boost.org/trac10/ticket/12217 Report #12211: boost::multiprecision cpp_int renders string inconsistently w.r.t. locale Tue, 17 May 2016 08:08:49 GMT Sun, 23 Oct 2016 17:15:19 GMT <p> When a global locale is set that differs from the classic one, the string output is inconsistent for small numbers, i.e. that fit into one limb, vs bigger numbers. If the locale defines a thousands separator, it is rendered for the small number but not for the bigger number. Example: str() will render 9.999 but also 9999999999999999 </p> <p> The reason is the different internal handling of these cases: a small number is rendered using boost lexical_cast, which evaluates the global locale, while the bigger number is constructed by hand. </p> <p> Required behavior is that the output is consistent regardless of the size of the number. In addition, it would be nice if str() would use the global locale, while the stream output respects the locale imbued into the given stream. </p> Tassilo Glander <tassilo.glander@…> https://svn.boost.org/trac10/ticket/12211 https://svn.boost.org/trac10/ticket/12211 Report #12208: Lexer does not work with boost::spirit::istream_iterator Mon, 16 May 2016 06:14:06 GMT Fri, 24 Nov 2017 23:29:03 GMT <p> According to the documentation, any forward iterator should be usable for the input stream iterator. boost::spirit::istream_iterator is a forward iterator, yet I find boost::wave::lexing_exception is called when it is used instead of std::string_iterator. Further, the Changelog has this to say: </p> <p> TODO (known issues): ... </p> <ul><li>Fix the re2c lexer for iterators others then string::iterator (or more generally for iterators, which aren't random access iterators) </li></ul><p> which implies that this is a known problem. </p> <p> Either the documentation should indicate that a random access iterator is required (and this should be enforced with an iterator traits check), or the code should be fixed to only require a forward iterator. </p> edaskel@… https://svn.boost.org/trac10/ticket/12208 https://svn.boost.org/trac10/ticket/12208 Report #12207: allocate_shared using fast_pool_allocator results in member vector iterator memory corruption on MSVC Sun, 15 May 2016 20:26:37 GMT Sun, 15 May 2016 20:26:37 GMT <p> Reproducer: </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;boost/pool/pool_alloc.hpp&gt; struct TestStruct { std::vector&lt;int&gt; vec; }; int main() { //std::allocator&lt;TestStruct&gt; allocator; // works boost::fast_pool_allocator&lt;TestStruct&gt; allocator; auto test = std::allocate_shared&lt;TestStruct&gt;(allocator); test-&gt;vec.push_back(1); auto iter = test-&gt;vec.begin(); auto val = *iter; } </pre><p> When dereferencing iter it will assert "vector iterator not dereferencable" on MSVC (using 2015 Community Edition) everytime on 64-bit and sporadically on 32-bit. </p> <p> If you put a break point (or break after the assert) and check </p> <pre class="wiki">"iter" -&gt; "[Raw View]" -&gt; "std::_Vector_const_iterator ..." -&gt; "std::_Iterator012 ..." -&gt; "std::_Iterator_base12" -&gt; "_Myproxy" -&gt; "_Mycont" -&gt; "_Myproxy" </pre><p> you can see that the _Myproxy of _Mycont is "0xcccccccccccccccc" (uninitialized) when it should point to the _Myproxy of std::_Iterator_base12, forming a loop (which is the case when using std::allocator for the allocation). Note that the times it works when you compile on 32-bit the memory still seems to be corrupted (it's just not set to "0xcccccccccccccccc"). </p> esas https://svn.boost.org/trac10/ticket/12207 https://svn.boost.org/trac10/ticket/12207 Report #12206: gcc 6.1 reports "misleading-indentation" warning Sun, 15 May 2016 17:27:11 GMT Mon, 16 May 2016 14:48:20 GMT <p> GCC 6.1 produces the following output (-Wall, -Werror). </p> <p> ../boost/algorithm/cxx11/none_of.hpp: In function 'bool boost::algorithm::none_of(<a class="missing wiki">InputIterator</a>, <a class="missing wiki">InputIterator</a>, Predicate)': ../boost/algorithm/cxx11/none_of.hpp:32:1: error: this 'for' clause does not guard... [-Werror=misleading-indentation] </p> <blockquote> <p> for ( ; first != last; ++first ) <sup><del> </del></sup></p> </blockquote> <p> ../boost/algorithm/cxx11/none_of.hpp:35:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'for' </p> <blockquote> <p> return true; <sup><del></del>~ </sup></p> </blockquote> yuri.borisoff@… https://svn.boost.org/trac10/ticket/12206 https://svn.boost.org/trac10/ticket/12206 Report #12205: FTBFS boost.serialization 1.61: undefined reference to boost::archive::codecvt_null<wchar_t> Sat, 14 May 2016 13:15:39 GMT Sun, 26 Nov 2017 18:42:05 GMT <p> hello, </p> <p> I cannot compile boost 1.61 (1.60 is fine with the same setup): </p> <pre class="wiki">boost/archive/codecvt_null.hpp:93: undefined reference to `vtable for boost::archive::codecvt_null&lt;wchar_t&gt; </pre><p> The incriminated package seems serialization, as it goes on with '--without-serialization' flag. </p> <p> The setup is mingw-w64 on linux, with gcc 6.1. </p> <p> See full log attached. </p> xantares https://svn.boost.org/trac10/ticket/12205 https://svn.boost.org/trac10/ticket/12205 Report #12197: is_valid returns self-intersection error for multipolygons with many decimal Thu, 12 May 2016 21:10:49 GMT Mon, 16 May 2016 17:57:49 GMT <p> The following code: </p> <pre class="wiki">typedef boost::geometry::model::polygon&lt;Point&gt; Polygon; typedef boost::geometry::model::multi_polygon&lt;Polygon&gt; MultiPolygon; Polygon outer1{ { { 2753.82399, 22518.895 }, { 2790.93453, 22448.2618 }, { 14793.2302, 27809.5376 }, { 14590.7789, 28141.4075 }, { 16120.2042, 25634.299 }, { 16830.1157, 23682.3504 }, { 3698, 17280.4245 }, { 3698, 20053 }, { 3290.86756, 20924.5835 }, { 3140.68998, 21523.9236 }, { 2753.82399, 22518.895 } } }; Polygon outer2{ { { -4891.23816, 18463.1873 }, { -5184.20528, 17101.1945 }, { -5793.67689, 15410.9396 }, { -6670.90183, 13924.6072 }, { -7655.52041, 12671.2939 }, { -8707.48466, 11854.286 }, { -9810.20847, 11342.7777 }, { -11002.6639, 11255.3896 }, { -12121.6054, 11341.764 }, { -13226.5153, 11854.286 }, { -14278.4796, 12671.2939 }, { -14967.9231, 13548.8837 }, { -4891.23816, 18463.1873 } } }; Polygon outer3{ { { -15799.8356, 25348.5883 }, { -15939.2155, 25634.3426 }, { -14410.8012, 28141.3084 }, { -12165.7175, 30390.1272 }, { -9561.60646, 32349.5454 }, { -6622.17286, 33700.601 }, { -3329.74574, 34602.3629 }, { -0.657491358, 34754.8041 }, { 3511.98218, 34602.0035 }, { 3199.23919, 34615.6034 }, { -15799.8356, 25348.5883 } } }; MultiPolygon multiPolygon; multiPolygon.push_back(outer1); multiPolygon.push_back(outer2); multiPolygon.push_back(outer3); std::cout &lt;&lt; (boost::geometry::is_valid(outer1) ? "outer1 is valid" : "outer1 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::is_valid(outer2) ? "outer2 is valid" : "outer2 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::is_valid(outer3) ? "outer3 is valid" : "outer3 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer1, outer2) ? "1 and 2 intersects" : "1 and 2 do not intersects") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer1, outer3) ? "1 and 3 intersects" : "1 and 3 do not intersects") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer3, outer2) ? "3 and 2 intersects" : "3 and 2 do not intersects") &lt;&lt; std::endl; boost::geometry::validity_failure_type failure; auto test = boost::geometry::is_valid(multiPolygon, failure); std::cout &lt;&lt; (test ? "multiPolygon is valid " : "multiPolygon is invalid ") &lt;&lt; failure &lt;&lt; std::endl; </pre><p> will fail (and show error code 21), but keep the same values, shorten every number by a few decimals, and all of a sudden, is_valid starts working again </p> <pre class="wiki">typedef boost::geometry::model::polygon&lt;Point&gt; Polygon; typedef boost::geometry::model::multi_polygon&lt;Polygon&gt; MultiPolygon; Polygon outer1{ { {2753.82, 22518.9}, {2790.93, 22448.3}, {14793.2, 27809.5}, {14590.8, 28141.4}, {16120.2, 25634.3}, {16830.1, 23682.4}, {3698, 17280.4} , {3698, 20053} , {3290.87, 20924.6}, {3140.69, 21523.9}, {2753.82, 22518.9} } }; Polygon outer2{ { {-4891.24, 18463.2}, {-5184.21, 17101.2}, {-5793.68, 15410.9}, {-6670.9, 13924.6} , {-7655.52, 12671.3}, {-8707.48, 11854.3}, {-9810.21, 11342.8}, {-11002.7, 11255.4}, {-12121.6, 11341.8}, {-13226.5, 11854.3}, {-14278.5, 12671.3}, {-14967.9, 13548.9}, {-4891.24, 18463.2} } }; Polygon outer3{ { {-15799.8, 25348.6}, {-15939.2, 25634.3}, {-14410.8, 28141.3}, {-12165.7, 30390.1}, {-9561.61, 32349.5}, {-6622.17, 33700.6}, {-3329.75, 34602.4}, {-0.657491, 34754.8}, {3511.98, 34602}, {3199.24, 34615.6}, {-15799.8, 25348.6} } }; MultiPolygon multiPolygon; multiPolygon.push_back(outer1); multiPolygon.push_back(outer2); multiPolygon.push_back(outer3); std::cout &lt;&lt; (boost::geometry::is_valid(outer1) ? "1 is valid" : "1 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::is_valid(outer2) ? "2 is valid" : "2 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::is_valid(outer3) ? "3 is valid" : "3 is invalid") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer1, outer2) ? "1 and 2 intersects" : "1 and 2 do not intersects") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer1, outer3) ? "1 and 3 intersects" : "1 and 3 do not intersects") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::intersects(outer3, outer2) ? "3 and 2 intersects" : "3 and 2 do not intersects") &lt;&lt; std::endl; std::cout &lt;&lt; (boost::geometry::is_valid(multiPolygon) ? "multiPolygon is valid" : "multiPolygon is invalid") &lt;&lt; std::endl; </pre> jean.sebastien.carrier@… https://svn.boost.org/trac10/ticket/12197 https://svn.boost.org/trac10/ticket/12197 Report #12188: Valgrind reports invalid delete after using boost::asio::ip::tcp::resolver.resolve Tue, 10 May 2016 13:34:06 GMT Tue, 10 May 2016 13:34:06 GMT <p> OS: </p> <p> Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64 GNU/Linux </p> <p> COMPILER: </p> <p> gcc version 4.9.2 (Debian 4.9.2-10) </p> <p> SOURCE: </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; int main() { boost::asio::io_service queue; boost::asio::ip::tcp::resolver resolver( queue ); boost::asio::ip::tcp::resolver::query query( "google.com", "" ); resolver.resolve( query ); queue.run(); } </pre><p> COMMAND: </p> <pre class="wiki">gcc main.cpp -lstdc++ -pthread -lboost_system valgrind ./a.out </pre><p> OUTPUT: </p> <pre class="wiki">==20844== Memcheck, a memory error detector ==20844== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==20844== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info ==20844== Command: ./a.out ==20844== ==20844== Invalid free() / delete / delete[] / realloc() ==20844== at 0x4C29E90: free (vg_replace_malloc.c:473) ==20844== by 0x58C249B: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.19.so) ==20844== by 0x4A236CC: _vgnU_freeres (vg_preloaded.c:63) ==20844== by 0x57ADAEA: __run_exit_handlers (exit.c:97) ==20844== by 0x57ADB74: exit (exit.c:104) ==20844== by 0x5797B4B: (below main) (libc-start.c:321) ==20844== Address 0x5b1b2d0 is 0 bytes inside data symbol "noai6ai_cached" ==20844== ==20844== ==20844== HEAP SUMMARY: ==20844== in use at exit: 0 bytes in 0 blocks ==20844== total heap usage: 79 allocs, 80 frees, 11,451 bytes allocated ==20844== ==20844== All heap blocks were freed -- no leaks are possible ==20844== ==20844== For counts of detected and suppressed errors, rerun with: -v ==20844== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) </pre> Mateusz Wójcik <mateusz.wojcik@…> https://svn.boost.org/trac10/ticket/12188 https://svn.boost.org/trac10/ticket/12188 Report #12187: Boost-bugs Archive link does not work Tue, 10 May 2016 11:23:55 GMT Tue, 10 May 2016 11:23:55 GMT <p> Boost mailing list email footer says go to <a class="ext-link" href="http://lists.boost.org/mailman/listinfo.cgi/boost-bugs"><span class="icon">​</span>http://lists.boost.org/mailman/listinfo.cgi/boost-bugs</a> for bug list. </p> <p> In that page it says This mailing list is a read-only mailing list that receives updates every time tickets in Boost's Trac system are updated. To see the collection of prior postings to the list, visit the Boost-bugs Archives (<a class="ext-link" href="http://lists.boost.org/boost-bugs/"><span class="icon">​</span>http://lists.boost.org/boost-bugs/</a>). </p> <p> But this link shows 404 error </p> <p> Someone need to correct bug archive url to in email template footer </p> nayana4u@… https://svn.boost.org/trac10/ticket/12187 https://svn.boost.org/trac10/ticket/12187 Report #12186: Inclusion order for labeled_graph Tue, 10 May 2016 08:04:59 GMT Wed, 10 Aug 2016 11:49:27 GMT <p> Hi, </p> <p> It looks like the labeled_graph header has some unmet dependencies. If labeled_graph is the first boost graph include compilation will fail. If it is not the first (e.g. after adjacency_list) compilation suceeds. I am using boost 1.54. Sorry I have no idea if this has been fixed in later versions. </p> <p> Ex. 1 compilation fails </p> <pre class="wiki">#include "boost/graph/labeled_graph.hpp" #include "boost/graph/adjacency_list.hpp" int main(int,char*[]) { } </pre><p> Ex. 2 compilation succeeds with include order swapped. </p> <pre class="wiki">#include "boost/graph/adjacency_list.hpp" #include "boost/graph/labeled_graph.hpp" int main(int,char*[]) { } </pre> scott_paulin@… https://svn.boost.org/trac10/ticket/12186 https://svn.boost.org/trac10/ticket/12186 Report #12185: bootstrap for boost_60_0 does not work for Visual Studio 2013 Mon, 09 May 2016 19:19:51 GMT Tue, 10 May 2016 10:38:04 GMT <p> Trying a simplified Windows build of boost_60_0, the most recent stable version. </p> <p> Went through previous tickets and tried applying <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/9301"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/9301</a> without success. </p> <p> Am using Visual Studio 2013 on a Windows v10 64-bit laptop. Was following tutorial <a href="http://www.boost.org/doc/libs/1_60_0/more/getting_started/windows.html#simplified-build-from-source">http://www.boost.org/doc/libs/1_60_0/more/getting_started/windows.html#simplified-build-from-source</a>. </p> <p> Received the following error upon trying to execute "bootstrap" from the DOS command line: </p> <p> C:\Users\peter.raeth\Downloads\boost_1_60_0&gt;bootstrap Building Boost.Build engine </p> <p> Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. </p> <p> You can try to obtain a prebuilt binary from </p> <blockquote> <p> <a class="ext-link" href="http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941"><span class="icon">​</span>http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941</a> </p> </blockquote> <p> Also, you can file an issue at <a class="ext-link" href="http://svn.boost.org"><span class="icon">​</span>http://svn.boost.org</a> Please attach bootstrap.log in that case. </p> <p> C:\Users\peter.raeth\Downloads\boost_1_60_0&gt; </p> <p> Log says no include path set but can not see how to set that. </p> <p> Would prefer the build process since the prebuilt binaries appear to be pretty old. </p> peter.raeth@… https://svn.boost.org/trac10/ticket/12185 https://svn.boost.org/trac10/ticket/12185 Report #12182: boost::asio async_send corrupts memory on Visual Studio 2015 x64 build Sun, 08 May 2016 14:19:43 GMT Sun, 08 May 2016 14:19:43 GMT <p> Hi, I've got unexpected problem on Windows using Visual Studio 2015 x64. Problem occurs only in x64 Debug build on Visual Studio 2015. All works fine in Win32 build, Linux and Android platforms also. Seems x64 Release build also works fine. Brief description: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">async_write</span><span class="p">(</span><span class="o">*</span><span class="n">m_socket</span><span class="p">,</span> <span class="n">buffers</span><span class="p">,</span> <span class="n">make_write_handler</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">base_connection</span><span class="o">::</span><span class="n">on_write</span><span class="p">,</span> <span class="n">self</span><span class="p">(),</span> <span class="n">_1</span><span class="p">,</span> <span class="n">_2</span><span class="p">)));</span> </pre></div></div></div><p> Line 69 in <a class="ext-link" href="https://github.com/qmule/libed2k/blob/kad/src/base_connection.cpp"><span class="icon">​</span>https://github.com/qmule/libed2k/blob/kad/src/base_connection.cpp</a> I've got rewrited at least 4 bytes in member of peer_connection class. So, I set breakpoint on data write for class member and get stack when it happens. From stack I see memory corruption occurred on creation object in file win_iocp_socket_service_base.hpp:226 </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// Allocate and construct an operation to wrap the handler.</span> <span class="k">typedef</span> <span class="n">win_iocp_socket_send_op</span><span class="o">&lt;</span><span class="n">ConstBufferSequence</span><span class="p">,</span> <span class="n">Handler</span><span class="o">&gt;</span> <span class="n">op</span><span class="p">;</span> <span class="k">typename</span> <span class="n">op</span><span class="o">::</span><span class="n">ptr</span> <span class="n">p</span> <span class="o">=</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">addressof</span><span class="p">(</span><span class="n">handler</span><span class="p">),</span> <span class="n">boost_asio_handler_alloc_helpers</span><span class="o">::</span><span class="n">allocate</span><span class="p">(</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">op</span><span class="p">),</span> <span class="n">handler</span><span class="p">),</span> <span class="mi">0</span> <span class="p">};</span> <span class="n">p</span><span class="p">.</span><span class="n">p</span> <span class="o">=</span> <span class="k">new</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">v</span><span class="p">)</span> <span class="n">op</span><span class="p">(</span><span class="n">impl</span><span class="p">.</span><span class="n">cancel_token_</span><span class="p">,</span> <span class="n">buffers</span><span class="p">,</span> <span class="n">handler</span><span class="p">);</span> </pre></div></div></div><p> Actually seems problem in boost::asio allocation helper, entry point in file handler_alloc_helpers.hpp:31 - since when I defined BOOST_ASIO_DISABLE_HANDLER_HOOKS to activate simple new for allocation problem was fixed: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">Handler</span><span class="o">&gt;</span> <span class="kr">inline</span> <span class="kt">void</span><span class="o">*</span> <span class="n">allocate</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">s</span><span class="p">,</span> <span class="n">Handler</span><span class="o">&amp;</span> <span class="n">h</span><span class="p">)</span> <span class="p">{</span> <span class="cp">#if !defined(BOOST_ASIO_HAS_HANDLER_HOOKS)</span> <span class="k">return</span> <span class="o">::</span><span class="k">operator</span> <span class="k">new</span><span class="p">(</span><span class="n">s</span><span class="p">);</span> <span class="cp">#else</span> <span class="k">using</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">asio_handler_allocate</span><span class="p">;</span> <span class="k">return</span> <span class="nf">asio_handler_allocate</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">addressof</span><span class="p">(</span><span class="n">h</span><span class="p">));</span> <span class="cp">#endif</span> <span class="p">}</span> </pre></div></div></div><p> Full stack on breakpoint on memory: </p> <pre class="wiki">conn.exe!boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;(const boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt; &amp; other) Line 188 C++ conn.exe!boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt;::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt;(boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &amp;&amp; other) Line 165 C++ conn.exe!boost::asio::detail::win_iocp_socket_send_op&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;,boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &gt;::win_iocp_socket_send_op&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;,boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &gt;(std::weak_ptr&lt;void&gt; cancel_token, const boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt; &amp; buffers, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &amp; handler) Line 49 C++ conn.exe!boost::asio::detail::win_iocp_socket_service_base::async_send&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;,boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &gt;(boost::asio::detail::win_iocp_socket_service_base::base_implementation_type &amp; impl, const boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt; &amp; buffers, int flags, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &amp; handler) Line 226 C++ conn.exe!boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt;::async_send&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;,boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &gt;(boost::asio::detail::win_iocp_socket_service&lt;boost::asio::ip::tcp&gt;::implementation_type &amp; impl, const boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt; &amp; buffers, int flags, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &amp;&amp; handler) Line 332 C++ conn.exe!boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;::async_write_some&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt;,boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &gt;(const boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &gt; &amp; buffers, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt; &amp;&amp; handler) Line 733 C++ conn.exe!boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,boost::asio::detail::transfer_all_t,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt;::operator()(const boost::system::error_code &amp; ec, unsigned __int64 bytes_transferred, int start) Line 183 C++ conn.exe!boost::asio::async_write&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;,std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt;,libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp; __ptr64,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &gt;(boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp,boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt; &amp; s, const std::list&lt;boost::asio::const_buffer,std::allocator&lt;boost::asio::const_buffer&gt; &gt; &amp; buffers, libed2k::base_connection::allocating_handler&lt;boost::_bi::bind_t&lt;void,boost::_mfi::mf2&lt;void,libed2k::base_connection,boost::system::error_code const &amp;,unsigned __int64&gt;,boost::_bi::list3&lt;boost::_bi::value&lt;boost::intrusive_ptr&lt;libed2k::base_connection&gt; &gt;,boost::arg&lt;1&gt;,boost::arg&lt;2&gt; &gt; &gt;,300&gt; &amp;&amp; handler) Line 624 C++ conn.exe!libed2k::base_connection::do_write(int quota) Line 69 C++ conn.exe!libed2k::peer_connection::do_write(int __formal) Line 492 C++ conn.exe!libed2k::base_connection::write_message(const std::pair&lt;libed2k::libed2k_header,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &gt; &amp; msg) Line 78 C++ conn.exe!libed2k::base_connection::write_struct&lt;libed2k::client_hello&gt;(const libed2k::client_hello &amp; t) Line 75 C++ conn.exe!libed2k::peer_connection::write_struct&lt;libed2k::client_hello&gt;(libed2k::client_hello &amp; t) Line 279 C++ conn.exe!libed2k::peer_connection::write_hello() Line 1667 C++ conn.exe!libed2k::peer_connection::on_connect(const boost::system::error_code &amp; e) Line 1082 C++ </pre> a-pavlov <dkfsoft@…> https://svn.boost.org/trac10/ticket/12182 https://svn.boost.org/trac10/ticket/12182 Report #12180: Date time parsing with a particular format string dereferences an end iterator Fri, 06 May 2016 10:18:05 GMT Mon, 09 May 2016 13:24:50 GMT <p> Using the "%s" format flag with an input string that does not end with fractional seconds leads to dereferencing of an "end" iterator, causing memory corruption. </p> <p> Sample code: </p> <pre class="wiki">std::string fmt = "%Y-%m-%d %H:%M:%s"; std::stringstream ss; ss.imbue(std::locale(ss.getloc(), new boost::posix_time::time_input_facet(fmt))); ss &lt;&lt; "2010-05-10 10:03:05"; boost::posix_time::ptime pt; ss &gt;&gt; pt; </pre> sascha.zelzer@… https://svn.boost.org/trac10/ticket/12180 https://svn.boost.org/trac10/ticket/12180 Report #12174: Tokenizer delivers additional null byte - string token Tue, 03 May 2016 10:28:12 GMT Fri, 13 May 2016 06:55:58 GMT <p> If I run the attached program I get </p> <p> TokenStartsHere:McStructuredLoanEngine::calculate() trace information:TokenEndsHere / length of string is 53 TokenStartsHere::<a class="missing wiki">TokenEndsHere</a> / length of string is 1 </p> <p> The first token is expected, but the second is not. I seems to contain one null byte. </p> Peter Caspers <pcaspers1973@…> https://svn.boost.org/trac10/ticket/12174 https://svn.boost.org/trac10/ticket/12174 Report #12173: error: Unable to load Jamfile. Tue, 03 May 2016 09:17:41 GMT Thu, 05 Jan 2017 09:40:00 GMT <p> I'm trying to build boost from master, and on a clean checkout I'm getting <code></code>` $ ./bootstrap.sh [...] $ ./b2 /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:262: in find-jamfile from module project error: Unable to load Jamfile. error: Could not find a Jamfile in directory 'libs/config/checks/architecture'. error: Attempted to find it with pattern '[Bb]uild.jam [Jj]amfile.v2 [Jj]amfile [Jj]amfile. [Jj]amfile.jam'. error: Please consult the documentation at '<a class="ext-link" href="http://www.boost.org"><span class="icon">​</span>http://www.boost.org</a>'. /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:280: in load-jamfile from module project /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:64: in load from module project /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:89: in load-used-projects from module project /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:75: in load from module project /home/xxx/software/boost/source-upstream/tools/build/src/build/project.jam:145: in project.find from module project /home/xxx/software/boost/source-upstream/tools/build/src/build-system.jam:535: in load from module build-system /home/xxx/software/boost/source-upstream/tools/build/src/kernel/modules.jam:295: in import from module modules /home/xxx/software/boost/source-upstream/tools/build/src/kernel/bootstrap.jam:139: in boost-build from module /home/xxx/software/boost/source-upstream/boost-build.jam:17: in module scope from module <code></code>` Any hints? </p> Nico Schlömer <nico.schloemer@…> https://svn.boost.org/trac10/ticket/12173 https://svn.boost.org/trac10/ticket/12173 Report #12172: Warning in ublas/matrix_expression.hpp from GCC 6.1.0 -Wmisleading-indentation Mon, 02 May 2016 16:59:38 GMT Tue, 01 Aug 2017 18:34:53 GMT <p> When I compile with "-Wall -Wextra -Werror", I get: </p> <p> .../boost/numeric/ublas/matrix_expression.hpp:2224:17: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation] </p> <blockquote> <p> if (it2_ != it2_end_) <sup>~ </sup></p> </blockquote> <p> .../boost/numeric/ublas/matrix_expression.hpp:2227:21: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’ </p> <blockquote> <p> if (it2_ != it2_end_) { </p> </blockquote> <p> This appears to be a valid warning, and lines 2227 and 2228 should be un-indented by one level. Assuming this is not a real bug, that is. </p> lopresti@… https://svn.boost.org/trac10/ticket/12172 https://svn.boost.org/trac10/ticket/12172 Report #12169: error when copying blocks into a dynamic_bitset with size() not an integral number of bits_per_block Fri, 29 Apr 2016 14:25:57 GMT Fri, 29 Apr 2016 14:25:57 GMT <p> Hi, </p> <p> I'm trying to initialize a dynamic_bitset&lt;unsigned char&gt; from a vector of blocks. Here's the code: </p> <pre class="wiki">#include &lt;cstdlib&gt; #include &lt;vector&gt; #include &lt;boost/dynamic_bitset.hpp&gt; typedef boost::dynamic_bitset&lt;unsigned char&gt; BitSet; typedef std::vector&lt;BitSet::block_type&gt; Block; int main(int argc, char* argv[]) { int nbits = atoi( argv[1] ); BitSet bits( nbits ); Block buffer; buffer.resize( bits.num_blocks(), 0xff ); boost::from_block_range(buffer.begin(),buffer.end(), bits ); return 0; } </pre><p> If the bitset size isn't a multiple of sizeof(unsigned char) (here 8), an assert() in ~dynamic_bitset() fails and the process is aborted. </p> <p> For example: </p> <pre class="wiki">% ./a.out 1 a.out: boost-1.60.0/include/boost/dynamic_bitset/dynamic_bitset.hpp:633: ost::dynamic_bitset&lt;Block, Allocator&gt;::~dynamic_bitset() [with Block = unsigned char; Allocator = std::allocator&lt;unsigned ar&gt;]: Assertion `m_check_invariants()' failed. Aborted % ./a.out 8 % ./a.out 15 a.out: boost-1.60.0/boost/dynamic_bitset/dynamic_bitset.hpp:633: ost::dynamic_bitset&lt;Block, Allocator&gt;::~dynamic_bitset() [with Block = unsigned char; Allocator = std::allocator&lt;unsigned ar&gt;]: Assertion `m_check_invariants()' failed. Aborted % ./a.out 16 % </pre><p> I see this with 1.59 &amp; 1.60 using either g++ 4.7.2 or Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) </p> <p> Thanks, Diab </p> Diab Jerius <djerius@…> https://svn.boost.org/trac10/ticket/12169 https://svn.boost.org/trac10/ticket/12169 Report #12168: Issue with shared_ptr on boost python Thu, 28 Apr 2016 15:19:19 GMT Thu, 28 Apr 2016 15:46:09 GMT <p> Hi, </p> <p> I have a struct A defined in C++ and exposed to python as shared_ptr. There are two global vectors of shared_ptrs of A. I create and add a object of type A from python to C++ in the two vectors Clear one vector Then when the python exits the program crashes with access violation error. </p> <p> I have attached both C++ and python file to recreate this issue. </p> <p> Thanks Praveen </p> praveenkumar076@… https://svn.boost.org/trac10/ticket/12168 https://svn.boost.org/trac10/ticket/12168 Report #12165: Build filesystem for Windows Runtime Wed, 27 Apr 2016 22:37:47 GMT Wed, 27 Apr 2016 22:37:47 GMT <p> Here is patch which fix compilation errors when compiling boost filesystem for windows runtime. </p> <p> Most functionality should work, however, some might not be tested yet. However, can be used as starting point in order to support filesystem for windows runtime. </p> Yury Kirpichev <ykirpichev@…> https://svn.boost.org/trac10/ticket/12165 https://svn.boost.org/trac10/ticket/12165 Report #12164: Build filesystem for Windows Runtime Wed, 27 Apr 2016 22:37:36 GMT Wed, 27 Apr 2016 22:37:36 GMT <p> Here is patch which fix compilation errors when compiling boost filesystem for windows runtime. </p> <p> Most functionality should work, however, some might not be tested yet. However, can be used as starting point in order to support filesystem for windows runtime. </p> Yury Kirpichev <ykirpichev@…> https://svn.boost.org/trac10/ticket/12164 https://svn.boost.org/trac10/ticket/12164 Report #12163: `void boost::algorithm::replace_all()`'s documentation describes the return value Wed, 27 Apr 2016 18:14:38 GMT Thu, 28 Apr 2016 15:49:33 GMT <p> <a href="http://www.boost.org/doc/libs/1_60_0/doc/html/boost/algorithm/replace_all.html">http://www.boost.org/doc/libs/1_60_0/doc/html/boost/algorithm/replace_all.html</a> </p> <p> The synopsis says the return value with: </p> <blockquote class="citation"> <p> Returns: A reference to the modified input </p> </blockquote> <p> although the return value is <code>void</code> </p> milleniumbug <wojas1222@…> https://svn.boost.org/trac10/ticket/12163 https://svn.boost.org/trac10/ticket/12163 Report #12162: buffer interface violates strict-aliasing rule Wed, 27 Apr 2016 12:08:13 GMT Wed, 27 Apr 2016 12:08:13 GMT <p> The buffer class interfaces can cause violations of the strict-aliasing rule. This example program emits this warning when compiled with optimizations on GCC 5.1.1: </p> <pre class="wiki">#include &lt;boost/asio/streambuf.hpp&gt; #include &lt;boost/endian/buffers.hpp&gt; #include &lt;cstdint&gt; #include &lt;memory&gt; template&lt;class Streambuf&gt; std::uint16_t get(Streambuf&amp; sb) { using namespace boost::asio; using namespace boost::endian; std::uint8_t b[2]; sb.consume(buffer_copy(buffer(b), sb.data())); return reinterpret_cast&lt;big_uint16_buf_t const*&gt;(&amp;b[0])-&gt;value(); } int main() { using namespace boost::asio; streambuf sb; std::uint8_t b[2]; memset(&amp;b[0], 0, sizeof(b)); sb.commit(buffer_copy(sb.prepare(sizeof(b)), buffer(b))); return get(sb); } </pre><p> Produces: </p> <pre class="wiki">prog.cc: In instantiation of 'uint16_t get(Streambuf&amp;) [with Streambuf = boost::asio::basic_streambuf&lt;&gt;; uint16_t = short unsigned int]': prog.cc:24:18: required from here prog.cc:14:67: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] return reinterpret_cast&lt;big_uint16_buf_t const*&gt;(&amp;b[0])-&gt;value(); </pre><p> Link to program and output: <a class="ext-link" href="http://melpon.org/wandbox/permlink/x7xQsxaU3jv0lOtD"><span class="icon">​</span>http://melpon.org/wandbox/permlink/x7xQsxaU3jv0lOtD</a> </p> Vinnie Falco <vinnie.falco@…> https://svn.boost.org/trac10/ticket/12162 https://svn.boost.org/trac10/ticket/12162 Report #12161: Broken link in HTML documentation Wed, 27 Apr 2016 11:16:13 GMT Wed, 27 Apr 2016 11:16:13 GMT <p> This link produces a 404 <a href="http://www.boost.org/doc/libs/1_60_0/libs/endian/include/boost/endian/conversion.hpp">http://www.boost.org/doc/libs/1_60_0/libs/endian/include/boost/endian/conversion.hpp</a> </p> Vinnie Falco <vinnie.falco@…> https://svn.boost.org/trac10/ticket/12161 https://svn.boost.org/trac10/ticket/12161 Report #12159: file_descriptor(int,flags) constructor fails Tue, 26 Apr 2016 22:44:26 GMT Tue, 26 Apr 2016 22:49:42 GMT <p> The following code fails to compile: </p> <p> int fd = fileno(filename); </p> <p> boost::iostreams::file_descriptor_source fd_src( </p> <blockquote> <p> fd, boost::iostreams::file_descriptor_flags::close_handle </p> </blockquote> <p> ); </p> <p> The compiler reports: ... /usr/include/boost/iostreams/device/file_descriptor.hpp:194:11: error: no matching function for call to ‘boost::iostreams::detail::path::path(boost::iostreams::file_descriptor_source* const&amp;)’ </p> <blockquote> <p> { open(detail::path(path), mode); } </p> </blockquote> <p> ... </p> <p> Evidently the templated constructor is overriding. </p> Dylan Doxey <dylan.doxey@…> https://svn.boost.org/trac10/ticket/12159 https://svn.boost.org/trac10/ticket/12159 Report #12158: boost::size() and friends should use an ADL barrier like boost::begin Tue, 26 Apr 2016 21:35:42 GMT Tue, 26 Apr 2016 21:55:11 GMT <p> boost::begin() and boost::end() are nicely declared in an ADL barrier namespace to avoid conflicts with code like this: </p> <pre class="wiki">using std::begin; auto i = begin(c); </pre><p> <a class="ext-link" href="http://isocpp.org/files/papers/n4280.pdf"><span class="icon">​</span>N4280</a> has been accepted into C++17, which adds std::size, std::empty, and std::data. But if users attempt to use those in the same way: </p> <pre class="wiki">using std::size; auto s = size(c); </pre><p> They may get an error. For example, if c is a std::vector&lt;boost::shared_ptr&lt;int&gt;&gt; or something, boost::size() will be found by ADL, and since it's no more specific than std::size, the call will be ambiguous. </p> Tavian Barnes <tavianator@…> https://svn.boost.org/trac10/ticket/12158 https://svn.boost.org/trac10/ticket/12158 Report #12156: AddressSanitizer reports stack-buffer-overflow for error_with_option_name::substitute_placeholders Tue, 26 Apr 2016 13:37:10 GMT Tue, 26 Apr 2016 13:37:10 GMT <p> When <code>boost::program_options::parse_command_line(...)</code> throws for an unrecognized option it triggers AddressSanitizer (under gcc 5.3.0, boost 1.60): </p> <pre class="wiki">ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffe6ce7070 at pc 0x0000007406cd bp 0x7fffe6ce6fe0 sp 0x7fffe6ce6fd8 READ of size 8 at 0x7fffe6ce7070 thread T0 #0 0x7406cc in std::_Head_base&lt;0ul, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;&amp;, false&gt;::_M_head(std::_Head_base&lt;0ul, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;&amp;, false&gt;&amp;) /frc/toolchain6/include/c++/5.3.0/tuple:142 #1 0x7406cc in _M_create_node /frc/toolchain6/include/c++/5.3.0/tuple:347 #2 0x7403fd in std::_Rb_tree_iterator&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; std::_Rb_tree&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::_Select1st&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;, std::less&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::allocator&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; &gt;::_M_emplace_hint_unique&lt;std::piecewise_construct_t const&amp;, std::tuple&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;&amp;&gt;, std::tuple&lt;&gt; &gt;(std::_Rb_tree_const_iterator&lt;std::pair&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;, std::piecewise_construct_t const&amp;, std::tuple&lt;std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;&amp;&gt;&amp;&amp;, std::tuple&lt;&gt;&amp;&amp;) /frc/toolchain6/include/c++/5.3.0/bits/stl_tree.h:2170 #3 0xd5eff8 in boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) const (/home/joe/myapp_workspace/myapp/myapp-debug+0xd5eff8) #4 0xd5c0dd in boost::program_options::error_with_option_name::what() const (/home/joe/myapp_workspace/myapp/myapp-debug+0xd5c0dd) #5 0x58addf in main /home/joe/myapp_workspace/myapp/main.cpp:62 #6 0x7fd7e056176c in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2176c) #7 0x436aa0 (/home/joe/myapp_workspace/myapp/myapp-debug+0x436aa0) </pre> Dan Berger <danielberger@…> https://svn.boost.org/trac10/ticket/12156 https://svn.boost.org/trac10/ticket/12156 Report #12154: [program_options] disable "long_allow_adjacent" and "short_allow_adjacent",it doesn't work Tue, 26 Apr 2016 08:14:06 GMT Tue, 26 Apr 2016 08:40:48 GMT <p> I set the style as follows when parsing command line for disabling the format"--test=1"and "-t1",it doesn't work. .style( </p> <blockquote> <p> boost::program_options::command_line_style::unix_style<sup> boost::program_options::command_line_style::long_allow_adjacent</sup> boost::program_options::command_line_style::short_allow_adjacent) </p> </blockquote> 714702751@… https://svn.boost.org/trac10/ticket/12154 https://svn.boost.org/trac10/ticket/12154 Report #12153: [program_options] disable "long_allow_adjacent" and "short_allow_adjacent",it doesn't work Tue, 26 Apr 2016 08:13:38 GMT Tue, 26 Apr 2016 08:13:38 GMT <p> I set the style as follows when parsing command line for disabling the format"--test=1"and "-t1",it doesn't work. .style( </p> <blockquote> <p> boost::program_options::command_line_style::unix_style<sup> boost::program_options::command_line_style::long_allow_adjacent</sup> boost::program_options::command_line_style::short_allow_adjacent) </p> </blockquote> 714702751@… https://svn.boost.org/trac10/ticket/12153 https://svn.boost.org/trac10/ticket/12153 Report #12151: Example UDP async server stops on error... Sat, 23 Apr 2016 15:19:11 GMT Sun, 02 Oct 2016 17:03:51 GMT <p> In the boost::asio UDP async server example, if a recv_from error occurs, the server stops receiving completely. The code in question is in the "start_receive()" function: </p> <pre class="wiki">void handle_receive(const boost::system::error_code&amp; error, std::size_t /*bytes_transferred*/) { if (!error || error == boost::asio::error::message_size) { .... start_receive(); } } </pre><p> Should instead be (with start_receive() moved outside the error check): </p> <pre class="wiki">void handle_receive(const boost::system::error_code&amp; error, std::size_t /*bytes_transferred*/) { if (!error || error == boost::asio::error::message_size) { .... } start_receive(); } </pre><p> <a href="http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html">http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html</a> </p> Micah Quinn <micah.quinn@…> https://svn.boost.org/trac10/ticket/12151 https://svn.boost.org/trac10/ticket/12151 Report #12150: posix_recursive_mutex constructor never called, fails to init mutex Fri, 22 Apr 2016 18:26:39 GMT Fri, 22 Apr 2016 18:26:39 GMT <p> I'm trying to get a shared memory system working on OSX, as far as I can tell, it's calling posix_recursive_mutex::lock() without initalizing the mutex, which happens in the constructor. A breakpoint on line 78 of include/boost/interprocess/sync/posix/recursive_mutex.hpp never gets hit. </p> <p> Here is the output from my compiler attempt: </p> <pre class="wiki">g++ -v -I/usr/local/Cellar/boost/1.60.0/include -O0 -g -std=c++11 main.cpp Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn) Target: x86_64-apple-darwin14.0.0 Thread model: posix "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.10.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 242.2 -v -gdwarf-2 -dwarf-column-info -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -I /usr/local/Cellar/boost/1.60.0/include -stdlib=libc++ -O0 -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /Users/CPX-Hackintosh01/src/ruby/shm_test -ferror-limit 19 -fmessage-length 270 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/96/hl850bv57w39vhdzqy2nykf00000gn/T/main-43ba41.o -x c++ main.cpp clang -cc1 version 6.1.0 based upon LLVM 3.6.0svn default target x86_64-apple-darwin14.0.0 ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/v1" ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/local/include" ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/Library/Frameworks" #include "..." search starts here: #include &lt;...&gt; search starts here: /usr/local/Cellar/boost/1.60.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks (framework directory) End of search list. "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.10.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -o a.out /var/folders/96/hl850bv57w39vhdzqy2nykf00000gn/T/main-43ba41.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/lib/darwin/libclang_rt.osx.a "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil" -o a.out.dSYM a.out </pre><p> Any insight would be appreciated. </p> adrian.cheater@… https://svn.boost.org/trac10/ticket/12150 https://svn.boost.org/trac10/ticket/12150 Report #12149: boost::property_tree::write_json(stream, root, /*pretty=*/false) gives extra std::endl at the end Fri, 22 Apr 2016 16:24:51 GMT Fri, 22 Apr 2016 22:56:19 GMT <p> As was noted in <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3828" title="#3828: Bugs: No way to create smaller json output from property_tree::write_json (closed: fixed)">#3828</a>, not pretty written json has extra endl at the end. </p> <p> (Creating a separate ticket, as that one was Fixed and further comments got ignored) </p> anonymous https://svn.boost.org/trac10/ticket/12149 https://svn.boost.org/trac10/ticket/12149 Report #12148: VS2015 warning: macro redefinition Fri, 22 Apr 2016 16:08:06 GMT Fri, 22 Apr 2016 16:08:06 GMT <p> E:\Boost\boost_1_60_0\boost\spirit\home\support\detail\endian\endian.hpp:55: warning: C4005: 'BOOST_ENDIAN_DEFAULT_CONSTRUCT': macro redefinition E:\Boost\boost_1_60_0\boost/endian/buffers.hpp(54): note: see previous definition of 'BOOST_ENDIAN_DEFAULT_CONSTRUCT' </p> wbu@… https://svn.boost.org/trac10/ticket/12148 https://svn.boost.org/trac10/ticket/12148 Report #12145: boost::geometry::remove_spikes doesn't remove spike Thu, 21 Apr 2016 22:07:44 GMT Thu, 21 Apr 2016 22:07:44 GMT <p> In the following example, the fourth point is actually a spike. <em>remove_spikes</em> does not remove it. </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/geometries.hpp&gt; namespace bg = boost::geometry; int main() { typedef bg::model::point&lt;double, 2, bg::cs::cartesian&gt; point_t; typedef bg::model::polygon&lt;point_t&gt; polygon_t; polygon_t poly{ { { 0.08039, 0.08076 },{ 0.836, 2.343 }, { 2.24, 1.874 },{ 1.452,-0.485 },{ 1.485, -0.3882 } } }; bg::correct(poly); bg::remove_spikes(poly); return 0 } </pre> xiongzubiao@… https://svn.boost.org/trac10/ticket/12145 https://svn.boost.org/trac10/ticket/12145 Report #12144: Clang 3.9 trunk DONT_USE_HAS_NEW_OPERATOR warning Thu, 21 Apr 2016 19:02:13 GMT Tue, 18 Apr 2017 14:06:25 GMT <p> Clang 3.9 is reporting the following warning: </p> <pre class="wiki">boost/boost.1.58.0/boost/archive/detail/iserializer.hpp:65:7: error: macro expansion producing 'defined' has undefined behavior [-Werror,-Wexpansion-to-defined] #if ! DONT_USE_HAS_NEW_OPERATOR ^ boost/boost.1.58.0/boost/archive/detail/iserializer.hpp:61:5: note: expanded from macro 'DONT_USE_HAS_NEW_OPERATOR' defined(__BORLANDC__) \ ^ </pre><p> I believe this may have been initially fixed with: <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/8120"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/8120</a> </p> <p> Changing the source to not directly #define on #defined seems to resolve this warning: </p> <pre class="wiki">#ifndef BOOST_MSVC #if BOOST_WORKAROUND(__IBMCPP__, &lt; 1210) \ || defined(__SUNPRO_CC) &amp;&amp; (__SUNPRO_CC &lt; 0x590) #define DONT_USE_HAS_NEW_OPERATOR 1 #else #define DONT_USE_HAS_NEW_OPERATOR 0 #endif #else #define DONT_USE_HAS_NEW_OPERATOR 0 #endif </pre> drivehappy@… https://svn.boost.org/trac10/ticket/12144 https://svn.boost.org/trac10/ticket/12144 Report #12143: Preferred separator not exported in dll under Windows Thu, 21 Apr 2016 14:08:31 GMT Sun, 04 Sep 2016 09:39:36 GMT <p> Under windows(10) with MSVC14 compiler, I get the following linking error: </p> <pre class="wiki">Severity Code Description Project File Line Suppression State Error LNK2001 unresolved external symbol "__declspec(dllimport) public: static wchar_t const boost::filesystem::path::preferred_separator" (__imp_?preferred_separator@path@filesystem@boost@@2_WB) bfs D:\Info\cvisd\bfs\bfs\main.obj 1 Error LNK1120 1 unresolved externals bfs D:\Info\cvisd\bfs\x64\Release\bfs.exe 1 </pre><p> I get it on both amd64 and i386 if I </p> <pre class="wiki">#define BOOST_ALL_DYN_LINK </pre> andrei_damian2620000@… https://svn.boost.org/trac10/ticket/12143 https://svn.boost.org/trac10/ticket/12143 Report #12141: XML serialization broken Wed, 20 Apr 2016 18:27:14 GMT Wed, 08 Nov 2017 16:40:52 GMT <p> The Boost 1.61.0 beta1 version of serialization has a breaking regression that changes the XML closing tag to <code>&amp;lt;/boost_serialization&amp;gt;</code> rather than <code>&lt;/boost_serialization&gt;</code>. </p> <p> Example code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/archive/xml_oarchive.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/serialization/nvp.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">archive</span><span class="o">::</span><span class="n">xml_oarchive</span> <span class="n">oa</span><span class="p">(</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span> <span class="p">);</span> <span class="kt">int</span> <span class="n">bob</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="n">oa</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">serialization</span><span class="o">::</span><span class="n">make_nvp</span><span class="p">(</span> <span class="s">&quot;bob&quot;</span><span class="p">,</span> <span class="n">bob</span> <span class="p">);</span> <span class="p">}</span> </pre></div></div><p> Compiling and running with these commands: </p> <pre class="wiki"> setenv LD_LIBRARY_PATH /opt/boost_1_60_0_gcc_build/lib:/opt/boost_1_61_0_b1_gcc_build/lib g++ ser_regn.cpp -isystem /opt/boost_1_60_0_gcc_build/include -L/opt/boost_1_60_0_gcc_build/lib -l boost_serialization-mt -o ser_regn.1_60_0 g++ ser_regn.cpp -isystem /opt/boost_1_61_0_b1_gcc_build/include -L/opt/boost_1_61_0_b1_gcc_build/lib -l boost_serialization-mt -o ser_regn.1_61_0_b1 ./ser_regn.1_60_0 ./ser_regn.1_61_0_b1 </pre><p> The 1_60_0 version gives: </p> <pre class="wiki">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes" ?&gt; &lt;!DOCTYPE boost_serialization&gt; &lt;boost_serialization signature="serialization::archive" version="14"&gt; &lt;bob&gt;3&lt;/bob&gt; &lt;/boost_serialization&gt; </pre><p> The 1_61_0_b1 version gives: </p> <pre class="wiki">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes" ?&gt; &lt;!DOCTYPE boost_serialization&gt; &lt;boost_serialization signature="serialization::archive" version="14"&gt; &lt;bob&gt;3&lt;/bob&gt; &amp;lt;/boost_serialization&amp;gt; </pre> Tony Lewis <tonyelewis@…> https://svn.boost.org/trac10/ticket/12141 https://svn.boost.org/trac10/ticket/12141 Report #12139: Voronoi diagram contains NaN coordinates Tue, 19 Apr 2016 13:21:23 GMT Tue, 19 Apr 2016 15:03:18 GMT <p> After computing Voronoi diagram for a large shape consisting of only segments (no points), resulting diagram contains some NaN coordinates. Segments are non-intersecting, as far as could've checked. </p> <p> I'll try to simplify the shape and attach it here, so far I'm just showing the stacktrace of the division by zero causing a NaN: boost::polygon::detail::robust_fpt&lt;double&gt;::operator/(const boost::polygon::detail::robust_fpt&lt;double&gt; &amp; that) Line 205 C++ </p> <blockquote> <p> boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt;::lazy_circle_formation_functor&lt;boost::polygon::detail::site_event&lt;int&gt;,boost::polygon::detail::circle_event&lt;double&gt; &gt;::pps(const boost::polygon::detail::site_event&lt;int&gt; &amp; site1, const boost::polygon::detail::site_event&lt;int&gt; &amp; site2, const boost::polygon::detail::site_event&lt;int&gt; &amp; site3, int segment_index, boost::polygon::detail::circle_event&lt;double&gt; &amp; c_event) Line 1095 C++ boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt;::circle_formation_predicate&lt;boost::polygon::detail::site_event&lt;int&gt;,boost::polygon::detail::circle_event&lt;double&gt;,boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt;::circle_existence_predicate&lt;boost::polygon::detail::site_event&lt;int&gt; &gt;,boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt;::lazy_circle_formation_functor&lt;boost::polygon::detail::site_event&lt;int&gt;,boost::polygon::detail::circle_event&lt;double&gt; &gt; &gt;::operator()(const boost::polygon::detail::site_event&lt;int&gt; &amp; site1, const boost::polygon::detail::site_event&lt;int&gt; &amp; site2, const boost::polygon::detail::site_event&lt;int&gt; &amp; site3, boost::polygon::detail::circle_event&lt;double&gt; &amp; circle) Line 1467 C++ boost::polygon::voronoi_builder&lt;int,boost::polygon::detail::voronoi_ctype_traits&lt;int&gt;,boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt; &gt;::activate_circle_event(const boost::polygon::detail::site_event&lt;int&gt; &amp; site1, const boost::polygon::detail::site_event&lt;int&gt; &amp; site2, const boost::polygon::detail::site_event&lt;int&gt; &amp; site3, std::_Tree_iterator&lt;std::_Tree_val&lt;std::_Tree_simple_types&lt;std::pair&lt;boost::polygon::detail::beach_line_node_key&lt;boost::polygon::detail::site_event&lt;int&gt; &gt; const ,boost::polygon::detail::beach_line_node_data&lt;void,boost::polygon::detail::circle_event&lt;double&gt; &gt; &gt; &gt; &gt; &gt; bisector_node) Line 482 C++ boost::polygon::voronoi_builder&lt;int,boost::polygon::detail::voronoi_ctype_traits&lt;int&gt;,boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt; &gt;::process_circle_event&lt;boost::polygon::voronoi_diagram&lt;double,boost::polygon::voronoi_diagram_traits&lt;double&gt; &gt; &gt;(boost::polygon::voronoi_diagram&lt;double,boost::polygon::voronoi_diagram_traits&lt;double&gt; &gt; * output) Line 424 C++ </p> <blockquote class="citation"> <blockquote> <p> boost::polygon::voronoi_builder&lt;int,boost::polygon::detail::voronoi_ctype_traits&lt;int&gt;,boost::polygon::detail::voronoi_predicates&lt;boost::polygon::detail::voronoi_ctype_traits&lt;int&gt; &gt; &gt;::construct&lt;boost::polygon::voronoi_diagram&lt;double,boost::polygon::voronoi_diagram_traits&lt;double&gt; &gt; &gt;(boost::polygon::voronoi_diagram&lt;double,boost::polygon::voronoi_diagram_traits&lt;double&gt; &gt; * output) Line 122 C++ </p> </blockquote> </blockquote> </blockquote> Piotr Wieczorek <pwiecz@…> https://svn.boost.org/trac10/ticket/12139 https://svn.boost.org/trac10/ticket/12139 Report #12137: boost::interprocess::intermodule_singleton initialization failed Mon, 18 Apr 2016 23:01:55 GMT Thu, 01 Jun 2017 17:09:11 GMT <p> I'm getting exception "boost::interprocess::intermodule_singleton initialization failed" when trying to use Boost Interprocess library, even when I run any example from the library doc. Debugging showed that the library fails to find event 6005 in System's <a class="missing wiki">EventLog</a>, so it cannot obtain system boot-up time, which it uses to create shared dir. </p> <p> I used Windows Event Viewer to check that indeed, there is no such event in my system at this moment. I didn't delete it, so I suppose that Windows itself cleans old events. My system's uptime is more than 40 days. I see that my System Event Log is configured to be maximum 20MB (it's default, I didn't change it) and it's currently 20MB, so it explains everything. </p> <p> Since it's normal situation, I believe the library should use other way (in addition to, or instead of current way) to get bootup time. For example, GetTickCount64 or System Up Time performance counter (<a class="ext-link" href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms725496(v=vs.85).aspx"><span class="icon">​</span>https://msdn.microsoft.com/en-us/library/windows/desktop/ms725496(v=vs.85).aspx</a>). </p> <p> What is worse, I cannot reboot at the moment and need to proof-of-concept IPC on Windows for our project, and this is my only Windows box... </p> <p> The only quick workaround I see is to patch get_last_bootup_time function to use GetTickCount64. </p> Valentin Shtronda <valiko.ua@…> https://svn.boost.org/trac10/ticket/12137 https://svn.boost.org/trac10/ticket/12137 Report #12135: Boost.Concepts shoudn't create typedefs based on line number Sun, 17 Apr 2016 23:00:53 GMT Sun, 17 Apr 2016 23:00:53 GMT <p> Hey so today I spent about 30 minutes tearing my hair out over this compile error: </p> <blockquote> <p> error: typedef redefinition with different types ('instantiate&lt;&amp;::boost::concepts::requirement_&lt;void (*)(concept::Window&lt;qt_window&gt;)&gt;::failed&gt;' vs 'instantiate&lt;&amp;::boost::concepts::requirement_&lt;void (*)(concept::Viewport&lt;qt_viewport&gt;)&gt;::failed&gt;') </p> </blockquote> <p> This error isn't useful to what was happening. I had two BOOST_CONCEPT_ASSERT((...))s in two different files, under the global namespace. At first I theorized that it wasn't just supported but according to the docs BOOST_CONCEPT_ASSERT can be used in any scope. Then I started to look at the implementation and found this line: BOOST_PP_CAT(boost_concept_check,<span class="underline">LINE</span>) which gave it all away: they were both on the same line. The thing is that I use a code formatter, so I actually have to add comments or code to change the line number a line of code is on. </p> <p> I would love this to be fixed. There is a fine workaround, but it isn't a very easy to find error in your code. </p> <p> Here is a simple test case. Just add a newline before the BOOST_CONCEPT_ASSERT((...)) in either of the headers to get rid of the error: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// a.h</span> <span class="cp">#include</span> <span class="cpf">&lt;boost/concept_check.hpp&gt;</span><span class="cp"></span> <span class="n">BOOST_CONCEPT_ASSERT</span><span class="p">((</span><span class="n">boost</span><span class="o">::</span><span class="n">Integer</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">));</span> <span class="c1">// note line number</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// b.h</span> <span class="cp">#include</span> <span class="cpf">&lt;boost/concept_check.hpp&gt;</span><span class="cp"></span> <span class="n">BOOST_CONCEPT_ASSERT</span><span class="p">((</span><span class="n">boost</span><span class="o">::</span><span class="n">UnsignedInteger</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="o">&gt;</span><span class="p">));</span> <span class="c1">// note line number</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// main.cpp</span> <span class="cp">#include</span> <span class="cpf">&quot;a.h&quot;</span><span class="cp"></span> <span class="cp">#incldue &quot;b.h&quot;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(){}</span> </pre></div></div></div> russellgreene8@… https://svn.boost.org/trac10/ticket/12135 https://svn.boost.org/trac10/ticket/12135 Report #12134: Boost.Concepts shoudn't create typedefs based on line number Sun, 17 Apr 2016 23:00:38 GMT Sun, 17 Apr 2016 23:00:38 GMT <p> Hey so today I spent about 30 minutes tearing my hair out over this compile error: </p> <blockquote> <p> error: typedef redefinition with different types ('instantiate&lt;&amp;::boost::concepts::requirement_&lt;void (*)(concept::Window&lt;qt_window&gt;)&gt;::failed&gt;' vs 'instantiate&lt;&amp;::boost::concepts::requirement_&lt;void (*)(concept::Viewport&lt;qt_viewport&gt;)&gt;::failed&gt;') </p> </blockquote> <p> This error isn't useful to what was happening. I had two BOOST_CONCEPT_ASSERT((...))s in two different files, under the global namespace. At first I theorized that it wasn't just supported but according to the docs BOOST_CONCEPT_ASSERT can be used in any scope. Then I started to look at the implementation and found this line: BOOST_PP_CAT(boost_concept_check,<span class="underline">LINE</span>) which gave it all away: they were both on the same line. The thing is that I use a code formatter, so I actually have to add comments or code to change the line number a line of code is on. </p> <p> I would love this to be fixed. There is a fine workaround, but it isn't a very easy to find error in your code. </p> <p> Here is a simple test case. Just add a newline before the BOOST_CONCEPT_ASSERT((...)) in either of the headers to get rid of the error: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// a.h</span> <span class="cp">#include</span> <span class="cpf">&lt;boost/concept_check.hpp&gt;</span><span class="cp"></span> <span class="n">BOOST_CONCEPT_ASSERT</span><span class="p">((</span><span class="n">boost</span><span class="o">::</span><span class="n">Integer</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">));</span> <span class="c1">// note line number</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// b.h</span> <span class="cp">#include</span> <span class="cpf">&lt;boost/concept_check.hpp&gt;</span><span class="cp"></span> <span class="n">BOOST_CONCEPT_ASSERT</span><span class="p">((</span><span class="n">boost</span><span class="o">::</span><span class="n">UnsignedInteger</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="o">&gt;</span><span class="p">));</span> <span class="c1">// note line number</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="c1">// main.cpp</span> <span class="cp">#include</span> <span class="cpf">&quot;a.h&quot;</span><span class="cp"></span> <span class="cp">#incldue &quot;b.h&quot;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(){}</span> </pre></div></div></div> russellgreene8@… https://svn.boost.org/trac10/ticket/12134 https://svn.boost.org/trac10/ticket/12134 Report #12133: cpp_dec_float should compare to precision Sun, 17 Apr 2016 08:50:37 GMT Sun, 05 Jun 2016 18:21:51 GMT <p> See this accepted answer for a method to compare two cpp_dec_float's *without* including the guard digits in the comparison. Specifically see the second comment on the answer by "namezero". </p> <p> <a class="ext-link" href="http://stackoverflow.com/a/27381898"><span class="icon">​</span>http://stackoverflow.com/a/27381898</a> </p> <p> (I find myself about to implement similar "epsilon" logic) </p> scottopoly@… https://svn.boost.org/trac10/ticket/12133 https://svn.boost.org/trac10/ticket/12133 Report #12132: ubuntu 64 bit icu detaction fails Sat, 16 Apr 2016 15:30:04 GMT Tue, 23 Jan 2018 21:33:16 GMT <p> bootstrap.sh code regarding icu presence looks like this </p> <pre class="wiki"> $ECHO -n "Unicode/ICU support for Boost.Regex?... " 295 if test "x$flag_icu" != xno; then 296 if test "x$ICU_ROOT" = x; then 297 COMMON_ICU_PATHS="/usr /usr/local /sw" 298 for p in $COMMON_ICU_PATHS; do 299 if test -r $p/include/unicode/utypes.h; then 300 ICU_ROOT=$p </pre><p> however on my 64 bit ubuntu 15.10 utypes.h is located here </p> <pre class="wiki">konst@konst:~/work/DUP/petra-one/boost/boost_1_60_0&gt; locate utypes.h /usr/include/x86_64-linux-gnu/unicode/utypes.h </pre><p> it even doesn't have a form of $p/include/unicode/utypes.h and thus it is not possible to provide path to icu manually </p> konstantin.kivi@… https://svn.boost.org/trac10/ticket/12132 https://svn.boost.org/trac10/ticket/12132 Report #12131: Boost Asio async HTTP Client example source code incorrect Sat, 16 Apr 2016 08:03:45 GMT Sun, 02 Oct 2016 17:03:25 GMT <p> The example source code for the async HTTP Client (<a href="http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/example/cpp03/http/client/async_client.cpp">http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/example/cpp03/http/client/async_client.cpp</a>) does not output the final read bytes inside "handle_read_content" if the parameter to the transfer_at_least(x) algorithm is greater than one. The code prematurely checks for an error code and disregards any already read data. </p> <p> The current code in question: </p> <pre class="wiki">void handle_read_content(const boost::system::error_code&amp; err) { if (!err) { // Write all of the data that has been read so far. std::cout &lt;&lt; &amp;response_; // Continue reading remaining data until EOF. boost::asio::async_read(socket_, response_, boost::asio::transfer_at_least(1), boost::bind(&amp;client::handle_read_content, this, boost::asio::placeholders::error)); } else if (err != boost::asio::error::eof) { std::cout &lt;&lt; "Error: " &lt;&lt; err &lt;&lt; "\n"; } } </pre><p> One possible "fix" for the code would be: </p> <pre class="wiki"> void handle_read_content(const boost::system::error_code&amp; err) { // Write all of the data that has been read so far. if ( response_.size() &gt; 0 ) std::cout &lt;&lt; &amp;response_; if (!err) { // Continue reading remaining data until EOF. boost::asio::async_read(socket_, response_, boost::asio::transfer_at_least(1024), boost::bind(&amp;client::handle_read_content, this, boost::asio::placeholders::error)); } else if (err != boost::asio::error::eof) { std::cout &lt;&lt; "Error: " &lt;&lt; err &lt;&lt; "\n"; } } </pre> Micah Quinn <micah.quinn@…> https://svn.boost.org/trac10/ticket/12131 https://svn.boost.org/trac10/ticket/12131 Report #12129: C++11 / C++14 compability in boost/iostreams Fri, 15 Apr 2016 12:34:52 GMT Fri, 03 Jun 2016 08:24:43 GMT <p> Hi, </p> <p> with this code </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; #include &lt;boost/iostreams/filter/zlib.hpp&gt; int main() { using namespace std; ifstream file("hello.z", ios_base::in | ios_base::binary); boost::iostreams::filtering_stream&lt;boost::iostreams::input&gt; in; in.push(boost::iostreams::zlib_decompressor()); in.push(file); boost::iostreams::copy(in, cout); } </pre><p> The current trunk compiles. However, if the -std=c++11 or -std=c++14 flags are specified with gcc (tested versions 4.9.2 and 5.3.0) the following error is displayd: </p> <pre class="wiki">In file included from /usr/include/boost/iostreams/traits.hpp:31:0, from /usr/include/boost/iostreams/pipeline.hpp:18, from /usr/include/boost/iostreams/detail/push.hpp:22, from /usr/include/boost/iostreams/filtering_stream.hpp:19, from test.cpp:3: /usr/include/boost/iostreams/detail/wrap_unwrap.hpp: In instantiation of ‘T boost::iostreams::detail::wrap(const T&amp;, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’: /usr/include/boost/iostreams/stream_buffer.hpp:93:5: required from ‘boost::iostreams::stream_buffer&lt;T, Tr, Alloc, Mode&gt;::stream_buffer(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:252:60: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:212:5: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ /usr/include/boost/iostreams/chain.hpp:491:7: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;]’ /usr/include/boost/iostreams/chain.hpp:479:5: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ test.cpp:13:50: required from here /usr/include/boost/iostreams/detail/wrap_unwrap.hpp:53:14: error: use of deleted function ‘boost::iostreams::basic_zlib_decompressor&lt;&gt;::basic_zlib_decompressor(const boost::iostreams::basic_zlib_decompressor&lt;&gt;&amp;)’ { return t; } ^ In file included from test.cpp:5:0: /usr/include/boost/iostreams/filter/zlib.hpp:280:8: note: ‘boost::iostreams::basic_zlib_decompressor&lt;&gt;::basic_zlib_decompressor(const boost::iostreams::basic_zlib_decompressor&lt;&gt;&amp;)’ is implicitly deleted because the default definition would be ill-formed: struct basic_zlib_decompressor ^ /usr/include/boost/iostreams/filter/zlib.hpp:280:8: error: use of deleted function ‘boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::symmetric_filter(const boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;&amp;)’ In file included from /usr/include/boost/iostreams/filter/zlib.hpp:31:0, from test.cpp:5: /usr/include/boost/iostreams/filter/symmetric.hpp:72:7: note: ‘boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::symmetric_filter(const boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;&amp;)’ is implicitly deleted because the default definition would be ill-formed: class symmetric_filter { ^ /usr/include/boost/iostreams/filter/symmetric.hpp:72:7: error: use of deleted function ‘boost::shared_ptr&lt;boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::impl&gt;::shared_ptr(const boost::shared_ptr&lt;boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::impl&gt;&amp;)’ In file included from /usr/include/boost/shared_ptr.hpp:17:0, from /usr/include/boost/iostreams/chain.hpp:37, from /usr/include/boost/iostreams/filtering_streambuf.hpp:17, from /usr/include/boost/iostreams/filtering_stream.hpp:22, from test.cpp:3: /usr/include/boost/smart_ptr/shared_ptr.hpp:168:25: note: ‘boost::shared_ptr&lt;boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::impl&gt;::shared_ptr(const boost::shared_ptr&lt;boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::impl&gt;&amp;)’ is implicitly declared as deleted because ‘boost::shared_ptr&lt;boost::iostreams::symmetric_filter&lt;boost::iostreams::detail::zlib_decompressor_impl&lt;std::allocator&lt;char&gt; &gt;, std::allocator&lt;char&gt; &gt;::impl&gt;’ declares a move constructor or move assignment operator template&lt;class T&gt; class shared_ptr ^ In file included from /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:23:0, from /usr/include/boost/iostreams/stream_buffer.hpp:22, from /usr/include/boost/iostreams/chain.hpp:35, from /usr/include/boost/iostreams/filtering_streambuf.hpp:17, from /usr/include/boost/iostreams/filtering_stream.hpp:22, from test.cpp:3: /usr/include/boost/iostreams/detail/adapter/concept_adapter.hpp: In instantiation of ‘boost::iostreams::detail::concept_adapter&lt;T&gt;::concept_adapter(const T&amp;) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;]’: /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:186:5: required from ‘void boost::iostreams::detail::indirect_streambuf&lt;T, Tr, Alloc, Mode&gt;::open(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/stream_buffer.hpp:103:28: required from ‘void boost::iostreams::stream_buffer&lt;T, Tr, Alloc, Mode&gt;::open_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/stream_buffer.hpp:93:5: required from ‘boost::iostreams::stream_buffer&lt;T, Tr, Alloc, Mode&gt;::stream_buffer(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:252:60: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:212:5: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ /usr/include/boost/iostreams/chain.hpp:491:7: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;]’ /usr/include/boost/iostreams/chain.hpp:479:5: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ test.cpp:13:50: required from here /usr/include/boost/iostreams/detail/adapter/concept_adapter.hpp:64:48: error: use of deleted function ‘boost::iostreams::basic_zlib_decompressor&lt;&gt;::basic_zlib_decompressor(const boost::iostreams::basic_zlib_decompressor&lt;&gt;&amp;)’ explicit concept_adapter(const T&amp; t) : t_(t) ^ In file included from /usr/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp:26:0, from /usr/include/boost/iostreams/stream_buffer.hpp:21, from /usr/include/boost/iostreams/chain.hpp:35, from /usr/include/boost/iostreams/filtering_streambuf.hpp:17, from /usr/include/boost/iostreams/filtering_stream.hpp:22, from test.cpp:3: /usr/include/boost/iostreams/detail/optional.hpp: In instantiation of ‘void boost::iostreams::detail::optional&lt;T&gt;::reset(const T&amp;) [with T = boost::iostreams::detail::concept_adapter&lt;boost::iostreams::basic_zlib_decompressor&lt;&gt; &gt;]’: /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:186:5: required from ‘void boost::iostreams::detail::indirect_streambuf&lt;T, Tr, Alloc, Mode&gt;::open(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/stream_buffer.hpp:103:28: required from ‘void boost::iostreams::stream_buffer&lt;T, Tr, Alloc, Mode&gt;::open_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/stream_buffer.hpp:93:5: required from ‘boost::iostreams::stream_buffer&lt;T, Tr, Alloc, Mode&gt;::stream_buffer(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:252:60: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input]’ /usr/include/boost/iostreams/chain.hpp:212:5: required from ‘void boost::iostreams::detail::chain_base&lt;Self, Ch, Tr, Alloc, Mode&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Self = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; Ch = char; Tr = std::char_traits&lt;char&gt;; Alloc = std::allocator&lt;char&gt;; Mode = boost::iostreams::input; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ /usr/include/boost/iostreams/chain.hpp:491:7: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push_impl(const T&amp;, int, int) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;]’ /usr/include/boost/iostreams/chain.hpp:479:5: required from ‘void boost::iostreams::detail::chain_client&lt;Chain&gt;::push(const T&amp;, int, int, typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type*) [with T = boost::iostreams::basic_zlib_decompressor&lt;&gt;; Chain = boost::iostreams::chain&lt;boost::iostreams::input, char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;; typename boost::disable_if&lt;boost::iostreams::is_std_io&lt;T&gt; &gt;::type = void]’ test.cpp:13:50: required from here /usr/include/boost/iostreams/detail/optional.hpp:100:9: error: use of deleted function ‘boost::iostreams::detail::concept_adapter&lt;boost::iostreams::basic_zlib_decompressor&lt;&gt; &gt;::concept_adapter(const boost::iostreams::detail::concept_adapter&lt;boost::iostreams::basic_zlib_decompressor&lt;&gt; &gt;&amp;)’ new (address()) T(t); ^ In file included from /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:23:0, from /usr/include/boost/iostreams/stream_buffer.hpp:22, from /usr/include/boost/iostreams/chain.hpp:35, from /usr/include/boost/iostreams/filtering_streambuf.hpp:17, from /usr/include/boost/iostreams/filtering_stream.hpp:22, from test.cpp:3: /usr/include/boost/iostreams/detail/adapter/concept_adapter.hpp:35:7: note: ‘boost::iostreams::detail::concept_adapter&lt;boost::iostreams::basic_zlib_decompressor&lt;&gt; &gt;::concept_adapter(const boost::iostreams::detail::concept_adapter&lt;boost::iostreams::basic_zlib_decompressor&lt;&gt; &gt;&amp;)’ is implicitly deleted because the default definition would be ill-formed: class concept_adapter { ^ /usr/include/boost/iostreams/detail/adapter/concept_adapter.hpp:35:7: error: use of deleted function ‘boost::iostreams::basic_zlib_decompressor&lt;&gt;::basic_zlib_decompressor(const boost::iostreams::basic_zlib_decompressor&lt;&gt;&amp;)’ </pre><p> Almost the same error shows up when the gzip_decompressor is used to replace the zlib_decompressor. </p> <p> This bug is also present in the 1.60.0 download. </p> <p> Thanks for looking into this, Christian </p> Christian Meesters <meesters@…> https://svn.boost.org/trac10/ticket/12129 https://svn.boost.org/trac10/ticket/12129 Report #12128: Stage .pdb Files for Debug and Release - VS2015 Thu, 14 Apr 2016 21:45:28 GMT Wed, 17 Aug 2016 13:39:16 GMT <p> When configuring Boost for VS2015, the pdb files are not copied to the stage\lib folder. Steps to reproduce below. The b2 command should stage the requested pdb files, should it not? </p> <pre class="wiki">call bootstrap.bat b2 variant=debug,release link=shared,static runtime-link=shared --with-date_time --with-thread threading=multi toolset=msvc-14.0 optimization=speed debug-symbols=on architecture=x86 address-model=32 </pre><p> This produces the following files in stage/lib: </p> <pre class="wiki">boost_chrono-vc140-mt-1_60.dll boost_chrono-vc140-mt-1_60.lib boost_chrono-vc140-mt-gd-1_60.dll boost_chrono-vc140-mt-gd-1_60.lib boost_date_time-vc140-mt-1_60.dll boost_date_time-vc140-mt-1_60.lib boost_date_time-vc140-mt-gd-1_60.dll boost_date_time-vc140-mt-gd-1_60.lib boost_system-vc140-mt-1_60.dll boost_system-vc140-mt-1_60.lib boost_system-vc140-mt-gd-1_60.dll boost_system-vc140-mt-gd-1_60.lib boost_thread-vc140-mt-1_60.dll boost_thread-vc140-mt-1_60.lib boost_thread-vc140-mt-gd-1_60.dll boost_thread-vc140-mt-gd-1_60.lib libboost_chrono-vc140-mt-1_60.lib libboost_chrono-vc140-mt-gd-1_60.lib libboost_date_time-vc140-mt-1_60.lib libboost_date_time-vc140-mt-gd-1_60.lib libboost_system-vc140-mt-1_60.lib libboost_system-vc140-mt-gd-1_60.lib libboost_thread-vc140-mt-1_60.lib libboost_thread-vc140-mt-gd-1_60.lib </pre><p> I can manually copy the missing .pdb files by running these commands. </p> <pre class="wiki">copy /Y bin.v2\libs\thread\build\msvc-14.0\debug\optimization-speed\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\thread\build\msvc-14.0\release\debug-symbols-on\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\chrono\build\msvc-14.0\debug\optimization-speed\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\chrono\build\msvc-14.0\release\debug-symbols-on\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\date_time\build\msvc-14.0\debug\optimization-speed\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\date_time\build\msvc-14.0\release\debug-symbols-on\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\system\build\msvc-14.0\debug\optimization-speed\threading-multi\*.pdb stage\lib\ copy /Y bin.v2\libs\system\build\msvc-14.0\release\debug-symbols-on\threading-multi\*.pdb stage\lib\ </pre><p> Thanks in advance, </p> Will Bickford <wbickford@…> https://svn.boost.org/trac10/ticket/12128 https://svn.boost.org/trac10/ticket/12128 Report #12127: Invoking a library's build//stage ignores --stagedir Thu, 14 Apr 2016 17:52:06 GMT Thu, 14 Apr 2016 17:52:06 GMT <p> When trying to stage a library via </p> <pre class="wiki">b2 -sBOOST_ROOT=c:\projects\boost-git\boost --stagedir=c:\stage c:/projects/boost-git/boost/libs/system/build//stage </pre><p> the <code>--stagedir</code> option is ignored and <code>c:/projects/boost-git/boost/libs/system/build/stage</code> is used instead. </p> <p> Steven Watanabe says that this is because <code>BOOST_STAGE_LOCATE</code> is set in <code>boostcpp.jam</code>, but the <code>boost-install</code> rule is defined in <code>Jamroot</code>. </p> <p> He thinks that <code>boost-install</code> needs to be moved to <code>boostcpp.jam</code>. </p> Peter Dimov https://svn.boost.org/trac10/ticket/12127 https://svn.boost.org/trac10/ticket/12127 Report #12125: Another problems performing boolean operations on polygons with shared edges Wed, 13 Apr 2016 22:43:43 GMT Fri, 28 Oct 2016 16:17:05 GMT <p> Trying to solve problems with union_ operation on mpolygons with shared edges (<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/12118"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/12118</a>) with help of boost 1.61.0 beta. But instead of getting problems with zero areas, I'm getting really wrong result. </p> <p> For example </p> <p> currentPath<br /> MULTIPOLYGON(((-5.96064376831054687500 -17.19871711730957031250,7.83307075500488281250 -32.98977279663085937500,8.81292819976806640625 -34.11151504516601562500,19.66869926452636718750 -14.42036247253417968750,-5.96064376831054687500 -17.19871711730957031250)),((-14.87041568756103515625 -6.99879980087280273438,-16.12161636352539062500 -18.30021858215332031250,-5.96064376831054687500 -17.19871711730957031250,-14.87041568756103515625 -6.99879980087280273438))) </p> <p> appended Polygon<br /> MULTIPOLYGON(((7.83307075500488281250 -32.98977279663085937500,8.81292819976806640625 -34.11151504516601562500,13.00057315826416015625 -33.85240554809570312500,7.83307075500488281250 -32.98977279663085937500)),((-22.50806808471679687500 -27.92480468750000000000,7.83307075500488281250 -32.98977279663085937500,-14.87041568756103515625 -6.99879980087280273438,-22.50806808471679687500 -27.92480468750000000000))) </p> <p> Union result (same as currentPath, appended Polygon was totally ignored)<br /> MULTIPOLYGON(((-5.96064376831054687500 -17.19871711730957031250,7.83307075500488281250 -32.98977279663085937500,8.81292819976806640625 -34.11151504516601562500,19.66869926452636718750 -14.42036247253417968750,-5.96064376831054687500 -17.19871711730957031250)),((-14.87041568756103515625 -6.99879980087280273438,-16.12161636352539062500 -18.30021858215332031250,-5.96064376831054687500 -17.19871711730957031250,-14.87041568756103515625 -6.99879980087280273438))) </p> ev.mipt@… https://svn.boost.org/trac10/ticket/12125 https://svn.boost.org/trac10/ticket/12125 Report #12122: Socket get_option throwing length_error exceptions Tue, 12 Apr 2016 16:12:48 GMT Wed, 01 Jun 2016 21:03:22 GMT <p> We've seen some indeterminate behavior when calling get_option(no_delay). Occasionally we'll see the length_error exception get thrown from within socket_option::boolean::resize() even though we're passing in an error_code to get_option(). Occasionally we'll get an unexpected result from the option as well (the option will be off even though it was set to on). We'll manually add more details to the exception in question so we can investigate what unexpected size the resize() function is encountering. Also, I noticed it's not the first time this exception was encountered by someone: </p> <p> <a class="ext-link" href="https://sourceforge.net/p/asio/mailman/message/6494499/"><span class="icon">​</span>https://sourceforge.net/p/asio/mailman/message/6494499/</a> </p> <p> A few things should really happen here regardless of the root issue: </p> <ol><li>An exception should not be thrown when an error_code is passed in. These resize() functions need support for error_code so it can be passed through by the corresponding get_option() overload. </li></ol><ol start="2"><li>The exception message in resize() should contain more details. In particular, it should mention the value of the passed in size 's', and possibly the result of the size() member function as well. </li></ol><p> We've seen this happen on Windows v6.0.6002 and v6.1.7601. We'll add more details here about the unexpected size value we're encountering once we have them. </p> Chris White <chriswhitemsu@…> https://svn.boost.org/trac10/ticket/12122 https://svn.boost.org/trac10/ticket/12122 Report #12119: Symlinks not supported when compiled on MSYS2 MinGW64 Windows 7 Sun, 10 Apr 2016 20:56:54 GMT Sun, 17 Apr 2016 08:45:54 GMT <p> I will try to follow up this issue a bit further myself, but wanted to report it ASAP to help others and track the progress. I compiled the boost package on MSYS2 (standard package source compile) and found that it prints "symlinks supported: no". So far I could not find why this is the case, because symlinks should certainly be supported on this system/environment. When I force-disable this check, symlink support does get compiled into boost, and I get further. </p> <p> Creating symlinks still fails for me, but this might be an unrelated (permission) issue: It fails now with "Got exception boost::filesystem::create_symlink: A required privilege is not held by the client:". </p> Mario Emmenlauer <mario@…> https://svn.boost.org/trac10/ticket/12119 https://svn.boost.org/trac10/ticket/12119 Report #12116: filesystem::path::iterator does not work correctly with "\\?\UNC\{servername}" paths Wed, 06 Apr 2016 20:34:24 GMT Wed, 06 Apr 2016 20:34:24 GMT <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; #include &lt;iostream&gt; #include &lt;string&gt; int main() { path p("\\\\?\\UNC\\google.com\\a\\b\\c\\file.txt"); for (auto i : p) { cout &lt;&lt; i.string() &lt;&lt; endl; } } </pre><p> The above code generates: </p> <pre class="wiki">\\? / UNC google.com a b c file.txt </pre><p> However, it should generate: </p> <pre class="wiki">\\?\UNC\google.com / a b c file.txt </pre> jim@… https://svn.boost.org/trac10/ticket/12116 https://svn.boost.org/trac10/ticket/12116 Report #12115: Boost.Asio compile error on Visual Studio 2015 Update 2 Wed, 06 Apr 2016 07:53:12 GMT Mon, 16 May 2016 03:57:54 GMT <p> I just upgraded to VS 2015 Update 2 and boost/asio/basic_io_object.hpp fails to compile on it. Downgrading to VS 2015 Update 1 fixed this issue for me. </p> <pre class="wiki">1&gt;include\boost/asio/basic_io_object.hpp(45): error C2064: term does not evaluate to a function taking 2 arguments 1&gt; include\boost/asio/ip/basic_resolver.hpp(45): note: see reference to class template instantiation 'boost::asio::detail::service_has_move&lt;IoObjectService&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; IoObjectService=boost::asio::ip::resolver_service&lt;boost::asio::ip::tcp&gt; 1&gt; ] 1&gt; C:\work\uninav\src\private\nav_mail\MailClient.cpp(175): note: see reference to class template instantiation 'boost::asio::ip::basic_resolver&lt;boost::asio::ip::tcp,boost::asio::ip::resolver_service&lt;InternetProtocol&gt;&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; InternetProtocol=boost::asio::ip::tcp 1&gt; ] </pre><p> Compile error in basic_io_object.hpp:45 at "service_has_move::eval(" </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#if defined(BOOST_ASIO_HAS_MOVE)</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="c1">// Type trait used to determine whether a service supports move.</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">IoObjectService</span><span class="o">&gt;</span> <span class="k">class</span> <span class="nc">service_has_move</span> <span class="p">{</span> <span class="k">private</span><span class="o">:</span> <span class="k">typedef</span> <span class="n">IoObjectService</span> <span class="n">service_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">service_type</span><span class="o">::</span><span class="n">implementation_type</span> <span class="n">implementation_type</span><span class="p">;</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="p">,</span> <span class="k">typename</span> <span class="n">U</span><span class="o">&gt;</span> <span class="k">static</span> <span class="k">auto</span> <span class="n">eval</span><span class="p">(</span><span class="n">T</span><span class="o">*</span> <span class="n">t</span><span class="p">,</span> <span class="n">U</span><span class="o">*</span> <span class="n">u</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="k">decltype</span><span class="p">(</span><span class="n">t</span><span class="o">-&gt;</span><span class="n">move_construct</span><span class="p">(</span><span class="o">*</span><span class="n">u</span><span class="p">,</span> <span class="o">*</span><span class="n">u</span><span class="p">),</span> <span class="kt">char</span><span class="p">());</span> <span class="k">static</span> <span class="nf">char</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">eval</span><span class="p">(...))[</span><span class="mi">2</span><span class="p">];</span> <span class="k">public</span><span class="o">:</span> <span class="k">static</span> <span class="k">const</span> <span class="kt">bool</span> <span class="n">value</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">service_has_move</span><span class="o">::</span><span class="n">eval</span><span class="p">(</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">service_type</span><span class="o">*&gt;</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">implementation_type</span><span class="o">*&gt;</span><span class="p">(</span><span class="mi">0</span><span class="p">)))</span> <span class="o">==</span> <span class="mi">1</span><span class="p">;</span> <span class="p">};</span> <span class="p">}</span> <span class="cp">#endif </span><span class="c1">// defined(BOOST_ASIO_HAS_MOVE)</span> </pre></div></div> Sergey Svistunov <zenden2k@…> https://svn.boost.org/trac10/ticket/12115 https://svn.boost.org/trac10/ticket/12115 Report #12113: ./boost/mpi/communicator.hpp:1260:3: error: 'array' is not a member of 'boost::serialization' Tue, 05 Apr 2016 08:51:25 GMT Tue, 05 Apr 2016 09:16:49 GMT <p> Boost.MPI no longer compiles because boost::serialization::array has been renamed to boost::serialization::array_view </p> lukeocamden@… https://svn.boost.org/trac10/ticket/12113 https://svn.boost.org/trac10/ticket/12113 Report #12111: use std placeholders in boost::bind in c++11 Sun, 03 Apr 2016 20:30:11 GMT Sun, 03 Apr 2016 20:30:11 GMT <p> Currently boost::bind imports its placeholders into the global namespace. Note that this can also happen if you do not just use boost bind at all, since multiple other boost libraries like boost::thread, boost::iostreams or boost::multi_index also include boost/bind.hpp in some way. </p> <p> This clashes with std placeholders if people want to use them like they did previously with boost placeholders (in global namespace). Because _1 .. _N are now aliases to both the boost placeholders and the std placeholders. </p> <p> To me it seems like the best way to fix this is to make boost bind use std placeholders when used with c++11 so that the boost::bind::placeholders namespace just becomes and alias for std::placeholders </p> anonymous https://svn.boost.org/trac10/ticket/12111 https://svn.boost.org/trac10/ticket/12111 Report #12109: C4100 warning (unreferenced formal parameter) in json_parser Fri, 01 Apr 2016 11:43:16 GMT Fri, 01 Apr 2016 11:52:43 GMT <p> I upgraded from boost 1.57.0 to 1.60.0, and now get build failures due to a C4100 warning while using VS2015 - unfortunately we're required to use the error on warning setting. </p> <p> The transcode_codepoint function inside "property_tree\detail\json_parser\wide_encoding.hpp", amongst many other functions in the same file, have unreferenced parameters such as 'Sentinel end'. </p> gigaplex@… https://svn.boost.org/trac10/ticket/12109 https://svn.boost.org/trac10/ticket/12109 Report #12108: boost::filesystem::canonical() enters infinite loop when current path is a directory symlink on windows Fri, 01 Apr 2016 08:02:02 GMT Tue, 12 Jul 2016 08:48:16 GMT <p> On Windows platforms, when the current path is a directory symlink, boost::filesystem::canonical() enters an infinite loop. </p> <p> Verified using attached program on Windows 8.1 and Windows Server 2012. </p> <p> The problem occurs because when the current path is a directory symlink then boost::filesystem::is_symlink(path("c:")) returns true. </p> <p> Assuming the following paths: </p> <p> myDir = c:\temp\symlink-example\dir mySym = c:\temp\symlink-example\sym -&gt; myDir myFile = c:\temp\symlink-example\dir\hello.txt </p> <p> When current path is set to mySym and canonical(myFile) is called: </p> <ul><li>The path components of myFile are iterated over (operations.cpp:827) </li><li>"c:" is the first component. It is considered a symlink and expanded (operations.cpp:844) </li><li>The path then becomes c:\temp\symlink-example\dir\temp\symlink-example\dir\hello.txt </li><li>scan is set true and the loop repeats. "c:" is again expanded. The loop repeats infinitely as the path grows longer and longer </li></ul> Tony Abbott <tony.abbott@…> https://svn.boost.org/trac10/ticket/12108 https://svn.boost.org/trac10/ticket/12108 Report #12104: windows - Visual Studio 2015 Update 2 RC gives out warning C4191 in thread_primitive.hpp Wed, 30 Mar 2016 22:21:21 GMT Sat, 16 Sep 2017 16:48:44 GMT <pre class="wiki">thread/win32/thread_primitives.hpp(312): warning C4191: 'type cast': unsafe conversion from 'boost::detail::win32::farproc_t' to 'boost::detail::win32::detail::gettickcount64_t' </pre><p> Calling this function through the result pointer may cause your program to fail </p> Shane Mathews (oneZero Financial Systems) <smathews@…> https://svn.boost.org/trac10/ticket/12104 https://svn.boost.org/trac10/ticket/12104 Report #12100: including <boost/accumulators/statistics/rolling_mean.hpp> brings static c++ initializers into my code Sat, 26 Mar 2016 22:17:50 GMT Sat, 26 Mar 2016 22:17:50 GMT <p> At least I think so. </p> <p> If I #include &lt;boost/accumulators/statistics/rolling_mean.hpp&gt; </p> <p> Then I see that I have static variables that will need to be initialized. Because I want to include my code as a framework for other projects, we have a policy of avoiding having static initializers run (because of dynamic linkage). </p> <p> I believe the issue is with the extractors: </p> <blockquote> <p> namespace extract { </p> <blockquote> <p> extractor&lt;tag::lazy_rolling_mean&gt; const lazy_rolling_mean = {}; extractor&lt;tag::immediate_rolling_mean&gt; const immediate_rolling_mean = {}; extractor&lt;tag::rolling_mean&gt; const rolling_mean = {}; </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> BOOST_ACCUMULATORS_IGNORE_GLOBAL(lazy_rolling_mean) </p> <blockquote> <p> BOOST_ACCUMULATORS_IGNORE_GLOBAL(immediate_rolling_mean) BOOST_ACCUMULATORS_IGNORE_GLOBAL(rolling_mean) </p> </blockquote> </blockquote> <p> } </p> </blockquote> <blockquote> <p> using extract::lazy_rolling_mean; using extract::immediate_rolling_mean; using extract::rolling_mean; </p> </blockquote> <p> I think lazy_rolling_mean is the issue. </p> Richard Powell <rmpowell77@…> https://svn.boost.org/trac10/ticket/12100 https://svn.boost.org/trac10/ticket/12100 Report #12099: Ziggurat implementation of boost::random::exponential_distribution Fri, 25 Mar 2016 20:19:58 GMT Fri, 25 Mar 2016 20:47:53 GMT <p> The Ziggurat algorithm (implemented as of boost 1.56.0 in boost::random::normal_distribution) is suitable for any distribution with a decreasing density (or symmetric distribution with a decreasing density in one half, as in the case of normal_distribution). In particular the Marsaglia and Tsang (2000) paper that described the algorithm in the first place described both the normal distribution case and the exponential distribution. </p> <p> The attached patch (which I'll shortly also submit as a git pull request) changes boost::random::exponential_distribution to use the Ziggurat algorithm. </p> <p> In my testing, drawing double values, this ziggurat implementation improves the performance of the exponential distribution by about 3.9x (debian amd64, Intel Sandy Bridge CPU, g++ 5.3.1, using -O3) to 4.4x (debian amd64, Intel Haswell CPU, g++ 6 snapshot 20160313, using -O3). Using -march=native in both cases increases the relative gains further (to about 4.1x and 4.8x, respectively). </p> <p> Since several other distributions rely (either directly or indirectly) on exponential_distribution, this should have notable speed improvements for drawing from them, as well. </p> <p> This change has a couple of consequences, which are essentially the same as the consequences that changing normal_distribution to ziggurat had (and that some mailing list posts commented on): </p> <ul><li>the values from an random::exponential_distribution object will change, obviously. </li><li>the values from dependent distributions will change (laplace, gamma, normal, and hyperexponential, directly, plus various distributions that make use of those). </li><li>the RNG state can sometimes advance more than it would have before (in particular, whenever we need to get a tail draw). </li></ul><p> Some other comments about the details of this patch: </p> <ul><li>I moved (without changing) the detail code for drawing an int/float pair from random/normal_distribution.hpp into a new random/detail/int_float_pair.hpp header, since it's needed by both the existing normal and new exponential ziggurat implementations, and has nothing specific to normal. </li><li>I used a table of size 257 (versus normal's 129) so as to keep the uniform int draw as an 8-bit value (which is what normal uses); since exponential doesn't need a sign bit, that leaves the full 8 bits for selecting the table index. This difference (128 vs 256) also follows Marsaglia and Tsang's original reference implementations of normal and exponential. </li><li>I couldn't find an exact source for the tables in normal_distribution.hpp, so I created a program to generate and output them. It can reproduce either the table for exponential or normal for any given table size; the normal output agrees *exactly* with the existing normal_distribution tables, and the <code>table_x[1]</code> value agrees (to 13 significant digits) with the Marsaglia and Tsang reference value. I'm not sure what to do with this program, though: is it suitable for dropping into random/extra? </li></ul> Jason Rhinelander <jason@…> https://svn.boost.org/trac10/ticket/12099 https://svn.boost.org/trac10/ticket/12099 Report #12096: Typo at the regex description's page? Fri, 25 Mar 2016 06:13:17 GMT Sun, 09 Apr 2017 12:23:51 GMT <p> There is a strange (empty) row in the table which contains a list of the escape characters at the page which describes a regular expressions. Maybe shall this row contain the '\n' escape?.. </p> beaux_monde@… https://svn.boost.org/trac10/ticket/12096 https://svn.boost.org/trac10/ticket/12096 Report #12091: help2man compatibility: add one more space between "arg" and description Wed, 23 Mar 2016 12:24:52 GMT Tue, 11 Oct 2016 21:16:32 GMT <p> help2man splits the option name and its description at two (or more) spaces. When using a longest option with an argument there is only one space between "arg" and the option description text. </p> Timo Weingärtner <timo@…> https://svn.boost.org/trac10/ticket/12091 https://svn.boost.org/trac10/ticket/12091 Report #12087: transform_iterator is not assignable in VS2015 Tue, 22 Mar 2016 13:55:07 GMT Tue, 22 Mar 2016 16:59:17 GMT <p> The following code does not compile in Visual Studio 2015 because the assignment operator of transform_iterator seems to be deleted: </p> <p> #include "boost/iterator/transform_iterator.hpp" #include &lt;vector&gt; int main() { </p> <blockquote> <p> auto v = std::vector&lt;int&gt;{}; auto it = boost::make_transform_iterator(std::begin(v), [](int) { return 1; }); </p> </blockquote> <blockquote> <p> it = it; </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> The line 'it = it' is the culprit, giving error C2280: 'boost::iterators::transform_iterator&lt;main::&lt;lambda_245a5d22fdccfa4a35ac6bb4a4dc8307&gt;,std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;,boost::iterators::use_default,boost::iterators::use_default&gt; &amp;boost::iterators::transform_iterator&lt;main::&lt;lambda_245a5d22fdccfa4a35ac6bb4a4dc8307&gt;,std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;,boost::iterators::use_default,boost::iterators::use_default&gt;::operator =(const boost::iterators::transform_iterator&lt;main::&lt;lambda_245a5d22fdccfa4a35ac6bb4a4dc8307&gt;,std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;,boost::iterators::use_default,boost::iterators::use_default&gt; &amp;)': attempting to reference a deleted function boost\iterator\transform_iterator.hpp(127): note: compiler has generated 'boost::iterators::transform_iterator&lt;main::&lt;lambda_245a5d22fdccfa4a35ac6bb4a4dc8307&gt;,std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;,boost::iterators::use_default,boost::iterators::use_default&gt;::operator =' here </p> <p> I assume iterators need to be assignable. Furthermore I see no reason why the compiler wouldn't generate the standard member functions. Everything compiles OK in VS2013. </p> <p> Thanks in advance for having a look. Regards, Ben </p> bswerts@… https://svn.boost.org/trac10/ticket/12087 https://svn.boost.org/trac10/ticket/12087 Report #12086: Fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_34_1.lib' Tue, 22 Mar 2016 12:31:49 GMT Wed, 23 Mar 2016 11:23:28 GMT <p> getting below error:- Fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_34_1.lib' </p> <p> Lib = 1.34.1 complier: Visual Studio 2008 OS- Windows 7 </p> greatsaurav@… https://svn.boost.org/trac10/ticket/12086 https://svn.boost.org/trac10/ticket/12086 Report #12083: Rounding mode not restored when using save_state rounding struct on x64 Mon, 21 Mar 2016 17:24:42 GMT Mon, 21 Mar 2016 17:24:42 GMT <p> The rounding mode is not restored when using interval_lib's save_state rounding struct on x64 when an exception is thrown (Visual Studio 2013/2015). This can have critical impact on applications. All rounding will remain downward after catching the exception. This bug does not occur in Win32. </p> <p> We've also reported this issue to Microsoft: <a class="ext-link" href="https://connect.microsoft.com/VisualStudio/Feedback/Details/2487437"><span class="icon">​</span>https://connect.microsoft.com/VisualStudio/Feedback/Details/2487437</a> </p> <p> Boost Repro: </p> <p> #include &lt;boost/numeric/interval.hpp&gt; </p> <p> void test_interval_number::test_boost_rounding() { </p> <blockquote> <p> try { </p> <blockquote> <p> boost::numeric::interval&lt;double&gt;::traits_type::rounding rnd; rnd.downward(); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> throw 1; </p> </blockquote> <p> } catch (...) { </p> </blockquote> <blockquote> <p> } </p> </blockquote> <blockquote> <p> unsigned int fpu_flags = 0; errno_t err; </p> </blockquote> <blockquote> <p> err = _controlfp_s(&amp;fpu_flags, 0, 0); assert(err == 0); </p> </blockquote> <blockquote> <p> assert((fpu_flags &amp; _MCW_RC) != _RC_DOWN); </p> </blockquote> <p> } </p> Aaron Balog <abalog@…> https://svn.boost.org/trac10/ticket/12083 https://svn.boost.org/trac10/ticket/12083 Report #12081: the minmax creates dangling references too easily Sun, 20 Mar 2016 20:23:47 GMT Wed, 21 Feb 2018 22:20:01 GMT <p> First. minmax's example codes has created dangling references. </p> <pre class="wiki">boost::tuple&lt;int const&amp;, int const&amp;&gt; result1 = boost::minmax(1, 0); //actual code boost::tuple&lt;int, int&gt; result1 = boost::minmax(1, 0); //expected code </pre><p> <a href="http://www.boost.org/doc/libs/1_60_0/libs/algorithm/minmax/index.html">http://www.boost.org/doc/libs/1_60_0/libs/algorithm/minmax/index.html</a> <br /> <a href="http://www.boost.org/doc/libs/1_60_0/libs/algorithm/minmax/example/minmax_ex.cpp">http://www.boost.org/doc/libs/1_60_0/libs/algorithm/minmax/example/minmax_ex.cpp</a> </p> <p> <br /> </p> <p> Second. The design of minmax is unsuitable for that of C++11 era. Consider the following. </p> <pre class="wiki">auto tp = minmax(1,2); tp.get&lt;0&gt;(); // Undefined behavior </pre><p> This code looks like fairy normal, but it causes undefined behavior. Since the minmax returns tuple&lt;T const&amp;, T const&amp;&gt;, the 'auto tp' has dangling references. <br /> </p> <p> I think we should change the return type from tuple&lt;T const&amp;, T const&amp;&gt; to tuple&lt;T,T&gt;. </p> <p> See also: <a class="ext-link" href="https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/HLiJJBRNYSw"><span class="icon">​</span>https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/HLiJJBRNYSw</a> </p> anonymous https://svn.boost.org/trac10/ticket/12081 https://svn.boost.org/trac10/ticket/12081 Report #12080: Boost:asio::address incompatible 32 and 64 bit Sun, 20 Mar 2016 14:08:39 GMT Sun, 20 Mar 2016 14:08:39 GMT <p> When using g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) The serialized size of boost::asio::ip::address differs between 32 and 64 bit compilations. </p> <p> When compiled in 32 bit the size of the structure is 28 bytes, and when compiled in 64 bit the size of the structure is 32 bytes. </p> <p> I guess it should be 32 bytes in both cases, to be inter-operable and avoid page alignment issues. </p> max_shifrin@… https://svn.boost.org/trac10/ticket/12080 https://svn.boost.org/trac10/ticket/12080 Report #12079: Infinite loop in boost:: filesystem::directory_iterator Sat, 19 Mar 2016 21:09:05 GMT Sat, 19 Mar 2016 21:12:32 GMT <p> Debian Jessie (GLIBC 2.19) </p> <p> I have an NTFS partition created in Windows. On that partition there is a file with very long filename that contains Cyrillic characters: D:\test\очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_файла_очень_длинное_имя_для_ф.txt </p> <p> I attached this partition to my linux box and mounted it to /media/sk1ff/EEBEDC27BEDBE65D/. So, when I execute the following simple piece of code: </p> <div class="wiki-code"><div class="code"><pre> <span class="n">fs</span><span class="o">::</span><span class="n">directory_iterator</span> <span class="n">it</span><span class="p">(</span><span class="s">&quot;/media/sk1ff/EEBEDC27BEDBE65D/test&quot;</span><span class="p">),</span> <span class="n">dir_end</span><span class="p">;</span> <span class="k">for</span> <span class="p">(;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">dir_end</span><span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> it falls into an infinite loop. </p> alexb.x42@… https://svn.boost.org/trac10/ticket/12079 https://svn.boost.org/trac10/ticket/12079 Report #12078: Warnings in boost/core/swap.hpp when using nvcc Sat, 19 Mar 2016 16:00:54 GMT Fri, 19 Aug 2016 21:22:03 GMT <p> I get the following warning when I compile .cu files which uses the boost/core/swap.hpp file: </p> <pre class="wiki">~/sw/boost/include/boost/core/swap.hpp(36): warning: calling a __host__ function from a __host__ __device__ function is not allowed detected during: instantiation of "void boost_swap_impl::swap_impl(T &amp;, T &amp;) [with T=boost::signals2::detail::foreign_shared_ptr_impl_base *]" (56): here instantiation of "void boost::swap(T1 &amp;, T2 &amp;) [with T1=boost::signals2::detail::foreign_shared_ptr_impl_base *, T2=boost::signals2::detail::foreign_shared_ptr_impl_base *]" ~/sw/boost/include/boost/signals2/detail/foreign_ptr.hpp(111): here </pre><p> I get this even with the most recent git version (commit 3a94cde). The attached program gives this error when compiling like this: </p> <p> <code> nvcc -I ~/sw/boost/include test_swap.cu</code> </p> <p> I use CUDA 7.5 and g++ 4.9.2. </p> Karl Ljungkvist <k.ljungkvist@…> https://svn.boost.org/trac10/ticket/12078 https://svn.boost.org/trac10/ticket/12078 Report #12077: gcc: error: CreateProcess: No such file or directory Sat, 19 Mar 2016 15:02:22 GMT Sat, 19 Mar 2016 15:43:15 GMT <pre class="wiki">C:\Users\James\code\boost\v1_60&gt;bootstrap.bat gcc Building Boost.Build engine gcc: error: CreateProcess: No such file or directory Failed to build Boost.Build engine. </pre><p> gcc is in my path </p> <pre class="wiki">C:\Users\James\code\boost\v1_60&gt;gcc -v Using built-in specs. COLLECT_GCC=gcc Target: mingw32 Configured with: ../../../src/gcc-4.9.2/configure --build=mingw32 --enable- ... Thread model: posix gcc version 4.9.2 (tdm-1) </pre><p> here is the log </p> <pre class="wiki">### ### Using 'gcc' toolset. ### C:\Users\James\code\boost\v1_60\tools\build\src\engine&gt;if exist bootstrap rd /S /Q bootstrap C:\Users\James\code\boost\v1_60\tools\build\src\engine&gt;md bootstrap C:\Users\James\code\boost\v1_60\tools\build\src\engine&gt;gcc -DNT -o bootstrap\jam0.exe command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c C:\Users\James\code\boost\v1_60\tools\build\src\engine&gt;exit /b 1 </pre><p> </p> james@… https://svn.boost.org/trac10/ticket/12077 https://svn.boost.org/trac10/ticket/12077 Report #12073: Why read callback not call Thu, 17 Mar 2016 01:45:12 GMT Wed, 14 Jun 2017 08:21:49 GMT <p> I write a simple test server but meet a strange problem. </p> <p> In my test server, I start a 10 threads pool to run io_service.run function. </p> <p> I created a boost::asio::ip::tcp::acceptor object and call 'listen' function, final call 'async_accept' to start a asynchronous operation. Then if a client connect to server, the accept callback function will be called. In accept callback function, I do three thing: 1, create a boost::asio::strand object 2, create a boost::asio::deadline_timer object to set timeout, if the client does not send any data for 5 seconds, the timer callback will be called. In this timer callback, the server will send a hearbeat request to client and expect to receive a hearbeat response from the client. 3, call async_read_some to set read callback function. </p> <p> Of cause 'async_wait' in step 2 and 'async_read_some' call in step 3 are both wrapper in strand object which is created in step 1. </p> <p> To test this server, I write a demo python client. This demo client just connect to server and send hearbeat request to server, then expect to receive a hearbeat response. I set a crontab task to call this demo python client every one minute. The most tests are OK, but the test would random fail. </p> <p> Everytime it failed, I have checked the output of tcpdump on server, the server successfully receives the hearbeat request, but the read callback function is not called. </p> <p> So why the read callback function is not called just when the hearbeat request is received. It looks like the read event is missing, is it about edge trigger in epoll? </p> <p> This random failure could reproduce on both CentOS 6.5 and CentOS 6.6, the boost version is boost 1.48.0, the compiler is gcc 4.4.7. </p> <p> Does anyone meet this bug? </p> zhjie007@… https://svn.boost.org/trac10/ticket/12073 https://svn.boost.org/trac10/ticket/12073 Report #12071: Using iterator_facade with range-v3 fails to compile Wed, 16 Mar 2016 15:36:58 GMT Wed, 20 Apr 2016 15:21:25 GMT <p> The fact that <code>postfix_increment_proxy</code> is not <code>DefaultConstructible</code> and doesn't have a nested public <code>value_type</code> makes iterators unusable with range-v3, which check the concepts. </p> <p> Example: </p> <pre class="wiki">#include "boost/iterator/iterator_facade.hpp" #include "range/v3/utility/iterator.hpp" template &lt;class V, class Category&gt; class TestIter : public boost::iterator_facade&lt;TestIter&lt;V, Category&gt;, V, Category, V&gt; { public: using typename boost::iterator_facade&lt;TestIter&lt;V, Category&gt;, V, Category, V&gt;::difference_type; TestIter() : v_() {} explicit TestIter(V v) : v_(v) {} private: friend class boost::iterator_core_access; V dereference() const { return v_; } bool equal(const TestIter&amp; other) const { return v_ == other.v_; } void increment() { ++v_; } void decrement() { --v_; } void advance(difference_type n) { v_ += n; } difference_type distance_to(const TestIter&amp; other) const { return other.v_ - v_; } V v_; }; using InIter = TestIter&lt;int, std::input_iterator_tag&gt;; static_assert(ranges::InputIterator&lt;InIter&gt;(), ""); void f(InIter x) { static_assert(ranges::Readable&lt;decltype(x++)&gt;(), ""); static_assert(ranges::DefaultConstructible&lt;decltype(x++)&gt;(), ""); } </pre><p> I think <code>static_assert(ranges::InputIterator&lt;InIter&gt;(), "")</code> fails, because the two static_asserts in <code>f()</code> fail. </p> <p> From what I've learned here: <a class="ext-link" href="https://github.com/ericniebler/range-v3/issues/304"><span class="icon">​</span>https://github.com/ericniebler/range-v3/issues/304</a> it seems a good idea to fix <code>postfix_increment_proxy</code> to conform to these requirements. Ditto <code>writable_postfix_increment_proxy</code>. </p> Krzysztof Czaiński <1czajnik@…> https://svn.boost.org/trac10/ticket/12071 https://svn.boost.org/trac10/ticket/12071 Report #12069: hexfloat not respected for float128 Wed, 16 Mar 2016 06:08:54 GMT Wed, 16 Mar 2016 06:08:54 GMT <p> Here's an example program: </p> <pre class="wiki">#include &lt;boost/multiprecision/float128.hpp&gt; #include &lt;boost/version.hpp&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; template&lt;typename Float&gt; void test() { std::cout &lt;&lt; std::hexfloat &lt;&lt; Float(1.3516809557473623e+236Q) &lt;&lt; "\n"; } int main() { std::cout &lt;&lt; "boost " BOOST_LIB_VERSION &lt;&lt; "\n"; test&lt;double&gt;(); test&lt;boost::multiprecision::float128&gt;(); } </pre><p> Its output is </p> <pre class="wiki">boost 1_60 0x1.5417c8p+784 1.351681e+236 </pre><p> while in both cases hexadecimal format was requested. Here second and third lines should be identical. </p> Ruslan <b7.10110111@…> https://svn.boost.org/trac10/ticket/12069 https://svn.boost.org/trac10/ticket/12069 Report #12068: boost::filtered_range is not default constructible Mon, 14 Mar 2016 15:50:49 GMT Mon, 14 Mar 2016 17:11:19 GMT <p> Filtered_range is not default_constructible which makes it impossible to (for example) put it into a class that has to be default-initialized and resets it (filtered_range) later. </p> <p> I'm quite new to boost internals, but I fail to see any drawbacks of adding the default constructor: </p> <p> --- include/boost/range/adaptor/filtered.hpp.orig 2016-03-14 15:26:32.228892237 +0100 +++ include/boost/range/adaptor/filtered.hpp 2016-03-14 15:26:28.724846102 +0100 @@ -41,6 +41,8 @@ </p> <blockquote> <p> typedef typename default_constructible_unary_fn_gen&lt;P, bool&gt;::type </p> <blockquote> <p> pred_t; </p> </blockquote> </blockquote> <p> + filtered_range() {} + </p> <blockquote> <p> filtered_range(P p, R&amp; r) : base(make_filter_iterator(pred_t(p), </p> <blockquote> <p> boost::begin(r), boost::end(r)), </p> </blockquote> </blockquote> Aleksej Lebedev <root@…> https://svn.boost.org/trac10/ticket/12068 https://svn.boost.org/trac10/ticket/12068 Report #12067: polygon/voronoi missing edges Mon, 14 Mar 2016 14:28:52 GMT Tue, 15 Mar 2016 10:33:31 GMT <p> For the following input to the voronoi builder (or the voronoi visualizer from the examples dir, from which the attached image was generated) </p> <pre class="wiki">6 -10 -20 10 -20 5 0 10 20 -10 20 -5 0 </pre><p> I expect the red edge to be present on the lefthand side of the attached image. Instead there is no edge. The green edge on the right hand side, however, is present. </p> n4tivex@… https://svn.boost.org/trac10/ticket/12067 https://svn.boost.org/trac10/ticket/12067 Report #12065: Boost program options throws an exception Sat, 12 Mar 2016 20:21:58 GMT Sat, 12 Mar 2016 20:21:58 GMT <blockquote> <p> Linux 3.19.0-51-generic <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/58" title="#58: Tasks: Virtual Target Cache (closed: Fixed)">#58</a>-Ubuntu SMP Fri Feb 26 21:22:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Ubuntu 15.04 </p> </blockquote> <blockquote> <p> Boost 1.59 </p> </blockquote> <blockquote> <blockquote> <p> po::options_description desc("Allowed options"); desc.add_options() </p> <blockquote> <p> ("help,h", "produce help message") ("query,", po::value&lt;std::string&gt;(), "query for the search in the index") ("out,", po::value&lt;std::string&gt;(), "output file for commits parsing") </p> </blockquote> <p> ; </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> po::positional_options_description p; p.add("verb", -1); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> po::variables_map vm; po::store(po::command_line_parser(ac, av). </p> <blockquote> <p> options(desc).positional(p).run(), vm); </p> </blockquote> <p> po::notify(vm); </p> </blockquote> </blockquote> <p> This snippet will throw an exception in the line options(desc).positional(p).run(), vm); </p> <p> This code works well with boost_1.55 </p> Thomas Milotti <thomas.milotti@…> https://svn.boost.org/trac10/ticket/12065 https://svn.boost.org/trac10/ticket/12065 Report #12063: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 18:06:51 GMT Sat, 12 Mar 2016 18:06:51 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12063 https://svn.boost.org/trac10/ticket/12063 Report #12062: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 18:06:18 GMT Sat, 12 Mar 2016 18:06:18 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12062 https://svn.boost.org/trac10/ticket/12062 Report #12061: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 18:05:03 GMT Sat, 12 Mar 2016 18:05:03 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12061 https://svn.boost.org/trac10/ticket/12061 Report #12060: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 18:03:45 GMT Sat, 12 Mar 2016 18:03:45 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12060 https://svn.boost.org/trac10/ticket/12060 Report #12058: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 18:01:10 GMT Sat, 12 Mar 2016 18:01:10 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12058 https://svn.boost.org/trac10/ticket/12058 Report #12056: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 17:58:54 GMT Sat, 12 Mar 2016 17:58:54 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12056 https://svn.boost.org/trac10/ticket/12056 Report #12055: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 17:58:19 GMT Sat, 12 Mar 2016 17:58:19 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '#.*"boost/' {} + </p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12055 https://svn.boost.org/trac10/ticket/12055 Report #12054: boost include directives use double quotes incorrectly Sat, 12 Mar 2016 17:57:30 GMT Sat, 12 Mar 2016 17:57:30 GMT <p> Extracted from issue <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/11516"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/11516</a>: </p> <p> Many Boost headers use double-quoted include directives with paths that are not relative to the current header file. For example, this is an excerpt from boost/aligned_storage.hpp: </p> <p> #include "boost/config.hpp" #include "boost/detail/workaround.hpp" </p> <p> This will cause the full search path to be searched for the given files, even the directories supposedly local to the application (set via -iquote option on GCC/Clang), which can make local files interfere with Boost, especially if there's some part in the local project that is also called "boost"... </p> <p> See a full list of offending directives via: </p> <p> find /usr/include/boost -type f -exec grep '<sup>#.*"boost/' {} + </sup></p> <p> As can be seen in boost/any.hpp, this might even be intentional for boost/config.hpp, but this is surely not intended for any other file. Handling of boost/config.hpp is not uniform, however; see for example boost/limits.h, which includes config.hpp via angle-quotes. </p> <p> This bug report does not address double-quoted include directives with header-relative paths, as used copiously by Boost Spirit, for example. These work fine on GCC/Clang and do not interact with local code (but see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3762" title="#3762: Patches: Thread can't be compiled with winscw (Codewarrior by Nokia) (closed: fixed)">#3762</a>). </p> <p> I suggest to change all include directives to a uniform style in order to eliminate interference of local files. The easiest and least-invasive solution would be to change double quotes to angle brackets, something along the lines of </p> <p> find /usr/include/boost -type f -exec sed -i~ -e 's/<sup>\(#.* \)"\(boost\/.*\)"/\1&lt;\2&gt;/' {} + </sup></p> <p> (warning: search-and-destroy capability; this also updates #defines that are used later in #include directives) </p> <p> After applying this command, my code still compiles and passes all unit tests, but strace confirms that project-local include directories are no longer searched, except for boost/mpl/aux_/preprocessed/gcc/*.hpp, which is due to some stringification macro magic in boost/mpl/aux_/include_preprocessed.hpp. That's probably obscure enough to not matter in practice. </p> John Maddock https://svn.boost.org/trac10/ticket/12054 https://svn.boost.org/trac10/ticket/12054 Report #12051: offset_ptr<void , boost::int32_t, boost::uint64_t> is saved incorrectly on win32 Fri, 11 Mar 2016 15:44:42 GMT Fri, 11 Mar 2016 15:44:42 GMT <p> I'm using offset_ptr&lt;void , boost::int32_t, boost::uint64_t&gt; to work with one mapped file from x32 and x64 process. Binary representation of offset_ptr is supposed to be same for 32 and 64 bit process. </p> <p> In attached example I simply create mapped file and it has different content on win32 depending on boost library version. It is offset_ptr stored differently: </p> <p> on x64:<br /> f8ff ffff ffff ffff - for any version </p> <p> on win32:<br /> f8ff ffff ffff ffff - boost version &lt; 1.52<br /> f8ff ffff 0000 0000 - boost version &gt;= 1.52 - this is bug<br /> </p> <p> This behavior causes crash if I save data from x32 process and then open it from x64 process. Luckily offset_ptr.hpp header from boost 1.51 works in 1.60, but it's hardly a solution... </p> <p> Can you guys make offset_ptr 32/64 compatible again? </p> <p> Thanks,<br /> Eugene </p> anonymous https://svn.boost.org/trac10/ticket/12051 https://svn.boost.org/trac10/ticket/12051 Report #12048: Deprecated libstdc++ header used in adjacency_list.hpp Wed, 09 Mar 2016 13:40:31 GMT Tue, 09 Aug 2016 08:37:14 GMT <p> Hi I'm using the reverse cuthill-mckee library to reorder some matrices... </p> <p> Anyhow I keep getting the following error: </p> <p> In file included from /usr/include/c++/4.4.7/backward/hash_set(60), </p> <blockquote> <p> from /usr/include/boost/graph/adjacency_list.hpp(25), from main.cpp(6): </p> </blockquote> <p> /usr/include/c++/4.4.7/backward/backward_warning.h(28): warning <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1224" title="#1224: Feature Requests: MPL compatibilty for Integer Type Selection Templates (closed: obsolete)">#1224</a>: #warning directive: This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. </p> <blockquote> <p> #warning \ </p> </blockquote> <p> Obviously if I use -Wno-deprecated this goes away but is there a fix I am using Boost 1.59.0 </p> <p> Thanks, Friedrich Grabner </p> friedrich.grabner@… https://svn.boost.org/trac10/ticket/12048 https://svn.boost.org/trac10/ticket/12048 Report #12046: Error of fatal error: quadmath.h: - Rhel7 Tue, 08 Mar 2016 05:32:50 GMT Thu, 17 Mar 2016 21:30:59 GMT <p> Team, <strong>I am facing an error as below while compiling the boost_1.60.0 in Rhel7 OS ./boost/math/special_functions/fpclassify.hpp:84:22: fatal error: quadmath.h: No such file or directory </strong></p> <blockquote> <p> #include "quadmath.h" </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> compilation terminated.<strong> </strong></p> <p> Please let us know how we can fix this as there is not much fix when i browsed. Is that because of any package missing ? </p> abdul.p78@… https://svn.boost.org/trac10/ticket/12046 https://svn.boost.org/trac10/ticket/12046 Report #12045: Bug in condition_algorithm_8a<ConditionMembers>::wait when using timed wait Mon, 07 Mar 2016 11:13:46 GMT Sat, 19 Mar 2016 15:47:00 GMT <p> There's a bug in condition_algorithm_8a&lt;<a class="missing wiki">ConditionMembers</a>&gt;::wait In the beginning of the method it's using data.get_sem_block_lock().wait(); </p> <p> This may cause the wait to wait forever, even if you're using the timed wait version of the method. </p> <p> Happens to me when a "Client" process holds the lock and then dies, this causes the wait() to wait forever. What should have happened, is the it would time out, and then i could detect the failure, and do something about it. </p> yochait@… https://svn.boost.org/trac10/ticket/12045 https://svn.boost.org/trac10/ticket/12045 Report #12041: fusion::traits for proxy types Fri, 04 Mar 2016 16:25:52 GMT Sat, 05 Mar 2016 11:42:49 GMT <p> This ticket has its origin in this thread: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2016/03/228115.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2016/03/228115.php</a> </p> <p> When working in generic code, one cannot determine if the underlying fusion::vector or other containers are containing a proxy type or not. </p> <p> E.g. fusion::result_of::at_c&lt;Seq, I&gt;::type requires an extra ::type, while this will likely error on normal fusion types. It would be nice to be able to seperate these by a enable_if into seperate methods. </p> <p> This is related to ADAPT_STRUCT and ADAPT_STRUCT_ADT usage, _ADT structs will result in using proxies in the type vectors. </p> jensweller@… https://svn.boost.org/trac10/ticket/12041 https://svn.boost.org/trac10/ticket/12041 Report #12040: The result of compilation relies upon the inclusion order of grep_serialize.hpp and gregorian.hpp Thu, 03 Mar 2016 18:04:24 GMT Thu, 03 Mar 2016 18:04:24 GMT <p> The compilation success of a program should not rely upon the order in which a developer includes the headers. </p> <p> This is unfortunately the case when we want to serialize an object in which one of its member is a boost::gregorian::date. </p> <p> For the time being, a developer must include <strong>&lt;boost/date_time/gregorian/gregorian.hpp&gt;</strong> before <strong>&lt;boost/date_time/gregorian/grep_serialize.hpp&gt;</strong> otherwise the following error is thrown (with gcc, but it is reproduceable in clang): </p> <pre class="wiki">[18:34]stac@macdebian:~/development/cpp-sandbox/boost&gt;g++ --std=c++14 -g -I$HOME/development/date_time/include -lboost_serialization -lboost_date_time serialization.cpp In file included from serialization.cpp:6:0: /home/stac/development/date_time/include/boost/date_time/gregorian/greg_serialize.hpp: In function ‘void boost::serialization::save(Archive&amp;, const boost::gregorian::date&amp;, unsigned int)’: /home/stac/development/date_time/include/boost/date_time/gregorian/greg_serialize.hpp:59:35: error: there are no arguments to ‘to_iso_string’ that depend on a template parameter, so a declaration of ‘to_iso_string’ must be available [-fpermissive] std::string ds = to_iso_string(d); ^ /home/stac/development/date_time/include/boost/date_time/gregorian/greg_serialize.hpp:59:35: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) zsh: exit 1 g++ --std=c++14 -g -I$HOME/development/date_time/include -lboost_serializatio </pre><p> <strong>Current architecture</strong>: Linux macdebian 4.3.0-1-amd64 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> SMP Debian 4.3.5-1 (2016-02-06) x86_64 GNU/Linux </p> <p> <strong>Compilers</strong>: <em>gcc</em>: g++ (Debian 5.3.1-8) 5.3.1 20160205 </p> <p> <em>clang</em>: Debian clang version 3.6.2-3 (tags/RELEASE_362/final) (based on LLVM 3.6.2) Target: x86_64-pc-linux-gnu Thread model: posix </p> <p> A solution could be to forward declare the boost::gregorian::to_iso_string(const boost::gregorian::date&amp;) in greg_serialize.hpp. Or to include gregorian/formatters[_limited].hpp </p> <p> <strong>Remark</strong>: This problem does not occur with posix_time. </p> laurent.stacul@… https://svn.boost.org/trac10/ticket/12040 https://svn.boost.org/trac10/ticket/12040 Report #12038: Max-flow algorithms not working with named parameters. Wed, 02 Mar 2016 14:56:52 GMT Tue, 03 May 2016 08:44:57 GMT <p> The named parameter called "edge capacity" is not working. As explained at the end of <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8791" title="#8791: Bugs: successfull compilation depends on header order in Graph (closed: fixed)">#8791</a>, this is due to a slight inversion: </p> <p> The line in <code>boost/graph/named_function_params.hpp:326</code> </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="k">typename</span> <span class="n">detail</span><span class="o">::</span><span class="n">choose_iml_result</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">mph</span><span class="o">::</span><span class="n">true_</span><span class="p">,</span> <span class="n">Graph</span><span class="p">,</span> <span class="k">typename</span> <span class="n">get_param_type</span><span class="o">&lt;</span><span class="n">Params</span><span class="p">,</span> <span class="n">edge_capacity_t</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">edge_capacity_t</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">CapacityEdgeMap</span><span class="p">;</span> </pre></div></div><p> should rather be </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="k">typename</span> <span class="n">detail</span><span class="o">::</span><span class="n">choose_iml_result</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">mph</span><span class="o">::</span><span class="n">true_</span><span class="p">,</span> <span class="n">Graph</span><span class="p">,</span> <span class="k">typename</span> <span class="n">get_param_type</span><span class="o">&lt;</span><span class="n">edge_capacity_t</span><span class="p">,</span> <span class="n">Params</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">edge_capacity_t</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">CapacityEdgeMap</span><span class="p">;</span> </pre></div></div><p> Here are the max-flow algorithms that are currently not working with the named parameter "Edge Capacity": </p> <ul><li>edmonds_karp_max_flow, </li><li>push_relabel_max_flow, </li><li>boykov_kolmogorov_max_flow. </li></ul><hr /> <p> Minimal not-working example: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/config.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/edmonds_karp_max_flow.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/adjacency_list.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/read_dimacs.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/graph_utility.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/graph/find_flow_cost.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">adjacency_list_traits</span><span class="o">&lt;</span><span class="n">vecS</span><span class="p">,</span><span class="n">vecS</span><span class="p">,</span><span class="n">directedS</span><span class="o">&gt;</span> <span class="n">traits</span><span class="p">;</span> <span class="k">struct</span> <span class="n">edge_t</span> <span class="p">{</span> <span class="kt">double</span> <span class="n">capacity</span><span class="p">;</span> <span class="kt">float</span> <span class="n">cost</span><span class="p">;</span> <span class="kt">float</span> <span class="n">residual_capacity</span><span class="p">;</span> <span class="n">traits</span><span class="o">::</span><span class="n">edge_descriptor</span> <span class="n">reversed_edge</span><span class="p">;</span> <span class="p">};</span> <span class="k">struct</span> <span class="n">node_t</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span><span class="p">;</span> <span class="n">boost</span><span class="o">::</span><span class="n">default_color_type</span> <span class="n">color</span><span class="p">;</span> <span class="n">traits</span><span class="o">::</span><span class="n">edge_descriptor</span> <span class="n">predecessor</span><span class="p">;</span> <span class="p">};</span> <span class="k">typedef</span> <span class="n">adjacency_list</span> <span class="o">&lt;</span> <span class="n">listS</span><span class="p">,</span> <span class="n">vecS</span><span class="p">,</span> <span class="n">directedS</span><span class="p">,</span> <span class="n">node_t</span><span class="p">,</span> <span class="n">edge_t</span> <span class="o">&gt;</span> <span class="n">Graph</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">Graph</span> <span class="n">g</span><span class="p">;</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="kt">double</span> <span class="n">edge_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">capacity</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">edge_t</span><span class="o">::</span><span class="n">capacity</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="kt">float</span> <span class="n">edge_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">cost</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">edge_t</span><span class="o">::</span><span class="n">cost</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="kt">float</span> <span class="n">edge_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">residual_capacity</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">edge_t</span><span class="o">::</span><span class="n">residual_capacity</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">traits</span><span class="o">::</span><span class="n">edge_descriptor</span> <span class="n">edge_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">rev</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">edge_t</span><span class="o">::</span><span class="n">reversed_edge</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">node_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">name</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">node_t</span><span class="o">::</span><span class="n">name</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">default_color_type</span> <span class="n">node_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">col</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">node_t</span><span class="o">::</span><span class="n">color</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">property_map</span> <span class="o">&lt;</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">traits</span><span class="o">::</span><span class="n">edge_descriptor</span> <span class="n">node_t</span><span class="o">::*</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="n">pred</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">node_t</span><span class="o">::</span><span class="n">predecessor</span><span class="p">,</span> <span class="n">g</span><span class="p">);</span> <span class="n">traits</span><span class="o">::</span><span class="n">vertex_descriptor</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">;</span> <span class="n">read_dimacs_max_flow</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">capacity</span><span class="p">,</span> <span class="n">rev</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">);</span> <span class="c1">// XXX The &quot;named parameter version&quot; (producing errors)</span> <span class="c1">// XXX I chose to show the error with edmonds_karp_max_flow().</span> <span class="n">flow</span> <span class="o">=</span> <span class="n">edmonds_karp_max_flow</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">capacity_map</span><span class="p">(</span><span class="n">capacity</span><span class="p">)</span> <span class="p">.</span><span class="n">residual_capacity_map</span><span class="p">(</span><span class="n">residual_capacity</span><span class="p">)</span> <span class="p">.</span><span class="n">reverse_edge_map</span><span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">.</span><span class="n">color_map</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> <span class="p">.</span><span class="n">predecessor_map</span><span class="p">(</span><span class="n">pred</span><span class="p">));</span> <span class="k">return</span> <span class="n">EXIT_SUCCESS</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> Maël Valais <mael.valais@…> https://svn.boost.org/trac10/ticket/12038 https://svn.boost.org/trac10/ticket/12038 Report #12037: boost::program_options tests cannot be built for both release and debug variants at the same time Tue, 01 Mar 2016 18:06:24 GMT Wed, 09 Mar 2016 07:05:39 GMT <p> On Windows 7: boost::program_options tests cannot be built for both release and debug variants at the same time. </p> <p> Running b2 libs/program_options/test variant=release,debug results in: </p> <pre class="wiki">Performing configuration checks - 32-bit : yes (cached) - arm : no (cached) - mips1 : no (cached) - power : no (cached) - sparc : no (cached) - x86 : yes (cached) - symlinks supported : no (cached) - junctions supported : yes (cached) - hardlinks supported : yes (cached) error: Name clash for '&lt;p..\..\..\bin.v2\libs\program_options\test\msvc-12.0\debug\link-static\threading-multi&gt;test_convert.exe' error: error: Tried to build the target twice, with property sets having error: these incompatible properties: error: error: - &lt;define&gt;NDEBUG error: - none error: error: Please make sure to have consistent requirements for these error: properties everywhere in your project, especially for install error: targets. </pre><p> The tests can be built without problem if doing one variant after the other (two separate calls, one for release, one for debug). </p> <p> (This issue is present in the current "develop" branch, as well as in the 1.60 release) </p> Diego Barrios Romero <eldruin@…> https://svn.boost.org/trac10/ticket/12037 https://svn.boost.org/trac10/ticket/12037 Report #12035: Please add constexpr and noexcept qualifiers Tue, 01 Mar 2016 13:00:43 GMT Tue, 01 Mar 2016 13:00:43 GMT <p> where applicable (similarly to what string_ref offers)... </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12035 https://svn.boost.org/trac10/ticket/12035 Report #12034: missing qualifier for sprintf in numeric/odeint/integrate/max_step_checker.hpp Tue, 01 Mar 2016 03:45:50 GMT Tue, 01 Mar 2016 03:51:46 GMT <p> Compiling libs/numeric/odeint/test/stepper_with_units.cpp and several other tests with Oracle Solaris Studio 12.5 we see the following error: </p> <p> "../boost/numeric/odeint/integrate/max_step_checker.hpp", line 72: Error: The function "sprintf" must have a prototype. "../boost/numeric/odeint/integrate/max_step_checker.hpp", line 104: Error: The function "sprintf" must have a prototype. </p> <p> sprintf needs to be qualified with std:: </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/12034 https://svn.boost.org/trac10/ticket/12034 Report #12033: Boostdep misses some dependent components Mon, 29 Feb 2016 21:33:12 GMT Thu, 03 Mar 2016 17:46:12 GMT <p> In creating a modular boost build for a client I found that boostdep was missing a few smaller libraries when tracing the dependencies. The library msm depends on fusion, which depends on utility, but boostdep does not list "utility" as among the depdencies of msm. </p> <p> For a test case, try building libs/msm/doc/HTML/examples/SimpleTutorial.cpp using a version of Boost with only the submodules listed as dependencies of msm. It should complain about not finding boost/utility/result_of.hpp </p> edaskel@… https://svn.boost.org/trac10/ticket/12033 https://svn.boost.org/trac10/ticket/12033 Report #12032: boost::system::error_code bug? Mon, 29 Feb 2016 20:55:16 GMT Mon, 29 Feb 2016 21:06:19 GMT <p> On Windows, attempting to call read or write before calling connect returns boost::system::error_code (expected behavior) with value 10057 (unexpected value), rather than boost::system::errc::not_connected (expected value). 10057 is windows sockets error WSAENOTCONN. </p> Falven2000@… https://svn.boost.org/trac10/ticket/12032 https://svn.boost.org/trac10/ticket/12032 Report #12030: boost iostreams documentation misstates filtering_streambuf typedef Sun, 28 Feb 2016 15:39:35 GMT Sun, 28 Feb 2016 16:00:13 GMT <p> This report concerns iostreams documentation. </p> <p> The documentation for class template filtering_streambuf misstates the name of four typedefs: </p> <p> From the <a href="http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/classes/filtering_streambuf.html">filtering_streambuf documentation page</a>: </p> <pre class="wiki">typedef filtering_streambuf&lt;input&gt; filtering_istream; typedef filtering_streambuf&lt;output&gt; filtering_ostream; typedef filtering_wstreambuf&lt;input&gt; filtering_wistream; typedef filtering_wstreambuf&lt;output&gt; filtering_wostream; </pre><p> This page is part of the reachable from the <a href="http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/">Reference</a> section, under Classes. </p> <p> This conflicts with, and is probably the result of a copy-paste from, the documentation of the filtering_stream class template. From the <a href="http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/classes/filtering_stream.html">filtering_stream documentation</a>: </p> <pre class="wiki">typedef filtering_stream&lt;input&gt; filtering_istream; typedef filtering_stream&lt;output&gt; filtering_ostream; typedef filtering_wstream&lt;input&gt; filtering_wistream; typedef filtering_wstream&lt;output&gt; filtering_wostream; </pre><p> The filtering_streambuf documentation page should be changed to match the actual typedefs in the source code, which very sensibly have the form "filtering_istreambuf", etc. From boost/1.60.0/include/boost/iostreams/filtering_streambuf.hpp: </p> <pre class="wiki">typedef filtering_streambuf&lt;input&gt; filtering_istreambuf; typedef filtering_streambuf&lt;output&gt; filtering_ostreambuf; typedef filtering_wstreambuf&lt;input&gt; filtering_wistreambuf; typedef filtering_wstreambuf&lt;output&gt; filtering_wostreambuf; </pre> Nicholas Musolino <n.musolino@…> https://svn.boost.org/trac10/ticket/12030 https://svn.boost.org/trac10/ticket/12030 Report #12026: using this coupon Sat, 27 Feb 2016 10:43:53 GMT Sun, 08 Oct 2017 06:06:41 GMT <p> Company devotion could cost you alot, consequently think about stepping out of your safe place each on occasion. Terminated coupons usually are in the centre of the month as well as the end-of the month. You must set aside one-day each week wherever you really concentrate on your couponing work. </p> <p> Many couponers save 50% or more on the grocery expenses by employing straightforward and timetested practices. You could possibly undoubtedly uncover a complete couple of deals supplied from huge-called stores. You get Swiffer deals that provide excellent discounts but aren't helpful <a class="ext-link" href="http://mydomain98223848.com/"><span class="icon">​</span>go to this website</a> anyone. </p> christiezimmermann@… https://svn.boost.org/trac10/ticket/12026 https://svn.boost.org/trac10/ticket/12026 Report #12022: CRT optimised powm() Fri, 26 Feb 2016 10:29:02 GMT Fri, 26 Feb 2016 15:21:34 GMT <p> multiprecision::powm() with unchecked uints is _much_ slower (i.e. I actually perceive the time it takes for the function to return on an 4GHz i5 in release builds) than say the equivalent libtomcrypt/math operation. I'm guessing the major reason for this is the CRT<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> optimisation (or lack thereof in multiprecision). So, can you implement a CRT 'enabled' powm overload (I presume this would also require a function for factoring a large multiprecision uint into to dp, dq, etc. factors)? </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Using_the_Chinese_remainder_algorithm"><span class="icon">​</span>https://en.wikipedia.org/wiki/RSA_(cryptosystem)#Using_the_Chinese_remainder_algorithm</a> <a class="ext-link" href="http://crypto.stackexchange.com/questions/2575/chinese-remainder-theorem-and-rsa"><span class="icon">​</span>http://crypto.stackexchange.com/questions/2575/chinese-remainder-theorem-and-rsa</a> </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/12022 https://svn.boost.org/trac10/ticket/12022 Report #12019: Conversion from unique_ptr to shared_ptr is too broad Thu, 25 Feb 2016 21:24:34 GMT Thu, 25 Feb 2016 21:27:20 GMT <p> The following program doesn't compile because the foo overload is ambiguous. This applies if boost::movelib::unique_ptr is used as well. It works if std::shared_ptr is used instead of boost::shared_ptr. </p> <p> $ cat foo.cpp #include &lt;boost/shared_ptr.hpp&gt; #include &lt;memory&gt; </p> <p> using boost::shared_ptr; using std::unique_ptr; using std::make_unique; </p> <p> template &lt;typename T&gt; class Provider { }; </p> <p> template &lt;typename T&gt; void foo(shared_ptr&lt;T&gt; ptr) { } </p> <p> template &lt;typename T&gt; void foo(unique_ptr&lt;Provider&lt;T&gt;&gt; ptr) { } </p> <p> class <a class="missing wiki">IntProvider</a> : public Provider&lt;int&gt; { }; </p> <p> void bar() { </p> <blockquote> <p> foo&lt;int&gt;(make_unique&lt;<a class="missing wiki">IntProvider</a>&gt;()); </p> </blockquote> <p> } $ g++ -std=c++14 -c foo.cpp foo.cpp: In function ‘void bar()’: foo.cpp:24:38: error: call of overloaded ‘foo(std::_MakeUniq&lt;<a class="missing wiki">IntProvider</a>&gt;::<span class="underline">single_object)’ is ambiguous </span></p> <blockquote> <p> foo&lt;int&gt;(make_unique&lt;<a class="missing wiki">IntProvider</a>&gt;()); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> foo.cpp:13:6: note: candidate: void foo(boost::shared_ptr&lt;X&gt;) [with T = int] </p> <blockquote> <p> void foo(shared_ptr&lt;T&gt; ptr) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> foo.cpp:17:6: note: candidate: void foo(std::unique_ptr&lt;Provider&lt;T&gt; &gt;) [with T = int] </p> <blockquote> <p> void foo(unique_ptr&lt;Provider&lt;T&gt;&gt; ptr) </p> </blockquote> <p> The boost::shared_ptr&lt;T&gt; taking unique_ptr&lt;Y, D&gt; should be SFINAE'd away when unique_ptr&lt;Y, D&gt;::pointer isn't convertible to T*. </p> <p> The std::shared_ptr DR is <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/2399" title="#2399: Bugs: Python boost.mpi.Request.test() crashes (reopened)">#2399</a>: <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2399"><span class="icon">​</span>http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2399</a> </p> Tavian Barnes <tavianator@…> https://svn.boost.org/trac10/ticket/12019 https://svn.boost.org/trac10/ticket/12019 Report #12018: rounded_arith_opp doesn't work in Release configuration under msvc 14 Thu, 25 Feb 2016 14:37:18 GMT Thu, 25 Feb 2016 14:37:18 GMT <p> Interval calculations with <code>rounded_arith_opp</code> in Release under msvc 14 result in zero-size intervals. </p> <p> It seems that compiler optimizes too much, e.g. in </p> <pre class="wiki">BOOST_UP_NEG(x / (-y)); </pre><p> it moves minus operation and calculates something like </p> <pre class="wiki">BOOST_UP_NEG(-(x / y)); </pre><p> which returns the same result as </p> <pre class="wiki">BOOST_UP(x / y); </pre><p> It looks more like compiler bug. Attached patch is a workaround which solves the issue. </p> <p> Tested on x64 platform with /fp:strict and /fp:precise under MS Visual Studio Community 2015 Version 14.0.24720.00 Update 1. </p> peter.azmanov@… https://svn.boost.org/trac10/ticket/12018 https://svn.boost.org/trac10/ticket/12018 Report #12017: Segfault with Boost program_options 1.60 debug libraries on OSX Wed, 24 Feb 2016 17:24:26 GMT Fri, 18 Mar 2016 02:25:33 GMT <p> Hi, </p> <p> I'm using Boost 1.60.0_1 (installed from Brew) and am trying to compile the following file: </p> <pre class="wiki">//mytest.cpp: #include &lt;boost/program_options.hpp&gt; #include &lt;string&gt; namespace po = boost::program_options; int main(int argc, char *argv[]) { po::variables_map vm; po::options_description desc; desc.add_options() ("test,t", po::value&lt;std::string&gt;()-&gt;default_value("something")) ; po::store(po::parse_command_line(argc, argv, desc), vm); po::notify(vm); return 0; } </pre><p> I'm using CMake to compile. When compiling in Release mode, everything works fine. But when compiling in Debug mode, i get a segfault in the store() function when I run the program without the -t option: </p> <pre class="wiki">(lldb) bt * thread #1: tid = 0x5f2ad5, 0x000000010001b9c3 mytest`boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::parse(boost::any&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, bool) const [inlined] std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt;::size(this=0xffffffffffffffd5 size=0) const at vector:653, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xffffffffffffffd5) * frame #0: 0x000000010001b9c3 mytest`boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::parse(boost::any&amp;, std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, bool) const [inlined] std::__1::vector&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;, std::__1::allocator&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; &gt; &gt;::size(this=0xffffffffffffffd5 size=0) const at vector:653 frame #1: 0x000000010001b9c3 mytest`boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::parse(this=0x0000000100103740, value_store=0x00007fff5fbff408, new_tokens=size=0, utf8=&lt;unavailable&gt;) const + 51 at value_semantic.cpp:45 frame #2: 0x000000010001934d mytest`boost::program_options::store(options=0x00007fff5fbff5c8, xm=0x00007fff5fbff6c8, utf8=&lt;unavailable&gt;) + 1207 at variables_map.cpp:125 frame #3: 0x0000000100000cad mytest`main + 445 frame #4: 0x00007fff92a5e5ad libdyld.dylib`start + 1 </pre><p> I noticed this happens only if the binary is linked with the static debug libraries, i.e libboost_program_options-d.a and libboost_program_options-mt-d.a. To reproduce without CMake: </p> <pre class="wiki">$ c++ mytest.cpp -I/usr/local/include /usr/local/lib/libboost_program_options-d.a -o mytest &amp;&amp; ./mytest [1] 83707 segmentation fault ./mytest $ c++ mytest.cpp -DDEBUG -I/usr/local/include /usr/local/lib/libboost_program_options-d.a -o mytest &amp;&amp; ./mytest [1] 83709 segmentation fault ./mytest </pre><p> It crashes only when run without the -t argument; If I provide it, it works fine: </p> <pre class="wiki">$ ./mytest -t test </pre><p> It does not crash when linked statically with a non-debug library: </p> <pre class="wiki">$ c++ mytest.cpp -DDEBUG -I/usr/local/include /usr/local/lib/libboost_program_options.a -o mytest &amp;&amp; ./mytest $ c++ mytest.cpp -DDEBUG -I/usr/local/include /usr/local/lib/libboost_program_options-mt.a -o mytest &amp;&amp; ./mytest </pre><p> Or when linked dynamically with one of the shared libraries: </p> <pre class="wiki">$ c++ mytest.cpp -I/usr/local/include /usr/local/opt/boost/lib/libboost_program_options.dylib -o mytest &amp;&amp; ./mytest $ c++ mytest.cpp -I/usr/local/include /usr/local/opt/boost/lib/libboost_program_options-mt.dylib -o mytest &amp;&amp; ./mytest </pre><p> The only workaround I found in order to compile a working debug binary with CMake is to use -DBoost_USE_STATIC_RUNTIME=ON because for some reason it tells the compiler to link with the shared library). </p> anonymous https://svn.boost.org/trac10/ticket/12017 https://svn.boost.org/trac10/ticket/12017 Report #12015: OperationalError: database is locked Tue, 23 Feb 2016 10:44:37 GMT Tue, 23 Feb 2016 10:44:37 GMT <h4 class="section" id="HowtoReproduce">How to Reproduce</h4> <p> While doing a POST operation on <code>/query</code>, Trac issued an internal error. </p> <p> <em>(please provide additional details here)</em> </p> <p> Request parameters: </p> <pre class="wiki">{'0_component': u'parameter', '0_component_mode': u'', '0_status': [u'assigned', u'new', u'reopened'], '__FORM_TOKEN': u'8e9714cb184b0eedee99acb4', 'add_clause_1': u'', 'add_filter_0': u'', 'col': ['id', u'summary', u'status', u'type', u'milestone', u'component'], 'group': u'', 'max': u'100', 'order': u'priority', 'update': u'Update'} </pre><p> User agent: <code>Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0</code> </p> <h4 class="section" id="SystemInformation">System Information</h4> <p> <em>System information not available</em> </p> <h4 class="section" id="EnabledPlugins">Enabled Plugins</h4> <p> <em>Plugin information not available</em> </p> <h4 class="section" id="PythonTraceback">Python Traceback</h4> <pre class="wiki">Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/web/main.py", line 511, in _dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/web/main.py", line 237, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/ticket/query.py", line 925, in process_request req.redirect(query.get_href(req.href)) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/web/api.py", line 362, in redirect self.session.save() # has to be done before the redirect is sent File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/web/session.py", line 105, in save @self.env.with_transaction() File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/db/api.py", line 77, in transaction_wrapper fn(ldb) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/web/session.py", line 140, in save_session """, (self.sid, authenticated)) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/db/util.py", line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/db/sqlite_backend.py", line 78, in execute result = PyFormatCursor.execute(self, *args) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/db/sqlite_backend.py", line 56, in execute args or []) File "/usr/lib/python2.6/site-packages/Trac-0.12.2-py2.6.egg/trac/db/sqlite_backend.py", line 48, in _rollback_on_error return function(self, *args, **kwargs) OperationalError: database is locked </pre> Andrey Semashev https://svn.boost.org/trac10/ticket/12015 https://svn.boost.org/trac10/ticket/12015 Report #12012: bost.MPI installation fail on Windows' 10 Sun, 21 Feb 2016 15:58:53 GMT Sun, 21 Feb 2016 15:58:53 GMT <p> Followed boost.org instructions to install boost.MPI on Win' 10 without success. </p> <p> Boost v. 1_60_0 successfully downloaded. Head files test run without problems. </p> <p> Attached bootsrap.log file generated when I've tried to run boostrap.bat through command line </p> anastp@… https://svn.boost.org/trac10/ticket/12012 https://svn.boost.org/trac10/ticket/12012 Report #12011: Boost.Regex always links against dynamic DLLs of ICU with MSVC Sun, 21 Feb 2016 11:44:44 GMT Sat, 11 Jun 2016 17:50:04 GMT <p> I found out there is no detection code of static ICU in the Regex (and Locale) Jamfiles. </p> <p> I have blogged about the problem and solution <a class="ext-link" href="http://www.npcglib.org/~stathis/blog/2016/02/21/windows-task-building-boost-against-static-icu-with-msvc/"><span class="icon">​</span>here</a>. To cut a long story short, sicuXX.lib files should be detected when static linking and also if the runtimes are static, instead of &lt;linkflags&gt;, the &lt;archiveflags&gt; feature should be used. </p> <p> I have written a rough patch for my own use, which does that, but it may not be entirely clean for upstream. It is <a class="ext-link" href="http://www.npcglib.org/~stathis/downloads/boost_1.60.0.patch"><span class="icon">​</span>here</a> though in case you decide to fix it properly. </p> <p> It would be nice until (and if at all) this is fixed the documentation or at build time this limitation was made clear. Currently the user is left to believe he has a statically linked Boost against ICU. </p> <p> I will try to improve my patch in the next iteration, but I'm still learning Boost.Build. </p> <p> thanks. </p> stathis@… https://svn.boost.org/trac10/ticket/12011 https://svn.boost.org/trac10/ticket/12011 Report #12009: Fix for Visual C++ C4267 'conditional expression is constant' warning Fri, 19 Feb 2016 21:43:23 GMT Fri, 19 Feb 2016 21:43:23 GMT <p> Not sure what the procedure is to submit a patch to <code>ptr_container</code>. According to <a class="wiki" href="https://svn.boost.org/trac10/wiki/StartModPatchAndPullReq">StartModPatchAndPullReq</a>, pull requests are now the "preferred" method of submitting patches. That said, the ptr_container repo doesn't seem to be maintained and there are 1-2 year old PRs sitting around. </p> <p> I submitted this PR to fix a Visual C++ warning that still exists in the head of the develop version: <a class="ext-link" href="https://github.com/boostorg/ptr_container/pull/7"><span class="icon">​</span>https://github.com/boostorg/ptr_container/pull/7</a> </p> <p> What is the process for getting this merged? </p> eyas.sharaiha@… https://svn.boost.org/trac10/ticket/12009 https://svn.boost.org/trac10/ticket/12009 Report #12008: Support Intel SSE instructions for CRC-32C Fri, 19 Feb 2016 20:19:08 GMT Fri, 07 Apr 2017 18:53:16 GMT <p> Please add separate typedef for boost::crc_optimal&lt;32, 0x1EDC6F41, 0, 0, true, true&gt; that will have specialization that use _mm_crc32_u* intrinsic on platforms that support it (maybe enable it by define) </p> <p> <a class="ext-link" href="http://stackoverflow.com/a/16623151/61505"><span class="icon">​</span>http://stackoverflow.com/a/16623151/61505</a> </p> arkadiy_s@… https://svn.boost.org/trac10/ticket/12008 https://svn.boost.org/trac10/ticket/12008 Report #12007: Support Intel SSE instructions for CRC-32C Fri, 19 Feb 2016 20:19:03 GMT Fri, 07 Apr 2017 18:53:53 GMT <p> Please add separate typedef for boost::crc_optimal&lt;32, 0x1EDC6F41, 0, 0, true, true&gt; that will have specialization that use _mm_crc32_u* intrinsic on platforms that support it (maybe enable it by define) </p> <p> <a class="ext-link" href="http://stackoverflow.com/a/16623151/61505"><span class="icon">​</span>http://stackoverflow.com/a/16623151/61505</a> </p> arkadiy_s@… https://svn.boost.org/trac10/ticket/12007 https://svn.boost.org/trac10/ticket/12007 Report #12006: Compile error on Windows of boost/functional/hash/extensions.hpp Fri, 19 Feb 2016 14:54:18 GMT Sat, 12 Mar 2016 18:16:54 GMT <p> I use STLport 4.5.0 and Visual Studio 2013. I get the following compiler error: </p> <pre class="wiki">base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::complex&lt;_Tp&gt; &amp;)' : could not deduce template argument for 'const _STL::complex&lt;_Tp&gt; &amp;' from 'const wchar_t' boost/functional/hash/extensions.hpp(64) : see declaration of 'boost::hash_value' boost/functional/hash/extensions.hpp(261) : while compiling class template member function 'size_t boost::hash&lt;T&gt;::operator ()(const T &amp;) const' with [ T=wchar_t ] boost/functional/hash/hash.hpp(313) : see reference to function template instantiation 'size_t boost::hash&lt;T&gt;::operator ()(const T &amp;) const' being compiled with [ T=wchar_t ] boost/functional/hash/hash.hpp(312) : see reference to class template instantiation 'boost::hash&lt;T&gt;' being compiled with [ T=wchar_t ] boost\boost/functional/hash/hash.hpp(327) : see reference to function template instantiation 'void boost::hash_combine&lt;wchar_t&gt;(size_t &amp;,const T &amp;)' being compiled with [ T=wchar_t ] boost/functional/hash/hash.hpp(386) : see reference to function template instantiation 'size_t boost::hash_range&lt;const wchar_t*&gt;(It,It)' being compiled with [ It=const wchar_t * ] boost/functional/hash/hash.hpp(458) : see reference to function template instantiation 'size_t boost::hash_value&lt;wchar_t,_STL::allocator&lt;wchar_t&gt;&gt;(const _STL::basic_string&lt;wchar_t,_STL::char_traits&lt;wchar_t&gt;,_STL::allocator&lt;wchar_t&gt;&gt; &amp;)' being compiled base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::multimap&lt;_Key,_Tp,_Compare,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::multimap&lt;_Key,_Tp,_Compare,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(61) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::map&lt;_Key,_Tp,_Compare,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::map&lt;_Key,_Tp,_Compare,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(59) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::multiset&lt;_Key,_Compare,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::multiset&lt;_Key,_Compare,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(57) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::set&lt;_Key,_Compare,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::set&lt;_Key,_Compare,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(55) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::deque&lt;_Tp,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::deque&lt;_Tp,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(53) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::list&lt;_Tp,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::list&lt;_Tp,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(51) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::vector&lt;_Tp,_Alloc&gt; &amp;)' : could not deduce template argument for 'const _STL::vector&lt;_Tp,_Alloc&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(49) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::pair&lt;_T1,_T2&gt; &amp;)' : could not deduce template argument for 'const _STL::pair&lt;_T1,_T2&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/extensions.hpp(47) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2893: Failed to specialize function template 'boost::hash_detail::float_numbers&lt;T&gt;::type boost::hash_value(T)' With the following template arguments: 'T=wchar_t' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const _STL::basic_string&lt;Ch,_STL::char_traits&lt;_CharT&gt;,A&gt; &amp;)' : could not deduce template argument for 'const _STL::basic_string&lt;Ch,_STL::char_traits&lt;_CharT&gt;,A&gt; &amp;' from 'const wchar_t' boost\boost/functional/hash/hash.hpp(154) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(T (&amp;)[N])' : could not deduce template argument for 'T (&amp;)[N]' from 'const wchar_t' boost/functional/hash/hash.hpp(150) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(const T (&amp;)[N])' : could not deduce template argument for 'const T (&amp;)[N]' from 'const wchar_t' boost/functional/hash/hash.hpp(147) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2784: 'size_t boost::hash_value(T *const &amp;)' : could not deduce template argument for 'T *const &amp;' from 'const wchar_t' boost/functional/hash/hash.hpp(140) : see declaration of 'boost::hash_value' base\boost\boost/functional/hash/extensions.hpp(262) : error C2893: Failed to specialize function template 'boost::enable_if&lt;boost::is_enum&lt;T&gt;,size_t&gt;::type boost::hash_value(T)' With the following template arguments: 'T=wchar_t' base\boost\boost/functional/hash/extensions.hpp(262) : error C2893: Failed to specialize function template 'boost::hash_detail::ulong_numbers&lt;T&gt;::type boost::hash_value(T)' With the following template arguments: 'T=wchar_t' base\boost\boost/functional/hash/extensions.hpp(262) : error C2893: Failed to specialize function template 'boost::hash_detail::long_numbers&lt;T&gt;::type boost::hash_value(T)' With the following template arguments: 'T=wchar_t' base\boost\boost/functional/hash/extensions.hpp(262) : error C2893: Failed to specialize function template 'boost::hash_detail::basic_numbers&lt;T&gt;::type boost::hash_value(T)' With the following template arguments: 'T=wchar_t' </pre><p> If I set BOOST_NO_FUNCTION_TEMPLATE_ORDERING, I get a similar error. </p> <p> I don't know where they come from. With old boost versions, it worked just fine. Do you have any clue? </p> <p> Best regards, Kilian. </p> kilian.kilger@… https://svn.boost.org/trac10/ticket/12006 https://svn.boost.org/trac10/ticket/12006 Report #12005: Install boost_context on CentOS 6 Fri, 19 Feb 2016 14:25:56 GMT Fri, 19 Feb 2016 14:25:56 GMT <p> I'm try to install HHVM on CentOS 6, but I've trouble with boost_context library: </p> <pre class="wiki">- Build type not specified: cmake build type Release. CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1138 (message): Unable to find the requested Boost libraries. Boost version: 1.60.0 Boost include path: /usr/include Could not find the following Boost libraries: boost_context Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost. Call Stack (most recent call first): CMake/HPHPFindLibs.cmake:31 (find_package) CMake/HPHPSetup.cmake:127 (include) third-party/CMakeLists.txt:18 (include) </pre><p> On CentOS 7, I can easily install by type: yum install boost-context So how can I install this boost_context library on CentOS 6? </p> <p> Thank you very much!! </p> nguyenduong2010@… https://svn.boost.org/trac10/ticket/12005 https://svn.boost.org/trac10/ticket/12005 Report #12004: Boost 1.60 fails to build with VC14 Fri, 19 Feb 2016 10:13:32 GMT Fri, 19 Feb 2016 10:13:32 GMT <p> On a Windows 7.1 x64, from the Developer Command Prompt for VS2015 (*not* running as a privileged user): </p> <pre class="wiki">C:\Users\user\Desktop\boost_1_60_0&gt;cl Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option... ] filename... [ /link linkoption... ] C:\Users\user\Desktop\boost_1_60_0&gt;bootstrap Building Boost.Build engine The system cannot find the file C:\Users\user\Desktop\boost_1_60_0\tools\bu ild\src\engine\bootstrap\jam0.exe. '.\bootstrap\jam0' is not recognized as an internal or external command, operable program or batch file. Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. You can try to obtain a prebuilt binary from http://sf.net/project/showfiles.php?group_id=7586&amp;package_id=72941 Also, you can file an issue at http://svn.boost.org Please attach bootstrap.log in that case. </pre><p> I have attached bootstrap.log as requested, but as far as I can tell it's not very helpful, I am not sure what is going on. </p> <p> I have attempted the same process from the VS2013 command prompt and it was successful. I have attempted the same process from the VS2015 command prompt with Boost 1.59 and it failed with the same error. </p> anonymous https://svn.boost.org/trac10/ticket/12004 https://svn.boost.org/trac10/ticket/12004 Report #11997: website multiple headers sent Wed, 17 Feb 2016 14:35:23 GMT Tue, 15 Aug 2017 08:26:53 GMT <p> When accessing this address: <a class="ext-link" href="https://svn.boost.org/trac/boost/wiki/GSoCIdeaTemplate?format=txt"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki/GSoCIdeaTemplate?format=txt</a> I got: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION There is a link to that address in: <a class="ext-link" href="https://svn.boost.org/trac/boost/wiki/GSoCIdeaTemplate"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki/GSoCIdeaTemplate</a> </p> damian.vicino@… https://svn.boost.org/trac10/ticket/11997 https://svn.boost.org/trac10/ticket/11997 Report #11991: Application crashes when yield/resume an coroutine after handing an exception Tue, 16 Feb 2016 19:03:21 GMT Wed, 17 Feb 2016 08:34:30 GMT <pre class="wiki">#include &lt;iostream&gt; #include &lt;stdexcept&gt; #include &lt;thread&gt; #include &lt;boost/asio/io_service.hpp&gt; #include &lt;boost/asio/spawn.hpp&gt; int main() { using namespace boost::asio; using std::chrono::seconds; using yield_completion_t = detail::async_result_init&lt; yield_context, void () &gt;; io_service ios; spawn( ios, [&amp;ios]( auto yield ) { try { throw std::runtime_error{ "" }; } catch( ... ) { std::cerr &lt;&lt; "[1] " &lt;&lt; std::endl; yield_completion_t completion{ yield_context{ yield } }; auto handler = completion.handler; ios.post( [=] { std::this_thread::sleep_for( seconds{ 1 } ); asio_handler_invoke( handler, &amp;handler ); } ); completion.result.get(); std::cerr &lt;&lt; "[2] " &lt;&lt; std::endl; } } ); // needs more than one thread std::thread t{ [&amp;]{ ios.run(); } }; ios.run(); t.join(); return 0; } </pre><p> Prints: </p> <pre class="wiki">[1] [2] </pre><p> and crashes. </p> <p> Debugger points to <code>_FindAndUnlinkFrame</code> (inside <code>trnsctrl.cpp</code> file): <code>pCurFrameInfo-&gt;pNext</code> causes AV because pCurFrameInfo is null. </p> <p> VS 2015, Win7 </p> misko.pawel@… https://svn.boost.org/trac10/ticket/11991 https://svn.boost.org/trac10/ticket/11991 Report #11990: interprocess_condition on OSX with processes in different address spaces Tue, 16 Feb 2016 17:51:56 GMT Tue, 16 Feb 2016 17:51:56 GMT <p> Under OSX (at least El Capitan), interprocess_condition does not work if shared between processes that map the shared condition and mutex variables into different address spaces. This is because the OSX pthreads condition implementation stores a raw pointer to the mutex used to wait. </p> <p> Details and example code here: <a class="ext-link" href="http://stackoverflow.com/questions/35305291/boost-interprocess-condition-multiple-threads-calling-wait-fails"><span class="icon">​</span>http://stackoverflow.com/questions/35305291/boost-interprocess-condition-multiple-threads-calling-wait-fails</a> </p> johughes@… https://svn.boost.org/trac10/ticket/11990 https://svn.boost.org/trac10/ticket/11990 Report #11989: gcc 5.3 optimizer mangles non_blocking_recvfrom Tue, 16 Feb 2016 12:48:22 GMT Fri, 19 Aug 2016 08:00:27 GMT <p> Our Kea project uses boost::asio. When compiled with gcc 5.3.1 and -O2, the optimizer is incorrectly removing tests, against a variable which can be changed, from one of the boost::asio functions. </p> <p> The affected function is: </p> <pre class="wiki">bool non_blocking_recvfrom(socket_type s, buf* bufs, size_t count, int flags, socket_addr_type* addr, std::size_t* addrlen, boost::system::error_code&amp; ec, size_t&amp; bytes_transferred) </pre><p> in the file: </p> <blockquote> <p> /usr/include/boost/asio/detail/impl/socket_ops.ipp </p> </blockquote> <p> where the tests for "ec" shown below are optmized out: </p> <pre class="wiki"> : // Retry operation if interrupted by signal. if (ec == boost::asio::error::interrupted) continue; // Check if we need to run the operation again. if (ec == boost::asio::error::would_block || ec == boost::asio::error::try_again) return false; : </pre><p> This causes the function to always return true. </p> <p> I have also opened a ticket with the good people at GCC, ticket <a class="missing ticket">#69789</a>. This occurred with Boost 1.58, though I suspect the issue is present in 1.60 as the code for the function appears to be unchanged. </p> <p> Additional information: </p> <ol><li>gcc --version output: </li></ol><p> Using built-in specs. COLLECT_GCC=/usr/bin/gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-<span class="underline">cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC) </span></p> <ol start="2"><li>OS info: </li></ol><p> Linux fedora23-64-1 4.3.4-300.fc23.x86_64 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> SMP Mon Jan 25 13:39:23 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux </p> <ol start="3"><li>Compiler command line: </li></ol><p> g++ -DHAVE_CONFIG_H -I. -I../../../.. -I../../../../src/lib -I../../../../src/lib -DTEST_DATA_DIR=\"./testdata\" -I/opt/gtest/gtest-1.7.0 -I/opt/gtest/gtest-1.7.0/include -DOS_LINUX -I../../../../ext/coroutine -DBOOST_ASIO_HEADER_ONLY -DBOOST_ASIO_DISABLE_THREADS=1 -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Werror -fPIC -Wno-missing-field-initializers -Wno-unused-parameter -g -O2 -save-temps -MT run_unittests-udp_socket_unittest.o -MD -MP -MF .deps/run_unittests-udp_socket_unittest.Tpo -c -o run_unittests-udp_socket_unittest.o <code>test -f 'udp_socket_unittest.cc' || echo './'</code>udp_socket_unittest.cc </p> tmark@… https://svn.boost.org/trac10/ticket/11989 https://svn.boost.org/trac10/ticket/11989 Report #11986: TTI: has_static_member_function doesn't like function local classes with GCC Mon, 15 Feb 2016 17:54:38 GMT Fri, 19 Feb 2016 21:25:22 GMT <p> Hi </p> <p> Not sure if this expected or known or impossible to fix, but it seems has_static_member_function doesn't work with function scope local classes in GCC (or clang; it's OK in VC++). </p> <p> Personally, I only tripped over it writing a test so the fix was simple (no function scope class) but I thought best to report it. </p> <p> Thanks </p> <p> Luke Elliott. </p> <pre class="wiki">#include &lt;boost/tti/has_static_member_function.hpp&gt; #include &lt;boost/static_assert.hpp&gt; BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION(StaticFunction) int main() { class Nested { public: static void StaticFunction() { } }; BOOST_STATIC_ASSERT_MSG((has_static_member_function_StaticFunction&lt;Nested, void ()&gt;::value), "That's not gone well."); } </pre> lukester_null@… https://svn.boost.org/trac10/ticket/11986 https://svn.boost.org/trac10/ticket/11986 Report #11985: range: compiler-error sub_range copy-constructor workaround for MSVC Mon, 15 Feb 2016 09:32:02 GMT Mon, 15 Feb 2016 09:32:48 GMT <p> Hi, </p> <p> the following code generates an error when compiled with MSVC 11 (aka VS 2012) </p> <pre class="wiki"> std::vector&lt;int&gt; arr; arr.push_back(42); boost::sub_range&lt;std::vector&lt;int&gt;&gt; ran = arr; boost::sub_range&lt;std::vector&lt;int&gt;&gt; ran_2 = ran; const boost::sub_range&lt;std::vector&lt;int&gt;&gt;&amp; ran_ref = ran; boost::sub_range&lt;std::vector&lt;int&gt;&gt; ran_3 = ran_ref; </pre><p> Error: libs\boost\boost\boost\range\iterator_range_core.hpp(69): error C2440: 'static_cast' : cannot convert from 'std::_Vector_const_iterator&lt;_Myvec&gt;' to 'std::_Vector_iterator&lt;_Myvec&gt;' </p> <p> the reason is a BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500) ) in boost/range/sub_range.hpp at line 183 if I comment out the workaround everything compiles correct. </p> <p> Tobias </p> Tobias Loew https://svn.boost.org/trac10/ticket/11985 https://svn.boost.org/trac10/ticket/11985 Report #11982: distance between point and linestring on spherical_equatorial ignores radius when using haversine. Fri, 12 Feb 2016 12:05:13 GMT Fri, 12 Feb 2016 22:12:25 GMT <p> Distance between a point and a linestring is incorrect when using spherical_equatorial coordinates and haversine strategy. It looks like it is always using radius = 1.0. </p> <p> Example: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/geometry.hpp&gt; namespace bg = boost::geometry; typedef bg::model::point&lt;double, 2, bg::cs::spherical_equatorial&lt;bg::degree&gt; &gt; pt; typedef bg::model::linestring&lt;pt&gt; pt_line; int main() { const double earthRadius = 6371.0 * 1000.0; pt oslo(10.733557, 59.911923); pt sandvika(10.521812, 59.887214); pt trondheim(10.4, 63.43); // works correct double d1 = bg::distance(sandvika, trondheim, bg::strategy::distance::haversine&lt;double&gt;(earthRadius)); double d2 = bg::distance(oslo, trondheim, bg::strategy::distance::haversine&lt;double&gt;(earthRadius)); std::cout &lt;&lt; "Sandvika-Trondheim " &lt;&lt; d1 &lt;&lt; std::endl; std::cout &lt;&lt; "Oslo-Trondheim " &lt;&lt; d2 &lt;&lt; std::endl; pt_line ll; ll.push_back(oslo); ll.push_back(sandvika); // Does not work double d3 = bg::distance(trondheim, ll, bg::strategy::distance::haversine&lt;double&gt;(earthRadius)); std::cout &lt;&lt; "Oslo-Sandvika - Trondheim " &lt;&lt; d3 &lt;&lt; std::endl; return 0; } </pre><p> Output: </p> <pre class="wiki">Sandvika-Trondheim 393992 Oslo-Trondheim 391587 Oslo-Sandvika - Trondheim 0.0614639 </pre><p> Note that the last number differs with a factor of 6371000 from the correct 391587. </p> <p> It looks like distance/backward_compatibility.hpp is ignoring the incoming strategy in last argument to apply. </p> anonymous https://svn.boost.org/trac10/ticket/11982 https://svn.boost.org/trac10/ticket/11982 Report #11981: boost::archive::xml_woarchive with locale dosen't work Fri, 12 Feb 2016 03:57:43 GMT Fri, 29 Sep 2017 10:38:08 GMT <p> New locale library seems to have a bug. "Implemented generic codecvt facet and add general purpose utf8_codecvt facet" </p> <pre class="wiki">#include &lt;string&gt; #include &lt;locale&gt; #include &lt;fstream&gt; #include &lt;boost/serialization/string.hpp&gt; #include &lt;boost/serialization/nvp.hpp&gt; #include &lt;boost/archive/xml_woarchive.hpp&gt; #include &lt;boost/archive/xml_wiarchive.hpp&gt; int wmain(int argc, wchar_t* argv[]) { std::locale::global(std::locale("japanese")); std::wofstream wofs("output.xml"); boost::archive::xml_woarchive oa(wofs); // exception in 1.60 oa &lt;&lt; boost::serialization::make_nvp("string", std::string("日本語文字列")); wofs.close(); std::string str; std::wifstream wifs("output.xml"); boost::archive::xml_wiarchive ia(wifs); ia &gt;&gt; boost::serialization::make_nvp("string", str); wifs.close(); return 0; } </pre><p> An exception occurs in boost 1.60 in Visual Studio 2013. "invalid multbyte/wide char conversion". </p> <p> This exception doesn't occur in boost 1.59, but this code makes invalid xml. The encoding is not UTF-8 but SJIS. </p> <p> In boost 1.57, it makes valid UTF-8 encoding xml. </p> anonymous https://svn.boost.org/trac10/ticket/11981 https://svn.boost.org/trac10/ticket/11981 Report #11980: Windows Phone Build Error Thu, 11 Feb 2016 19:47:10 GMT Fri, 12 Feb 2016 09:32:10 GMT <p> After adding given code block Visual Studio doesnt compile the project. Version is 1.66.0 </p> <pre class="wiki">boost::locale::generator g; g.locale_cache_enabled(true); std::locale loc = g(boost::locale::util::get_system_locale()); string t = boost::locale::conv::from_utf&lt;char&gt;(row.GetString(0), loc); </pre><p> And this is the output: </p> <blockquote class="citation"> <p> libboost_locale-vc140-mt-gd-1_60.lib(default_locale.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>GetLocaleInfoA@16 referenced in function "class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; <span class="underline">cdecl boost::locale::util::get_system_locale(bool)" (?get_system_locale@util@locale@boost@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z) </span></p> </blockquote> <p> 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(std_backend.obj) : error LNK2001: unresolved external symbol <span class="underline">imp</span>GetLocaleInfoA@16 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(lcid.obj) : error LNK2001: unresolved external symbol <span class="underline">imp</span>GetLocaleInfoA@16 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(codepage.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>IsDBCSLeadByteEx@8 referenced in function "void <span class="underline">cdecl boost::locale::conv::impl::multibyte_to_wide_one_by_one(int,char const *,char const *,class std::vector&lt;wchar_t,class std::allocator&lt;wchar_t&gt; &gt; &amp;)" (?multibyte_to_wide_one_by_one@impl@conv@locale@boost@@YAXHPBD0AAV?$vector@_WV?$allocator@_W@std@@@std@@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(lcid.obj) : error LNK2019: unresolved external symbol </span>imp<span class="underline">EnumSystemLocalesA@8 referenced in function </span>catch$?proc@impl_win@locale@boost@@YGHPAD@Z$0 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(converter.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>FoldStringW@20 referenced in function "class std::basic_string&lt;wchar_t,struct std::char_traits&lt;wchar_t&gt;,class std::allocator&lt;wchar_t&gt; &gt; <span class="underline">cdecl boost::locale::impl_win::wcsnormalize(enum boost::locale::norm_type,wchar_t const *,wchar_t const *)" (?wcsnormalize@impl_win@locale@boost@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@W4norm_type@23@PB_W1@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(converter.obj) : error LNK2019: unresolved external symbol </span>imp<span class="underline">LCMapStringW@24 referenced in function "class std::basic_string&lt;wchar_t,struct std::char_traits&lt;wchar_t&gt;,class std::allocator&lt;wchar_t&gt; &gt; </span>cdecl boost::locale::impl_win::win_map_string_l(unsigned int,wchar_t const *,wchar_t const *,class boost::locale::impl_win::winlocale const &amp;)" (?win_map_string_l@impl_win@locale@boost@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IPB_W0ABVwinlocale@123@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(collate.obj) : error LNK2001: unresolved external symbol <span class="underline">imp</span>LCMapStringW@24 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(collate.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>CompareStringW@24 referenced in function "int <span class="underline">cdecl boost::locale::impl_win::wcscoll_l(enum boost::locale::collator_base::level_type,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,class boost::locale::impl_win::winlocale const &amp;)" (?wcscoll_l@impl_win@locale@boost@@YAHW4level_type@collator_base@23@PB_W111ABVwinlocale@123@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(numeric.obj) : error LNK2019: unresolved external symbol </span>imp<span class="underline">GetDateFormatW@24 referenced in function "class std::basic_string&lt;wchar_t,struct std::char_traits&lt;wchar_t&gt;,class std::allocator&lt;wchar_t&gt; &gt; </span>cdecl boost::locale::impl_win::wcs_format_date_l(wchar_t const *,struct _SYSTEMTIME const *,class boost::locale::impl_win::winlocale const &amp;)" (?wcs_format_date_l@impl_win@locale@boost@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PB_WPBU_SYSTEMTIME@@ABVwinlocale@123@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(numeric.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>GetTimeFormatW@24 referenced in function "class std::basic_string&lt;wchar_t,struct std::char_traits&lt;wchar_t&gt;,class std::allocator&lt;wchar_t&gt; &gt; <span class="underline">cdecl boost::locale::impl_win::wcs_format_time_l(wchar_t const *,struct _SYSTEMTIME const *,class boost::locale::impl_win::winlocale const &amp;)" (?wcs_format_time_l@impl_win@locale@boost@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PB_WPBU_SYSTEMTIME@@ABVwinlocale@123@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(numeric.obj) : error LNK2019: unresolved external symbol </span>imp<span class="underline">GetLocaleInfoW@16 referenced in function "struct boost::locale::impl_win::numeric_info </span>cdecl boost::locale::impl_win::wcsnumformat_l(class boost::locale::impl_win::winlocale const &amp;)" (?wcsnumformat_l@impl_win@locale@boost@@YA?AUnumeric_info@123@ABVwinlocale@123@@Z) 3&gt;libboost_locale-vc140-mt-gd-1_60.lib(numeric.obj) : error LNK2019: unresolved external symbol <span class="underline">imp</span>GetCurrencyFormatW@24 referenced in function "class std::basic_string&lt;wchar_t,struct std::char_traits&lt;wchar_t&gt;,class std::allocator&lt;wchar_t&gt; &gt; <span class="underline">cdecl boost::locale::impl_win::wcsfmon_l(double,class boost::locale::impl_win::winlocale const &amp;)" (?wcsfmon_l@impl_win@locale@boost@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@NABVwinlocale@123@@Z) 3&gt;libboost_system-vc140-mt-gd-1_60.lib(error_code.obj) : error LNK2019: unresolved external symbol </span>imp<span class="underline">LocalFree@4 referenced in function "public: </span>thiscall boost::system::detail::local_free_on_destruction::~local_free_on_destruction(void)" (??1local_free_on_destruction@detail@system@boost@@QAE@XZ) </p> yigit.ozcelik@… https://svn.boost.org/trac10/ticket/11980 https://svn.boost.org/trac10/ticket/11980 Report #11979: Wiki page has broken link to building Python Thu, 11 Feb 2016 10:13:28 GMT Fri, 13 Apr 2018 15:42:51 GMT <p> <a href="http://www.boost.org/doc/libs/1_60_0/more/getting_started/unix-variants.html">http://www.boost.org/doc/libs/1_60_0/more/getting_started/unix-variants.html</a> </p> <p> Contains multiple links to <a href="http://www.boost.org/doc/libs/1_60_0/libs/python/doc/building.html">http://www.boost.org/doc/libs/1_60_0/libs/python/doc/building.html</a> (eg. via Boots.Python) - but the link to broken. </p> gamesbook@… https://svn.boost.org/trac10/ticket/11979 https://svn.boost.org/trac10/ticket/11979 Report #11978: Bootstrap generates errors Thu, 11 Feb 2016 09:44:51 GMT Wed, 17 Feb 2016 07:47:19 GMT <p> Running bootstrap results in an error: "'cl' not recognized as an internal or external command, operable program or batch file". </p> <p> Upon searching the bug reports, I found: "bootstrap.bat mingw", which should have solved the problem. It did, but I got the same error for 'gcc', instead of 'cl' and couldn't find a way to fix that one. </p> <p> Is there anything I can do / should change to get this to work? </p> <p> I'm executing the file as administrator in the "Developer Command Prompt for VS2015". </p> bram.de.beer@… https://svn.boost.org/trac10/ticket/11978 https://svn.boost.org/trac10/ticket/11978 Report #11976: compile error when BOOST_UBLAS_SCALED_NORM is defined Thu, 11 Feb 2016 02:30:18 GMT Thu, 11 Feb 2016 02:30:18 GMT <p> When <strong>BOOST_UBLAS_SCALED_NORM</strong> is defined, compiler says the following message. </p> <p> boost-1.60.0/include/boost/numeric/ublas/functional.hpp:448:13: error: '<strong>size_type</strong>' was not declared in this scope. </p> <p> I show wrong and correct code (I suppose) as bellow. </p> <div class="wikipage" style="font-size: 90%"><p> Wrong: </p> <div class="wiki-code"><div class="code"><pre><span class="n">size_type</span> <span class="nf">size</span><span class="p">(</span><span class="n">e</span><span class="p">().</span><span class="n">size</span><span class="p">());</span> <span class="k">for</span> <span class="p">(</span><span class="n">size_type</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> </pre></div></div></div><div class="wikipage" style="font-size: 90%"><p> Correct: </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="k">typename</span> <span class="n">E</span><span class="o">::</span><span class="n">size_type</span> <span class="n">vector_size_type</span><span class="p">;</span> <span class="n">vector_size_type</span> <span class="nf">size</span><span class="p">(</span><span class="n">e</span><span class="p">().</span><span class="n">size</span><span class="p">());</span> <span class="k">for</span> <span class="p">(</span><span class="n">vector_size_type</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> </pre></div></div></div><p> From what I've seen so far, this is not fixed in version 1.35.0 ~ 1.60.0. </p> lebre <junonon0077@…> https://svn.boost.org/trac10/ticket/11976 https://svn.boost.org/trac10/ticket/11976 Report #11975: Null pointer dereference in boost::filesystem::copy Wed, 10 Feb 2016 15:58:41 GMT Wed, 10 Feb 2016 15:58:41 GMT <p> When calling the exception version of <code>boost::filesystem::copy</code> a null pointer is dereferenced. </p> <p> Testcase: </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; int main() { boost::filesystem::copy("/does/not/matter", "/neither/does/this"); } </pre><p> Using the undefined behaviour sanitizer in clang 3.6.2-1 or g++5.2.1 (<code>-fsanitize=undefined</code>) gives the following message: </p> <p> <code>boost_1_60_0/libs/filesystem/src/operations.cpp:879:40: runtime error: reference binding to null pointer of type 'system::error_code'</code> </p> <p> Callstack: </p> <pre class="wiki">#0 boost::filesystem::detail::copy (from=..., to=..., ec=0x0) at boost_1_60_0/libs/filesystem/src/operations.cpp:879 #1 0x0000000000441421 in boost::filesystem::copy (from=..., to=...) at boost_1_60_0/boost/filesystem/operations.hpp:524 #2 0x000000000044013e in main () at boost_filesystem_copy_bug.cpp:5 </pre><p> It does not appear to have been fixed in the trunk version as far as I can tell. </p> <p> It also seems to be close in kind to <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10450" title="#10450: Bugs: Undefined behavior in ... (new)">#10450</a>, so a review to see if other null pointer dereferences are lurking elsewhere might be in order. </p> Michael Rasmussen <Michael.Rasmussen@…> https://svn.boost.org/trac10/ticket/11975 https://svn.boost.org/trac10/ticket/11975 Report #11973: Can't work with date_time library Wed, 10 Feb 2016 11:42:13 GMT Wed, 10 Feb 2016 12:14:54 GMT <p> Whenever i instantiate an object of the boost::date_time library i get an error in my application. I'm using VC7.1 compiler. To be sure that i'm not using anything wrong i also tried to compile the shipped tutorial file: "boost_1_60_0\libs\date_time\example\tutorial\io_tutorial.cpp". The error stays the same. </p> <p> Operating system: Windows Server 2008 R2 Standard </p> <p> Here is what i did: b2 link=shared threading=multi variant=release </p> <p> cl /Od /I "D:\tools<br />boost_1_60_0" /D "WIN32" /D "_DEBUG" /D "_WINDLL" /Gm /EHsc /RTC1 /MDd /GS /GR /Fo"Debug/" /W3 /nologo /c /Wp64 /TP io_tutorial.cpp &gt;&gt; error.log </p> <p> In file: error.log io_tutorial.cpp D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'type' </p> <blockquote> <p> D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(43): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::range_detail::extract_iterator&lt;C&gt;' with [ </p> <blockquote> <p> C=boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\has_range_iterator.hpp(27): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::range_detail::range_mutable_iterator&lt;C&gt;' with [ </p> <blockquote> <p> C=boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\has_range_iterator.hpp(27): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::range_detail::has_type_impl_&lt;T&gt;' with [ </p> <blockquote> <p> T=boost::range_detail::range_mutable_iterator&lt;boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\mpl\eval_if.hpp(41): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::range_detail::has_type&lt;T,fallback_&gt;' with [ </p> <blockquote> <p> T=boost::range_detail::range_mutable_iterator&lt;boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type&gt;, fallback_=boost::mpl::bool_&lt;false&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\has_range_iterator.hpp(73): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::mpl::eval_if&lt;C,F1,F2&gt;' with [ </p> <blockquote> <p> C=boost::is_const&lt;boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type&gt;, F1=boost::range_detail::has_type&lt;boost::range_detail::range_const_iterator&lt;boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type&gt;,boost::mpl::bool_&lt;false&gt;&gt;, F2=boost::range_detail::has_type&lt;boost::range_detail::range_mutable_iterator&lt;boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type&gt;,boost::mpl::bool_&lt;false&gt;&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\has_range_iterator.hpp(73): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::range_detail::has_range_iterator_impl&lt;T&gt;' with [ </p> <blockquote> <p> T=boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\mpl\if.hpp(63): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::has_range_iterator&lt;T&gt;' with [ </p> <blockquote> <p> T=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\mpl\eval_if.hpp(40): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::mpl::if_&lt;T1,T2,T3&gt;' with [ </p> <blockquote> <p> T1=boost::has_range_iterator&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, T2=boost::range_iterator&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, T3=boost::mpl::identity&lt;void&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\iterator_range_core.hpp(451): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::mpl::eval_if&lt;C,F1,F2&gt;' with [ </p> <blockquote> <p> C=boost::has_range_iterator&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, F1=boost::range_iterator&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, F2=boost::mpl::identity&lt;void&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\mpl\aux_\preprocessed\plain\and.hpp(25): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::iterator_range&lt;IteratorT&gt;::is_compatible_range_&lt;Source&gt;' with [ </p> <blockquote> <p> IteratorT=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type, Source=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\mpl\aux_\preprocessed\plain\and.hpp(55): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::mpl::aux::and_impl&lt;C_,T1,T2,T3,T4&gt;' with [ </p> <blockquote> <p> C_=true, T1=boost::iterator_range&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::is_compatible_range_&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, T2=boost::mpl::true_, T3=boost::mpl::true_, T4=boost::mpl::true_ </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\range\iterator_range_core.hpp(468): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::mpl::and_&lt;T1,T2&gt;' with [ </p> <blockquote> <p> T1=boost::mpl::not_&lt;boost::is_convertible&lt;boost::range_iterator&lt;boost::iterator_range&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;&gt;::type,boost::iterator_range_detail::iterator_range_base&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type,boost::iterators::incrementable_traversal_tag&gt;::iterator&gt;&gt;, T2=boost::iterator_range&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::is_compatible_range_&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\core\enable_if.hpp(41): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::iterator_range&lt;IteratorT&gt;::is_compatible_range&lt;Source&gt;' with [ </p> <blockquote> <p> IteratorT=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type, Source=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\algorithm\string\detail\finder.hpp(68): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::enable_if&lt;Cond,T&gt;' with [ </p> <blockquote> <p> Cond=boost::iterator_range&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::is_compatible_range&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;, T=void </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\algorithm\string\find_format.hpp(272): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'boost::iterator_range&lt;IteratorT&gt; boost::algorithm::detail::first_finderF&lt;SearchIteratorT,PredicateT&gt;::operator ()&lt;boost::range_iterator&lt;C&gt;::type&gt;(ForwardIteratorT,ForwardIteratorT) const' with [ </p> <blockquote> <p> IteratorT=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type, SearchIteratorT=const boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::char_type *, PredicateT=boost::algorithm::is_equal, C=std::allocator&lt;std::string&gt;::value_type, ForwardIteratorT=boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\algorithm\string\replace.hpp(657): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'void boost::algorithm::find_format_all&lt;SequenceT,boost::algorithm::detail::first_finderF&lt;SearchIteratorT,PredicateT&gt;,boost::algorithm::detail::const_formatF&lt;RangeT&gt;&gt;(SequenceT &amp;,FinderT,FormatterT)' with [ </p> <blockquote> <p> SequenceT=boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::string_type, SearchIteratorT=const boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::char_type *, PredicateT=boost::algorithm::is_equal, RangeT=boost::iterator_range&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::const_iterator&gt;, FinderT=boost::algorithm::detail::first_finderF&lt;const boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::char_type *,boost::algorithm::is_equal&gt;, FormatterT=boost::algorithm::detail::const_formatF&lt;boost::iterator_range&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;::const_iterator&gt;&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\date_time\date_facet.hpp(322): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'void boost::algorithm::replace_all&lt;boost::date_time::date_facet&lt;date_type,CharT&gt;::string_type,const boost::date_time::date_facet&lt;date_type,CharT&gt;::char_type<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a>,std::allocator&lt;_Ty&gt;::value_type&gt;(SequenceT &amp;,Range1T (&amp;),const Range2T &amp;)' with [ </p> <blockquote> <p> date_type=boost::gregorian::date, CharT=char, _Ty=std::string, SequenceT=boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::string_type, Range1T=const boost::date_time::date_facet&lt;boost::gregorian::date,char&gt;::char_type <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a>, Range2T=std::allocator&lt;std::string&gt;::value_type </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\date_time\date_facet.hpp(317): Bei der Kompilierung der Memberfunktion 'std::ostreambuf_iterator&lt;_Elem,_Traits&gt; boost::date_time::date_facet&lt;date_type,CharT&gt;::do_put_tm(OutItrT,std::ios_base &amp;,boost::date_time::date_facet&lt;date_type,CharT&gt;::char_type,const tm &amp;,boost::date_time::date_facet&lt;date_type,CharT&gt;::string_type) const' der Klassenvorlage with [ </p> <blockquote> <p> _Elem=char, _Traits=std::char_traits&lt;char&gt;, date_type=boost::gregorian::date, CharT=char, OutItrT=std::ostreambuf_iterator&lt;char,std::char_traits&lt;char&gt;&gt; </p> </blockquote> <p> ] D:\tools<br />boost_1_60_0\boost\date_time\time_facet.hpp(204): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::date_time::date_facet&lt;date_type,CharT&gt;' with [ </p> <blockquote> <p> date_type=boost::gregorian::date, CharT=char </p> </blockquote> <p> ] io_tutorial.cpp(27): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'boost::date_time::time_facet&lt;time_type,CharT&gt;' with [ </p> <blockquote> <p> time_type=boost::local_time::local_date_time, CharT=char </p> </blockquote> <p> ] </p> </blockquote> <p> D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : error C3254: 'boost::range_detail::extract_iterator&lt;C&gt;': Die Klasse enth„lt die explizite šberschreibung '<span class="underline">ctor', wird jedoch von keiner Schnittstelle abgeleitet, die die Funktionsdeklaration enth„lt </span></p> <blockquote> <p> with [ </p> <blockquote> <p> C=boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type </p> </blockquote> <p> ] </p> </blockquote> <p> D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : error C2838: '<span class="underline">ctor': Unzul„ssiger vollst„ndig angegebener Name in Elementdeklaration D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : error C2461: 'boost::range_detail::extract_iterator&lt;C&gt;': Formale Parameterliste fr Konstruktor fehlt </span></p> <blockquote> <p> with [ </p> <blockquote> <p> C=boost::remove_reference&lt;boost::range_iterator&lt;std::allocator&lt;std::string&gt;::value_type&gt;::type&gt;::type </p> </blockquote> <p> ] </p> </blockquote> <p> D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : error C2955: 'boost::type': fr die Verwendung einer Vorlagenklasse ist eine Vorlagen-Argumentliste erforderlich </p> <blockquote> <p> D:\tools<br />boost_1_60_0\boost\type.hpp(14): Siehe Deklaration von 'boost::type' </p> </blockquote> <p> D:\tools<br />boost_1_60_0\boost\range\mutable_iterator.hpp(37) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht m”glich; Kompilierung wird abgebrochen. </p> markus.zaczek@… https://svn.boost.org/trac10/ticket/11973 https://svn.boost.org/trac10/ticket/11973 Report #11971: polygon_set_data<int32_t> has problems near INT_MAX Tue, 09 Feb 2016 22:09:56 GMT Tue, 09 Feb 2016 22:09:56 GMT <p> When I try to use boost::polygon::operators::operator&amp; to AND a polygon set with a very large rectangle (i.e. something close to (INT_MIN,INT_MIN,INT_MAX,INT_MAX)) -- which should be the identity operation -- the internal data structure appears to get corrupted. </p> <p> I am attaching a simple test case to illustrate the problem. Note that using an upper bound of INT_MAX-100 still fails, but INT_MAX/2 works as expected. </p> <p> I do not see any mention of limitations on the range of integer coordinates in the documentation. Should there be one? </p> lopresti@… https://svn.boost.org/trac10/ticket/11971 https://svn.boost.org/trac10/ticket/11971 Report #11970: Use perfect forwarding for object_pool Tue, 09 Feb 2016 19:29:22 GMT Tue, 09 Feb 2016 19:29:22 GMT <p> boost::object_pool::construct uses a code generation system to create versions of that method that take up to some arbitrary number of input parameters. With C++11/14 it is possible to do the same using perfect forwarding, which would allow any number of input parameters using a single template method, and without bloating the hpp. </p> <p> I think this would also solve a related problem I am having. The object that I am trying to construct using the object_pool takes a unique_ptr as an input parameter to it's constructor (it is taking ownership of it): </p> <pre class="wiki">class Node {} class Tree { Tree(std::unique_ptr&lt;Node&gt; root, int foo, int bar) : m_root(std::move(root)) {} private: std::unique_ptr&lt;Node&gt; m_root; } void makeTrees() { boost::object_pool&lt;Tree&gt; treePool; std::unique_ptr&lt;Node&gt; node (new Node()); Tree* tree = treePool.construct (node, 1, 2); } </pre><p> In the current implementation, the compiler gives an error because object_pool::construct doesn't call std::move on root when newing the tree: </p> <pre class="wiki">/usr/local/include/boost/pool/detail/pool_construct.ipp(258): error: function "std::unique_ptr&lt;_Tp, _Dp&gt;::unique_ptr(const std::unique_ptr&lt;_Tp, _Dp&gt; &amp;) [with _Tp=Node, _Dp=std::function&lt;void (Node *)&gt;]" (declared at line 273 of "/usr/include/c++/4.8.5/bits/unique_ptr.h") cannot be referenced -- it is a deleted function try { new (ret) element_type(a0, a1, a2); } </pre><p> I think (but am not certain) that using perfect forwarding would allow this. </p> djpeaco@… https://svn.boost.org/trac10/ticket/11970 https://svn.boost.org/trac10/ticket/11970 Report #11969: Add new library category Tue, 09 Feb 2016 16:48:42 GMT Tue, 09 Feb 2016 16:48:42 GMT <p> At least 2 libraries (Boost.Unit and Boost.<a class="missing wiki">ConceptCheck</a>) support higher level software semantics. Used appropriately, they help programmers reason about the meaning behind what code does. The advantage is that they enable compiler driven requirements checking - if the code fails to meet a requirement, it simply doesn't compile correctly! This is a powerful concept. I don't know if most Boost users (or programmers in general) understand how valuable this is. Adding a category on this page (<a href="http://www.boost.org/doc/libs/1_60_0/?view=categorized">http://www.boost.org/doc/libs/1_60_0/?view=categorized</a> ) might help get that message across. </p> steve.hickman@… https://svn.boost.org/trac10/ticket/11969 https://svn.boost.org/trac10/ticket/11969 Report #11968: Undefined behavior in `boost::lockfree::queue`: nodes are always misaligned Tue, 09 Feb 2016 13:22:02 GMT Tue, 11 Oct 2016 13:56:18 GMT <p> Here is a minimal reproducer to illustrate the problem: </p> <pre class="wiki">#include &lt;boost/lockfree/queue.hpp&gt; struct entry { int x = -1; }; int main() { boost::lockfree::queue&lt;entry, boost::lockfree::capacity&lt;1&gt;&gt; queue; queue.push({0}); entry d; queue.pop(d); } </pre><pre class="wiki">zaytsev@work:~/src/gcc$ g++ -std=c++14 -fsanitize=undefined lockfree.cpp zaytsev@work:~/src/gcc$ ./a.out /usr/include/boost/lockfree/detail/freelist.hpp:442:9: runtime error: constructor call on misaligned address 0x7fffd0831720 for type 'struct node', which requires 64 byte alignment 0x7fffd0831720: note: pointer points here 00 00 00 00 00 00 a6 5b 2a 7f 00 00 ff ff 00 00 01 00 00 00 40 17 83 d0 ff 7f 00 00 f8 0a 40 00 ^ /usr/include/boost/lockfree/detail/freelist.hpp:454:9: runtime error: constructor call on misaligned address 0x7fffd08316e0 for type 'struct node', which requires 64 byte alignment 0x7fffd08316e0: note: pointer points here ff 7f 00 00 02 00 60 00 00 00 00 00 70 08 40 00 00 00 00 00 88 50 60 00 00 00 00 00 d9 64 a9 5b ^ /usr/include/boost/lockfree/queue.hpp:102:19: runtime error: member access within misaligned address 0x7fffd08316e0 for type 'struct node', which requires 64 byte alignment 0x7fffd08316e0: note: pointer points here ff 7f 00 00 02 00 60 00 00 00 00 00 70 08 40 00 00 00 00 00 88 50 60 00 00 00 00 00 d9 64 a9 5b ^ </pre><p> This happens because nodes are declared to be cache line aligned in <code>queue.hpp</code>: </p> <pre class="wiki">struct BOOST_LOCKFREE_CACHELINE_ALIGNMENT node { ... }; </pre><p> However, alignment to 64 bytes makes node an over-aligned type, and for such types the behavior is implementation defined. In particular, GCC 5.3, which was used for this test, doesn't seem to take alignment requirements of over-aligned types into account when allocating on the heap. </p> <p> Apparently, nobody has noticed this so far, because on x86 this will simply cause a slowdown, but on other targets, such as ARM, the program would be terminated with a <code>SIGBUS</code> if a misaligned read occurs. It could be that the problem reported here: <a class="ext-link" href="https://github.com/boostorg/lockfree/issues/11"><span class="icon">​</span>https://github.com/boostorg/lockfree/issues/11</a> is a manifestation of this larger issue. </p> <p> Now, I would be happy to suggest a fix, but the problem is rather tricky. </p> <ol><li>If the storage for nodes is allocated on the heap, then probably the fix is as simple as replacing the default <code>std::allocator</code> with <code>boost::aligned_allocator</code>. </li></ol><ol start="2"><li>However, what makes <code>boost::lockfree::queue</code> particularly interesting is the support for compile-time sized storage. In this case, the situation is not so simple. One can get aligned storage with something like <code>boost::aligned_storage&lt;size * sizeof(T), BOOST_LOCKFREE_CACHELINE_BYTES&gt; data</code>, but is only part of the solution.<br /><br />Indeed, <code>compiletime_sized_freelist_storage</code> should not only align <code>data</code>, but also over-allocate it, and the node allocator from the <code>fixed_size_freelist</code> should place nodes in <code>data</code> at appropriate positions so that not only the first, but also subsequent nodes remain aligned. </li></ol><ol start="3"><li>In addition to that, <code>BOOST_LOCKFREE_CACHELINE_BYTES</code> should be exposed publicly as a constant and those who are passing custom allocators to the <code>boost::lockfree::queue</code> should use that together with <code>boost::aligned_allocator_adaptor</code> to make sure that their allocators honor the desired alignment. </li></ol><p> So, before investing any time in a patch, the problem has first to be discussed in more details... Maybe it also makes sense to change Boost.Lockfree to use Boost.Align, which was probably not used before because the former predated the latter. </p> <p> For now, the easiest stop gap solution that I can think of would be to patch out the alignment requirement, as it simply doesn't work as expected, but potentially causes problems for other architectures as x86. This would be something I would suggest doing ASAP for Boost 1.61. </p> yury.zaytsev@… https://svn.boost.org/trac10/ticket/11968 https://svn.boost.org/trac10/ticket/11968 Report #11964: asio async_resolve cannot be cancelled Mon, 08 Feb 2016 09:53:07 GMT Mon, 08 Feb 2016 09:53:07 GMT <p> The asio <strong>async_resolve</strong> (both the udp and tcp resolver) is incorrectly implemented (on win32) as a <strong>synchronous resolve</strong> performed in a thread. </p> <p> This has the unfortunate effect that, when the DNS server is not responding, the application will hang for ~20 seconds. The DNS operation is ongoing in the io_service, and thus the io_service destructor must wait for the thread to finish. I tried several methods in an effort to cancel it, but none worked. </p> <p> Since the average user has approximately 5 seconds of patience with a non-responding application before killing it with task manager, I really think this needs to be fixed. </p> sven_nilsson@… https://svn.boost.org/trac10/ticket/11964 https://svn.boost.org/trac10/ticket/11964 Report #11963: Boost function "boost::property_tree::ini_parser::read_ini" causing "EXC_BAD_ACCESS (code=EXC_I386_GPFLT)" Mon, 08 Feb 2016 08:51:10 GMT Mon, 08 Feb 2016 08:51:10 GMT <p> I have a simple source like this that build and executes correctly under Windows 10 with Visual Studio 2015 but throws "EXC_BAD_ACCESS (code=EXC_I386_GPFLT)" under OsX 10.11.3 with Xcode 7.2.1: </p> <pre class="wiki">#include &lt;boost/property_tree/ini_parser.hpp&gt; #include &lt;boost/property_tree/ptree.hpp&gt; #include &lt;boost/property_tree/json_parser.hpp&gt; #include &lt;iostream&gt; using namespace std; int main(int argc, char* argv[]) { if (argc != 3) { std::cerr &lt;&lt; "Usage: program rootPath iniFileName" &lt;&lt; std::endl ; return 1; } string mainPath(argv[1]) ; string iniFileName(argv[2]) ; boost::property_tree::ptree pt; try { boost::property_tree::ini_parser::read_ini(mainPath + iniFileName, pt); } catch(const boost::property_tree::ptree_error &amp;e) { cout &lt;&lt; e.what() &lt;&lt; endl; } return 0; } </pre><p> This is the stack trace: </p> <p> Thread 1Queue : com.apple.main-thread (serial) <a class="missing ticket">#0</a> 0x00000001000a10c0 in std::<span class="underline">1::basic_streambuf&lt;char, std::</span>1::char_traits&lt;char&gt; &gt;::pubimbue(std::<span class="underline">1::locale const&amp;) [inlined] at <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/streambuf:227 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x00000001000a10c0 in std::</span>1::basic_ios&lt;char, std::<span class="underline">1::char_traits&lt;char&gt; &gt;::imbue(std::</span>1::locale const&amp;) [inlined] at <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:717 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x00000001000a100b in void boost::property_tree::ini_parser::read_ini&lt;boost::property_tree::basic_ptree&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::<span class="underline">1::allocator&lt;char&gt; &gt;, std::</span>1::basic_string&lt;char, std::<span class="underline">1::char_traits&lt;char&gt;, std::</span>1::allocator&lt;char&gt; &gt;, std::<span class="underline">1::less&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::</span>1::allocator&lt;char&gt; &gt; &gt; &gt; &gt;(std::<span class="underline">1::basic_string&lt;char, std::</span>1::char_traits&lt;char&gt;, std::<span class="underline">1::allocator&lt;char&gt; &gt; const&amp;, boost::property_tree::basic_ptree&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::</span>1::allocator&lt;char&gt; &gt;, std::<span class="underline">1::basic_string&lt;char, std::</span>1::char_traits&lt;char&gt;, std::<span class="underline">1::allocator&lt;char&gt; &gt;, std::</span>1::less&lt;std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::<span class="underline">1::allocator&lt;char&gt; &gt; &gt; &gt;&amp;, std::</span>1::locale const&amp;) at /Users/andreagiovacchini/Documents/Sviluppo/boost_1_60_0/boost/property_tree/ini_parser.hpp:167 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x0000000100124a36 in main at /Users/andreagiovacchini/Documents/Sviluppo/Test/Test/main.cpp:21 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x00007fff857245ad in start () </p> <p> Problem comes from "stream.imbue(loc);" line in ini_parser.php from this function: </p> <pre class="wiki"> template&lt;class Ptree&gt; void read_ini(const std::string &amp;filename, Ptree &amp;pt, const std::locale &amp;loc = std::locale()) { std::basic_ifstream&lt;typename Ptree::key_type::value_type&gt; stream(filename.c_str()); if (!stream) BOOST_PROPERTY_TREE_THROW(ini_parser_error( "cannot open file", filename, 0)); stream.imbue(loc); try { read_ini(stream, pt); } catch (ini_parser_error &amp;e) { BOOST_PROPERTY_TREE_THROW(ini_parser_error( e.message(), filename, e.line())); } } </pre><p> Since I can't see how my code can generate this kind of problem I think it is a Boost bug </p> <p> Andrea </p> giovacchini.andrea@… https://svn.boost.org/trac10/ticket/11963 https://svn.boost.org/trac10/ticket/11963 Report #11960: boost::transitive_closure dies on small graph with only 100,000 vertices Sat, 06 Feb 2016 03:03:04 GMT Sat, 13 Feb 2016 21:17:56 GMT <p> Here's a trivial program that dies with a SIGKILL inside of boost::transitive_closure. I suspect it tries to allocate an absurd amount of memory. </p> jpritikin@… https://svn.boost.org/trac10/ticket/11960 https://svn.boost.org/trac10/ticket/11960 Report #11958: boost::gregorian is not thread safe Fri, 05 Feb 2016 14:48:21 GMT Tue, 15 Mar 2016 17:58:38 GMT <p> in greg_month.cpp, </p> <p> The static method get_month_map_ptr performs a non-thread-safe initialization of the month_map structure on the first access. </p> <p> If the first access is done concurrently, it is likely to crash with a segmentation fault as such: </p> <p> Program received signal SIGSEGV, Segmentation fault. <a class="missing ticket">#0</a> 0x00007fffef9127d9 in std::_Rb_tree&lt;std::string, std::pair&lt;std::string const, unsigned short&gt;, std::_Select1st&lt;std::pair&lt;std::string const, unsigned short&gt; &gt;, std::less&lt;std::string&gt;, std::allocator&lt;std::pair&lt;std::string const, unsigned short&gt; &gt; &gt;::_M_insert_unique(std::pair&lt;std::string const, unsigned short&gt; const&amp;) () </p> <blockquote> <p> from /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.54.0 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x00007fffef90fc90 in boost::gregorian::greg_month::get_month_map_ptr() () from /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.54.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x00007ffff4d41e07 in boost::date_time::month_str_to_ushort&lt;boost::gregorian::greg_month&gt; (s=...) at /usr/include/boost/date_time/date_parsing.hpp:67 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x00007ffff4d4341a in boost::date_time::parse_date&lt;boost::gregorian::date&gt; (s=..., order_spec=order_spec@entry=0) at /usr/include/boost/date_time/date_parsing.hpp:143 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x00007ffff4d3a720 in from_string (s=...) at /usr/include/boost/date_time/gregorian/parsers.hpp:30 </p> <p> I suggest initializing the map in a safe, lockless manner. </p> Mathieu Marquis Bolduc <mbolduc@…> https://svn.boost.org/trac10/ticket/11958 https://svn.boost.org/trac10/ticket/11958 Report #11955: boost/graph/adjacency_matrix.hpp triggers deprecated code Thu, 04 Feb 2016 15:25:17 GMT Tue, 09 Aug 2016 10:38:46 GMT <p> I understand that this probably doesn't seem important, since many other files are similar in boost::graph. </p> <p> It requires <code>functional/hash.hpp</code>, and, more importantly and only as of recently, <code>type_traits/ice.hpp</code>. However, the latter now is deprecated. </p> fiesh@… https://svn.boost.org/trac10/ticket/11955 https://svn.boost.org/trac10/ticket/11955 Report #11954: NOTE: Use of this header (bool_trait_def.hpp) is deprecated Thu, 04 Feb 2016 13:47:51 GMT Thu, 23 Mar 2017 10:54:52 GMT <p> Including <code>boost/iostreams/filtering_streambuf.hpp</code> results in the above warning from Boost 1.60.0 on. It did not in Boost 1.59.0. </p> <p> This is a kind-of duplicate of <a class="new ticket" href="https://svn.boost.org/trac10/ticket/11886" title="#11886: Bugs: Deprecated header template_arity_spec.hpp included in several places (new)">#11886</a>, but since it's a different component I created this separate ticket. </p> fiesh@… https://svn.boost.org/trac10/ticket/11954 https://svn.boost.org/trac10/ticket/11954 Report #11949: request for information Tue, 02 Feb 2016 05:29:14 GMT Tue, 02 Feb 2016 07:04:37 GMT <p> This is not a bug notice but a request for information. Do you have an example of a directory listing using boost that is in alpha order? How do I modify the following code to do that? Can I pass boost a compare file as can be done in the C fts system? </p> <blockquote> <p> for (directory_entry&amp; x : directory_iterator(p)){ </p> <blockquote> <p> fullPathName = x.path().string(); cout ..... </p> </blockquote> <p> } </p> </blockquote> <p> or this way: </p> <blockquote> <p> directory_iterator end ; </p> </blockquote> <blockquote> <p> for( directory_iterator iter("../takes/test") ; iter != end ; ++iter ) { </p> <blockquote> <p> if ( !is_directory( *iter ) ){ </p> <blockquote> <p> cout &lt;&lt; iter-&gt;path() &lt;&lt; "\n"; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> thanks in advance. Please reply to David at dp25@… </p> dp25@… https://svn.boost.org/trac10/ticket/11949 https://svn.boost.org/trac10/ticket/11949 Report #11948: undefined reference to boost::gregorian::greg_month::get_month_map_ptr() Sat, 30 Jan 2016 15:48:25 GMT Sat, 30 Jan 2016 15:48:25 GMT <p> [liukai@iZ11idlxpv6Z 20160127]$ ./waf -v Waf: Entering directory `/home/liukai/builder/20160127/build' <a class="changeset" href="https://svn.boost.org/trac10/changeset/42/42" title="*** empty log message *** ">[42/42]</a> Linking build/SceneServer/SceneServer 23:43:47 runner ['/home/liukai/local/bin/clang++', '-pthread', '-lrt', '-lz', '-ldl', '-rdynamic', '-static-libgcc', '-static-libstdc++', '<a class="missing wiki">SceneServer/SceneServer</a>.cpp.1.o', '-o', '/home/liukai/builder/20160127/build/SceneServer/SceneServer', '-Wl,-Bstatic', '-Lcommon', '-L3Party/lua-5.3.2', '-L../build/common', '-L../3Party/boost/lib', '-lcommon', '-llua-5.3.2', '-lboost_system', '-lboost_date_time', '-Wl,-Bdynamic'] <a class="missing wiki">SceneServer/SceneServer</a>.cpp.1.o:在函数‘unsigned short boost::date_time::month_str_to_ushort&lt;boost::gregorian::greg_month&gt;(std::<span class="underline">cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)’中: /home/liukai/local/include/boost/date_time/date_parsing.hpp:67:对‘boost::gregorian::greg_month::get_month_map_ptr()’未定义的引用 clang: error: linker command failed with exit code 1 (use -v to see invocation) </span></p> <p> Waf: Leaving directory `/home/liukai/builder/20160127/build' Build failed </p> <blockquote> <p> -&gt; task in '<a class="missing wiki">SceneServer</a>' failed (exit status 1): </p> <blockquote> <p> {task 140651725143760: cxxprogram <a class="missing wiki">SceneServer</a>.cpp.1.o -&gt; <a class="missing wiki">SceneServer</a>} </p> </blockquote> </blockquote> <p> ['/home/liukai/local/bin/clang++', '-pthread', '-lrt', '-lz', '-ldl', '-rdynamic', '-static-libgcc', '-static-libstdc++', '<a class="missing wiki">SceneServer/SceneServer</a>.cpp.1.o', '-o', '/home/liukai/builder/20160127/build/SceneServer/SceneServer', '-Wl,-Bstatic', '-Lcommon', '-L3Party/lua-5.3.2', '-L../build/common', '-L../3Party/boost/lib', '-lcommon', '-llua-5.3.2', '-lboost_system', '-lboost_date_time', '-Wl,-Bdynamic'] </p> 565434471@… https://svn.boost.org/trac10/ticket/11948 https://svn.boost.org/trac10/ticket/11948 Report #11947: filesystem: getting file_type from a directory_entry without causing a system call on linux Fri, 29 Jan 2016 10:44:31 GMT Fri, 29 Jan 2016 10:44:31 GMT <p> When iterating over a directory with directory_iterator the directory_entries are created with the file_type component of the m_symlink_status defined if the filesystem supports it on Linux due to BOOST_FILESYSTEM_STATUS_CACHE. </p> <p> However the directory iteration does not produce the permission component of the file status. Thus if using <code>somedirectoryentry.symlink_status().type()</code> the library performs a superfluous lstat system call because status_known does not succeed due to permissions_present not succeeding. </p> <p> This is possible to fix e.g. by adding a symlink_type method to the directory_entry class, a patch implementing it is linked below: </p> <p> <a class="ext-link" href="https://github.com/taruti/filesystem/commit/835bcd3c13697cbd7fc3d8574fd07475eeada398"><span class="icon">​</span>https://github.com/taruti/filesystem/commit/835bcd3c13697cbd7fc3d8574fd07475eeada398</a> </p> <p> ps. Is the documentation manually or automatically created and does it need a separate patch? </p> Taru Karttunen <taruti@…> https://svn.boost.org/trac10/ticket/11947 https://svn.boost.org/trac10/ticket/11947 Report #11944: lexically_relative() documentation incorrect Thu, 28 Jan 2016 07:20:19 GMT Thu, 28 Jan 2016 07:20:19 GMT <p> Documentation says its a free function path lexically_relative(const path&amp; p, const path&amp; base); </p> <p> While in reality, its a member function of path </p> <blockquote> <p> path lexically_relative(const path&amp; base) const; </p> </blockquote> harris.pc@… https://svn.boost.org/trac10/ticket/11944 https://svn.boost.org/trac10/ticket/11944 Report #11943: std::vector does not have a member data() in c++03 mode Wed, 27 Jan 2016 20:20:24 GMT Wed, 27 Jan 2016 20:20:24 GMT <p> Problem:program_options/exception_txt_test[_dll] fails in c++03 mode with Oracle studio 12.5 due to std::vector not having a member data() in c++03 mode. </p> <p> in program_options/test/exception_txt_test.cpp in line of 50: 50:void test_each_exception_message(const string&amp; test_description, const vector&lt;const char*&gt;&amp; argv, options_description&amp; desc, int style, string exception_msg, istream&amp; is = cin) </p> <p> ... in line 62: 62: store(parse_command_line(argv.size(), argv.data(), desc, style), vm); According to definition of std::vector, member function </p> <blockquote> <p> data </p> </blockquote> <p> (C++11) </p> <blockquote> <p> direct access to the underlying array </p> </blockquote> <p> (public member function) </p> angela.xie@… https://svn.boost.org/trac10/ticket/11943 https://svn.boost.org/trac10/ticket/11943 Report #11939: Issues with boost::interprocess::shared_ptr's move constructor and move assignment operator. Tue, 26 Jan 2016 07:38:51 GMT Tue, 26 Jan 2016 07:38:51 GMT <p> The boost::interprocess::shared_ptr's move constructor is declared as explicit which makes it copy when user does a move. Similarly, move assignment operator is missing to move the argument to temporary before swapping. </p> <pre class="wiki">boost::interprocess::shared_ptr&lt;...&gt; p = ...; assert(p.unique()); auto p1 = std::move(p); // Does a copy. assert(p1.unique()); // Fails. decltype(p) p2; p2 = std::move(p1); // Does a copy. assert(p2.unique()); // Fails. </pre> aivazyan@… https://svn.boost.org/trac10/ticket/11939 https://svn.boost.org/trac10/ticket/11939 Report #11937: the bootstrap Sun, 24 Jan 2016 08:47:40 GMT Sun, 24 Jan 2016 08:47:40 GMT <p> Hi, when bootstrap runs on windows it creates a (relatively) undocumented file project-config.jam and inserts into it a using msvc ; This file persists and by default is auto-included in all builds of boost. In doing so it pollutes a build with the definitions for MSVC14.0 even if the overall build was intended to be strictly using an earlier toolset. The following log shows this </p> <ul><li>look at the beginning and just after the recognition of MPI. (Both of </li></ul><p> which are introduced in a very simple site-config.jam) </p> <p> Work around: project-config.jam should be deleted from %boost_root% or made of null effect at the end of the bootstrap process. Or well documented as the file to change. </p> <p> notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.exe' for msvc, condition &lt;toolset&gt;msvc-9.0 notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;/&lt;address-model&gt;', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;/&lt;address-model&gt;32', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;x86/&lt;address-model&gt;', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;x86/&lt;address-model&gt;32', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;/&lt;address-model&gt;64', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_amd64.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;x86/&lt;address-model&gt;64', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_9.0_vcvarsall_amd64.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;ia64/&lt;address-model&gt;', setup: 'call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_ia64 &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-9.0/&lt;architecture&gt;ia64/&lt;address-model&gt;64', setup: 'call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_ia64 &gt;nul ' ===============MPI Auto-configuration=============== Found Microsoft Compute Cluster Pack: C:\Program Files (x86)\Microsoft SDKs\MPI MPI build features: &lt;include&gt;/C:/Program Files (x86)/Microsoft SDKs/MPI/Include &lt;address-model&gt;64:&lt;library-path&gt;/C:/Program Files (x86)/Microsoft SDKs/MPI/Lib/x64 &lt;library-path&gt;/C:/Program Files (x86)/Microsoft SDKs/MPI/Lib/x86 &lt;find-static-library&gt;msmpi &lt;toolset&gt;msvc:&lt;define&gt;_SECURE_SCL=0 &lt;toolset&gt;msvc:&lt;define&gt;MSMPI_NO_DEPRECATE_20 MPI launcher: "C:\Program Files\Microsoft MPI\Bin\mpiexec.exe" -n ==================================================== notice: Searching 'C:\Users\tlyonsadmin' 'C:\Program Files\boost\boost_1_60_0\tools/build/src' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/kernel' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/util' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/build' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/tools' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/contrib' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/.' for user-config configuration file 'user-config.jam'. notice: Configuration file 'user-config.jam' not found in 'C:\Users\tlyonsadmin' 'C:\Program Files\boost\boost_1_60_0\tools/build/src' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/kernel' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/util' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/build' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/tools' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/contrib' 'C:/Program Files/boost/boost_1_60_0/tools/build/src/.'. notice: Searching '.' for project-config configuration file 'project-config.jam'. notice: Loading project-config configuration file 'project-config.jam' from '.'. notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe' for msvc, condition &lt;toolset&gt;msvc-14.0 notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;/&lt;address-model&gt;', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;/&lt;address-model&gt;32', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;x86/&lt;address-model&gt;', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;x86/&lt;address-model&gt;32', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;/&lt;address-model&gt;64', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_amd64.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;x86/&lt;address-model&gt;64', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_amd64.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;ia64/&lt;address-model&gt;', setup: 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_ia64 &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;ia64/&lt;address-model&gt;64', setup: 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_ia64 &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;arm/&lt;address-model&gt;', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86_arm.cmd" &gt;nul ' notice: [msvc-cfg] condition: '&lt;toolset&gt;msvc-14.0/&lt;architecture&gt;arm/&lt;address-model&gt;32', setup: 'call "C:\Users\TLYONS~1\<a class="missing wiki">AppData</a>\Local\Temp\b2_msvc_14.0_vcvarsall_x86_arm.cmd" &gt;nul ' notice: [zlib] Using pre-installed library </p> terry lyons <tlyons@…> https://svn.boost.org/trac10/ticket/11937 https://svn.boost.org/trac10/ticket/11937 Report #11935: boost::program_options::error_with_option_name.what() throws std::out_of_range when an empty option is used in the command input Fri, 22 Jan 2016 16:11:20 GMT Fri, 29 Jan 2016 01:47:44 GMT <p> Hi, </p> <p> After accidentally typing "-v . -" (without the quotes) into a Windows command line app written with boost::po, it crashed. The app's catch block (code below) calls boost::po::error_with_option_name.what() and this subsequently throws std::out_of_range(). </p> <p> It appears as though the empty option "-" confuses boost::program_options::strip_prefixes(const std::string&amp; text) which is called with text value of "-", resulting in text.substr being called with a value of npos: </p> <pre class="wiki"> inline std::string strip_prefixes(const std::string&amp; text) { // "--foo-bar" -&gt; "foo-bar"[[BR]] return text.substr(text.find_first_not_of("-/")); } </pre><p> Here's my code. </p> <p> </p> <pre class="wiki">po::variables_map vm; po::options_description desc("Options"); desc.add_options() ("folder,f", po::wvalue&lt;wstring&gt;()-&gt;required(), "Specify the name of the folder containing the C++ projects to check") ("list,l", "List the project file names as they're checked") ("verbose,v", "Verbose; Show the node values when finding non-SAK SCC values") ("help,?", "Show usage information") ; po::positional_options_description pod; pod.add("folder", -1); try { po::store(po::wcommand_line_parser(argc, argv).options(desc).positional(pod).run(), vm); po::notify(vm); } catch (const boost::program_options::error &amp; e) { cerr &lt;&lt; w32::fg_red &lt;&lt; e.what() &lt;&lt; w32::restore &lt;&lt; endl; return ERROR_UNHANDLED_EXCEPTION; } </pre><p> I am using Boost 1.60 on Windows 7 (64-bit) with Visual Studio 2015 Update 1. </p> <p> Cheers<br /> Mark. </p> mark.incley@… https://svn.boost.org/trac10/ticket/11935 https://svn.boost.org/trac10/ticket/11935 Report #11934: Various warnings in 1.60 MPL when compiling with nvcc Fri, 22 Jan 2016 09:06:42 GMT Tue, 13 Feb 2018 16:38:39 GMT <p> I'm compiling a larger project ( <a class="ext-link" href="https://github.com/ComputationalRadiationPhysics/picongpu/"><span class="icon">​</span>https://github.com/ComputationalRadiationPhysics/picongpu/</a> current dev) which uses boost heavily. However a lot of warnings are issued. Since we are quite agnostic to warnings (compiling with many warnings enabled and -Werror) this is troubling and it would be great, if those are fixed in future versions. If I remember correctly older versions (1.58) did not had them. </p> <p> CUDA 7.0 </p> <pre class="wiki">boost/mpl/map/aux_/item.hpp(54): warning: "boost::mpl::aux::type_wrapper&lt;T&gt; operator/(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(55): warning: "boost::mpl::aux::type_wrapper&lt;boost::mpl::pair&lt;Key, T&gt;&gt; operator|(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::next&lt;Base::order&gt;::type *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(56): warning: "char (&amp;operator||(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *))[boost::mpl::next&lt;Base::order&gt;::type::value]" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(71): warning: "boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; operator/(const boost::mpl::m_mask&lt;Key, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(72): warning: "boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; operator|(const boost::mpl::m_mask&lt;Key, Base&gt; &amp;, boost::mpl::x_order_impl&lt;Base, Key&gt;::type *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp:54:109: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;Key&gt; boost::mpl::operator/(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;T&gt;, VALUE_BY_KEY, m_item, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:54:109: note: (if this is not what you intended, make sure the function template has already been declared and add &lt;&gt; after the function name here) boost/mpl/map/aux_/item.hpp:55:90: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;boost::mpl::pair&lt;T1, T2&gt; &gt; boost::mpl::operator|(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::m_item&lt;Key, T, Base&gt;::order*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;item&gt;, ITEM_BY_ORDER, m_item, order* ); ^ boost/mpl/map/aux_/item.hpp:56:85: warning: friend declaration ‘char (&amp; boost::mpl::operator||(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*))[boost::mpl::m_item&lt;Key, T, Base&gt;::order:: value]’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( order_tag_, ORDER_BY_KEY, m_item, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:71:121: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; boost::mpl::operator/(const boost::mpl::m_mask&lt;Key, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;void_&gt;, VALUE_BY_KEY, m_mask, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:72:94: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; boost::mpl::operator|(const boost::mpl::m_mask&lt;Key, Base&gt;&amp;, boost::mpl::m_mask&lt;Key, Base&gt;::key_order_*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;void_&gt;, ITEM_BY_ORDER, m_mask, key_order_* ); </pre><p> CUDA 7.5 </p> <pre class="wiki">boost/mpl/map/aux_/item.hpp(54): warning: "boost::mpl::aux::type_wrapper&lt;T&gt; operator/(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(55): warning: "boost::mpl::aux::type_wrapper&lt;boost::mpl::pair&lt;Key, T&gt;&gt; operator|(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::next&lt;Base::order&gt;::type *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(56): warning: "char (&amp;operator||(const boost::mpl::m_item&lt;Key, T, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *))[boost::mpl::next&lt;Base::order&gt;::type::value]" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(71): warning: "boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; operator/(const boost::mpl::m_mask&lt;Key, Base&gt; &amp;, boost::mpl::aux::type_wrapper&lt;Key&gt; *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp(72): warning: "boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; operator|(const boost::mpl::m_mask&lt;Key, Base&gt; &amp;, boost::mpl::x_order_impl&lt;Base, Key&gt;::type *)" declares a non-template function -- add &lt;&gt; to refer to a template instance boost/mpl/map/aux_/item.hpp:54:109: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;Key&gt; boost::mpl::operator/(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;T&gt;, VALUE_BY_KEY, m_item, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:54:109: note: (if this is not what you intended, make sure the function template has already been declared and add &lt;&gt; after the function name here) boost/mpl/map/aux_/item.hpp:55:90: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;boost::mpl::pair&lt;T1, T2&gt; &gt; boost::mpl::operator|(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::m_item&lt;Key, T, Base&gt;::order*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;item&gt;, ITEM_BY_ORDER, m_item, order* ); ^ boost/mpl/map/aux_/item.hpp:56:85: warning: friend declaration ‘char (&amp; boost::mpl::operator||(const boost::mpl::m_item&lt;Key, T, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*))[boost::mpl::m_item&lt;Key, T, Base&gt;::order:: value]’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( order_tag_, ORDER_BY_KEY, m_item, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:71:121: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; boost::mpl::operator/(const boost::mpl::m_mask&lt;Key, Base&gt;&amp;, boost::mpl::aux::type_wrapper&lt;T&gt;*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;void_&gt;, VALUE_BY_KEY, m_mask, aux::type_wrapper&lt;Key&gt;* ); ^ boost/mpl/map/aux_/item.hpp:72:94: warning: friend declaration ‘boost::mpl::aux::type_wrapper&lt;mpl_::void_&gt; boost::mpl::operator|(const boost::mpl::m_mask&lt;Key, Base&gt;&amp;, boost::mpl::m_mask&lt;Key, Base&gt;::key_order_*)’ declares a non-template function [-Wnon-template-friend] BOOST_MPL_AUX_MAP_OVERLOAD( aux::type_wrapper&lt;void_&gt;, ITEM_BY_ORDER, m_mask, key_order_* ); </pre> Alex Grund <a.grund@…> https://svn.boost.org/trac10/ticket/11934 https://svn.boost.org/trac10/ticket/11934 Report #11933: warnings in 1.60 when compiling with nvcc Fri, 22 Jan 2016 09:01:55 GMT Mon, 30 May 2016 12:34:38 GMT <p> I'm compiling a larger project ( <a class="ext-link" href="https://github.com/ComputationalRadiationPhysics/picongpu/"><span class="icon">​</span>https://github.com/ComputationalRadiationPhysics/picongpu/</a> current dev) which uses boost heavily. However a lot of warnings are issued. Since we are quite agnostic to warnings (compiling with many warnings enabled and -Werror) this is troubling and it would be great, if those are fixed in future versions. If I remember correctly older versions (1.58) did not had them. </p> <p> CUDA 7.0 </p> <pre class="wiki">boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(49): warning: "cc" clobber ignored boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(65): warning: "cc" clobber ignored boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(91): warning: "cc" clobber ignored boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used </pre><p> CUDA 7.5 </p> <pre class="wiki">boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used </pre> Alex Grund <a.grund@…> https://svn.boost.org/trac10/ticket/11933 https://svn.boost.org/trac10/ticket/11933 Report #11932: Binary MPL transform on empty fusion sequences does not work Fri, 22 Jan 2016 00:24:07 GMT Mon, 16 Jul 2018 04:21:37 GMT <p> The following code does not compile with Boost 1.60 in C++11 mode. Tested with recent gcc and clang. </p> <pre class="wiki">#include &lt;boost/mpl/transform.hpp&gt; #include &lt;boost/fusion/container/vector.hpp&gt; #include &lt;boost/fusion/mpl.hpp&gt; struct predicate { template &lt;typename T, typename U&gt; struct apply { typedef T type; }; }; typedef boost::mpl::transform&lt; boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate&gt; ::type Result; </pre><p> The error is: </p> <pre class="wiki">In file included from test.cpp:2: In file included from boost/include/boost/fusion/container/vector.hpp:12: In file included from boost/include/boost/fusion/container/vector/vector.hpp:28: In file included from boost/include/boost/fusion/container/vector/detail/at_impl.hpp:12: boost/include/boost/fusion/container/vector/detail/value_at_impl.hpp:50:57: error: no matching function for call to 'value_at_impl' typedef typename mpl::identity&lt;decltype(seq::template value_at_impl&lt;N::value&gt;(boost::declval&lt;seq*&gt;()))&gt;::type::type type; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ boost/include/boost/fusion/container/vector/detail/value_of_impl.hpp:30:61: note: in instantiation of template class 'boost::fusion::extension::value_at_impl&lt;boost::fusion::vector_tag&gt;::apply&lt;boost::fusion::vector&lt;&gt;, mpl_::int_&lt;0&gt;&gt;' requested here typedef typename value_at_impl&lt;vector_tag&gt;::template apply&lt;vector, index&gt;::type type; ^ boost/include/boost/fusion/iterator/value_of.hpp:52:15: note: in instantiation of template class 'boost::fusion::extension::value_of_impl&lt;boost::fusion::vector_iterator_tag&gt;::apply&lt;boost::fusion::vector_iterator&lt;boost::fusion::vector&lt;&gt;, 0&gt;&gt;' requested here : extension::value_of_impl&lt;typename detail::tag_of&lt;Iterator&gt;::type&gt;:: ^ boost/include/boost/fusion/iterator/mpl/fusion_iterator.hpp:47:45: note: in instantiation of template class 'boost::fusion::result_of::value_of&lt;boost::fusion::vector_iterator&lt;boost::fusion::vector&lt;&gt;, 0&gt;&gt;' requested here typedef typename fusion::result_of::value_of&lt;Iterator&gt;::type type; ^ boost/include/boost/mpl/iterator_category.hpp:27:22: note: in instantiation of template class 'boost::mpl::fusion_iterator&lt;boost::fusion::vector_iterator&lt;boost::fusion::vector&lt;&gt;, 0&gt;&gt;' requested here typedef typename Iterator::category type; ^ boost/include/boost/mpl/pair_view.hpp:152:20: note: in instantiation of template class 'boost::mpl::iterator_category&lt;boost::mpl::fusion_iterator&lt;boost::fusion::vector_iterator&lt;boost::fusion::vector&lt;&gt;, 0&gt;&gt;&gt;' requested here typename iterator_category&lt;iter1_&gt;::type ^ boost/include/boost/mpl/aux_/has_tag.hpp:20:1: note: in instantiation of template class 'boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;' requested here BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false) ^ boost/include/boost/mpl/has_xxx.hpp:245:65: note: expanded from macro 'BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF' , boost::mpl::aux::type_wrapper&lt;BOOST_MSVC_TYPENAME U::name&gt;* = 0 \ ^ boost/include/boost/mpl/aux_/has_tag.hpp:20:1: note: while substituting deduced template arguments into function template 'test' [with U = boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;] BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false) ^ boost/include/boost/mpl/has_xxx.hpp:253:18: note: expanded from macro 'BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF' sizeof(gcc_3_2_wknd::test(static_cast&lt;t_*&gt;(0))) \ ^ boost/include/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ boost/include/boost/mpl/sequence_tag.hpp:112:30: note: in instantiation of template class 'boost::mpl::aux::has_tag&lt;boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;, mpl_::bool_&lt;false&gt;&gt;' requested here ::boost::mpl::aux::has_tag&lt;Sequence&gt;::value ^ boost/include/boost/mpl/O1_size.hpp:30:30: note: in instantiation of template class 'boost::mpl::sequence_tag&lt;boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;&gt;' requested here : O1_size_impl&lt; typename sequence_tag&lt;Sequence&gt;::type&gt; ^ boost/include/boost/mpl/fold.hpp:34:25: note: in instantiation of template class 'boost::mpl::O1_size&lt;boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;&gt;' requested here ::boost::mpl::O1_size&lt;Sequence&gt;::value ^ boost/include/boost/mpl/transform.hpp:75:7: note: in instantiation of template class 'boost::mpl::fold&lt;boost::mpl::pair_view&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;&gt;, boost::fusion::vector&lt;&gt;, boost::mpl::bind2&lt;boost::mpl::push_back&lt;mpl_::na, mpl_::na&gt;, mpl_::arg&lt;1&gt;, boost::mpl::bind2&lt;predicate, boost::mpl::bind1&lt;boost::mpl::first&lt;mpl_::na&gt;, mpl_::arg&lt;2&gt;&gt;, boost::mpl::bind1&lt;boost::mpl::second&lt;mpl_::na&gt;, mpl_::arg&lt;2&gt;&gt;&gt;&gt;&gt;' requested here : fold&lt; ^ boost/include/boost/mpl/transform.hpp:114:1: note: in instantiation of template class 'boost::mpl::aux::transform2_impl&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate, boost::mpl::back_inserter&lt;boost::fusion::vector&lt;&gt;&gt;&gt;' requested here BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(4, transform2) ^ boost/include/boost/mpl/aux_/inserter_algorithm.hpp:52:7: note: expanded from macro 'BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF' : if_&lt; has_push_back&lt; typename clear&lt;P1&gt;::type&gt; \ ^ boost/include/boost/mpl/eval_if.hpp:38:22: note: in instantiation of template class 'boost::mpl::transform2&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate, mpl_::na&gt;' requested here typedef typename f_::type type; ^ boost/include/boost/mpl/transform.hpp:138:1: note: in instantiation of template class 'boost::mpl::eval_if&lt;boost::mpl::or_&lt;boost::mpl::is_na&lt;predicate&gt;, boost::mpl::is_lambda_expression&lt;boost::fusion::vector&lt;&gt;&gt;, boost::mpl::not_&lt;boost::mpl::is_sequence&lt;boost::fusion::vector&lt;&gt;&gt;&gt;, mpl_::bool_&lt;false&gt;, mpl_::bool_&lt;false&gt;&gt;, boost::mpl::transform1&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate&gt;, boost::mpl::transform2&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate, mpl_::na&gt;&gt;' requested here AUX778076_TRANSFORM_DEF(transform) ^ boost/include/boost/mpl/transform.hpp:125:22: note: expanded from macro 'AUX778076_TRANSFORM_DEF' typedef typename eval_if&lt; \ ^ test.cpp:13:17: note: in instantiation of template class 'boost::mpl::transform&lt;boost::fusion::vector&lt;&gt;, boost::fusion::vector&lt;&gt;, predicate, mpl_::na&gt;' requested here boost::mpl::transform&lt; ^ boost/include/boost/fusion/container/vector/vector.hpp:275:30: note: candidate template ignored: could not match 'store' against 'vector' mpl::identity&lt;U&gt; value_at_impl(store&lt;N, U&gt;*); ^ </pre><p> Kohei has indicated on the mailing list <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> that this affects C++11 mode only, and seems to be a regression in 1.60. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="http://boost.2283326.n4.nabble.com/fusion-mpl-binary-MPL-transform-on-empty-fusion-vectors-tp4682832p4682837.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/fusion-mpl-binary-MPL-transform-on-empty-fusion-vectors-tp4682832p4682837.html</a> </p> zeratul976@… https://svn.boost.org/trac10/ticket/11932 https://svn.boost.org/trac10/ticket/11932 Report #11929: haversine method is inaccurate Thu, 21 Jan 2016 19:03:03 GMT Thu, 21 Jan 2016 19:03:36 GMT <p> The following code illustrates a problem with the "haversine" strategy for computing great circle distances. It computes the distance between two nearly antipodal points. The relative error in the result is 5e-9, much bigger than you should get with doubles. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry.hpp&gt;</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">bg</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">bg</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">point</span><span class="o">&lt;</span><span class="kt">double</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">bg</span><span class="o">::</span><span class="n">cs</span><span class="o">::</span><span class="n">spherical_equatorial</span><span class="o">&lt;</span><span class="n">bg</span><span class="o">::</span><span class="n">degree</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">pt</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="kt">double</span> <span class="n">pi</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">atan2</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span> <span class="n">bg</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">segment</span><span class="o">&lt;</span><span class="n">pt</span><span class="o">&gt;</span> <span class="n">seg</span><span class="p">;</span> <span class="n">bg</span><span class="o">::</span><span class="n">read_wkt</span><span class="p">(</span><span class="s">&quot;SEGMENT(0.000001 0, 180 0)&quot;</span><span class="p">,</span> <span class="n">seg</span><span class="p">);</span> <span class="kt">double</span> <span class="c1">// arc length (converted to degrees</span> <span class="n">dist</span> <span class="o">=</span> <span class="n">bg</span><span class="o">::</span><span class="n">distance</span><span class="p">(</span><span class="n">seg</span><span class="p">.</span><span class="n">first</span><span class="p">,</span> <span class="n">seg</span><span class="p">.</span><span class="n">second</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="mi">180</span><span class="o">/</span><span class="n">pi</span><span class="p">),</span> <span class="c1">// the correct distance (in degrees)</span> <span class="n">dist0</span> <span class="o">=</span> <span class="mi">180</span> <span class="o">-</span> <span class="mf">0.000001</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="p">(</span><span class="n">dist</span> <span class="o">-</span> <span class="n">dist0</span><span class="p">)</span> <span class="o">/</span> <span class="n">dist0</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;relative error &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">err</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> Running this code gives </p> <pre class="wiki">relative error 5.55556e-09 </pre><p> Discussion: </p> <ul><li>Surely it's a bad idea to embed the algorithm name "haversine" into the API. Computing great circle distances is really straightforward. Users shouldn't need to worry about the underlying method. Maybe "great_circle" is a better name. </li><li>The use of haversines made sense when the log haversine function was tabulated and you needed trigonometric identities involving products to facilitate computations with log tables. Nowadays there are better formulas. </li><li>As this example illustrates, it's subject to a loss of accuracy with antipodal points (it takes the arcsine of a number close to 1.) </li><li>A good formula to use is given in the Wikipedia article on <a class="ext-link" href="https://en.wikipedia.org/wiki/Great-circle_navigation#cite_note-2"><span class="icon">​</span>great-circle navigation</a> (this is the formula used by Vincenty in the spherical limit -- but it surely doesn't originate with him). </li></ul> Charles Karney <charles@…> https://svn.boost.org/trac10/ticket/11929 https://svn.boost.org/trac10/ticket/11929 Report #11927: optional_test_swap.cpp: In C++11 mode, std::swap should have a noexcept specification Wed, 20 Jan 2016 18:59:53 GMT Mon, 15 Feb 2016 09:04:09 GMT <p> Compiling libs/optional/test/optional_test_swap.cpp with Oracle Solaris Studio 12.5 in C++11 mode, we see the following error: "../libs/optional/test/optional_test_swap.cpp", line 239: Error: The prior declaration for std::swap&lt;optional_swap_test::class_whose_default_ctor_should_not_be_used&gt;(optional_swap_test::class_whose_default_ctor_should_not_be_used&amp;, optional_swap_test::class_whose_default_ctor_should_not_be_used&amp;) has an exception specification. "../libs/optional/test/optional_test_swap.cpp", line 245: Error: The prior declaration for std::swap&lt;optional_swap_test::class_without_default_ctor&gt;(optional_swap_test::class_without_default_ctor&amp;, optional_swap_test::class_without_default_ctor&amp;) has an exception specification. 2 Error(s) detected. </p> <p> See: <a href="http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5-cpp11-boost-bin-v2-libs-optional-test-optional_test_swap-test-sun-12-5_cpp11-release-threading-multi.html">http://www.boost.org/development/tests/develop/developer/output/oracle-intel-S2-12-5-cpp11-boost-bin-v2-libs-optional-test-optional_test_swap-test-sun-12-5_cpp11-release-threading-multi.html</a> </p> <p> In C++03, the std::swap template does not have an exception specification. In C++11, it has a noexcept specification. </p> <p> This seems to be a violation of the standard. 15.4[except.spec]p5: ===== If any declaration of a function has an exception-specification that is not a noexcept-specification allowing all exceptions, all declarations, including the definition and any explicit specialization, of that function shall have a compatible exception-specification. </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11927 https://svn.boost.org/trac10/ticket/11927 Report #11926: b2 returns an error code of 1 on Windows when using the --show-libraries option Wed, 20 Jan 2016 18:21:33 GMT Wed, 20 Jan 2016 18:21:33 GMT <p> b2.exe --show-libraries will return the correct information but script will exit with a return code of 1. The functionality of the --show-libraries option is correct but having a return code of 1 makes creating a script based on this output a little difficult. </p> wkurlancheek@… https://svn.boost.org/trac10/ticket/11926 https://svn.boost.org/trac10/ticket/11926 Report #11921: Bootstrap fails to run on windows 8.1 vc12 due to environment variable Mon, 18 Jan 2016 15:39:00 GMT Thu, 21 Jan 2016 22:43:46 GMT <p> I have noticed that on my system (win 8.1 vc12) I have an environment variable that causes bootstrap to fail due to the link subsystem set to windows by default, the environment variable is </p> <p> LINK=/SUBSYSTEM:WINDOWS,5.01 </p> <p> error is </p> <p> error LNK2019: unresolved external symbol _WinMain@16 referenced in function <span class="underline">_tmainCRTStartup </span></p> <p> The problem can be resolved by explicitly setting the link subsystem via compiler "link" switch "-link -subsystem:console" , since this is a link switch it can only be added at the end of the compile command i.e cannot add it to compiler flags </p> <p> I had to make this change to the build.bat and build.jam files by searching for the compiler commands and hardcoding this flag at the end of a compiler command. Since I don't know much about how to fix this in a more "non-hardcoded" way I thought I would log it so that the experts can fix it properly. </p> junaid1@… https://svn.boost.org/trac10/ticket/11921 https://svn.boost.org/trac10/ticket/11921 Report #11920: MSVC warning C4505 when po::bool_switch(&flag) is being used Mon, 18 Jan 2016 14:49:59 GMT Wed, 27 Jul 2016 04:12:01 GMT <p> When compiling a parameter definition like </p> <pre class="wiki">("wmi,w", po::bool_switch(&amp;_generateWmi), "Generate Wmi performance counters") </pre><p> with warning level 4, the follwing warnings are issued in program_options\detail\value_semantic.hpp: </p> <pre class="wiki">boost_1_60_0\boost\program_options\detail\value_semantic.hpp(17): warning C4505: 'boost::program_options::typed_value&lt;bool,char&gt;::name': unreferenced local function has been removed boost_1_60_0\boost\program_options\detail\value_semantic.hpp(158): warning C4505: 'boost::program_options::typed_value&lt;bool,char&gt;::xparse': unreferenced local function has been removed boost\program_options\detail\value_semantic.hpp(35): warning C4505: 'boost::program_options::typed_value&lt;bool,char&gt;::notify': unreferenced local function has been removed </pre> anton.lauridsen@… https://svn.boost.org/trac10/ticket/11920 https://svn.boost.org/trac10/ticket/11920 Report #11919: ERROR_BROKEN_PIPE != boost::system::errc::broken_pipe Mon, 18 Jan 2016 13:22:02 GMT Mon, 18 Jan 2016 13:22:02 GMT <p> Hi, </p> <p> This might be intentional behavior, but I find it strange the following assert fires: </p> <blockquote> <p> auto e = boost::system::error_code(ERROR_BROKEN_PIPE, boost::system::system_category()); assert(e == boost::system::errc::broken_pipe); </p> </blockquote> <p> There is a similar Connect issue regarding Microsoft's implementation: </p> <blockquote> <p> <a class="ext-link" href="https://connect.microsoft.com/VisualStudio/feedback/details/1856408"><span class="icon">​</span>https://connect.microsoft.com/VisualStudio/feedback/details/1856408</a> </p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/11919 https://svn.boost.org/trac10/ticket/11919 Report #11916: Problem with iterating foreach on in_edges of reverse_graph Sat, 16 Jan 2016 16:04:31 GMT Thu, 21 Jan 2016 22:43:25 GMT <p> Hello. got a problem with iterating all edges in in_edges by given vertex on reverse_graph. </p> pawel.kunio@… https://svn.boost.org/trac10/ticket/11916 https://svn.boost.org/trac10/ticket/11916 Report #11914: abort is called while boost::filesystem::copy tries to throw and exception Fri, 15 Jan 2016 08:14:49 GMT Wed, 25 Apr 2018 08:25:35 GMT <p> Im" using boost 1.60 with Visual Studio 2015 WIN64. Compiled boost simply by running: </p> <blockquote> <p> bootstrap.bat tools/build/b2 toolset=msvc-14.0 --build-type=minimal --link=static stage </p> </blockquote> <p> Now, I get a specific situation where abort is called while boost::filesystem::copy tries to throw an exception. Note that other boost::filesystem functions successfully throws. </p> <p> This code: </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; #include &lt;boost/filesystem/operations.hpp&gt; #include &lt;iostream&gt; int main( int argc, char* argv[] ) { // Stepping to folder: try { boost::filesystem::current_path("B:/dev/msvc2015/vobs_bci/public/tst/base/cppunit/utlfile"); std::cout &lt;&lt; "Worked" &lt;&lt; std::endl; // works OK } catch (...) { } // test throwing upon copy_directory because dource folder does not exist: try { boost::filesystem::copy_directory("s", "b"); } catch (...) { std::cout &lt;&lt; "Caught" &lt;&lt; std::endl; // works OK } // test throwing upon copy because target file already exists: try { boost::filesystem::copy("./test.h", "./copied.cpp"); // works boost::filesystem::copy("./test.h", "./copied.cpp"); // should throw and be caught } catch (...) { std::cout &lt;&lt; "Caught" &lt;&lt; std::endl; // never reached... } std::cout &lt;&lt; "Done" &lt;&lt; std::endl; return 0; } </pre><p> Outputs: </p> <pre class="wiki">Worked Caught </pre><p> And then aborts... </p> <p> Posted on SO first: <a class="ext-link" href="http://stackoverflow.com/questions/34793451/why-is-boostfilesystem-aborting-instead-of-throwing-an-exception"><span class="icon">​</span>http://stackoverflow.com/questions/34793451/why-is-boostfilesystem-aborting-instead-of-throwing-an-exception</a> </p> jpo38 <jean.porcherot@…> https://svn.boost.org/trac10/ticket/11914 https://svn.boost.org/trac10/ticket/11914 Report #11913: free functions should support StreamBuffer concept Thu, 14 Jan 2016 21:18:42 GMT Thu, 14 Jan 2016 21:18:42 GMT <p> Functions like <code></code><code>boost::asio::read</code><code></code> which take <code></code><code>boost::asio::basic_streambuf&lt;&gt;</code><code></code> as parameters should instead take the stream buffer by template argument. A new concept <code></code><code>StreamBuffer</code><code></code> should be added under "Type Requirements" in the reference. </p> <p> Rationale: boost free functions should work with user defined stream buffers that meet the requirements. The asio reference alludes to this functionality in the description for <code></code><code>basic_streambuf</code><code></code>: </p> <p> "The basic_streambuf class's public interface is intended to permit the following implementation strategies:..." </p> <p> However without support for types that meet the requirements, user defined stream buffers cannot provide alternate implementation strategies that work with asio free functions. </p> <p> Example of a user defined streambuf with a compatible interface: <a class="ext-link" href="https://github.com/ripple/rippled/blob/develop/src/beast/beast/asio/streambuf.h#L38"><span class="icon">​</span>https://github.com/ripple/rippled/blob/develop/src/beast/beast/asio/streambuf.h#L38</a> </p> vinnie.falco@… https://svn.boost.org/trac10/ticket/11913 https://svn.boost.org/trac10/ticket/11913 Report #11910: recursive_directory_iterator doesn't set end iterator properly when exception is thrown in increment() Wed, 13 Jan 2016 16:49:16 GMT Wed, 13 Jan 2016 16:50:01 GMT <p> in operations.hpp the increment function looks like this: </p> <pre class="wiki"> void increment() { BOOST_ASSERT_MSG(m_imp.get(), "increment of end recursive_directory_iterator"); m_imp-&gt;increment(0); if (m_imp-&gt;m_stack.empty()) m_imp.reset(); // done, so make end iterator } </pre><p> The problem occurs when you are incrementing using the ++ operator. If there is an exception, the stack is never checked to see if it is empty because the m_imp-&gt;increment() throws an exception. This leaves the recursive iterator in a bad state. </p> <p> I fixed it by doing this: </p> <pre class="wiki"> void increment() { BOOST_ASSERT_MSG(m_imp.get(), "increment of end recursive_directory_iterator"); try { m_imp-&gt;increment(0); } catch(filesystem_error e) { if (m_imp-&gt;m_stack.empty()) m_imp.reset(); // done, so make end iterator throw(e); } if (m_imp-&gt;m_stack.empty()) m_imp.reset(); // done, so make end iterator } </pre><p> but I'm not sure that is the right way to address this issue. </p> David Raphael <draphael@…> https://svn.boost.org/trac10/ticket/11910 https://svn.boost.org/trac10/ticket/11910 Report #11909: Bjam loses trailing dash sign in Cxxflags command line parameter Wed, 13 Jan 2016 00:55:48 GMT Wed, 13 Jan 2016 21:47:06 GMT <p> Building boost on Windows with MSVC++ 2015 toolset using this command line: </p> <p> b2 -a --toolset=msvc-14.0 --build-type=complete --with-serialization --stagedir=stage stage cxxflags=/Zc:threadSafeInit- </p> <p> as a result, cl.exe actually gets called with /Zc:threadSafeInit parameter (trailing '-' is lost), which reverses the meaning of the flag </p> <p> I tried "cxxflags=/Zc:threadSafeInit-", cxxflags="/Zc:threadSafeInit-" with the same result </p> Yuriy Martsynovskyy <captainsilver@…> https://svn.boost.org/trac10/ticket/11909 https://svn.boost.org/trac10/ticket/11909 Report #11908: mpi_process_group.cpp uses undefined class 'std::list' Wed, 13 Jan 2016 00:17:43 GMT Sun, 17 Jan 2016 19:56:15 GMT <p> Errors from building boost: </p> <p> .\boost/graph/distributed/detail/mpi_process_group.ipp(137) : error C2976: 'std::list' : too few template arguments </p> <blockquote> <p> .\boost/detail/container_fwd.hpp(134) : see declaration of 'std::list' </p> </blockquote> <p> .\boost/graph/distributed/detail/mpi_process_group.ipp(137) : error C2079: 'boost::graph::distributed::mpi_process_group::impl::sent_batches' uses undefined class 'std::list' </p> <p> There seems to be a problem where it is impossible to build the mpi components of boost graph etc. because of a lack of definition of list. I have reproduced this with just the file </p> <p> c:\Program Files\boost\boost_1_60_0\libs\graph_parallel\src\mpi_process_group.cpp. </p> <p> A forced include of </p> <p> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\list </p> <p> allows error free compilation. </p> <p> </p> terry lyons <tlyons@…> https://svn.boost.org/trac10/ticket/11908 https://svn.boost.org/trac10/ticket/11908 Report #11905: Exception "character conversion failed" when omitting argument Tue, 12 Jan 2016 14:11:09 GMT Tue, 27 Dec 2016 08:43:49 GMT <p> Hello, </p> <p> The minimal example I attached simply assigns the value of the optional parameter -i to an int. When the parameter is given (./a.out -i 42), the program exits normally. But if I omit the parameter (./a.out), then the exception "character conversion failed" is raised. It doesn't matter whether the option is "required" or not, or whether a default value is given. </p> <p> Configuration for which I found the bug: CentOS: 7.2 gcc: 4.8.5 boost: both 1.60.0 and 1.54.0 </p> <p> Configuration for which the bug does not occur: Linux Mint 17.2 gcc 4.8.4 boost 1.54.0 </p> <p> Regards, Thibaut Lepage </p> Thibaut Lepage <dourak@…> https://svn.boost.org/trac10/ticket/11905 https://svn.boost.org/trac10/ticket/11905 Report #11902: bind placeholder _1 is not defined Mon, 11 Jan 2016 12:08:47 GMT Sat, 23 Jan 2016 19:14:45 GMT <p> bind placeholder _1 is not defined in version 1.60.0 . </p> <p> Example </p> <pre class="wiki">#include &lt;boost/bind/bind.hpp&gt; int f(int a, int b) { return a + b; } int main(void) { int x = 1; int a = boost::bind(f, 5, _1)(x); return 0; } </pre><p> Compiler output: </p> <pre class="wiki">bind_error.cpp: In function ‘int main()’: bind_error.cpp:11:29: error: ‘_1’ was not declared in this scope int a = boost::bind(f, 5, _1)(x); ^ bind_error.cpp:11:29: note: suggested alternative: In file included from /home/projekte/libwinforwiss/boost/boost_1_60_0/boost/bind/bind.hpp:2247:0, from bind_error.cpp:1: /home/projekte/libwinforwiss/boost/boost_1_60_0/boost/bind/placeholders.hpp:46:38: note: ‘boost::placeholders::_1’ BOOST_STATIC_CONSTEXPR boost::arg&lt;1&gt; _1; </pre><p> Replacing _1 with boost::placeholders::_1 works for 1.60.0 , but not for 1.59.0. </p> zimmermann@… https://svn.boost.org/trac10/ticket/11902 https://svn.boost.org/trac10/ticket/11902 Report #11898: Input stream operator of a filesystem::path can't handle spaces Sat, 09 Jan 2016 20:40:57 GMT Sat, 09 Jan 2016 20:40:57 GMT <p> The operator&gt;&gt; in filesystem::path breaks at spaces as it would for a std::string, whereas spaces can be an integral part of a path. Concretely, the following code </p> <pre class="wiki">boost::filesystem::path p; std::istringstream("path/with spaces") &gt;&gt; p; std::cout &lt;&lt; p &lt;&lt; std::endl; </pre><p> prints "path/with" on OS X 10.11.2. I believe boost::io::quoted is supposed to take care of the spaces in the operator&gt;&gt; implementation </p> <pre class="wiki">is &gt;&gt; boost::io::quoted(str, static_cast&lt;Char&gt;('&amp;')); </pre><p> but this doesn't work on my system. (One of the weird points seems to be that it gets called with two arguments, but its declaration requires three and I can't find a default argument declaration.) Replacing the implementation with </p> <pre class="wiki">std::getline(is, str); </pre><p> seems to work for me, but I have a feeling that this bypasses some of the necessary logic in boost::io::quoted. </p> anonymous https://svn.boost.org/trac10/ticket/11898 https://svn.boost.org/trac10/ticket/11898 Report #11895: Strand service scheduling is hurting ASIO scalability Fri, 08 Jan 2016 04:38:26 GMT Sat, 09 Jan 2016 18:47:12 GMT <p> This problem will be explained best by walking through a scenario: </p> <p> I have an io_service being run with one thread per CPU core. The CPU has 4 cores. I also have a strand. I then post 10 one-second operations to the strand, and 30 one-second operations to the io_service. That's 40 cumulative seconds of work, and since there are 4 cores, that work should optimally take 10 seconds when performed in parallel. </p> <p> However, that's not what happens. The work in the io_service is given precedence over the work in the strand. So first, the 30 seconds of cumulative work in the io_service is performed in parallel which takes roughly 7.5 seconds (30 seconds / 4 cores). Only after that work is complete does the 10 seconds of work on the strand get performed. So it ends up taking a total of 17.5 seconds to do all the work because CPU time wasn't distributed optimally. </p> <p> If we think of the strand and the io_service as queues, what we have here is a queue within a queue. The outer queue's work can be performed in parallel, the inner queue's work is performed serially. It seems to make a whole lot of sense that when control reaches the inner queue, that queue should be serviced until it's empty. After all, there are other threads that can still service the outer queue while that's happening. The opposite is not true. By giving the outer queue priority, ASIO is crippling the concurrency potential of the work in the inner queue i.e. the strand. </p> <p> This simplified scenario is a very real performance problem for my companies server application. As far as I can tell, the only options for me to address the problem are to implement my own strand that doesn't give control back to the io_service until it's work queue is empty -or- put all of my strands onto one io_service and post all non-strand work to a second, separate io_service. </p> <p> I attached a sample application that demonstrates the scenario above, complete with timings and a visual print out of the order of operations. It also includes a stripped down strand implementation that demonstrates how the problem could be addressed. The application was built in Visual Studio 2013 with boost version 1.60.0. </p> Chris White <chriswhitemsu@…> https://svn.boost.org/trac10/ticket/11895 https://svn.boost.org/trac10/ticket/11895 Report #11891: boost::program_options::validation_error throws std::out_of_range when original_token argument is empty Wed, 06 Jan 2016 22:53:55 GMT Wed, 06 Jan 2016 22:53:55 GMT <p> The code below presents some bugs. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;stdexcept&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/program_options.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="k">namespace</span> <span class="n">po</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">program_options</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">try</span> <span class="p">{</span> <span class="c1">// Works OK!</span> <span class="c1">//throw po::validation_error(po::validation_error::invalid_option_value);</span> <span class="c1">// Doesn&#39;t work and throw std::out_of_range exception</span> <span class="c1">//throw po::validation_error(po::validation_error::invalid_option_value,</span> <span class="c1">//&quot;--test&quot;);</span> <span class="c1">// Doesn&#39;t work as above: std::out_of_range exception</span> <span class="c1">//throw po::validation_error(po::validation_error::invalid_option_value,</span> <span class="c1">//&quot;--test&quot;, &quot;&quot;);</span> <span class="c1">// Doesn&#39;t work properly. Although it doesn&#39;t throw out_of_range</span> <span class="c1">// exception, the value &quot;abc&quot; is no shown. The output is:</span> <span class="c1">// &quot;Error: the argument for option &#39;test&#39; is invalid&quot;</span> <span class="k">throw</span> <span class="n">po</span><span class="o">::</span><span class="n">validation_error</span><span class="p">(</span><span class="n">po</span><span class="o">::</span><span class="n">validation_error</span><span class="o">::</span><span class="n">invalid_option_value</span><span class="p">,</span> <span class="s">&quot;--test&quot;</span><span class="p">,</span> <span class="s">&quot;abc&quot;</span><span class="p">);</span> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span> <span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> <span class="p">}</span> <span class="k">catch</span><span class="p">(...)</span> <span class="p">{</span> <span class="n">cerr</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unknown error!&quot;</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> <span class="p">}</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> The first instantiation of <code>validation_error</code> works fine. The second and third version throws an <code>std::out_of_range</code> exception: </p> <pre class="wiki">terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 18446744073709551615) &gt; this-&gt;size() (which is 0) Abort trap: 6 </pre><p> The third version throws the correct exception, but doesn't show argument <code>original_token</code> (3rd argument in the <code>validation_error</code> constructor). The output is: </p> <pre class="wiki">Error: the argument for option 'test' is invalid </pre><p> where should be </p> <pre class="wiki">Error: the argument ('abc') for option 'test' is invalid </pre><p> Since the last bug is different from the first and second, may I open another ticket? </p> <p> This code has been tested using GCC 5.2.0 (GNU/Linux) and GCC 5.3.0 (Mac OS X), C++11, Boost 1.59, using the following command-line: </p> <pre class="wiki">g++ -std=c++11 -ggdb boost_program_options.cpp -o test -L/opt/local/lib -lboost_program_options </pre><p> I appreciate your help! </p> ce.andrade@… https://svn.boost.org/trac10/ticket/11891 https://svn.boost.org/trac10/ticket/11891 Report #11886: Deprecated header template_arity_spec.hpp included in several places Tue, 05 Jan 2016 05:47:17 GMT Fri, 16 Dec 2016 01:10:16 GMT <p> type_traits/detail/template_arity_spec.hpp says that it's deprecated but is still included in several places, mostly in function_types: </p> <p> grep -nr template_arity_spec.hpp . ./function_types/result_type.hpp:16:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/components.hpp:18:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_function_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/member_function_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/function_reference.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/function_arity.hpp:16:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/parameter_types.hpp:16:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/member_object_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_member_object_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_function.hpp:12:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_callable_builtin.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_member_pointer.hpp:12:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/function_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_nonmember_callable_builtin.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_member_function_pointer.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./function_types/is_function_reference.hpp:13:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./iostreams/detail/is_dereferenceable.hpp:13:# include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./type_traits/detail/bool_trait_def.hpp:21:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./type_traits/detail/size_t_trait_def.hpp:14:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./type_traits/detail/type_trait_def.hpp:14:#include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; ./detail/is_incrementable.hpp:7:# include &lt;boost/type_traits/detail/template_arity_spec.hpp&gt; </p> anonymous https://svn.boost.org/trac10/ticket/11886 https://svn.boost.org/trac10/ticket/11886 Report #11883: Incorporate 64 bit in DLL name Mon, 04 Jan 2016 12:56:24 GMT Tue, 06 Feb 2018 15:18:58 GMT <p> Currently the default DLL name on Windows consist of base, toolset, threading, runtime and boost version. However it does not include if build for 32 bit or 64 bit. This would be a welcome addition so that DLL's can live side by side. </p> <p> This was also discussed 10 years ago: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/bbv2-autolink-Re-boost-Naming-of-32-64-bit-libs-td2688206.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/bbv2-autolink-Re-boost-Naming-of-32-64-bit-libs-td2688206.html</a> </p> gast128 <gast128@…> https://svn.boost.org/trac10/ticket/11883 https://svn.boost.org/trac10/ticket/11883 Report #11882: Mistake in iterator facade documentation Sun, 03 Jan 2016 20:56:30 GMT Sun, 03 Jan 2016 20:56:30 GMT <p> Hi, </p> <p> In boost doc available here: <a href="http://www.boost.org/doc/libs/1_60_0/libs/iterator/doc/iterator_facade.html">http://www.boost.org/doc/libs/1_60_0/libs/iterator/doc/iterator_facade.html</a> </p> <p> In interoperability section there is a mistake in the example code: typedef impl::node_iterator&lt;node_base&gt; node_iterator; whereas it should be typedef node_iter&lt;node_base&gt; node_iterator; </p> <p> Same for const version. </p> <p> Kindest regards, </p> <p> Sylvain </p> sylvaincoulombel@… https://svn.boost.org/trac10/ticket/11882 https://svn.boost.org/trac10/ticket/11882 Report #11881: b2 returns code 256 exit code instead zero Fri, 01 Jan 2016 19:58:10 GMT Tue, 01 Mar 2016 04:34:02 GMT <p> Hello! </p> <p> I'm using b2 from boost_build1.5.8 and run it with flags: Command HOME=/root PATH=$PATH:/opt/fastnetmon/libraries/gcc520/bin /opt/fastnetmon/libraries/boost_build1.5.8/bin/b2 -j8 -sICU_PATH=/opt/fastnetmon/libraries/libicu_56_1 --build-dir=/tmp/fastnetmon.build.dir.DvDYep6dMm/boost_build_temp_directory_1_5_8 toolset=gcc-5.2 link=shared --without-test --without-python --without-wave --without-graph --without-coroutine --without-math --without-log --without-graph_parallel --without-mpi </p> <p> But I get 256 instead zero in case of correct exit. </p> <p> Could you fix this? </p> pavel.odintsov@… https://svn.boost.org/trac10/ticket/11881 https://svn.boost.org/trac10/ticket/11881 Report #11880: BGL adjacency_matrix_traits compiling failure Thu, 31 Dec 2015 03:46:37 GMT Thu, 12 Jan 2017 12:39:00 GMT <p> 'ice_not' has been deprecated in v1.60; however, it's still called in BGL adjacency_matrix.hpp: </p> <p> BOOST_STATIC_ASSERT(type_traits::ice_not&lt;(is_same&lt;Directed, bidirectionalS&gt;::value)&gt;::value); </p> jackymiao@… https://svn.boost.org/trac10/ticket/11880 https://svn.boost.org/trac10/ticket/11880 Report #11879: Incorrect use of reset cause unexpected impact on previous code segment Wed, 30 Dec 2015 08:40:42 GMT Tue, 05 Jan 2016 10:32:21 GMT <p> #include &lt;boost/scoped_ptr.hpp&gt; #include &lt;iostream&gt; </p> <p> int main() { </p> <blockquote> <p> boost::scoped_ptr&lt;int&gt; p{new int<a class="report" href="https://svn.boost.org/trac10/report/1">{1}</a>}; std::cout &lt;&lt; *p &lt;&lt; '\n'; std::cout &lt;&lt; p.get() &lt;&lt; '\n'; p.reset(new int<a class="report" href="https://svn.boost.org/trac10/report/2">{2}</a>); std::cout &lt;&lt; *p.get() &lt;&lt; '\n'; std::cout &lt;&lt; p.get() &lt;&lt; '\n'; </p> </blockquote> <p> </p> <blockquote> <p> p.reset((int *)4); <em>Problem: Because of this statement std::cout of above lines are not printing anything. When this line is commented the program works fine. I understand I have used reset function incorrectly but it should impact to the next statements but it is also impacting above statements too. Please explain the cause. </em></p> </blockquote> <p> </p> <blockquote> <p> std::cout &lt;&lt; *p.get() &lt;&lt; '\n'; std::cout &lt;&lt; p.get() &lt;&lt; '\n'; </p> </blockquote> <p> </p> <blockquote> <p> p.reset(); std::cout &lt;&lt; std::boolalpha &lt;&lt; static_cast&lt;bool&gt;(p) &lt;&lt; '\n'; </p> </blockquote> <p> } </p> anonymous https://svn.boost.org/trac10/ticket/11879 https://svn.boost.org/trac10/ticket/11879 Report #11876: Boost.Graph conflicts with Qt's foreach macro Mon, 28 Dec 2015 14:56:52 GMT Sun, 03 Jan 2016 16:46:19 GMT <p> This is a similar problem as <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6455"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6455</a>, where the Qt <code>foreach</code> macro conflicts with the <code>boost::foreach::tag</code> in file <code>/usr/include/boost/foreach.hpp</code>. </p> <p> This is a simple Qt example that reproduces the error (also supplied as an attachment): </p> <pre class="wiki">#include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;QCoreApplication&gt; #include &lt;fstream&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/graphviz.hpp&gt; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::ofstream f("filename.dot"); boost::write_graphviz( f, boost::adjacency_list&lt;&gt;() ); return a.exec(); } </pre><p> For the following Qt Creator project file: </p> <pre class="wiki">QT += core QT -= gui CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp </pre><p> The error given is: </p> <pre class="wiki">In file included from /usr/include/boost/graph/graphviz.hpp:35:0, from ../CppBoostGraphAndQtConflictQtConsole/main.cpp:5: /usr/include/boost/foreach.hpp:169:42: error: 'boost::Q_FOREACH::tag' has not been declared boost_foreach_is_lightweight_proxy(T *&amp;, BOOST_FOREACH_TAG_DEFAULT) { return 0; } </pre><p> The error does not occur if 'boost/graph/adjacency_list.hpp' is #included either before <code>QCoreApplication</code> or after. This is a workaround. </p> <p> I cannot see if this error is still present in later versions of Boost. If it is still present, I hope I have contributed in letting Boost.Graph and Qt work together seamlessly. </p> richel@… https://svn.boost.org/trac10/ticket/11876 https://svn.boost.org/trac10/ticket/11876 Report #11874: Compilation error with GCC4.6 in C++11 mode Sun, 27 Dec 2015 19:14:54 GMT Wed, 23 Aug 2017 16:05:57 GMT <p> <code>g++-4.6 -std=c++11</code> causes compilation error: </p> <pre class="wiki">../../../boost/exception/info.hpp: In instantiation of ‘boost::error_info&lt;boost::tag_original_exception_type, const std::type_info*&gt;’: ../../../boost/exception/detail/exception_ptr.hpp:95:32: instantiated from here ../../../boost/exception/info.hpp:66:5: error: ‘class boost::error_info&lt;boost::tag_original_exception_type, const std::type_info*&gt;’ has no member named ‘value_’ </pre><p> <code>BOOST_NOEXCEPT_IF(boost::is_nothrow_move_constructible&lt;value_type&gt;::value)</code> may help. </p> Antony Polukhin https://svn.boost.org/trac10/ticket/11874 https://svn.boost.org/trac10/ticket/11874 Report #11873: boost::filesystem does not work on windows when multiple processes access the same junction (directory) Sat, 26 Dec 2015 05:24:32 GMT Fri, 08 Jun 2018 17:11:06 GMT <p> Hi, </p> <p> I just upgraded to boost_1_60_0 ran into a regression on windows only, which I think is related to issue 9016. My windows tests are failing sporadically with the error: </p> <pre class="wiki">boost::filesystem::read_symlink: The process cannot access the file because it is being used by another process: "r:/data" </pre><p> Debugging this by comparing 1_60_0 to the earlier 1_56_0 I finally narrowed the difference to <code>operations.cpp: bool is_reparse_point_a_symlink</code>, which returns true in 1_60_0 but false in 1_56_0. The return value triggers <code>canonical</code> to call <code>detail::read_symlink</code>, which in turn ends up calling <code>::CreateFileW</code> with <code>dwShareMode</code> set to 0 so that the file/directory is locked and cannot be opened by another process. </p> <p> I am running my tests on LSF and many many processes end up accessing the same file / directory at the same time, thus leading the the above error message. </p> <p> I have not debugged enough to be able to suggest a fix or a work-around, but this bug currently prevents me from upgrading to boost_1_60_0. I am thinking that I can maybe revert the change to <code>is_reparse_point_a_symlink</code> in my installation so I can proceed with the upgrade, but I am worried that other changes have been made that depend on the current behavior. </p> <p> Thanks, </p> <p> Soren Soe </p> stsoe <stsoe@…> https://svn.boost.org/trac10/ticket/11873 https://svn.boost.org/trac10/ticket/11873 Report #11871: json_parser missing return statement in standard callback Wed, 23 Dec 2015 19:50:49 GMT Mon, 07 Mar 2016 06:30:45 GMT <p> new_tree in standard callbacks of json_parser misses return statement and therefore fails to compile depending on warning level. </p> ingo.loehken@… https://svn.boost.org/trac10/ticket/11871 https://svn.boost.org/trac10/ticket/11871 Report #11868: cannot build Boost using PGI compilers Wed, 23 Dec 2015 15:03:51 GMT Wed, 23 Dec 2015 15:03:51 GMT <p> Trying to build actual Boost release 1.60.0 using PGI compilers (15.10-0 64-bit) we ran into two ICEs in the 'pgCC' compiler. </p> <p> Asking the PGU support, we got: </p> <blockquote class="citation"> <blockquote> <p> 15.10 is the last release of pgCC/pgcpp. pgc++ will be the only PGI C++ compiler for the coming years. </p> </blockquote> </blockquote> <p> Huh, but 'pgCC' is hard-coded in 'boost_1_60_0/tools/build/src/tools/pgi.jam' file (line 28): </p> <blockquote class="citation"> <blockquote> <p> local l_command = [ common.get-invocation-command pgi : pgCC : $(command) ] ; </p> </blockquote> </blockquote> <p> Trying to change out 'pgCC' by 'pgc++' we got dozens of errors like this: </p> <blockquote class="citation"> <blockquote> <p> ------------------------------------------------------------------------------ pgi.compile.c++ bin.v2/libs/math/build/pgi/release/threading-multi/fminf.o </p> <blockquote> <p> "pgc++" -Kieee -fpic -fPIC -fast -Mx,8,0x10000000 -Minform=warn -DBOOST_ALL_NO_LIB=1 -DBOOST_MATH_TR1_DYN_LINK=1 -DNDEBUG </p> </blockquote> <p> -D<span class="underline">need_IOV_MAX -I"." -I"libs/math/src/tr1" -c -o "bin.v2/libs/math/build/pgi/release/threading-multi/fminf.o" "libs/math/build/../src/tr1/fminf.cpp" </span></p> </blockquote> <p> "./boost/config/compiler/gcc.hpp", line 152: catastrophic error: cannot open </p> <blockquote> <p> source file "cstddef" </p> </blockquote> <blockquote> <p> #include &lt;cstddef&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> 1 catastrophic error detected in the compilation of "libs/math/build/../src/tr1/fminf.cpp". </p> </blockquote> <hr /> <p> ... well, 'pgc++' is not 'pgCC'. </p> <p> Bottom line: </p> <ul><li>Boost cannot be build with PGI compilers; </li><li>Boost need an update to new PGI C++ copiler (if you wish to proceed to support PGI at all). </li></ul><p> Merry Christmas! </p> <ul><li>Paul </li></ul> anonymous https://svn.boost.org/trac10/ticket/11868 https://svn.boost.org/trac10/ticket/11868 Report #11863: Compilation failure when trying to use Boost Test Wed, 23 Dec 2015 01:21:59 GMT Mon, 21 Mar 2016 15:45:55 GMT <p> I have a program that uses Boost Test. It works under Boost 1.59.0. Under Boost 1.60.0 and Mac OS X I get compilation errors in mp_defer.hpp, which is ultimately included from boost/test/unit_test.hpp. </p> <p> The first compilation error is in line 28 of mp_defer.hpp </p> <p> static boost::true_type check(int); </p> <p> The error caret is at the start of "check" and the message is:<br /> </p> <p> Expected member name or ';' after declaration specifiers. </p> <p> The compiler is Apple LLVM 7.0 and the C++ dialect is C++14. </p> <p> I have not submitted a ticket to Boost before - apologies if I have missed something obvious. </p> gordon@… https://svn.boost.org/trac10/ticket/11863 https://svn.boost.org/trac10/ticket/11863 Report #11862: timer.hpp, commented line 14 (// #include <boost/chrono/chrono.hpp>) causes link error in (at least) MSVC Tue, 22 Dec 2015 18:44:03 GMT Fri, 27 May 2016 05:35:45 GMT <p> boost\timer\timer.hpp line 14 <em>#include &lt;boost/chrono/chrono.hpp&gt; causes unresolved externals uncommenting that line solves the issue </em></p> dmitry.kolomiets@… https://svn.boost.org/trac10/ticket/11862 https://svn.boost.org/trac10/ticket/11862 Report #11861: windows - Using boost thread crash winrt store app on start on Windows 10 Phone devices Tue, 22 Dec 2015 15:54:18 GMT Tue, 08 Mar 2016 07:23:47 GMT <p> When using boost thread in a Windows 10 (UAP) store app on a phone device, the app can't be started (it works well on desktop computers). </p> <p> How to reproduce the issue: </p> <ul><li>Build boost thread and date_time (date_time seems required to link) from the command line with: b2 --with-thread --with-date_time toolset=msvc-14.0 variant=debug link=static architecture=x86 windows-api=store cxxflags="/AIC:/winrt" Note that "C:/winrt" is a junction to "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\store\references" where platform.winmd is (since it seems required to build) </li><li>Create a Blank C++ Windows 10 Universal app using Visual studio 2015. </li><li>Edit Mainpage.xaml.cpp and add a call to boost::thread like: boost::thread workerThread(workerFunc); where "workerFunc" is whatever function you want. Add the required include file ( #include &lt;boost/thread/thread.hpp&gt; ). In the link option, add boost thread lib. </li><li>Now run the app in a phone emulator. </li><li>Result: the app will crash at load time. </li></ul><p> This happens on real phones with arm CPU too (with boost built with option "architecture=arm"). This issue can't be reproduced on desktop computers using the same app built for the emulator. Just run the app on your locale machine and it will work. </p> <p> Strange behavior we have found on Windows 10 phone emulator which may or may not help you in your investigation: </p> <ul><li>clean build the projet created above. </li><li>run it on the emulator =&gt; the app crashes at load time </li><li>comment the line with "boost::thread workerThread(workerFunc);" </li><li>run the app =&gt; the app doesn't crash and works as expected </li><li>uncomment the line, and run the app again (without rebuilding, just click on the "run" button) =&gt; the app starts, and the thread works. You are able to set a breakpoint and step into boost::thread constructor. </li><li>rebuild the project (clean build) and run the app: =&gt; the app crashes at load time. </li></ul><p> I can't reproduce this strange behavior on real phones with arm CPU. </p> Mathieu <mvillegas@…> https://svn.boost.org/trac10/ticket/11861 https://svn.boost.org/trac10/ticket/11861 Report #11860: Using iostreams causes lots of messages about deprecated header template_arity_spec.hpp Tue, 22 Dec 2015 14:27:34 GMT Tue, 27 Sep 2016 18:02:23 GMT <p> Using headers from iostreams or Spirit cause lots of messages like the following: </p> <pre class="wiki">develop/extern/share/boost-1.60/include/boost/type_traits/detail/template_arity_spec.hpp:13:83: note: #pragma message: NOTE: Use of this he ader (template_arity_spec.hpp) is deprecated In file included from develop/extern/share/boost-1.60/include/boost/iostreams/detail/is_dereferenceable.hpp:13:0, from develop/extern/share/boost-1.60/include/boost/iostreams/detail/resolve.hpp:26, from develop/extern/share/boost-1.60/include/boost/iostreams/detail/push.hpp:24, from develop/extern/share/boost-1.60/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:31, from develop/extern/share/boost-1.60/include/boost/iostreams/stream_buffer.hpp:22, from develop/extern/share/boost-1.60/include/boost/iostreams/stream.hpp:21 </pre><p> There seems to be no way how to suppress these messages. </p> martin.apel@… https://svn.boost.org/trac10/ticket/11860 https://svn.boost.org/trac10/ticket/11860 Report #11851: epoll_reactor::deregister_descriptor() release descriptor_data Thu, 17 Dec 2015 08:04:44 GMT Wed, 23 Dec 2015 13:29:04 GMT <p> epoll_reactor::deregister_descriptor() function puts descriptor_state object in its object_pool, so it can be reused by epoll_reactor::register_descriptor() immediately, but the descriptor_state object may be yet referenced somewhere, for example, epoll_reactor::run() puts it in op_queue&lt;operation&gt;, and be about to execute operation::complete() in task_io_service::do_run_one() function. it will make logic problems when the descriptor_state object is reused indeed in a third thread by calling epoll_reactor::allocate_descriptor_state(). </p> ljl <404140036@…> https://svn.boost.org/trac10/ticket/11851 https://svn.boost.org/trac10/ticket/11851 Report #11850: templated overload of boost::lockfree::spsc_queue::pop is a potential footgun Thu, 17 Dec 2015 03:11:24 GMT Thu, 17 Dec 2015 03:13:32 GMT <p> boost::lockfree::spsc_queue::pop has many overloads. I've seen code that to tries to select this one: </p> <pre class="wiki">template&lt;typename U&gt; boost::enable_if&lt; typename is_convertible&lt; T, U &gt;::type, bool &gt;::type pop(U &amp; ret); </pre><p> but, by mistake, selects this one: </p> <pre class="wiki">template&lt;typename OutputIterator&gt; boost::disable_if&lt; typename is_convertible&lt; T, OutputIterator &gt;::type, size_type &gt;::type pop(OutputIterator it); </pre><p> How? The problematic code looks like this: </p> <pre class="wiki">boost::spsc_queue&lt;Thing&gt; q; void consumer() { for (;;) { while (!q.empty()) { OtherThing foo = ... Thing bar; AnotherThing baz = ...; q.pop(&amp;bar); // do something with foo, bar, and baz } } } </pre><p> Note the &amp; operator, which will select the templated "pop to an output iterator" overload because pointers to non-const are output iterators, rather than lead to a compilation error (as one might expect). This is a nasty bug because when there isn't much pressure on the queue, and at most one element is present, the consumer will appear to work correctly. But if there is more than one element in the queue, popping all of them off will cause undefined behavior (probably overwriting the memory of foo or baz in the above example) that, speaking from experience, is pretty hard to nail down. </p> <p> My request is to deprecate this templated "pop to an iterator" overload, and make a new member function called pop_all with the same signature to replace it. This would help to prevent this mistake, and also make the API somewhat more consistent with the consume_one/consume_all functions. </p> tjakubowski@… https://svn.boost.org/trac10/ticket/11850 https://svn.boost.org/trac10/ticket/11850 Report #11849: -DBOOST_TYPEOF_EMULATION is not needed for scope_exit/run-vaseq test with Oracle studio 12.5 Thu, 17 Dec 2015 00:10:00 GMT Tue, 05 Jan 2016 18:16:02 GMT <p> -DBOOST_TYPEOF_EMULATION is no longer needed for scope_exit/run-vaseq tests for Oracle studio 12.5 </p> <p> solution: line 11-18 of Jamfile.v2 of scope_exit/test: 11:rule run-vaseq ( command target ) 12:{ 13: # Sun does not automatically detect type-of emulation mode (force it). 14: run $(target).cpp : : : &lt;toolset&gt;sun: &lt;define&gt;BOOST_TYPEOF_EMULATION ; 15: run $(target)_seq.cpp : : : &lt;toolset&gt;sun: &lt;define&gt;BOOST_TYPEOF_EMULATION ; 16: run $(target)_seq_nova.cpp : : : 17: &lt;toolset&gt;sun:&lt;define&gt;BOOST_TYPEOF_EMULATION ; 18} </p> <p> remove line 13: remove &lt;toolset&gt;sun:&lt;define&gt;BOOST_TYPEOF_EMULATION ; for $(target), $(target)_seq and $(target)_seq_nova tests. rule run-vaseq ( command target ) { </p> <blockquote> <p> run $(target).cpp : : : ; run $(target)_seq.cpp : : : ; run $(target)_seq_nova.cpp : : : ; </p> </blockquote> <p> } </p> angela.xie@… https://svn.boost.org/trac10/ticket/11849 https://svn.boost.org/trac10/ticket/11849 Report #11848: Win32 backend bug when do wide char convert to multi byte in boost::locale Wed, 16 Dec 2015 05:26:31 GMT Wed, 16 Dec 2015 11:47:20 GMT <p> The function wide_to_multibyte_non_zero in locale/src/encoding/wconv_codepage.ipp has bug. This function assume that when the codepage is CP_UTF7 or CP_UTF8, the substitute_ptr and subst_char_ptr will be 0. But, in x64 Windows 10, I use codepage 54936 get 87 error code after the first <a class="missing wiki">WideCharToMultiByte</a> called. This will make n is zero, and the second <a class="missing wiki">WideCharToMultiByte</a> call will make the program crash. </p> <p> In MSDN shipped with Visual Studio .NET 2003 it is said that parameters lpDefaultChar and lpUsedDefaultChar must be NULL not only for CP_UTF7 and CP_UTF8, but also for all codepages mentioned in notes for dwFlags parameter: </p> <blockquote> <p> 50220 50221 50222 50225 50227 50229 57002 through 57011 65000 (UTF-7) 42 (Symbol) </p> </blockquote> <blockquote> <p> It is still true as of Windows 8 &amp; 10: if you try to call </p> </blockquote> <p> BOOL bVal = FALSE; </p> <p> <a class="missing wiki">WideCharToMultiByte</a>(50220, 0, L"asdf", 4, NULL, 0, NULL, &amp;bVal); </p> <p> You'll get 0 with <a class="missing wiki">GetLastError</a> 87 (ERROR_INVALID_PARAMETER). </p> fyrestone@… https://svn.boost.org/trac10/ticket/11848 https://svn.boost.org/trac10/ticket/11848 Report #11847: reference typedef no longer available in parent class of iterator_facade Tue, 15 Dec 2015 17:52:04 GMT Tue, 15 Dec 2015 17:52:04 GMT <p> The iterator_facade defines the reference type. In Boost version 1.56 the parent class to the facade could make use of this type, from version 1.57 this is no longer possible. </p> <p> This is not difficult to work around, but does cause existing code to fail. </p> <p> I am using Visual Studio 2013 (12.0) </p> <p> See code below: </p> <p> #include &lt;boost/iterator/iterator_facade.hpp&gt; </p> <p> #include &lt;vector&gt; </p> <p> template&lt;class T&gt; </p> <p> class simple_iterator : public </p> <blockquote> <p> boost::iterator_facade&lt;simple_iterator&lt;T&gt;, T, boost::forward_traversal_tag&gt; </p> </blockquote> <p> { </p> <p> public: </p> <blockquote> <p> simple_iterator(const typename std::vector&lt;T&gt;::iterator&amp; i) : m_iter(i) {} </p> </blockquote> <p> private: </p> <blockquote> <p> friend boost::iterator_core_access; </p> </blockquote> <p> </p> <blockquote> <p> /* The commented line compiled in 1.56 but no longer so in 1.57 */ </p> </blockquote> <blockquote> <p> /* reference dereference() const { return *m_iter; } */ </p> </blockquote> <blockquote> <p> T&amp; dereference() const { return *m_iter; } </p> </blockquote> <blockquote> <p> bool equal(const simple_iterator&amp; that) { return m_iter == that.m_iter; } </p> </blockquote> <blockquote> <p> void increment() { ++m_iter; } </p> </blockquote> <blockquote> <p> typename std::vector&lt;T&gt;::iterator m_iter; </p> </blockquote> <p> }; </p> <p> int main() { </p> <blockquote> <p> std::vector&lt;int&gt; v = { 1, 2, 3 } ; </p> </blockquote> <blockquote> <p> simple_iterator&lt;int&gt; i(v.begin()); </p> </blockquote> <blockquote> <p> simple_iterator&lt;int&gt;::reference vi = *i; </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> alexhighviz@… https://svn.boost.org/trac10/ticket/11847 https://svn.boost.org/trac10/ticket/11847 Report #11846: to_iso[_extended]_string documentation Tue, 15 Dec 2015 16:29:18 GMT Tue, 15 Dec 2015 16:29:18 GMT <p> Hi, </p> <p> documentation (I use <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/posix_time.html#ptime_to_string">1.56.0</a> but it's also in latest) says that output format of <code>to_iso_extended_string(ptime)</code> (and it also applies to <code>to_iso_string(ptime)</code>) is <code>YYYY-MM-DDTHH:MM:SS,fffffffff</code> (and <code>YYYYMMDDTHHMMSS,fffffffff</code>). But my output is for example </p> <pre class="wiki">namespace pt = boost::posix_time; std::cout &lt;&lt; pt::to_iso_extended_string(pt::time_from_string("2002-01-31 10:00:01.123456")) &lt;&lt; std::endl; // output: 2002-01-31T10:00:01.123456 std::cout &lt;&lt; pt::to_iso_string(pt::time_from_string("2002-01-31 10:00:01.123456")) &lt;&lt; std::endl; // output: 20020131T100001.123456 </pre><p> Is it bug in documentation or did I miss something? </p> anonymous https://svn.boost.org/trac10/ticket/11846 https://svn.boost.org/trac10/ticket/11846 Report #11843: shared_ptr hash support doesn't work for shared_ptr<T[]> or shared_ptr<T[N]> Sun, 13 Dec 2015 03:07:33 GMT Tue, 15 Dec 2015 17:15:30 GMT <p> Repro: </p> <pre class="wiki">#include &lt;boost/functional/hash.hpp&gt; #include &lt;boost/shared_ptr.hpp&gt; int main(){ boost::shared_ptr&lt;int[2]&gt; a; boost::shared_ptr&lt;int[]&gt; b; boost::hash_value(a); boost::hash_value(b); } </pre><p> The <code>hash_value</code> overload for <code>shared_ptr&lt;T&gt;</code> returns <code>boost::hash&lt; T* &gt;()( p.get() )</code>. It should presumably return <code>boost::hash&lt;typename shared_ptr&lt;T&gt;::element_type*&gt;()(p.get())</code> instead. </p> rs2740@… https://svn.boost.org/trac10/ticket/11843 https://svn.boost.org/trac10/ticket/11843 Report #11839: JSON parser does not work with "boost::any" as value type Thu, 10 Dec 2015 22:46:12 GMT Thu, 10 Dec 2015 22:46:12 GMT <p> I have a property_tree specialization with boost::any as value type, as such: </p> <p> typedef boost::property_tree::basic_ptree&lt;std::string, boost::any&gt; AnyPTree; </p> <p> With the help of a set of "translator_between" specializations, and an operator </p> <p> template &lt;class CharT, class Traits, class Allocator&gt; boost::any&amp; operator += ( </p> <blockquote> <p> boost::any&amp; lhs, const std::basic_string&lt;CharT, Traits, Allocator&gt;&amp; rhs ); </p> </blockquote> <p> I was able to use all the parsers in property_tree in boost 1.58. However the new JSON parser in 1.59 assumes that the value type of the property_tree is string-like and does not compile for my specialization anymore (standard_callbacks is the offending code). </p> milacher@… https://svn.boost.org/trac10/ticket/11839 https://svn.boost.org/trac10/ticket/11839 Report #11838: contribution: Yen k-shortest paths Thu, 10 Dec 2015 21:06:02 GMT Wed, 18 Jul 2018 20:58:48 GMT <p> I wanna contribute the implementation of the Yen k-shortest paths algorithm. Please find attached the implementation and the unit test. </p> Irek Szcześniak <irek@…> https://svn.boost.org/trac10/ticket/11838 https://svn.boost.org/trac10/ticket/11838 Report #11837: Failed to build Boost.Build engine Thu, 10 Dec 2015 01:40:05 GMT Sat, 13 Feb 2016 22:26:26 GMT <p> When attempting to "bootstrap.bat" I'm getting following error: </p> <pre class="wiki">Failed to build Boost.Build engine. Please consult bootstrap.log for further diagnostics. </pre><p> And in bootstrap.log: </p> <pre class="wiki">builtins.c(1887) : error C2065: 'FSCTL_GET_REPARSE_POINT' : undeclared identifier builtins.c(1891) : error C2065: 'IO_REPARSE_TAG_SYMLINK' : undeclared identifier </pre> alexey.trenikhin+boost@… https://svn.boost.org/trac10/ticket/11837 https://svn.boost.org/trac10/ticket/11837 Report #11836: cannot build filesystem, utility/enable_if has been moved to core Wed, 09 Dec 2015 14:35:42 GMT Tue, 22 Dec 2015 17:05:35 GMT <p> Hello, </p> <p> Even current develop cannot be built because it depends on a state of the utility modules that invalid at least since 2014 Aug. <a class="ext-link" href="https://github.com/boostorg/filesystem/blob/bb5a0ff09da2d25a462f9f96fc09e9a8bad865e3/include/boost/filesystem/path_traits.hpp"><span class="icon">​</span>https://github.com/boostorg/filesystem/blob/bb5a0ff09da2d25a462f9f96fc09e9a8bad865e3/include/boost/filesystem/path_traits.hpp</a> </p> <p> <a class="ext-link" href="https://github.com/boostorg/utility/commit/492fd7f091c73494fb0062de586adc792f97c141"><span class="icon">​</span>https://github.com/boostorg/utility/commit/492fd7f091c73494fb0062de586adc792f97c141</a> </p> <p> Maybe it's a documentation bug, as I cannot find any information on how to resolve this problem. </p> <p> Thank you for considering this bug report! </p> pas@… https://svn.boost.org/trac10/ticket/11836 https://svn.boost.org/trac10/ticket/11836 Report #11834: Undefined symbols for architecture x86_64: Tue, 08 Dec 2015 15:35:43 GMT Tue, 22 Dec 2015 17:06:57 GMT <p> I am trying to use boost chromo library inside Mac Xcode 7.1.1. I am able to compile header only project and I have been able to use the regex library. But with the chrono library I receive the falling error: </p> <p> Undefined symbols for architecture x86_64: </p> <blockquote> <p> "boost::system::system_category()", referenced from: </p> <blockquote> <p> <span class="underline">_cxx_global_var_init2 in main.o </span></p> </blockquote> <p> "boost::system::generic_category()", referenced from: </p> <blockquote> <p> <span class="underline">_cxx_global_var_init in main.o </span>_cxx_global_var_init1 in main.o </p> </blockquote> </blockquote> <p> ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) </p> banslug2001@… https://svn.boost.org/trac10/ticket/11834 https://svn.boost.org/trac10/ticket/11834 Report #11828: net/if.h and linux/if.h incompatible for latest boost and centos 6.6 Fri, 04 Dec 2015 06:07:54 GMT Fri, 04 Dec 2015 06:07:54 GMT <p> Use the following code to repro: #include &lt;linux/if.h&gt; #include &lt;net/if.h&gt; int main() { return 0; } </p> <p> This gives error: In file included from test.cpp:2: /usr/include/linux/if.h:187: error: field ‘ifru_addr’ has incomplete type /usr/include/linux/if.h:188: error: field ‘ifru_dstaddr’ has incomplete type /usr/include/linux/if.h:189: error: field ‘ifru_broadaddr’ has incomplete type /usr/include/linux/if.h:190: error: field ‘ifru_netmask’ has incomplete type /usr/include/linux/if.h:191: error: field ‘ifru_hwaddr’ has incomplete type In file included from test.cpp:3: /usr/include/net/if.h:45: error: expected identifier before numeric constant /usr/include/net/if.h:45: error: expected ‘}’ before numeric constant /usr/include/net/if.h:45: error: expected unqualified-id before numeric constant /usr/include/net/if.h:82: error: expected declaration before ‘}’ token </p> <p> Now, net/if.h is included in many boost headers. We are not able to use both linux/if.h and a boost library in our project for that reason. </p> saima8788@… https://svn.boost.org/trac10/ticket/11828 https://svn.boost.org/trac10/ticket/11828 Report #11824: [spirit][qi] skip_flag::dont_postskip not working as expected Sat, 28 Nov 2015 08:56:53 GMT Sat, 28 Nov 2015 08:56:53 GMT <p> Assuming we want to create a primitive which checks if the skip parser is called at least once before the next terminal we need to disable post-skipping for this purpose. However, disabling post-skipping alone will not work if the previous parser failed on a input because all terminals do not revert to the position before the skip parser but just after it. A workaround could be add an and-prediction in front of each terminal but this makes the code unreadable. Attached is a possible patch for spirit qi which changes all terminals to revert to the position before the skip parser in case of a mismatch. Note: This might introduce some performance regression. </p> <p> Example: </p> <pre class="wiki">string input("a b"); string::const_iterator first(input.begin()), last(input.end()); phrase_parse(first, last, ((+char_("a", "z")) &gt; no_skip[&amp;blank]) &gt;&gt; char_, blank, dont_postskip); </pre><p> This will fail to match in the current implementation even though it looks perfectly fine. </p> Daniel Starke <daniel.f.starke@…> https://svn.boost.org/trac10/ticket/11824 https://svn.boost.org/trac10/ticket/11824 Report #11823: Exception safety problems in the epoll based implementation of async_accept Thu, 26 Nov 2015 10:08:59 GMT Mon, 09 May 2016 22:31:42 GMT <p> The implementation of boost::asio::ip::tcp::acceptor::async_accept fails to handle memory allocation failures in certain conditions when using the epoll based reactor. </p> <p> The attached program (test_program.zip) reproduces the failures. They reproduce with Boost 1.59 as well as 1.57 when run on a Linux machine (and using the epoll based implementation). </p> <p> Examples of runs of the test program compiled with GCC 6.0 and Boost 1.59 can be found on the Wandbox online compiler (links in the attached wandbox.txt file). </p> <p> Attached is also a patch with a tentative fix that highlights the two places that cause the test program to fail. Even though it was created against the code from Boost 1.57, it applies to the code from 1.59. </p> Sorin Fetche <sorin.fetche@…> https://svn.boost.org/trac10/ticket/11823 https://svn.boost.org/trac10/ticket/11823 Report #11816: can not move asio socket on vs2010 Mon, 23 Nov 2015 09:25:37 GMT Sun, 06 Dec 2015 09:14:12 GMT <p> io_service svc; tcp::socket sk(svc); auto sk2 = std::move(sk); </p> <p> compile failed on vs2010,and I tried on vs2012 it works. </p> luguanyu <luguanyu1234@…> https://svn.boost.org/trac10/ticket/11816 https://svn.boost.org/trac10/ticket/11816 Report #11814: Add Boost.Convert to the Trac Sat, 21 Nov 2015 20:34:41 GMT Sun, 03 Jan 2016 16:51:51 GMT viboes https://svn.boost.org/trac10/ticket/11814 https://svn.boost.org/trac10/ticket/11814 Report #11813: Microseconds get cut off in ISO string representation if all zero (posix_time::to_iso_string) Sat, 21 Nov 2015 14:33:16 GMT Sat, 21 Nov 2015 20:30:32 GMT <pre class="wiki">#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; int main() { boost::posix_time::ptime timestamp = boost::posix_time::microsec_clock::local_time(); std::string sTime( boost::posix_time::to_iso_string( timestamp )); std::cout &lt;&lt; "Timestamp: " &lt;&lt; sTime &lt;&lt; std::endl; return 0; } </pre><p> This outputs for example: <em>Timestamp: 20151121T141522.999982</em> </p> <p> Now, if microseconds are all zero the output I'd expected was<br /> <em>Timestamp: 20151121T141523.000000</em><br /> but actually is<br /> <em>Timestamp: 20151121T141523</em> </p> <p> Now, when trying to cut off the microseconds fraction (for whatever reason) by doing </p> <pre class="wiki">std::string sFraction = sTime.substr( 16, 21 ); </pre><p> you may end up with the following error: </p> <pre class="wiki">Something unexpected happened: 'basic_string::substr: __pos (which is 16) &gt; this-&gt;size() (which is 15)' </pre><p> I saw this behavior in Boost 1.55.0, but when I checked the current sources online, I couldn't see any difference, so I think this would occur in the current version, too. </p> Marcel Glacki <boost-trac@…> https://svn.boost.org/trac10/ticket/11813 https://svn.boost.org/trac10/ticket/11813 Report #11810: privilege __sun over sun for strict ISO compilers Sat, 21 Nov 2015 06:18:19 GMT Sun, 22 Nov 2015 13:00:30 GMT <p> when compilers use strict ISO options such as -std=c++11 they only generate for SunOS the macro '<code>__sun</code>' and not '<code>sun</code>'. </p> <p> I propose minimally the attached patches, although there seems to be a bit of overkill with tests involving both in the source tree. </p> <p> That is to say, the documented way to test is something like the following: </p> <pre class="wiki">#ifdef __sun /* this is SunOS */ #endif #if defined(__sun) &amp;&amp; defined(__SVR4) /* this in particular is Solaris */ #endif </pre> Richard PALO <richard@…> https://svn.boost.org/trac10/ticket/11810 https://svn.boost.org/trac10/ticket/11810 Report #11809: Add SSL Renegotiate handshake support to boost::asio::ssl Fri, 20 Nov 2015 11:13:43 GMT Tue, 22 Aug 2017 08:59:53 GMT <p> Currently the boost::asio::ssl::stream handshake can call either SSL_accept or SSL_connect for initial connection handshaking. To be able to do a SSL renegotiation handshake SSL_do_hanshake needs() to be called. </p> <p> I have attached a patch that adds a new boost::asio::ssl::hanshake_type called "renegotiate" and the needed support in the ssl::engine to do a proper renegotiation handshake. </p> <p> Doing a server side renegotiate to request the client certificate can be done in the following way: </p> <div class="wiki-code"><div class="code"><pre> <span class="cp">#include</span> <span class="cpf">&lt;boost/asio.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/asio/ssl.hpp&gt;</span><span class="cp"></span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">stream</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">socket</span><span class="o">&gt;</span> <span class="n">ssl_socket</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="c1">// For atoi.</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="p">;</span> <span class="kt">unsigned</span> <span class="kt">short</span> <span class="n">port</span> <span class="o">=</span> <span class="n">atoi</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span> <span class="n">io_service</span> <span class="n">io_service</span><span class="p">;</span> <span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">acceptor</span> <span class="n">acceptor</span><span class="p">(</span><span class="n">io_service</span><span class="p">,</span> <span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">endpoint</span><span class="p">(</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">v4</span><span class="p">(),</span> <span class="n">port</span><span class="p">));</span> <span class="n">ssl</span><span class="o">::</span><span class="n">context</span> <span class="n">ctx</span><span class="p">(</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">sslv23</span><span class="p">);</span> <span class="n">ssl_socket</span> <span class="n">sock</span><span class="p">(</span><span class="n">io_service</span><span class="p">,</span> <span class="n">ctx</span><span class="p">);</span> <span class="n">acceptor</span><span class="p">.</span><span class="n">accept</span><span class="p">(</span><span class="n">sock</span><span class="p">.</span><span class="n">lowest_layer</span><span class="p">());</span> <span class="n">sock</span><span class="p">.</span><span class="n">handshake</span><span class="p">(</span><span class="n">ssl_socket</span><span class="o">::</span><span class="n">server</span><span class="p">);</span> <span class="c1">// read some data</span> <span class="n">sock</span><span class="p">.</span><span class="n">set_verify_mode</span><span class="p">(</span><span class="n">ssl</span><span class="o">::</span><span class="n">verify_peer</span><span class="p">);</span> <span class="n">sock</span><span class="p">.</span><span class="n">handshake</span><span class="p">(</span><span class="n">ssl_socket</span><span class="o">::</span><span class="n">renegotiate</span><span class="p">);</span> <span class="c1">// continue using the connection</span> <span class="p">}</span> </pre></div></div> georgid@… https://svn.boost.org/trac10/ticket/11809 https://svn.boost.org/trac10/ticket/11809 Report #11808: ip::address::from_string() is not crossplatform Fri, 20 Nov 2015 09:00:38 GMT Fri, 20 Nov 2015 09:02:10 GMT <p> On Windows WSAStringToAddressA() accepts A.B.C.D and A.B.C.D:PORT, but on linux inet_pton only accepts A.D.B.D (:PORT causes an error). Therefore, Windows users don't have an exception that linux users have. </p> reinterpret.alexey@… https://svn.boost.org/trac10/ticket/11808 https://svn.boost.org/trac10/ticket/11808 Report #11807: sun.jam needs updating when creating shared libraries compiled with -std=[c++03,c++11] mode. Thu, 19 Nov 2015 18:56:33 GMT Thu, 19 Nov 2015 19:03:24 GMT <p> When compiling with Oracle Solaris Studio compilers in -std=[c++03,c++11] modes, several python tests fail with the following error: </p> <p> <a class="missing wiki">ImportError</a>: ld.so.1: isapython2.6: fatal: relocation error: file /export/home/boost_regression_develop/boost_sparc-S2_cpp11/results/boost/bin.v2/libs/python/test/injected.test/sun-next_cpp11/ release/threading-multi/injected_ext.so: symbol _ZTIv: referenced symbol not found </p> <p> These errors occur when any libraries that are linked into the application that has no C++11 runtime already linked in. </p> <p> When creating shared libraries, for line 159 in the sun.jam file </p> <p> 157 actions link.dll bind LIBRARIES 158 { 159 "$(CONFIG_COMMAND)" $(OPTIONS) -L"$(LINKPATH)" -R"$(RPATH)" -o "$(&lt;)" -h$(&lt;<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>:D=) -G $(STDLIBOPT) "$(&gt;)" "$(LIBRARIES)" -Bdynamic -l$(FINDLIBS-SA) -Bstatic -l$(FINDLIBS-ST) -B$(LINK-RUNTIME) 160 } </p> <p> replacing '-G' with '-G -library=stdcpp,CrunG3' </p> <p> seems to resolve the issue. </p> <p> I will submit a PR shortly and specify the PR# to this ticket for reference. If interested, here is the archive on the Boost developers build regarding this issue. <a class="ext-link" href="http://lists.boost.org/boost-build/2015/11/28379.php"><span class="icon">​</span>http://lists.boost.org/boost-build/2015/11/28379.php</a> </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11807 https://svn.boost.org/trac10/ticket/11807 Report #11805: building boost.python 1.56+ with msvc Thu, 19 Nov 2015 10:08:35 GMT Sat, 21 Nov 2015 20:32:55 GMT <p> Hello! </p> <p> First, I wanted to thanks you for Boost.Python which is amazing once you succeed to use it <sup></sup> </p> <p> I've tried for at least a week to make it works with MSVC (I tried 2010 and 2015). As stated in <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/10799"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/10799</a> there is several problems not all easy to find. But the last one is not logged, and I've finally found how to fix it yesterday \o/ </p> <p> Thanks to this post on stackoverflow: <a class="ext-link" href="http://stackoverflow.com/a/33600073"><span class="icon">​</span>http://stackoverflow.com/a/33600073</a> (thanks a lot to Ralph even if I don't know him) </p> <p> just do the magic, and it works oO </p> <p> to summarize : </p> <ul><li>start by removing the line 1472 "toolset.flags msvc.link.dll LINKFLAGS &lt;suppress-import-lib&gt;true : /NOENTRY ;" </li><li>replace the lines 1351 to 1356 with </li></ul><pre class="wiki"> generators.register [ new msvc-linking-generator msvc.link.dll : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB : SHARED_LIB IMPORT_LIB : &lt;toolset&gt;msvc ] ; </pre><p> This bug occurs in 1.59.0 (version that I use), but is apparently here since 1.56 (said in the post) </p> <p> If this could be fixed in the next version of Boost, that would be great! </p> <p> First bug report on Boost, so don't hesitate to ask for more details if needed. </p> remi.ducceschi@… https://svn.boost.org/trac10/ticket/11805 https://svn.boost.org/trac10/ticket/11805 Report #11804: Contribution: edge-disjoint k-shortest paths Wed, 18 Nov 2015 22:04:36 GMT Mon, 14 Mar 2016 21:29:25 GMT <p> Hi, </p> <p> I want to contribute a function that calculates edge-disjoint k-shortest paths. </p> <p> The algorithm searches for a shortest path. Then it disables the edges of the shortest path, and repeats the search. On so on, until no path can be found. </p> <p> I'm attaching the source file and a unit test. </p> <p> There are two things that bug me in the code: </p> <ul><li>the predecessor map is hardcoded as: </li></ul><blockquote> <p> boost::vector_property_map&lt;edge_descriptor&gt; pred(num_vertices(g)); </p> </blockquote> <blockquote> <p> while perhaps it should depend on the graph type, </p> </blockquote> <ul><li>the formatting of this call is ugly: </li></ul><blockquote> <p> boost::dijkstra_shortest_paths </p> <blockquote> <p> (fg, s, </p> <blockquote> <p> visitor(make_dijkstra_visitor(record_edge_predecessors(pred, on_edge_relaxed())))); </p> </blockquote> </blockquote> </blockquote> <p> I would appreciate it, if someone could give me a hint on these two problems. </p> <p> I would also appreciate very much any comments and improvements. </p> <p> Thanks! </p> Irek Szcześniak <irek@…> https://svn.boost.org/trac10/ticket/11804 https://svn.boost.org/trac10/ticket/11804 Report #11799: boost::interprocess::offset_ptr not compatible with C++11 std::pointer_traits Tue, 17 Nov 2015 14:39:29 GMT Tue, 17 Nov 2015 14:39:29 GMT <p> offset_ptr defines its rebind member as: </p> <pre class="wiki"> template &lt;class U&gt; struct rebind { typedef offset_ptr&lt;U, DifferenceType, OffsetType, OffsetAlignment&gt; other; }; </pre><p> but std::pointer_traits&lt;T&gt;::rebind is defined as: </p> <pre class="wiki"> Ptr::rebind&lt;U&gt; if exists, otherwise Template&lt;U, Args...&gt; if Ptr is a template instantiation Template&lt;T, Args...&gt; </pre><p> This means that offset_ptr's rebind should just be an alias template rather than a struct with an ::other member. </p> Chris Clearwater <chris@…> https://svn.boost.org/trac10/ticket/11799 https://svn.boost.org/trac10/ticket/11799 Report #11798: Implementation of boost::shared_mutex on POSIX is suboptimal Mon, 16 Nov 2015 12:52:52 GMT Wed, 13 Dec 2017 02:08:35 GMT <p> The current (as of boost 1.59) implementation of boost::shared_mutex for 'pthread' is pretty suboptimal as it's using a heavyweight mutex to guard the internal mutex state. This is more evident when shared locks are used to guard state whose access concurrency is high, due to contention on the mutex state lock (in these cases, the shared mutex is effectively exclusive). In comparison, the 'win32' implementation uses lightweight spinlocks underneath. </p> <p> There are a couple options to fix this for 'pthread', e.g. using a spinlock or leveraging pthreads_rwlock. I'm happy to provide with an initial patch for this. </p> alex@… https://svn.boost.org/trac10/ticket/11798 https://svn.boost.org/trac10/ticket/11798 Report #11797: The __idiv__ operator was replaced with __itruediv__ and __ifloordiv__ in Python 3 Mon, 16 Nov 2015 10:28:50 GMT Mon, 16 Nov 2015 10:29:25 GMT <p> <code>def(self /= double())</code> always creates a <code>__idiv__</code> operator, even in Python 3, which does not support it. Python 3 distinguishes between <code>__itruediv__</code> and <code>__ifloordiv__</code>, see <a class="ext-link" href="https://www.python.org/download/releases/3.0/whatsnew/"><span class="icon">​</span>https://www.python.org/download/releases/3.0/whatsnew/</a> </p> lahwaacz <j.l.k@…> https://svn.boost.org/trac10/ticket/11797 https://svn.boost.org/trac10/ticket/11797 Report #11794: SSL context and/or stream valgrind reports conflicting access in libcrypto.so Fri, 13 Nov 2015 10:03:42 GMT Sat, 21 Nov 2015 20:38:23 GMT <p> Creating SSL context and/or stream simultaneously from diferent threads, using io_service that has deferred handlers, or already running, makes valgrind drd tool reporting conflicting accesses in lybcrypto.so </p> <pre class="wiki">#include &lt;string&gt; #include &lt;iostream&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/thread.hpp&gt; #include &lt;boost/asio/ssl.hpp&gt; #include "openssl/opensslconf.h" #include &lt;stdio.h&gt; #include &lt;pthread.h&gt; #include "openssl/err.h" typedef boost::asio::ip::tcp::socket TSocket; typedef boost::asio::ssl::stream&lt;TSocket&gt; TSSLSocket; typedef boost::asio::ssl::context TSSLContext; typedef boost::asio::io_service TService; typedef boost::asio::io_service::work TWork; int main() { const unsigned int threads_count=10; //Info std::cout&lt;&lt;"Open SSL library version="&lt;&lt;OPENSSL_VERSION_TEXT&lt;&lt;std::endl; #ifdef OPENSSL_THREADS std::cout&lt;&lt;"OpenSSL threads enabled"&lt;&lt;std::endl; #else std::cout&lt;&lt;"OpenSSL threads disabled"&lt;&lt;std::endl; #endif //Creating sockets simultaneously in diferent threads auto create_ssl_socket=[&amp;] { TService service; //boost::asio::ioservice::work makes bug appear TWork work(service); TSSLContext context(boost::asio::ssl::context::tlsv1_client); TSSLSocket ssl_socket(service,context); service.run(); }; for (unsigned i=0; i&lt;=threads_count;i++) { boost::thread t(create_ssl_socket); t.detach(); } do { std::cout&lt;&lt;"Press enter to quit..."&lt;&lt;std::endl; } while (std::cin.get()==0); return 0; } </pre><pre class="wiki">valgrind --tool=drd --gen-suppressions=all --first-race-only=yes --read-var-info=yes --num-callers=100 --xml=yes --xml-file=drd.xml ./executale_name </pre> Aleksey Barsuk <barsuk.alexey@…> https://svn.boost.org/trac10/ticket/11794 https://svn.boost.org/trac10/ticket/11794 Report #11793: Build for Intel Xeon Phi fails Thu, 12 Nov 2015 23:47:36 GMT Sat, 21 Nov 2015 20:35:28 GMT <p> Hi, </p> <p> I'm trying to build the BOOST library for Xeon Phi. It should be simple: using intel tools and providing -mmic flag to the compiler should be sufficient. However, this flag is not provided for the assemebler and linker fails because of wrong object. </p> <p> I've resolved this issue by modification of build scripts. gcc.jam: line 642 please add $(USER_OPTIONS) </p> evgeny.fiksman@… https://svn.boost.org/trac10/ticket/11793 https://svn.boost.org/trac10/ticket/11793 Report #11787: fusion for_each turns array reference const on msvc Sun, 08 Nov 2015 08:17:14 GMT Wed, 09 Mar 2016 11:12:16 GMT <p> On MSVC 2013 (I have not tested any other versions) arrays are always const references, instead of non-const ones. Thus code that needs to modify the array and doesn't have a const overload fails to compile. </p> <p> I don't know if the issue concerns other parts than for_each </p> <p> A simple test case is attached </p> <p> Expected output (as seen when using gcc/clang): </p> <pre class="wiki">Int Char [10] </pre><p> Output using msvc 2013: </p> <pre class="wiki">Int Const Char[10] </pre><p> I have tested it against boost 1.59 and a fresh git clone. </p> imer@… https://svn.boost.org/trac10/ticket/11787 https://svn.boost.org/trac10/ticket/11787 Report #11785: specializing boost::range_const_iterator has no effect on boost::has_range_iterator Thu, 05 Nov 2015 11:29:51 GMT Thu, 05 Nov 2015 11:29:51 GMT <p> see the following code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/range/has_range_iterator.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/filesystem.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/filesystem/operations.hpp&gt; // specializes range_const_iterator</span><span class="cp"></span> <span class="k">using</span> <span class="n">ConstDirIter</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">range_const_iterator</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">directory_iterator</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">;</span> <span class="c1">// this compiles</span> <span class="k">static_assert</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">has_range_const_iterator</span><span class="o">&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">directory_iterator</span> <span class="o">&gt;::</span><span class="n">value</span><span class="p">,</span> <span class="s">&quot;This does not compile!!!&quot;</span> <span class="p">);</span> </pre></div></div><p> See <a class="ext-link" href="https://github.com/boostorg/range/pull/40"><span class="icon">​</span>https://github.com/boostorg/range/pull/40</a> for a fix. </p> Tobias Reh <treh@…> https://svn.boost.org/trac10/ticket/11785 https://svn.boost.org/trac10/ticket/11785 Report #11782: OpenSSL SSLv3 methods removed Mon, 02 Nov 2015 21:13:08 GMT Mon, 02 Nov 2015 21:16:19 GMT <p> Hi, </p> <p> asio/ssl/impl/context.ipp you have code that looks loks like: #if defined(OPENSSL_NO_SSL2) </p> <blockquote> <p> case context::sslv2: case context::sslv2_client: case context::sslv2_server: </p> <blockquote> <p> boost::asio::detail::throw_error( </p> <blockquote> <p> boost::asio::error::invalid_argument, "context"); </p> </blockquote> <p> break; </p> </blockquote> </blockquote> <p> #else <em> defined(OPENSSL_NO_SSL2) </em></p> <blockquote> <p> case context::sslv2: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv2_method()); break; </p> </blockquote> <p> case context::sslv2_client: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv2_client_method()); break; </p> </blockquote> <p> case context::sslv2_server: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv2_server_method()); break; </p> </blockquote> </blockquote> <p> #endif <em> defined(OPENSSL_NO_SSL2) </em></p> <blockquote> <p> case context::sslv3: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv3_method()); break; </p> </blockquote> <p> case context::sslv3_client: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv3_client_method()); break; </p> </blockquote> <p> case context::sslv3_server: </p> <blockquote> <p> handle_ = ::SSL_CTX_new(::SSLv3_server_method()); break; </p> </blockquote> </blockquote> <p> Please do the same for the SSLv3 part but then using OPENSSL_NO_SSL3_METHOD </p> <p> I've just disabled those SSLv3 methods in Debian. </p> <p> It would also be nice that you just removed things like TLSv1_1_method() method too, and only use SSLv23_method() (or TLS_method()). Also see ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10690" title="#10690: Bugs: Boost SSL protocols (new)">#10690</a>. </p> kurt@… https://svn.boost.org/trac10/ticket/11782 https://svn.boost.org/trac10/ticket/11782 Report #11781: b2 install not copying filesystem.hpp or program_options.hpp Mon, 02 Nov 2015 00:04:11 GMT Sat, 13 Feb 2016 21:28:15 GMT <p> It is very possible I am doing something wrong, but I've been unable to get <code>boost/filesystem.hpp</code> and <code>boost/program_options.hpp</code> to be copied during the installation process with <code>b2</code>... </p> <p> I've followed the <a href="http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install">easy setup instructions</a>. </p> <pre class="wiki">$ cd modular-boost $ ./bootstrap.sh --prefix=/opt/boost $ ./b2 stage ... The Boost C++ Libraries were successfully built! The following directory should be added to compiler include paths: /home/user/Projects/modular-boost The following directory should be added to linker library paths: /home/userProjects/modular-boost/stage/lib $ sudo ./b2 install --prefix=/opt/boost </pre><p> Then simply doing an </p> <pre class="wiki">$ ls /opt/boost/include/boost/filesystem/ config.hpp convenience.hpp detail exception.hpp fstream.hpp operations.hpp path.hpp path_traits.hpp $ ls /opt/boost/include/boost/filesystem.hpp ls: cannot access /opt/boost/include/boost/filesystem.hpp: No such file or directory </pre><p> I've tried this with boost-1.59.0, boost-1.58.0 and boost-1.57.0, and nothing seems to fix it. </p> <ul><li>After running <code>./b2 install</code> should <code>boost/filesystem.hpp</code> be installed in the <code>--prefix</code> location? </li><li>If so, how can I get the package headers to install as I expect? </li></ul> gtmalmgren@… https://svn.boost.org/trac10/ticket/11781 https://svn.boost.org/trac10/ticket/11781 Report #11779: Boost.Lockfree: Implicit conversion loses integer precision warnings Sun, 01 Nov 2015 14:38:40 GMT Tue, 11 Apr 2017 12:46:43 GMT <p> Xcode Version 7.1 (7B91b) </p> <p> When using <code>boost::lockfree::queue</code> I get the following implicit conversion warnings: </p> <pre class="wiki">In file included from /foobar/source/foundation/concurrency/task_queue.cpp:11: In file included from /foobar/libraries/boost/install.osx/include/boost/lockfree/queue.hpp:21: In file included from /foobar/libraries/boost/install.osx/include/boost/lockfree/detail/freelist.hpp:23: In file included from /foobar/libraries/boost/install.osx/include/boost/lockfree/detail/tagged_ptr.hpp:18: /foobar/libraries/boost/install.osx/include/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp:59:30: warning: implicit conversion loses integer precision: 'int' to 'tag_t' (aka 'unsigned short') [-Wconversion] ret.tag[tag_index] = tag; ~ ^~~ /foobar/libraries/boost/install.osx/include/boost/lockfree/detail/tagged_ptr_ptrcompression.hpp:78:13: note: in instantiation of member function 'boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;std::__1::packaged_task&lt;void ()&gt; *, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;::pack_ptr' requested here ptr(pack_ptr(p, t)) ^ In file included from /foobar/source/foundation/concurrency/task_queue.cpp:11: /foobar/libraries/boost/install.osx/include/boost/lockfree/queue.hpp:202:15: note: in instantiation of member function 'boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;std::__1::packaged_task&lt;void ()&gt; *, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;::tagged_ptr' requested here head_(tagged_node_handle(0, 0)), ^ /foobar/source/foundation/concurrency/task_queue.cpp:40:29: note: in instantiation of member function 'boost::lockfree::queue&lt;std::__1::packaged_task&lt;void ()&gt; *, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::queue' requested here TaskQueueContext(void) : Queue(128) {} }}} ^ </pre> wise.monkey@… https://svn.boost.org/trac10/ticket/11779 https://svn.boost.org/trac10/ticket/11779 Report #11777: Doing async reads appears to do spurrious calls to recvmsg that return EAGAIN Fri, 30 Oct 2015 23:45:23 GMT Fri, 30 Oct 2015 23:45:23 GMT <p> In running an strace on a program that runs many threads, each controlling many streams, we see the following pattern when looking at one of the threads: </p> <p> epoll_wait(31, ..., 128, -1) = 46 recvmsg(4114, ..., 0) = 2892 recvmsg(4114, ..., 0) = -1 EAGAIN recvmsg(3700, ..., 0) = 16768 recvmsg(3700, ..., 0) = -1 EAGAIN and so on for all 46 sockets. </p> <p> When doing an strace -c on the process, where the bulk (90+%) of the threads are related to these sockets, I see 60% of the time in 27624 calls to write (we read data, process it, and write it to another socket), 34% for 52153 calls to recvmsg (of which 24526 are ERRORS), and 6% are in 4668 calls to epoll_wait. </p> <p> We are noticing that the bulk of the applications time is system time when monitoring with the times() system call. Calling system calls that return immediately with errors is a good way to cause this, especially if there are buffers that are mapped or tested for validity before the EAGAIN check is done. </p> <p> Looking at the release notes for subsequent versions doesn't indicate a fix towards this issue. </p> <p> Unfortunately, the programs are proprietary, and the data streams are proprietary streams on our customers' networks. </p> <p> If the epoll uses edge triggered events, you will get a notification if the first read was a partial, so you don't need to do the extra read. </p> <p> Even though this is an optimization, this is causing us a major performance issue on a large number of machines, thus, the Showstopper severity. </p> Dave Gotwisner <dgotwisn@…> https://svn.boost.org/trac10/ticket/11777 https://svn.boost.org/trac10/ticket/11777 Report #11776: Effective way to find all regex matches in large file Fri, 30 Oct 2015 09:20:12 GMT Wed, 23 Nov 2016 16:13:11 GMT <p> Finding all regexes in a file via boost::regex_iterator is a very complicated task as you can normally not load the whole file into a buffer (could be too large). </p> <p> A possible solution is presented in the documentation of regular expressions in section <a href="http://www.boost.org/doc/libs/1_59_0/libs/regex/doc/html/boost_regex/partial_matches.html">Partial Matches</a>, see the second example. </p> <p> Unfortunately, it is not correct: Consider a file with content "12abc", a regex "[a-z]+", and a buffer size of 4. This would result in the matches ab and c, but should be abc. The first match is not partial and touches the end of the buffer. Increasing the buffer size does not solve the problem in general, and with more complex regexes it even gets worse. Another example: same as earlier except with regex "[a-z]{2,}" (i. e. words with at least two letters), what results in one match ab, but should be abc. </p> <p> The easiest solution seems to be to add a new match flag (“range_incomplete” or “input_incomplete” (?)), that checks if the beginning of the current match and the end of the buffer build a partial or full match. In that case this “match” should be marked to the user as possibly incomplete (e. g. by the already existing member sub_match::matched). There probably exist better solutions. </p> <p> If you do not want to or cannot follow this feature request, I ask you at least to update the discussed 2nd example in the partial matches section. Thanks! </p> der-storch-85@… https://svn.boost.org/trac10/ticket/11776 https://svn.boost.org/trac10/ticket/11776 Report #11775: Documentation points wrong folder Thu, 29 Oct 2015 21:20:27 GMT Thu, 29 Oct 2015 21:20:27 GMT <p> In the getting started guide, this information is outdated. At least on my computer, the correct folder was <strong>C:\Program Files\boost\boost_1_59_0\stage\lib</strong>. Thankfully the build process was explicit about that. </p> <pre class="wiki">6.1 Link From Within the Visual Studio IDE Starting with the header-only example project we created earlier: 1.Right-click example in the Solution Explorer pane and select Properties from the resulting pop-up menu 2.In Configuration Properties &gt; Linker &gt; Additional Library Directories, enter the path to the Boost binaries, e.g. '''C:\Program Files\boost\boost_1_59_0\lib\'''. 3.From the Build menu, select Build Solution. skip to the next step </pre> villasv@… https://svn.boost.org/trac10/ticket/11775 https://svn.boost.org/trac10/ticket/11775 Report #11774: Extract try_executing_one, reschedule_until to a more specific reentrant executor interface. Thu, 29 Oct 2015 13:12:35 GMT Thu, 29 Oct 2015 13:12:58 GMT viboes https://svn.boost.org/trac10/ticket/11774 https://svn.boost.org/trac10/ticket/11774 Report #11773: Extract close/closed to a more specific shutdonw-executor interface. Thu, 29 Oct 2015 13:11:31 GMT Thu, 29 Oct 2015 13:13:45 GMT viboes https://svn.boost.org/trac10/ticket/11773 https://svn.boost.org/trac10/ticket/11773 Report #11771: Type error in has_member_finish_edge with CLR Thu, 29 Oct 2015 10:14:21 GMT Thu, 29 Oct 2015 10:14:21 GMT <p> When including depth_first_search.hpp in a project that compiles with CLR support in VS2015 the preprocessor macro: BOOST_TTI_HAS_MEMBER_FUNCTION(finish_edge) produces code that doesn't compile. When compiling the following error is thrown </p> <p> Error C2664 'boost::type_traits::no_type boost::detail::has_member_function_finish_edge_detail_hcmf&lt;BOOST_TTI_DETAIL_TP_T&gt;::chkt&lt;has_member_function_finish_edge_detail_hcmf&lt;BOOST_TTI_DETAIL_TP_T&gt;::cl_type&lt;BOOST_TTI_DETAIL_TP_T&gt;::type&gt;(...)': cannot convert argument 1 from 'nullptr' to '...' </p> <p> I am including a minimal example showing the problem </p> Taus Møller <taus.moeller@…> https://svn.boost.org/trac10/ticket/11771 https://svn.boost.org/trac10/ticket/11771 Report #11767: More -Wunused-local-typedef warnings when building Boost 1.55.0 with Apple LLVM version 7.0.0 (clang-700.1.76) Wed, 28 Oct 2015 09:04:33 GMT Wed, 28 Oct 2015 09:04:33 GMT <p> This relates to ticket 8980 which was fixed for g++ I've checked the code for 1.59 and it looks still the same issue there. I would recommend that line 58: </p> <p> <code> # if ((__GNUC__ == 4) &amp;&amp; (__GNUC_MINOR__ &gt;= 8)) || (__GNUC__ &gt; 4) </code> </p> <p> is changed to </p> <p> <code> # if ((__GNUC__ == 4) &amp;&amp; (__GNUC_MINOR__ &gt;= 8)) || (__GNUC__ &gt; 4) || __clang__ </code> </p> <p> Certainly this removes the errors from my machine but i've been unable to ascertain whether or not this would cause massive issues on other versions of llvm or indeed how to use macros to get the version of llvm in use. </p> christopher.dawes@… https://svn.boost.org/trac10/ticket/11767 https://svn.boost.org/trac10/ticket/11767 Report #11761: boost/graph/kamada_kawai_spring_layout.hpp: many indexes out of range ? Tue, 27 Oct 2015 16:09:09 GMT Mon, 14 Dec 2015 19:38:12 GMT <p> [boost_1_59_0/boost/graph/kamada_kawai_spring_layout.hpp:110]: (error) Array 'mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>' index mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> out of bounds. </p> <blockquote> <p> static Vec solve(double mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>, Vec rhs) { </p> <blockquote> <p> double denom = mat<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="missing changeset" title="No changeset 0 in the repository">[0]</a> * (mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> - mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>) </p> </blockquote> </blockquote> <ul><li>mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="missing changeset" title="No changeset 0 in the repository">[0]</a> * (mat<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> - mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>) + mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="missing changeset" title="No changeset 0 in the repository">[0]</a> * (mat<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> - mat<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> * mat<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>); </li></ul> anonymous https://svn.boost.org/trac10/ticket/11761 https://svn.boost.org/trac10/ticket/11761 Report #11760: libs/xpressive/perf/regex_comparison.hpp:84: bad if test ? Tue, 27 Oct 2015 16:04:53 GMT Thu, 29 Oct 2015 10:37:37 GMT <p> [boost_1_59_0/libs/xpressive/perf/regex_comparison.hpp:84]: (style) Same expression on both sides of '&lt;'. </p> <p> Source code is </p> <blockquote> <p> if((factor &gt;= 0) &amp;&amp; (factor &lt; factor)) </p> <blockquote> <p> factor = factor; </p> </blockquote> </blockquote> <p> Maybe this code should be deleted ? </p> anonymous https://svn.boost.org/trac10/ticket/11760 https://svn.boost.org/trac10/ticket/11760 Report #11757: ptr_list no longer compiles in msvc2013 Tue, 27 Oct 2015 12:31:00 GMT Tue, 27 Oct 2015 12:31:00 GMT <p> This code does no longer compile with 1.59.0 but did with 1.55.0 (using MSVC 2013) </p> <pre class="wiki">#include "boost/ptr_container/ptr_list.hpp" class MyClass { public: MyClass() {} }; int main(int argc, char* argv[]) { typedef boost::ptr_list&lt; MyClass &gt; tMyList; tMyList theList; theList.resize(42, NULL); } </pre><p> this is the output: </p> <pre class="wiki">cl boost_ptr_list.cpp Microsoft (R) C/C++ Optimizing Compiler Version 18.00.40629 for x86 Copyright (C) Microsoft Corporation. All rights reserved. boost_ptr_list.cpp boost/ptr_container/detail/void_ptr_iterator.hpp(104) : error C2676: binary '+=' : 'std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;' does not define this operator or a conversion to a type acceptable to the pre defined operator C:\Projects\AE16.0\boost\boost/ptr_container/detail/void_ptr_iterator.hpp(103) : while compiling class template member function 'boost::void_ptr_iterator&lt;std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;,MyClass&gt; &amp;boost::void_ptr_iterator&lt;std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;,MyClass&gt;::operator +=(__w64 int)' C:\Projects\AE16.0\boost\boost/next_prior.hpp(73) : see reference to function template instantiation 'boost::void_ptr_iterator&lt;std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;,MyClass&gt; &amp;boost::void_ptr_iterator&lt;std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;,MyClass&gt;::operator +=(__w64 int)' being compiled C:\Projects\AE16.0\boost\boost/ptr_container/ptr_sequence_adapter.hpp(535) : see reference to class template instantiation 'boost::void_ptr_iterator&lt;std::_List_iterator&lt;std::_List_val&lt;std::_List_simple_types&lt;void *&gt;&gt;&gt;,MyClass&gt;' being compiled C:\Projects\AE16.0\boost\boost/ptr_container/ptr_sequence_adapter.hpp(531) : while compiling class template member function 'void boost::ptr_sequence_adapter&lt;T,std::list&lt;void *,Allocator&gt;,CloneAllocator&gt;::resize(unsigned int,MyClass *)' with [ T=MyClass , Allocator=std::allocator&lt;void *&gt; , CloneAllocator=boost::heap_clone_allocator ] boost_ptr_list.cpp(12) : see reference to function template instantiation 'void boost::ptr_sequence_adapter&lt;T,std::list&lt;void *,Allocator&gt;,CloneAllocator&gt;::resize(unsigned int,MyClass *)' being compiled with [ T=MyClass , Allocator=std::allocator&lt;void *&gt; , CloneAllocator=boost::heap_clone_allocator ] C:\Projects\AE16.0\boost\boost/ptr_container/ptr_list.hpp(35) : see reference to class template instantiation 'boost::ptr_sequence_adapter&lt;T,std::list&lt;void *,Allocator&gt;,CloneAllocator&gt;' being compiled with [ T=MyClass , Allocator=std::allocator&lt;void *&gt; , CloneAllocator=boost::heap_clone_allocator ] boost_ptr_list.cpp(11) : see reference to class template instantiation 'boost::ptr_list&lt;MyClass,boost::heap_clone_allocator,std::allocator&lt;void *&gt;&gt;' being compiled </pre> anonymous https://svn.boost.org/trac10/ticket/11757 https://svn.boost.org/trac10/ticket/11757 Report #11755: b2 ignores MAKEFLAGS and '-j' option isn't documented in b2 --help Mon, 26 Oct 2015 14:50:27 GMT Sat, 13 Feb 2016 21:36:26 GMT <p> <em>./b2</em> ignores <em>MAKEFLAGS</em> and <em>-j</em> option isn't documented in <em>./b2 --help</em>. </p> <p> experienced with boost-1.59.0-126-g919988b </p> krichter@… https://svn.boost.org/trac10/ticket/11755 https://svn.boost.org/trac10/ticket/11755 Report #11754: Fix building when OpenSSL is built with no-ssl3 option Sun, 25 Oct 2015 09:35:31 GMT Sun, 25 Oct 2015 09:35:31 GMT <p> Software using Boost ASIO libraries will fail to build when the OpenSSL libraries have been built with the no-ssl3 option. </p> <p> Attached patch fixes this, duplicating the handling of OpenSSL built with no-ssl2 option. </p> Bernard Spil <brnrd@…> https://svn.boost.org/trac10/ticket/11754 https://svn.boost.org/trac10/ticket/11754 Report #11753: cannot execute bootstrap - Failed to build Boost.build engine Sat, 24 Oct 2015 07:28:00 GMT Thu, 29 Oct 2015 10:36:30 GMT <p> Sir! </p> <p> I want to use boost/interprocess/shared_memory_object.hpp libraries for which I downloaded the Boost 1.59.0. First of all I am not clear how to install it for Visual Studio 6 as well as Visual Studio 2010. I need the short method for installation for Microsoft Visual Studio 6 and .net i.e. 2010 (for winxp and win7). Moreover, when I have tried to install it for MSVS 6 in win7, I got error message when I tried to execute bootstrap.bat. it generated error mentioned in the subject. </p> <p> Kindly help on immediate basis. </p> aamirlodhi66@… https://svn.boost.org/trac10/ticket/11753 https://svn.boost.org/trac10/ticket/11753 Report #11752: basic_null_device::read returns 0 but -1 is expected Sat, 24 Oct 2015 01:41:50 GMT Fri, 09 Dec 2016 01:34:03 GMT <p> Documentation: </p> <pre class="wiki">basic_null_device::read "Returns -1. Enabled if Mode refines input." </pre><p> Code: </p> <pre class="wiki">template&lt;typename Ch, typename Mode&gt; class basic_null_device { public: ... std::streamsize read(Ch*, std::streamsize) { return 0; } ... </pre> Nikolay Shelukhin <nikola-sh@…> https://svn.boost.org/trac10/ticket/11752 https://svn.boost.org/trac10/ticket/11752 Report #11749: mpi::broadcast problem Fri, 23 Oct 2015 09:47:29 GMT Fri, 23 Oct 2015 09:47:29 GMT <p> Hi </p> <p> The following problem is not present in 1.55 and present in 1.58, 1.59. Download Eigen library version 3.2.6 (or package present on number of Linux distribution) <a class="ext-link" href="http://eigen.tuxfamily.org/index.php?title=Main_Page"><span class="icon">​</span>http://eigen.tuxfamily.org/index.php?title=Main_Page</a> </p> <p> With he example attached I have a serialization error in boost/archive/detail/iserializer.hpp:236:17: error: no matching function for call to 'operator delete' </p> <blockquote> <p> (T::operator delete)(t, sizeof(T)); </p> </blockquote> <p> It seems to indicate that a destructor is missing but the problem was not present before (with the same eigen version) Error on clang 3.5-6 , gcc 4.9, 5.2 </p> <p> Best regards </p> Warin <xavier.warin@…> https://svn.boost.org/trac10/ticket/11749 https://svn.boost.org/trac10/ticket/11749 Report #11748: boost::asio::buffer() overload for string_ref and const char pointer (c-string) Thu, 22 Oct 2015 20:22:13 GMT Fri, 06 Nov 2015 12:38:39 GMT <p> There are many overloads of boost::asio::buffer() including ones for std::string and POD array, but there are no overloads for <code>const char *</code> and for <code>boost::basic_string_ref&lt;char, ...&gt;</code>. I propose to add such overloads. </p> oliora@… https://svn.boost.org/trac10/ticket/11748 https://svn.boost.org/trac10/ticket/11748 Report #11747: boost::asio::buffer() overload for string_ref and const char pointer (c-string) Thu, 22 Oct 2015 20:21:57 GMT Thu, 22 Oct 2015 20:25:58 GMT <p> There are many overloads of boost::asio::buffer() including ones for std::string and POD array, but there are no overloads for <code>const char *</code> and for <code>boost::basic_string_ref&lt;char, ...&gt;</code>. I propose to add such overloads. </p> oliora@… https://svn.boost.org/trac10/ticket/11747 https://svn.boost.org/trac10/ticket/11747 Report #11746: boost::asio::buffer() overload for string_ref and const char pointer (c-string) Thu, 22 Oct 2015 20:21:32 GMT Thu, 22 Oct 2015 20:26:59 GMT <p> There are many overloads of boost::asio::buffer() including ones for std::string and POD array, but there are no overloads for <code>const char *</code> and for <code>boost::basic_string_ref&lt;char, ...&gt;</code>. I propose to add such overloads. </p> oliora@… https://svn.boost.org/trac10/ticket/11746 https://svn.boost.org/trac10/ticket/11746 Report #11745: memory-mapped file documentation heavily implies that we cannot use a Filesystem path Thu, 22 Oct 2015 16:23:17 GMT Thu, 22 Oct 2015 16:23:17 GMT <p> According to some Stack Overflow answers and the headers for iostreams, it appears that it is possible to create a mapped_file_source, mapped_file_sync, etc. using a filesystem v3 path. The documentation makes it appear that we can only use std::string, thus not properly allowing for Unicode in paths. If this is not documented because it's not complete, then I'll file something about iostreams needing support for unicode paths, but I've found some Stack Overflow answers saying it works as far back as 1.48. I'm assuming the docs just need updating. </p> Austin Hicks <camlorn38@…> https://svn.boost.org/trac10/ticket/11745 https://svn.boost.org/trac10/ticket/11745 Report #11743: json parser cannot be compiled with -DNDEBUG Wed, 21 Oct 2015 13:11:55 GMT Thu, 10 Aug 2017 14:46:17 GMT <p> In include/boost/property_tree/detail/json_parser/standard_callbacks.hpp, standard_callbacks::new_tree make use of assert when error conditions are detected. </p> <p> Unfortunately, when -DNDEBUG is used during compilation, assert calls disappear, thus making the code of standard_callbacks::new_tree incorrect. </p> <p> We spot the problem thanks to the option -Werror=return-type that fired when hitting the end of standard_callbacks::new_tree seeing that there was not return statement. </p> Marco Clemencic <marco.clemencic@…> https://svn.boost.org/trac10/ticket/11743 https://svn.boost.org/trac10/ticket/11743 Report #11735: A* Out of Range Error on 2D grid if width or height is 1 Sat, 17 Oct 2015 20:38:40 GMT Thu, 22 Feb 2018 14:31:45 GMT <p> astar_search fails an out of range assertion for grid_graphs (or filtered_graphs thereof) if they have a size of 1 along one dimension. </p> <p> I understand that in this case the dimension is redundant, but still... </p> <p> Only tested with 2D grids in both 1.58 and 1.59. </p> willi+boost@… https://svn.boost.org/trac10/ticket/11735 https://svn.boost.org/trac10/ticket/11735 Report #11732: Use CreateEventW instead of CreateEvent Thu, 15 Oct 2015 10:23:02 GMT Thu, 15 Oct 2015 10:23:02 GMT <p> We use boost.asio together with the Poco library. </p> <p> Poco has decided to #undef some common Windows API wrappers to avoid weird symbol decoration, among them <a class="missing wiki">CreateEvent</a>. </p> <p> The Windows convention is to have a #define for Function, which expands to FunctionA for non-Unicode builds and FunctionW for Unicode builds. </p> <p> Since asio does not appear to use named events (always passes 0 for the event name), it doesn't matter which one it uses. On Windows, the -A functions are always wrappers for the -W functions, so it makes sense to use the wide-char variant (should save at least a jump.) </p> <p> So I suggest that boost.asio should use CreateEventW consistently instead of <a class="missing wiki">CreateEvent</a>. </p> Kim Gräsman <kim.grasman@…> https://svn.boost.org/trac10/ticket/11732 https://svn.boost.org/trac10/ticket/11732 Report #11731: iostreams classes do not support C++11 move semantics Thu, 15 Oct 2015 08:38:48 GMT Thu, 26 Jan 2017 06:12:26 GMT <p> At least some iostreams classes do not support C++11 move semantics. Attempts to "move-construct" them result in compiler errors. Such classes include but are probably not limited to filtering_istream. </p> <p> #include &lt;boost/iostreams/filtering_stream.hpp&gt; </p> <p> struct Foo { </p> <blockquote> <p> Foo(Foo&amp;&amp; o) </p> <blockquote> <p> : f(std::move(o.f)) { } </p> </blockquote> <p> boost::iostreams::filtering_istream f; </p> </blockquote> <p> }; </p> Josh Chia <joshchia@…> https://svn.boost.org/trac10/ticket/11731 https://svn.boost.org/trac10/ticket/11731 Report #11730: Extend interprocess::message_queue to be lazy initializable Thu, 15 Oct 2015 07:56:30 GMT Thu, 15 Oct 2015 07:56:30 GMT <p> Both <code>shared_memory_object</code> and <code>mapped_region</code> support lazy initialization, so I think <code>message_queue</code> should support it also. Specifically, the following methods are added to <code>message_queue_t</code>: 1) Default constructor 2) Move constructor/assignment operator 3) <code>swap()</code> 4) <code>is_open()</code> (naming convention follows <code>std::basic_filebuf::is_open()</code>) Submitted as a pull request on <a class="missing wiki">GitHub</a>: <a class="ext-link" href="https://github.com/boostorg/interprocess/pull/20"><span class="icon">​</span>https://github.com/boostorg/interprocess/pull/20</a> </p> Lingxi Li <lilingxi.cs@…> https://svn.boost.org/trac10/ticket/11730 https://svn.boost.org/trac10/ticket/11730 Report #11729: Boost interprocess fails to initialize on long-running Windows machines Thu, 15 Oct 2015 07:56:10 GMT Tue, 17 Nov 2015 08:03:20 GMT <p> This bug report is similar to <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/9767"><span class="icon">​</span>#9767</a>, but the effect described there is only part of the problem and the workaround described there may not always be applicable. </p> <p> On Windows Boost Interprocess tries to determine the last boot time by looking at the system event log. This may fail, if the machine has been running a longer time or if it has only been suspended instead of rebooting most of the time. The effect is, that Boost crashes, if the boot time cannot be determined. </p> <p> The workaround may not always be applicable, because a directory has to be hardcoded at compile time, which may not be accessible on all machines, where the resulting program is ever run. </p> <p> So I think that instead of the workaround described in <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9767" title="#9767: Bugs: boost::interprocess bootstamp generation causes error in case of ... (closed: fixed)">#9767</a> a real solution should be implemented for this case. </p> martin.apel@… https://svn.boost.org/trac10/ticket/11729 https://svn.boost.org/trac10/ticket/11729 Report #11728: interprocess::message_queue deadlocked when process exists unexpectedly on Windows Thu, 15 Oct 2015 07:37:45 GMT Tue, 11 Jul 2017 22:34:02 GMT <p> Suppose two processes communicate via a <code>message_queue</code>. On Windows operating systems, when either of the two exists unexpectedly (e.g., via a crash or a kill process command), the other gets deadlocked. Attached is code that reproduces the deadlock reliably. First, launch the server process (reader), and then the client process (writer). Kill the server, and the client gets deadlocked within <code>try_send()</code>. </p> Lingxi Li <lilingxi.cs@…> https://svn.boost.org/trac10/ticket/11728 https://svn.boost.org/trac10/ticket/11728 Report #11724: managed_shared_memory constructor crash Tue, 13 Oct 2015 20:22:58 GMT Tue, 13 Oct 2015 20:22:58 GMT <p> If my system has zero shared memory available and I invoke the managed_shared_memory constructor, the constructor will crash. I am able to consistently reproduce this on Centos 6.5 using g++ 4.4.7 and Boost v1.59. </p> <p> My repro case is very Linux-specific: 1: rm /dev/shm/foobar 2: dd if=/dev/zero of=/dev/shm/fill (the command will terminate once all shared memory on the system is exhausted) 3: Build the attached C++ file (I used g++ -g -I/path/to/boost/ -lpthread -lrt shm.cpp) 4: Run the resulting executable, it should crash </p> <pre class="wiki">(gdb) where #0 0x0000000000402186 in boost::interprocess::ipcdetail::atomic_cas32 (mem=0x7ffff7ee3000, with=1, cmp=0) at /home/elemental/boost_1_5_9/boost_1_59_0/boost/interprocess/detail/atomic.hpp:141 #1 0x000000000040389c in boost::interprocess::ipcdetail::managed_open_or_create_impl&lt;boost::interprocess::shared_memory_object, 16ul, true, false&gt;::priv_open_or_create&lt;boost::interprocess::ipcdetail::create_open_func&lt;boost::interprocess: :ipcdetail::basic_managed_memory_impl&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0u&gt;, 0ul&gt;, boost::interprocess::iset_index, 16ul&gt; &gt; &gt; (this= 0x7fffffffe0f8, type=boost::interprocess::ipcdetail::DoCreate, id=@0x7fffffffe090, size=1048576, mode=boost::interprocess::read_write, addr=0x0, perm=..., construct_func=...) at /home/elemental/boost_1_5_9/boost_1_59_0/boost/interprocess/detail/managed_open_or_create_impl.hpp:409 #2 0x0000000000403163 in boost::interprocess::ipcdetail::managed_open_or_create_impl&lt;boost::interprocess::shared_memory_object, 16ul, true, false&gt;::managed_open_or_create_impl&lt;boost::interprocess::ipcdetail::create_open_func&lt;boost::inter process::ipcdetail::basic_managed_memory_impl&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0u&gt;, 0ul&gt;, boost::interprocess::iset_index, 16ul&gt; &gt; &gt; (this=0x7fffffffe0f8, id=@0x7fffffffe090, size=1048576, mode=boost::interprocess::read_write, addr=0x0, construct_func=..., perm=...) at /home/elemental/boost_1_5_9/boost_1_59_0/boost/interprocess/detail/managed_open_or_create_impl.hpp:184 #3 0x0000000000402f2b in boost::interprocess::basic_managed_shared_memory&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family, boost::interprocess::offset_ptr&lt;void, long, unsigned long, 0u&gt;, 0ul&gt;, boost::interprocess::iset_index&gt;::basic_managed_shared_memory (this=0x7fffffffe0f0, name=0x4077fb "foobar", size=1048576, addr=0x0, perm=...) at /home/elemental/boost_1_5_9/boost_1_59_0/boost/interprocess/managed_shared_memory.hpp:106 #4 0x00000000004016a2 in main (argc=1, argv=0x7fffffffe228) at shm.cpp:23 </pre> john.saxton@… https://svn.boost.org/trac10/ticket/11724 https://svn.boost.org/trac10/ticket/11724 Report #11723: Memory leak (and assertion failed) in r_c_shortest_paths.hpp Tue, 13 Oct 2015 15:19:06 GMT Sun, 29 Jul 2018 16:56:30 GMT <p> In the following 2-years old thread, a memory leak was experienced when using r_c_shortest_paths of the boost graph library. Jeremiah Willcock added a bunch of assertions to the code, to help identify the problem. </p> <p> <a class="ext-link" href="https://groups.google.com/forum/#!topic/boost-list/W1muJiw85pA"><span class="icon">​</span>https://groups.google.com/forum/#!topic/boost-list/W1muJiw85pA</a> </p> <p> I think I now have a reproducible version of this, which I believe might be a bug. Here is the gist: </p> <p> <a class="ext-link" href="https://gist.github.com/alberto-santini/32c19530dcefb784d0f2"><span class="icon">​</span>https://gist.github.com/alberto-santini/32c19530dcefb784d0f2</a> </p> <p> It contains: </p> <blockquote> <p> 1) graph.txt which contains a dump of the graph that exposes the problem 2) boost_bug.cpp which is the code used to build the graph from file and do the labelling 3) terminal_output.txt which contains the command used to compile and what happens when running the code </p> </blockquote> <p> It has been tested on Mac OS X 10.11 with GCC 5.2 and Boost 1.58. The programme doesn't necessary trigger the assertion at each run. There are runs in which it completes successfully, runs in which it segfaults without triggering any assertion and times in which it's aborted by the failed assertion. </p> <p> The failed assertion is: </p> <p> Assertion failed: (p_cur_label-&gt;b_is_valid), function r_c_shortest_paths_dispatch, file /usr/local/include/boost/graph/r_c_shortest_paths.hpp, line 472. </p> a.santini@… https://svn.boost.org/trac10/ticket/11723 https://svn.boost.org/trac10/ticket/11723 Report #11721: boost::asio::serial_port bug in win10 Tue, 13 Oct 2015 07:57:35 GMT Tue, 13 Oct 2015 07:57:35 GMT <p> 在最近写一些串口操作的程序时使用了 boost::asio::serial_port 来操作串口 但当尝试打开串口的时候出现了错误。下面是我的测试代码: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">io_service</span> <span class="n">_io_service</span><span class="p">;</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">devname</span> <span class="o">=</span> <span class="s">&quot;COM3&quot;</span><span class="p">;</span> <span class="k">try</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">serial_port</span> <span class="n">serial</span><span class="p">(</span><span class="n">_io_service</span><span class="p">);</span> <span class="n">serial</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">devname</span><span class="p">);</span><span class="c1">// throw error every times.</span> <span class="k">if</span> <span class="p">(</span><span class="n">serial</span><span class="p">.</span><span class="n">is_open</span><span class="p">())</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">devname</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; serial open successed.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">devname</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; serial open failed!&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="o">&amp;</span> <span class="n">ex</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">ex</span><span class="p">.</span><span class="n">what</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="c1">// GetLastError() == 87</span> <span class="p">}</span> </pre></div></div><p> 每次都会出现错误87。即 <a class="missing wiki">GetLastError</a>() 的结果为 87 于是跟进代码里面调试追到了 win_iocp_serial_port_service::open 函数里 </p> <p> win_iocp_serial_port_service::open 函数的实现如下: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="n">win_iocp_serial_port_service</span><span class="o">::</span><span class="n">open</span><span class="p">(</span> <span class="n">win_iocp_serial_port_service</span><span class="o">::</span><span class="n">implementation_type</span><span class="o">&amp;</span> <span class="n">impl</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">device</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_open</span><span class="p">(</span><span class="n">impl</span><span class="p">))</span> <span class="p">{</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">already_open</span><span class="p">;</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\\&#39;</span><span class="p">)</span> <span class="o">?</span> <span class="nl">device</span> <span class="p">:</span> <span class="s">&quot;</span><span class="se">\\\\</span><span class="s">.</span><span class="se">\\</span><span class="s">&quot;</span> <span class="o">+</span> <span class="n">device</span><span class="p">;</span> <span class="o">::</span><span class="n">HANDLE</span> <span class="n">handle</span> <span class="o">=</span> <span class="o">::</span><span class="n">CreateFileA</span><span class="p">(</span><span class="n">name</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">GENERIC_READ</span> <span class="o">|</span> <span class="n">GENERIC_WRITE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">FILE_FLAG_OVERLAPPED</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">handle</span> <span class="o">==</span> <span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="o">::</span><span class="n">DCB</span> <span class="n">dcb</span><span class="p">;</span> <span class="n">memset</span><span class="p">(</span><span class="o">&amp;</span><span class="n">dcb</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">DCB</span><span class="p">));</span> <span class="n">dcb</span><span class="p">.</span><span class="n">DCBlength</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">DCB</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">GetCommState</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">dcb</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fBinary</span> <span class="o">=</span> <span class="n">TRUE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fDsrSensitivity</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fNull</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fAbortOnError</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">SetCommState</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">dcb</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span><span class="c1">// lee: error is here!!!</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="o">::</span><span class="n">COMMTIMEOUTS</span> <span class="n">timeouts</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadIntervalTimeout</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadTotalTimeoutMultiplier</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadTotalTimeoutConstant</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">WriteTotalTimeoutMultiplier</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">WriteTotalTimeoutConstant</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">SetCommTimeouts</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">timeouts</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="n">handle_service_</span><span class="p">.</span><span class="n">assign</span><span class="p">(</span><span class="n">impl</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">ec</span><span class="p">))</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> 发现每次在第一次 <a class="missing wiki">SetCommState</a> 的时候总是会报错并离开。 于是查看了前面通过 <a class="missing wiki">GetCommState</a> 获取到的 dcb 的值。 发现 dcb.<a class="missing wiki">BaudRate</a> == 0 时无法 <a class="missing wiki">SetCommState</a> 成功 也就是说在有些设备中获取不到 dcb.<a class="missing wiki">BaudRate</a> 这个值。 </p> <h2 class="section" id="下面是我自己的解决办法">下面是我自己的解决办法:</h2> <p> 在 win_iocp_serial_port_service.ipp 文件的88行左右添加 </p> <div class="wiki-code"><div class="code"><pre><span class="k">if</span> <span class="p">(</span><span class="n">dcb</span><span class="p">.</span><span class="n">BaudRate</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="n">dcb</span><span class="p">.</span><span class="n">BaudRate</span> <span class="o">=</span> <span class="mi">115200</span><span class="p">;</span> </pre></div></div><p> 修改后的 win_iocp_serial_port_service::open 函数完整代码如下: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span> <span class="n">win_iocp_serial_port_service</span><span class="o">::</span><span class="n">open</span><span class="p">(</span> <span class="n">win_iocp_serial_port_service</span><span class="o">::</span><span class="n">implementation_type</span><span class="o">&amp;</span> <span class="n">impl</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">device</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_open</span><span class="p">(</span><span class="n">impl</span><span class="p">))</span> <span class="p">{</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">already_open</span><span class="p">;</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">name</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\\&#39;</span><span class="p">)</span> <span class="o">?</span> <span class="nl">device</span> <span class="p">:</span> <span class="s">&quot;</span><span class="se">\\\\</span><span class="s">.</span><span class="se">\\</span><span class="s">&quot;</span> <span class="o">+</span> <span class="n">device</span><span class="p">;</span> <span class="o">::</span><span class="n">HANDLE</span> <span class="n">handle</span> <span class="o">=</span> <span class="o">::</span><span class="n">CreateFileA</span><span class="p">(</span><span class="n">name</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">GENERIC_READ</span> <span class="o">|</span> <span class="n">GENERIC_WRITE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">FILE_FLAG_OVERLAPPED</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">handle</span> <span class="o">==</span> <span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="o">::</span><span class="n">DCB</span> <span class="n">dcb</span><span class="p">;</span> <span class="n">memset</span><span class="p">(</span><span class="o">&amp;</span><span class="n">dcb</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">DCB</span><span class="p">));</span> <span class="n">dcb</span><span class="p">.</span><span class="n">DCBlength</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">DCB</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">GetCommState</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">dcb</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fBinary</span> <span class="o">=</span> <span class="n">TRUE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fDsrSensitivity</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fNull</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="n">dcb</span><span class="p">.</span><span class="n">fAbortOnError</span> <span class="o">=</span> <span class="n">FALSE</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="n">dcb</span><span class="p">.</span><span class="n">BaudRate</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="n">dcb</span><span class="p">.</span><span class="n">BaudRate</span> <span class="o">=</span> <span class="mi">115200</span><span class="p">;</span> <span class="c1">// add lee 2015.10.10. 解决dcb.BaudRate为0时无法成功SetCommState的BUG</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">SetCommState</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">dcb</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="o">::</span><span class="n">COMMTIMEOUTS</span> <span class="n">timeouts</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadIntervalTimeout</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadTotalTimeoutMultiplier</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">ReadTotalTimeoutConstant</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">WriteTotalTimeoutMultiplier</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">timeouts</span><span class="p">.</span><span class="n">WriteTotalTimeoutConstant</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="o">!::</span><span class="n">SetCommTimeouts</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">timeouts</span><span class="p">))</span> <span class="p">{</span> <span class="n">DWORD</span> <span class="n">last_error</span> <span class="o">=</span> <span class="o">::</span><span class="n">GetLastError</span><span class="p">();</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">ec</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="p">(</span><span class="n">last_error</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">get_system_category</span><span class="p">());</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="n">handle_service_</span><span class="p">.</span><span class="n">assign</span><span class="p">(</span><span class="n">impl</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">ec</span><span class="p">))</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="k">return</span> <span class="n">ec</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><h2 class="section" id="测试环境">测试环境</h2> <table class="wiki"> <tr><th> 说明 </th><th> 参数 </th></tr><tr><td> 操作系统 </td><td> Windows10 专业版 x64 </td></tr><tr><td> 开发环境 </td><td> Microsoft Visual Studio Community 2013 Version 12.0.40629.00 Update 5 </td></tr><tr><td> Boost版本 </td><td> boost_1.59.0 </td></tr></table> <h2 class="section" id="结束语">结束语</h2> <p> 以上只是自己的猜测,并不一定是完全正确的。如有任何错误,请联系并告诉我。我将尽快修改,不胜感激。 </p> <h2 class="section" id="我的原文">我的原文</h2> <p> <a class="ext-link" href="http://www.leelib.com/2015/10/10/win10-boost-asio-serial-port-bug.html"><span class="icon">​</span>http://www.leelib.com/2015/10/10/win10-boost-asio-serial-port-bug.html</a> </p> admin@… https://svn.boost.org/trac10/ticket/11721 https://svn.boost.org/trac10/ticket/11721 Report #11718: No debug output when karma.hpp is included before qi.hpp Sun, 11 Oct 2015 06:28:15 GMT Fri, 17 Jun 2016 10:18:24 GMT <p> In case karma.hpp is included macro karma\nonterminal\debug_handler.hpp::BOOST_SPIRIT_DEBUG_NODE(...) is defined. </p> <p> In case qi.hpp is included macro qi\nonterminal\debug_handler.hpp::BOOST_SPIRIT_DEBUG_NODE(...) is defined. </p> <p> both macros are secured by !defined(BOOST_SPIRIT_DEBUG_NODE). Therefore macro is defined only once which is fine. </p> <p> In case BOOST_SPIRIT_DEBUG is defined expectation is that both macro implementations define equal code. But this is not the case: </p> <ul><li>If karma.hpp is included before qi.hpp resulting code is: #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r); </li></ul><ul><li>If qi.hpp is included before karma.hpp resulting code is: #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r); debug(r) </li></ul><p> Therefore debug output is only available when header files are included in the right order. A simple macro extension should solve the issue. </p> anonymous https://svn.boost.org/trac10/ticket/11718 https://svn.boost.org/trac10/ticket/11718 Report #11717: Associate an Executor used to launch the continuation to a promise/packaged_task constructor. Sat, 10 Oct 2015 14:55:30 GMT Sun, 11 Oct 2015 18:16:01 GMT <p> Currently we have <code>async</code> function that constructs futures associated to an <code>Executor</code>. </p> <p> The <code>then()</code> member function should use this executor to launch the continuation. See <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11716" title="#11716: Bugs: ::then(f) should inherit the parent Executor (closed: fixed)">#11716</a>. </p> <p> But futures can also have other sources, as e.g. a <code>promise</code> or a <code>packaged_task</code>. This paper proposes the addition of <code>Executor</code> aware constructors for <code>promise&lt;T&gt;</code> and <code>packaged_task&lt;R(Args)&gt;</code> so that the continuation on the associated future make use of this executor. </p> <p> We propose to: </p> <ul><li>Add <code>promise&lt;T&gt;::promise&lt;T&gt;(Executor&amp;)</code> Executor aware constructor. </li></ul><ul><li>Add <code>packaged_task&lt;R(Args...)&gt;::packaged_task(Executor&amp;)</code> Executor aware constructor. </li></ul> viboes https://svn.boost.org/trac10/ticket/11717 https://svn.boost.org/trac10/ticket/11717 Report #11715: build error with openmpi in vs2010 Wed, 07 Oct 2015 18:14:01 GMT Wed, 07 Oct 2015 18:14:01 GMT <p> bjam not found mpi libs in windows, because it find microsoft mpi only. we patch jam file and bjam found open mpi. </p> <p> But not build dynamic boost-mpi and graph_parallel and etc. </p> anonymous https://svn.boost.org/trac10/ticket/11715 https://svn.boost.org/trac10/ticket/11715 Report #11714: [subgraph.hpp] add_vertex(u_global, g) on a subgraph does not recursively add to parent subgraphs Wed, 07 Oct 2015 13:48:46 GMT Fri, 12 Aug 2016 07:52:51 GMT <p> Hello, </p> <p> One of the invariants of an induced subgraph is: </p> <ul><li>If vertex u is in subgraph g, then u must be in g.parent(). </li></ul><p> This is true if you call add_vertex(g) on a subgraph to create a new vertex. If you however choose to add a already existing global vertex to the subgraph, this addition is not propagated to the parents of this subgraph. </p> <p> I assume this is a bug and fixed it. The patch is on github: <a class="ext-link" href="https://github.com/j-4/graph/tree/fix-add_vertex-subgraph"><span class="icon">​</span>https://github.com/j-4/graph/tree/fix-add_vertex-subgraph</a> </p> <p> I also created a pull request! Thanks, Stefan </p> <p> PS: Attached is a unit test which fails due to this issue and runs through with the patched version! </p> s.hammer@… https://svn.boost.org/trac10/ticket/11714 https://svn.boost.org/trac10/ticket/11714 Report #11708: shared_ptr for void Mon, 05 Oct 2015 19:30:20 GMT Mon, 05 Oct 2015 19:30:20 GMT <p> Hi, I have been recently working with smart pointers and found out that boost ASIO uses std::shared_ptr for void type under Visual Studio 2013 compiler, what is basically forbidden by standard - void type is an incomplete type that can not be complete. It may lead to broken compilation under future Microsoft compilers, gcc for sure forbids shared_ptr for void type (at least gcc 4.8) throwing static assertion during compilation: </p> <pre class="wiki">static_assert( !is_void&lt;_Tp1&gt;::value, "incomplete type" ); </pre><p> File: asio/details/socket_ops.hpp:63 </p> <pre class="wiki">typedef shared_ptr&lt;void&gt; shared_cancel_token_type; </pre> mati_egon@… https://svn.boost.org/trac10/ticket/11708 https://svn.boost.org/trac10/ticket/11708 Report #11707: Locale facets have hidden visibility Sun, 04 Oct 2015 15:54:07 GMT Sun, 04 Oct 2015 19:21:42 GMT <p> When the application or another library is compiled with hidden visibility by default, Boost.<a class="missing wiki">DateTime</a> IO facets end up having hidden visibility as well. This breaks libstdc++ locale operations, such as <code>has_facet</code> and <code>use_facet</code>, as these operations are based on <code>dynamic_cast</code>. </p> <p> Boost.<a class="missing wiki">DateTime</a> should work regardless of the default visibility mode the application chooses. All facet types, as well as the types that can be used in their template parameters, should be marked with <code>BOOST_SYMBOL_VISIBLE</code>. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/11707 https://svn.boost.org/trac10/ticket/11707 Report #11706: The Bessel function can not support to use complex parameter Sun, 04 Oct 2015 03:48:29 GMT Thu, 15 Oct 2015 18:34:33 GMT <p> Codes are following: </p> <p> #include &lt;boost/math/special_functions/bessel.hpp&gt; #include &lt;iostream&gt; /*using namespace std;*/ int main(){ </p> <blockquote> <p> std::complex&lt;double&gt; c(1,1); std::cout&lt;&lt;boost::math::cyl_bessel_i(1,5)&lt;&lt;std::endl; std::cout&lt;&lt;boost::math::cyl_bessel_i(1,c)&lt;&lt;std::endl; </p> </blockquote> <p> } </p> <p> the std::cout&lt;&lt;boost::math::cyl_bessel_i(1,5)&lt;&lt;std::endl; can implement; But if the second parameter is complex number, it doesn't work. </p> jufangliang@… https://svn.boost.org/trac10/ticket/11706 https://svn.boost.org/trac10/ticket/11706 Report #11705: Phoenix function defining operator() with non-const reference parameter fails to compile with C++ 11. Sat, 03 Oct 2015 05:07:56 GMT Sat, 03 Oct 2015 05:07:56 GMT <p> A phoenix function object defining operator() with a non-const reference parameter does not compile when using clang version 3.5 in C++ 11 mode. </p> <p> The compiler used is: Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) </p> <p> The Boost version used is 1.59. </p> <p> A test program to illustrate the problem along with the compiler build log are provided with this bug report. </p> <p> An example of such a function object that reproduces the problem is the following: </p> <p> struct add_int_impl { typedef int result_type; </p> <p> add_int_impl(int v) { </p> <blockquote> <p> _value=v; </p> </blockquote> <p> } </p> <p> int operator()(bool&amp; flag) const { </p> <blockquote> <p> std::cout &lt;&lt; "int operator()(bool&amp; flag) called" &lt;&lt; std::endl; if (_value == 4) </p> <blockquote> <p> flag=true; </p> </blockquote> <p> return _value; </p> </blockquote> <p> } </p> <blockquote> <p> int _value; </p> </blockquote> <p> }; </p> <p> The function can be tested with the following code snippet: </p> <p> <em> <strong>* Begin code snippet </strong>* </em></p> <p> <em> Initialise the function with the value 4. </em></p> <p> boost::phoenix::function&lt;add_int_impl&gt; add_int(4); </p> <p> bool flag=false; </p> <p> BOOST_TEST(add_int(arg1)(flag) == (4)); </p> <p> <em> <strong>* End code snippet </strong>* </em></p> <p> This call will only compile under Apple's version of clang 3.5 in C++ 11 mode when one or both of the following conditions are met; </p> <p> 1) The int operator()(int a) const is also defined </p> <p> 2) One of the following flags is defined: </p> <p> BOOST_RESULT_OF_TR1 BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK </p> <p> The program also compiles if the function signature is changed to use a const reference parameter, i.e. int operator()(const bool&amp; flag) const. However this then means that the parameter value cannot be modified within the body of the function as required. </p> <p> The problem does not occur if the program is compiled using C++ 98 compatibility mode. </p> <p> I suspect that the problem relates to the use of boost::result_of, which uses the decltype() function to deduce function return types when compiling with C++ 11 support. </p> <p> </p> David Williams <bateyware@…> https://svn.boost.org/trac10/ticket/11705 https://svn.boost.org/trac10/ticket/11705 Report #11704: Can't pass a generic lambda as an argument to a parser Fri, 02 Oct 2015 13:26:04 GMT Fri, 02 Oct 2015 13:26:04 GMT <p> This example will fail to compile: </p> <p> auto f = [](qi::unused_type, auto &amp;ctx) { return true; }; qi::rule&lt;const char*&gt; r{ qi::eps(f) }; </p> <p> Changing the lambda to a non-generic one will make this work (by passing the context type explicitly) </p> Matheus Izvekov <mizvekov@…> https://svn.boost.org/trac10/ticket/11704 https://svn.boost.org/trac10/ticket/11704 Report #11702: boost::bind universal reference handling regression Thu, 01 Oct 2015 11:16:54 GMT Sat, 03 Oct 2015 23:25:43 GMT <p> The following code compiles with boost-1.57 but not with boost-1.59: </p> <pre class="wiki">#include &lt;boost/function.hpp&gt; #include &lt;boost/bind.hpp&gt; #include &lt;memory&gt; void foo(std::auto_ptr&lt;int&gt;); int main() { boost::function&lt;void(std::auto_ptr&lt;int&gt;)&gt; f = boost::bind(foo, _1); std::auto_ptr&lt;int&gt; p; f(p); } </pre><p> This is due to the new universal reference handling code implemented in boost::bind. </p> <p> The local fix we use is: </p> <pre class="wiki">#if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES ) namespace boost { namespace _bi { template&lt;class A&gt; struct list_add_cref&lt;std::auto_ptr&lt;A&gt; &gt; { typedef std::auto_ptr&lt;A&gt;&amp; type; }; } } #endif </pre> maxim.yegorushkin@… https://svn.boost.org/trac10/ticket/11702 https://svn.boost.org/trac10/ticket/11702 Report #11695: Crash if boost managed_shared_memory is used on Windows Wed, 30 Sep 2015 06:35:15 GMT Wed, 30 Sep 2015 06:35:15 GMT <p> The process executing below sample code crashes if two or more instances are executed simultaneously. If two instances are started at a gap of 1 second, then there is no crash. </p> <pre class="wiki">#include &lt;boost/interprocess/managed_shared_memory.hpp&gt; #include &lt;boost/interprocess/allocators/allocator.hpp&gt; #include &lt;boost/interprocess/containers/string.hpp&gt; #include &lt;string&gt; #include &lt;iostream&gt; #define RESERVED_BUFFER_SIZE_WRITE (8 * 0x0100000) namespace bip = boost::interprocess; //Typedefs of allocators and containers typedef bip::allocator&lt;char, bip::managed_shared_memory::segment_manager&gt; char_allocator; typedef bip::basic_string&lt;char, std::char_traits&lt;char&gt;, char_allocator&gt; char_string; int main() { bip::managed_shared_memory m_sharedMemUsage(bip::open_or_create, "MyBookkeeper", 2 * RESERVED_BUFFER_SIZE_WRITE); char_allocator alloc_inst3(m_sharedMemUsage.get_segment_manager()); for (int count = 0; count &lt; 100000; ++count) { char_string key_obect("AAAAAAAAAAAAAAAAAAAAAAA", alloc_inst3); } } </pre> rohbansa@… https://svn.boost.org/trac10/ticket/11695 https://svn.boost.org/trac10/ticket/11695 Report #11694: Boost.icl tests incompatibility with Solaris Tue, 29 Sep 2015 17:02:37 GMT Tue, 12 Jan 2016 22:04:41 GMT <p> About 20 boost.icl tests fail on Solaris with the following errors: Error: Expected "class" or "typename" before "0x00000001" Error: "," expected instead of "0x00000001". </p> <blockquote> <p> This happens because some of the headers use _U as a name of template parameter: boost/boost_1_58_0/libs/icl/test/test_icl_quantifier_shared.hpp: </p> <blockquote> <p> ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) <a class="missing wiki">IntervalMap</a> </p> </blockquote> </blockquote> <blockquote> <p> and _U is defined in Solaris /usr/include/iso/ctype_iso.h </p> </blockquote> <blockquote> <p> #define _U 0x00000001 /* Upper case */ </p> </blockquote> <blockquote> <p> (also they use _L, _N, _S, _P, _C , _B, _X :) </p> </blockquote> <p> Names starting with two underscores or an underscore and an upper-case letter are reserved to the system. Declaring such names in an application has undefined results. </p> <p> The other headers which have similar issues are: libs/icl/test/test_icl_map.hpp libs/icl/test/test_functions.hpp libs/icl/test/test_interval_map_shared.hpp libs/icl/test/test_interval_quantifier_shared.hpp </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11694 https://svn.boost.org/trac10/ticket/11694 Report #11692: boost::insert doesn't return a value on the 2 argument overload causing undefined behaviour Tue, 29 Sep 2015 12:24:02 GMT Wed, 27 Sep 2017 15:05:14 GMT <p> In boost/range/algorithm_ext/insert.hpp the second overload for insert doesn't return anything. </p> <p> This was causing our build on clang 3.6 to crash. A simple reproducer is </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;set&gt; #include &lt;boost/range/algorithm_ext/insert.hpp&gt; int main() { std::vector&lt;int&gt; vec({0,1,2,3}); std::set&lt;int&gt; out; boost::insert(out, vec); for (auto val : out) { std::cout &lt;&lt; val &lt;&lt; std::endl; } return 0; } </pre><p> To fix it, simply adding </p> <pre class="wiki"> return on; </pre><p> at the end of the function so that it matches the overload above it fixed the issue. </p> <p> Having looked at the tests <a class="ext-link" href="https://github.com/boostorg/range/blob/master/test/algorithm_ext_test/insert.cpp"><span class="icon">​</span>https://github.com/boostorg/range/blob/master/test/algorithm_ext_test/insert.cpp</a> </p> <p> The test only appear to be testing the overload that takes 3 arguments which works fine. </p> <p> I tested on 1.56, I had a quick look at the code for 1.59 and it appears to have the same issue but have not been able to test it. </p> Harry George <harry.m.george@…> https://svn.boost.org/trac10/ticket/11692 https://svn.boost.org/trac10/ticket/11692 Report #11685: bootstrap.log: fatal error C1083: Cannot open include file: 'tlhelp32.h': No such file or directory Sat, 26 Sep 2015 02:31:11 GMT Sat, 26 Sep 2015 04:24:19 GMT <p> I am trying to use Boost on windows! The more I tear my hear out with this, the more I realize that Windows is absolute garbage for having no dependency management! </p> <p> Anyway, running bootstrap.bat always fails, I can't seem to figure out as to why. It doesn't make sense why I would be missing something that would apparently be part of... well... the windows API </p> <p> bootstrap.log ### ### Using 'vc12' toolset. ### </p> <p> C:\boost_1_59_0\tools\build\src\engine&gt;if exist bootstrap rd /S /Q bootstrap </p> <p> C:\boost_1_59_0\tools\build\src\engine&gt;md bootstrap </p> <p> C:\boost_1_59_0\tools\build\src\engine&gt;cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c command.c compile.c constants.c debug.c execcmd.c execnt.c execnt.c(57) : fatal error C1083: Cannot open include file: 'tlhelp32.h': No such file or directory filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c Generating Code... Compiling... option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c Generating Code... Compiling... native.c set.c path.c regex.c property-set.c sequence.c order.c Generating Code... </p> <p> C:\boost_1_59_0\tools\build\src\engine&gt;exit /b 2 </p> aritz@… https://svn.boost.org/trac10/ticket/11685 https://svn.boost.org/trac10/ticket/11685 Report #11682: fusion::pair not compatible with std::is_default_constructible Thu, 24 Sep 2015 14:59:03 GMT Thu, 24 Sep 2015 14:59:03 GMT <p> When the <code>Second</code> type of pair is not default constructible, <code>std::is_default_constructible</code> either returns true or fails to compile for fusion::pair. </p> <p> This is on OSX with apple and macports compilers. </p> <p> Adding <code>enable_if&lt; is_default_constructible&lt;Second&gt; &gt;</code> to pair's default constructor makes this work as expected. </p> <pre class="wiki">struct NotDefaultConstructible { NotDefaultConstructible(int){}; }; // prints 0 std::cout &lt;&lt; std::is_default_constructible&lt; NotDefaultConstructible &gt;::value &lt;&lt; std::endl; using fusion_pair1 = boost::fusion::pair&lt;int, NotDefaultConstructible&gt;; // should print 0 // fails to compile on clang (xcode 7, 3.4, 3.6, 3.7), gcc 4.9 // prints 1 on gcc 5, clang 3.4 std::cout &lt;&lt; std::is_default_constructible&lt; fusion_pair1 &gt;::value &lt;&lt; std::endl; </pre><p> Test and patch attached. Patch is unlikely to meat portability requirements to be applied as-is. </p> crmoore@… https://svn.boost.org/trac10/ticket/11682 https://svn.boost.org/trac10/ticket/11682 Report #11681: Boost 1.59 program_options parsing error Thu, 24 Sep 2015 13:12:05 GMT Wed, 30 Sep 2015 10:41:47 GMT <p> With boost-1.59 I am seeing the error with parsing options when the options has the implicit value. With boost-1.58 it is working fine. However I am not sure it this is bug or it is intended in boost. </p> <ul><li>argv=["binaryname", "--port", "5"] </li><li>option port have set default_value=6 and implicit_value=7 </li></ul><p> What should be the value of port after parsing argv? </p> <p> After running parser there is an error "Error parsing command line: too many positional options have been specified on the command line". </p> <p> This problem occurs when running MongoDB test (<a class="ext-link" href="https://github.com/mongodb/mongo/blob/0481c958daeb2969800511e7475dc66986fa9ed5/src/mongo/util/options_parser/options_parser_test.cpp#L753"><span class="icon">​</span>https://github.com/mongodb/mongo/blob/0481c958daeb2969800511e7475dc66986fa9ed5/src/mongo/util/options_parser/options_parser_test.cpp#L753</a> ). With boost 1.58 it is passing. Without setting imlicit_value it is passing fine also with 1.59. </p> <p> Or is this a problem in the test? </p> mskalick@… https://svn.boost.org/trac10/ticket/11681 https://svn.boost.org/trac10/ticket/11681 Report #11680: boost::polygon::connectivity_extraction<int>::extract crashes when no polygons were inserted Thu, 24 Sep 2015 08:56:52 GMT Thu, 24 Sep 2015 08:59:07 GMT <p> steps to reproduce: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/polygon/polygon.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">polygon</span><span class="o">::</span><span class="n">connectivity_extraction</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">ce</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">set</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">graph</span><span class="p">;</span> <span class="n">ce</span><span class="p">.</span><span class="n">extract</span><span class="p">(</span><span class="n">graph</span><span class="p">);</span> <span class="c1">// causes access violation</span> <span class="p">}</span> </pre></div></div><p> The debugger indicates an access violation in </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">iT</span><span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">compute_histogram_in_y</span><span class="p">(</span><span class="n">iT</span> <span class="n">begin</span><span class="p">,</span> <span class="n">iT</span> <span class="n">end</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">Unit</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="kt">size_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">histogram</span><span class="p">);</span> </pre></div></div><p> Apparently, the original coder assumed (incorrectly?) that the given size != 0. </p> <p> a simple 'if' would probably resolve this I do in my client code as well. I just wonder what the best level would be to introduce this if: </p> <ul><li>connectivity_extraction::extract </li><li>arbitrary_connectivity_extraction::execute </li><li>or better in boost::polygon::line_intersection&lt;T&gt;::validate_scan ? </li></ul> mhilferink@… https://svn.boost.org/trac10/ticket/11680 https://svn.boost.org/trac10/ticket/11680 Report #11679: boost::polygon::connectivity_extraction<int>::extract crashes when no polygons were inserted Thu, 24 Sep 2015 08:56:50 GMT Thu, 24 Sep 2015 08:56:50 GMT <p> steps to reproduce: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/polygon/polygon.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">polygon</span><span class="o">::</span><span class="n">connectivity_extraction</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">ce</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">set</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">graph</span><span class="p">;</span> <span class="n">ce</span><span class="p">.</span><span class="n">extract</span><span class="p">(</span><span class="n">graph</span><span class="p">);</span> <span class="c1">// causes access violation</span> <span class="p">}</span> </pre></div></div><p> The debugger indicates an access violation in </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">iT</span><span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">compute_histogram_in_y</span><span class="p">(</span><span class="n">iT</span> <span class="n">begin</span><span class="p">,</span> <span class="n">iT</span> <span class="n">end</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">Unit</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="kt">size_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;&amp;</span> <span class="n">histogram</span><span class="p">);</span> </pre></div></div><p> Apparently, the original coder assumed (incorrectly?) that the given size != 0. </p> <p> a simple 'if' would probably resolve this I do in my client code as well. I just wonder what the best level would be to introduce this if: </p> <ul><li>connectivity_extraction::extract </li><li>arbitrary_connectivity_extraction::execute </li><li>or better in boost::polygon::line_intersection&lt;T&gt;::validate_scan ? </li></ul> mhilferink@… https://svn.boost.org/trac10/ticket/11679 https://svn.boost.org/trac10/ticket/11679 Report #11677: too long file name Tue, 22 Sep 2015 03:32:33 GMT Fri, 02 Oct 2015 08:48:34 GMT <p> C:\Users\me\Downloads\boost_1_59_0.7z\boost_1_59_0\libs\geometry\doc\html\geometry\reference\spatial_indexes\boost<span class="underline">geometry</span>index<span class="underline">rtree\rtree_parameters_type_const</span><span class="underline">indexable_getter_const</span><span class="underline">value_equal_const</span><span class="underline">allocator_type_const</span>_.html </p> <p> I need to do automation to build boost by jenkins this path (and many other else) really annoys me, windows only accept 260 char I don't know why on earth do people need this kind of super long file name </p> anonymous https://svn.boost.org/trac10/ticket/11677 https://svn.boost.org/trac10/ticket/11677 Report #11675: sym_difference yields bad result for int polygons Mon, 21 Sep 2015 14:31:07 GMT Thu, 19 Jul 2018 13:32:06 GMT <p> My "_TPolygon" type is actually a <strong>multi-polygon</strong>, based on a polygon type that is oriented <strong>counter-clockwise</strong> and <strong>open</strong> (not closed). Please consider the following example, which apparently works fine: </p> <pre class="wiki">tc::geo::polygon&lt;double&gt; polygonA; // tc::geo::polygon&lt;...&gt; is actually a MULTIPOLYGON, with polygons oriented COUNTER-CLOCKWISE and OPEN (not closed). boost::geometry::read_wkt("MULTIPOLYGON(((564 2394,1548 2850,2526 2916,2526 1073741823,564 1073741823,564 2394)))", polygonA); // does not throw boost::geometry::is_valid(polygonA); // returns true tc::geo::polygon&lt;double&gt; polygonB; boost::geometry::read_wkt("MULTIPOLYGON(((564 3252,2526 3252,2526 1073741823,564 1073741823,564 3252)))", polygonB); // does not throw boost::geometry::is_valid(polygonB); // returns true tc::geo::polygon&lt;double&gt; polygonC; boost::geometry::sym_difference(polygonA, polygonB, polygonC); // does not throw boost::geometry::is_valid(polygonC); // returns true // polygonC is now "MULTIPOLYGON(((564 3252,564 2394,1548 2850,2526 2916,2526 3252,564 3252)))" </pre><p> Note: <em>std::numeric_limits&lt;int&gt;::max()/2 == 1073741823</em> Now, simply replace <strong>double</strong> by <strong>int</strong>: </p> <pre class="wiki">tc::geo::polygon&lt;int&gt; polygonA; // tc::geo::polygon&lt;...&gt; is actually a MULTIPOLYGON, with polygons oriented COUNTER-CLOCKWISE and OPEN (not closed). boost::geometry::read_wkt("MULTIPOLYGON(((564 2394,1548 2850,2526 2916,2526 1073741823,564 1073741823,564 2394)))", polygonA); // does not throw boost::geometry::is_valid(polygonA); // returns true tc::geo::polygon&lt;int&gt; polygonB; boost::geometry::read_wkt("MULTIPOLYGON(((564 3252,2526 3252,2526 1073741823,564 1073741823,564 3252)))", polygonB); // does not throw boost::geometry::is_valid(polygonB); // returns true tc::geo::polygon&lt;int&gt; polygonC; boost::geometry::sym_difference(polygonA, polygonB, polygonC); // does not throw boost::geometry::is_valid(polygonC); // returns true TRACE( "===================== polygonC2=" &lt;&lt; polygonC ); // polygonC is now "MULTIPOLYGON(((564 3252,564 2394,1548 2850,2526 2916,2526 *!*333412*!*,564 3252)))" </pre><p> As you can see, one value is completely off. This seems to happen reliably whenever the input is based on int and contains large numbers. </p> <p> This issue may be related to Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10658" title="#10658: Bugs: sym_difference yields bad result for int polygons (closed: fixed)">#10658</a>. </p> vschoech@… https://svn.boost.org/trac10/ticket/11675 https://svn.boost.org/trac10/ticket/11675 Report #11670: Boost intrusive constructors should be constexpr Fri, 18 Sep 2015 23:15:49 GMT Fri, 18 Sep 2015 23:15:49 GMT <p> Boost intrusive constructors should be marked constexpr. Doing so would allow for their use in static variables without SIOF. As an example consider this program that uses a simple linked list </p> <p> <a class="ext-link" href="http://ideone.com/O5YWM8"><span class="icon">​</span>http://ideone.com/O5YWM8</a> </p> <p> because the <a class="missing wiki">LinkedList</a> constructor is not constexpr, the variable gets initialized in file declaration order -- after my_crazy_variable. Therefore even though my_crazy_variable's ctor pushes something on to the list, it gets lost when the list is initialized and the program crashes due to being unable to pop a value. </p> <p> However, if you declare <a class="missing wiki">LinkedList</a>'s constructor constexpr the list is initialized in the zero initialization phase (<a class="ext-link" href="http://en.cppreference.com/w/cpp/language/initialization#Non-local_variables"><span class="icon">​</span>http://en.cppreference.com/w/cpp/language/initialization#Non-local_variables</a>). This means that the linked list can be used in other constructors without worrying about initialization order. </p> <p> While my example is obviously not a sane use case, imagine a linked list that registers all live Widget objects. if somebody creates a widget during static initialization they could encounter the same problem. </p> <p> A side benefit to doing this is that code size is reduced as the code to initialize the linked list is not created </p> ben.maurer@… https://svn.boost.org/trac10/ticket/11670 https://svn.boost.org/trac10/ticket/11670 Report #11668: cpu_timer methods documented as noexcept, while in code they are not Fri, 18 Sep 2015 15:17:38 GMT Fri, 18 Sep 2015 15:17:38 GMT <p> Hello, </p> <p> I was trying to use cpu_timer in an environment which does not use exceptions. As documented, most of the methods are noexcept, but the code does not have noexcept and uses try catch, see libs/timer/src/cpu_timer.cpp , ~auto_cpu_timer . Please either fix the documentation, or the code to comply with the documentation. My preferred way to fix the issue is the latter way, or at least give the option for the user to not use exception (with BOOST_NO_EXCEPTIONS). </p> <p> Thank you, </p> <p> George Butnaru </p> George Butnaru <geo.butnaru@…> https://svn.boost.org/trac10/ticket/11668 https://svn.boost.org/trac10/ticket/11668 Report #11667: Error compiling VS2013 update 5 Fri, 18 Sep 2015 12:46:00 GMT Fri, 18 Sep 2015 12:46:00 GMT <p> C:\boost_1_59_0_2013\boost/bind/bind.hpp(305) : error C2664: 'bool (const boost: :python::api::object &amp;,std::string &amp;)' : cannot convert argument 2 from 'const s td::string' to 'std::string &amp;' </p> <blockquote> <p> Conversion loses qualifiers C:\boost_1_59_0_2013\boost/bind/bind.hpp(907) : see reference to functio </p> </blockquote> <p> n template instantiation 'R boost::_bi::list2&lt;boost::_bi::value&lt;T&gt;,boost::arg&lt;1&gt; </p> <blockquote class="citation"> <p> ::operator ()&lt;bool,bool(<span class="underline">cdecl *)(const boost::python::api::object &amp;,std::stri </span></p> </blockquote> <p> ng &amp;),boost::_bi::list1&lt;const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std: :allocator&lt;char&gt;&gt; &amp;&gt;&gt;(boost::_bi::type&lt;bool&gt;,F &amp;,A &amp;,long)' </p> anonymous https://svn.boost.org/trac10/ticket/11667 https://svn.boost.org/trac10/ticket/11667 Report #11666: graph library documentation issues ("Using adjacency_list") Fri, 18 Sep 2015 12:19:48 GMT Wed, 23 Sep 2015 23:09:28 GMT <p> I am currently studying the "Using adjacency_list" documentation page (libs/graph/doc/using_adjacency_list.html), and I found several issues: </p> <blockquote class="citation"> <p> Creating your own property types and properties is easy; just define a tag class for your new property. The property tag class <strong>will need to define num</strong> with a <strong>unique</strong> integer ID, and kind which should be either edge_property_tag, vertex_property_tag, or graph_property_tag. </p> <pre class="wiki">struct flow_t { typedef edge_property_tag kind; }; </pre></blockquote> <ol><li>Where is <em>num</em> defined? (Is it necessary at all?) </li><li>(If necessary) where exactly does it need to be unique? (Within a certain namespace? Over all edge properties? Over all vertex+edge properties? </li><li>What about the range (number of bits?), reserved numbers/ranges and consecutiveness? </li></ol><blockquote class="citation"> <p> Access the propety acessor type for this graph </p> </blockquote> <p> (Typo in "property") </p> Hans Meine <hans_meine@…> https://svn.boost.org/trac10/ticket/11666 https://svn.boost.org/trac10/ticket/11666 Report #11663: No way to query file extension without allocating memory Thu, 17 Sep 2015 06:44:37 GMT Fri, 09 Sep 2016 18:14:22 GMT <p> the function .extension() returns an fs::path, containing a fresh string that contains the extension. On certain library implementations that don't implement the SSO -- or, I guess, for files with very long extensions -- there will be a memory allocation each time the function is called. </p> <p> That means that for solutions implementing search-by-extension such as is written in: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/11140483/how-to-get-list-of-files-with-a-specific-extension-in-a-given-folder"><span class="icon">​</span>http://stackoverflow.com/questions/11140483/how-to-get-list-of-files-with-a-specific-extension-in-a-given-folder</a> </p> <p> there could be hundreds of memory allocations for just iterating a directory structure. IMO, there really shouldn't be. </p> <p> I propose adding the function bool path::has_extension(string const&amp;) which can compare the extension in a memory-friendly way. </p> matthew.chaplain@… https://svn.boost.org/trac10/ticket/11663 https://svn.boost.org/trac10/ticket/11663 Report #11662: Parse Json Thu, 17 Sep 2015 04:31:49 GMT Wed, 23 Sep 2015 23:09:51 GMT <p> use Boost to Parse Json on linux! when I use it with multithreading ,the Program crash!! </p> <p> my code: json_test.h </p> <pre class="wiki">#ifndef UNIT_JSON_BUGTEST_H #define UNIT_JSON_BUGTEST_H #include &lt;boost/property_tree/ptree.hpp&gt; #include &lt;boost/property_tree/json_parser.hpp&gt; #include &lt;boost/foreach.hpp&gt; #include &lt;boost/thread/thread.hpp&gt; #include &lt;sstream&gt; #include &lt;map&gt; using namespace boost; using namespace boost::property_tree; using namespace std; #define JSON_BUG "{\"onlineUser\":[{\"username\":\"131898@QQ.COM\",\"framedipaddress\":\"10.10.1.3\"},{\"username\":\"a258055085@163.com\",\"framedipaddress\":\"10.10.1.4\"},{\"username\":\"77476848@QQ.COM\",\"framedipaddress\":\"10.10.1.5\"},{\"username\":\"tyws0001@163.com\",\"framedipaddress\":\"10.10.1.10\"},{\"username\":\"zbr7066895@163.com\",\"framedipaddress\":\"10.10.1.9\"},{\"username\":\"1733064835@qq.com\",\"framedipaddress\":\"10.10.1.12\"}]}" typedef multimap&lt;string, string&gt; onlineuser_map; onlineuser_map get_online_user_map(const string strJson); void unit_json_bugtest_main(); #endif </pre><p> json_test.cpp </p> <pre class="wiki">#include "unit_json_bugtest.h" onlineuser_map get_online_user_map(const string strJson) { onlineuser_map mymap; // cout &lt;&lt; strJson &lt;&lt; endl; stringstream ssJson(strJson); ptree pt; try{ read_json(ssJson, pt); } catch(...) { cout &lt;&lt; "read json string error" &lt;&lt;endl; return mymap; } try{ ptree ptInfoArray = pt.get_child("onlineUser"); BOOST_FOREACH(ptree::value_type &amp;v, ptInfoArray) { ptree ptChild; std::stringstream streamChild; write_json(streamChild, v.second); json_parser::read_json(streamChild, ptChild); mymap.insert(make_pair(ptChild.get&lt;string&gt;("username"), ptChild.get&lt;string&gt;("framedipaddress"))); } } catch(...) { mymap.clear(); cout &lt;&lt; "read json string error" &lt;&lt;endl; return mymap; } return mymap; } int i; void my_thread_fun(int itest) { get_online_user_map(JSON_BUG); cout &lt;&lt; "i'm OK!!: " &lt;&lt; itest&lt;&lt;endl; } void main() { i = 0; while(1) { thread th(my_thread_fun,i); i++; usleep(10); } } </pre> KigKrazy@… https://svn.boost.org/trac10/ticket/11662 https://svn.boost.org/trac10/ticket/11662 Report #11660: interprocess::winapi::get_last_bootup_time(std::string &stamp) fails, resulting in bad IPC name Wed, 16 Sep 2015 14:57:08 GMT Tue, 12 Jan 2016 02:40:29 GMT <p> Using interprocess::managed_shared_memory fails on Windows 7 in restricted environments (i.e. running under IIS/AppPool). It fails to create IPC primites properly, even if an administrator account is being impersonated. It doesn't fail if running a regular process as the IIS/AppPool user. It fails in that the shared memory object created doesn't have the intended name, and when boost interprocess attempts to open the primitive in another process it fails, do to file name discrepancies. </p> <p> Specifically, interprocess::winapi::get_last_bootup_time(std::string &amp;stamp) fails to retrieve the bootup time, as a consequence of failing to open the system log file (<a class="missing wiki">GetLastError</a>() produces ERROR_ACCESS_DENIED) and instead produces an empty string. This does not occur in the other process. </p> <p> The attached alternate implementation for getting a bootup time is working for me in the above scenario. </p> bmccart@… https://svn.boost.org/trac10/ticket/11660 https://svn.boost.org/trac10/ticket/11660 Report #11659: push_relabel_max_flow Wed, 16 Sep 2015 06:05:12 GMT Tue, 09 Aug 2016 07:50:17 GMT <p> if you use the code below the bug would be happened: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/config.hpp&gt; #include &lt;boost/graph/boykov_kolmogorov_max_flow.hpp&gt; #include &lt;boost/graph/push_relabel_max_flow.hpp&gt; #include &lt;boost/graph/edmonds_karp_max_flow.hpp&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/read_dimacs.hpp&gt; #include &lt;boost/graph/graph_utility.hpp&gt; /* , boost::property &lt;boost::vertex_color_t, boost::default_color_type, boost::property &lt;boost::vertex_distance_t, long, boost::property &lt;boost::vertex_predecessor_t, Traits::edge_descriptor &gt; &gt; &gt; */ typedef boost::adjacency_list_traits&lt;boost::vecS, boost::vecS, boost::directedS&gt; Traits; typedef boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, boost::property &lt; boost::vertex_name_t, std::pair&lt;int,int&gt;, boost::property &lt; boost::vertex_color_t, boost::default_color_type, boost::property &lt; boost::vertex_distance_t, long, boost::property &lt; boost::vertex_predecessor_t, Traits::edge_descriptor &gt; &gt; &gt; &gt;, boost::property &lt; boost::edge_capacity_t, double, boost::property &lt; boost::edge_residual_capacity_t, double, boost::property &lt; boost::edge_reverse_t, Traits::edge_descriptor&gt; &gt; &gt; &gt; Graph; void AddEdge( Traits::vertex_descriptor &amp;v1, Traits::vertex_descriptor &amp;v2, boost::property_map &lt; Graph, boost::edge_reverse_t &gt;::type &amp;rev, const double capacity, Graph &amp;g) { Traits::edge_descriptor e1 = boost::add_edge(v1, v2, g).first; Traits::edge_descriptor e2 = boost::add_edge(v2, v1, g).first; boost::put(boost::edge_capacity, g, e1, capacity); boost::put(boost::edge_capacity, g, e2, capacity); rev[e1] = e2; rev[e2] = e1; } int main(int argc, char* argv[]) { Graph g; boost::property_map &lt; Graph, boost::edge_reverse_t &gt;::type rev = get(boost::edge_reverse, g); std::pair&lt;int, int&gt; point1(0, 0); std::pair&lt;int, int&gt; point2(1, 0); std::pair&lt;int, int&gt; point3(1, 1); std::pair&lt;int, int&gt; point4(0, 1); Graph::vertex_descriptor u = boost::add_vertex(point1, g); Graph::vertex_descriptor v = boost::add_vertex(point2, g); Graph::vertex_descriptor w = boost::add_vertex(point3, g); Graph::vertex_descriptor x = boost::add_vertex(point4, g); //boost::add_edge(u, v, g); AddEdge(u, v, rev, 10.1, g); AddEdge(u, w, rev, 10.2, g); AddEdge(v, x, rev, 8.1, g); AddEdge(w, x, rev, 6.2, g); //double flow = boost::boykov_kolmogorov_max_flow(g, u, x); double flow = boost::push_relabel_max_flow(g, u, x); //double flow = boost::edmonds_karp_max_flow(g, u, x); boost::property_map &lt; Graph, boost::vertex_color_t &gt;::type vertex_color = get(boost::vertex_color, g); boost::graph_traits &lt; Graph &gt;::vertex_iterator u_iter, u_end; for (boost::tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { std::cout &lt;&lt; "ver: " &lt;&lt; *u_iter &lt;&lt; " " &lt;&lt; vertex_color[*u_iter] &lt;&lt; std::endl; } return 0; } </pre> anonymous https://svn.boost.org/trac10/ticket/11659 https://svn.boost.org/trac10/ticket/11659 Report #11658: push_relabel_max_flow Wed, 16 Sep 2015 06:05:07 GMT Tue, 09 Aug 2016 07:49:05 GMT <p> if you use the code below the bug would be happened: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/config.hpp&gt; #include &lt;boost/graph/boykov_kolmogorov_max_flow.hpp&gt; #include &lt;boost/graph/push_relabel_max_flow.hpp&gt; #include &lt;boost/graph/edmonds_karp_max_flow.hpp&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/read_dimacs.hpp&gt; #include &lt;boost/graph/graph_utility.hpp&gt; /* , boost::property &lt;boost::vertex_color_t, boost::default_color_type, boost::property &lt;boost::vertex_distance_t, long, boost::property &lt;boost::vertex_predecessor_t, Traits::edge_descriptor &gt; &gt; &gt; */ typedef boost::adjacency_list_traits&lt;boost::vecS, boost::vecS, boost::directedS&gt; Traits; typedef boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, boost::property &lt; boost::vertex_name_t, std::pair&lt;int,int&gt;, boost::property &lt; boost::vertex_color_t, boost::default_color_type, boost::property &lt; boost::vertex_distance_t, long, boost::property &lt; boost::vertex_predecessor_t, Traits::edge_descriptor &gt; &gt; &gt; &gt;, boost::property &lt; boost::edge_capacity_t, double, boost::property &lt; boost::edge_residual_capacity_t, double, boost::property &lt; boost::edge_reverse_t, Traits::edge_descriptor&gt; &gt; &gt; &gt; Graph; void AddEdge( Traits::vertex_descriptor &amp;v1, Traits::vertex_descriptor &amp;v2, boost::property_map &lt; Graph, boost::edge_reverse_t &gt;::type &amp;rev, const double capacity, Graph &amp;g) { Traits::edge_descriptor e1 = boost::add_edge(v1, v2, g).first; Traits::edge_descriptor e2 = boost::add_edge(v2, v1, g).first; boost::put(boost::edge_capacity, g, e1, capacity); boost::put(boost::edge_capacity, g, e2, capacity); rev[e1] = e2; rev[e2] = e1; } int main(int argc, char* argv[]) { Graph g; boost::property_map &lt; Graph, boost::edge_reverse_t &gt;::type rev = get(boost::edge_reverse, g); std::pair&lt;int, int&gt; point1(0, 0); std::pair&lt;int, int&gt; point2(1, 0); std::pair&lt;int, int&gt; point3(1, 1); std::pair&lt;int, int&gt; point4(0, 1); Graph::vertex_descriptor u = boost::add_vertex(point1, g); Graph::vertex_descriptor v = boost::add_vertex(point2, g); Graph::vertex_descriptor w = boost::add_vertex(point3, g); Graph::vertex_descriptor x = boost::add_vertex(point4, g); //boost::add_edge(u, v, g); AddEdge(u, v, rev, 10.1, g); AddEdge(u, w, rev, 10.2, g); AddEdge(v, x, rev, 8.1, g); AddEdge(w, x, rev, 6.2, g); //double flow = boost::boykov_kolmogorov_max_flow(g, u, x); double flow = boost::push_relabel_max_flow(g, u, x); //double flow = boost::edmonds_karp_max_flow(g, u, x); boost::property_map &lt; Graph, boost::vertex_color_t &gt;::type vertex_color = get(boost::vertex_color, g); boost::graph_traits &lt; Graph &gt;::vertex_iterator u_iter, u_end; for (boost::tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) { std::cout &lt;&lt; "ver: " &lt;&lt; *u_iter &lt;&lt; " " &lt;&lt; vertex_color[*u_iter] &lt;&lt; std::endl; } return 0; } </pre> anonymous https://svn.boost.org/trac10/ticket/11658 https://svn.boost.org/trac10/ticket/11658 Report #11657: Add VxWorks support for program options Wed, 16 Sep 2015 05:13:47 GMT Fri, 18 Sep 2015 17:00:07 GMT <p> This patch enables program options to be compiled in <a class="missing wiki">VxWorks</a> 7. </p> <p> It should be used with the config patch in <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11653" title="#11653: Patches: Updated VxWorks support (closed: fixed)">#11653</a> </p> <p> (Alternately we could make the environ in <a class="missing wiki">VxWorks</a> more standard, but since older <a class="missing wiki">VxWorks</a> versions are being used for decades after there release, a backward compatible approach seemed the better option) </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/11657 https://svn.boost.org/trac10/ticket/11657 Report #11656: Updated VxWorks support for iostreams Wed, 16 Sep 2015 05:03:43 GMT Wed, 16 Sep 2015 05:27:26 GMT <p> Wind River has a few customer requests for boost support so this patch provides updates boost iostreams to compile with <a class="missing wiki">VxWorks</a> 7 </p> <p> It should be used with the config patch in ticket 11653 </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/11656 https://svn.boost.org/trac10/ticket/11656 Report #11654: Updated VxWorks support for asio Wed, 16 Sep 2015 04:42:15 GMT Wed, 16 Sep 2015 04:42:15 GMT <p> This patch provides support to <a class="missing wiki">VxWorks</a> 7, and should be backward compatible to older versions. </p> <p> It should be used in concert with the config patch submitted in an earlier ticket </p> Brian Kuhl <brian.kuhl@…> https://svn.boost.org/trac10/ticket/11654 https://svn.boost.org/trac10/ticket/11654 Report #11651: boost::to_upper and boost::to_lower damages non ascii-charasters in std::u32string Mon, 14 Sep 2015 18:41:19 GMT Tue, 15 Sep 2015 03:22:05 GMT <p> code to reproduce: </p> <p> std::u32string u32str = U"Проверка <a class="missing wiki">АаАа</a> abcd"; boost::to_upper(u32str); <em> u32str contains "@&gt;25@:0 00 ABCD" after </em></p> <p> proper upper string is "ПРОВЕРКА АААА ABCD" </p> <p> Visual Studio 2015 </p> anonymous https://svn.boost.org/trac10/ticket/11651 https://svn.boost.org/trac10/ticket/11651 Report #11650: boost range size() fails concept on subarray of a const multi_array Mon, 14 Sep 2015 10:06:01 GMT Mon, 14 Sep 2015 15:21:53 GMT <p> Small test case: </p> <pre class="wiki">#include &lt;boost/range/size.hpp&gt; #include &lt;boost/multi_array.hpp&gt; using namespace boost; typedef multi_array&lt;float, 2&gt; myarray; myarray a; const myarray const_a; void test() { boost::size( a[0] ); // Compiles fine boost::size( const_a ); // Compiles fine boost::size( const_a[0] ); // Fails single pass range concept } </pre><p> gives me the attached errors. I'm using gcc 4.8.4 on Ubuntu 14.04 with boost 1.59.0 </p> John Reid <johnbaronreid@…> https://svn.boost.org/trac10/ticket/11650 https://svn.boost.org/trac10/ticket/11650 Report #11646: Boost ASIO server-side async_handshake handler not called if Diffie-Hellman key is too small Fri, 11 Sep 2015 22:18:07 GMT Fri, 11 Sep 2015 22:18:07 GMT <p> Boost ASIO server-side <code>async_handshake</code> handler is never called if the Diffie-Hellman key is too small. Instead, the handshake operation appears to hang indefinitely. </p> <p> OpenSSL now requires Diffie-Hellman keys to be at least 768 bits (<a class="ext-link" href="https://www.openssl.org/blog/blog/2015/05/20/logjam-freak-upcoming-changes/"><span class="icon">​</span>https://www.openssl.org/blog/blog/2015/05/20/logjam-freak-upcoming-changes/</a>). </p> <p> This bug may be reproduced using the SSL examples in the Boost documentation (<a href="http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/example/cpp03/ssl/server.cpp">http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/example/cpp03/ssl/server.cpp</a>) and a recent version of OpenSSL that restricts DH keys to 768 or more bits. (I'm using OpenSSL version 1.0.2d.) Observe the bug by placing a breakpoint on the server-side handshake handler and seeing that the breakpoint is never hit. </p> <p> For what it's worth, the client-side handshake operation completes, with error (<code>"dh key too small"</code>), as expected. So this problem affects only the server. </p> c.m.brandenburg@… https://svn.boost.org/trac10/ticket/11646 https://svn.boost.org/trac10/ticket/11646 Report #11643: warning clang without c++11 Fri, 11 Sep 2015 11:35:45 GMT Fri, 11 Sep 2015 11:35:45 GMT <p> We get this warning around a million times, when compiling our project: </p> <p> /opt/local/include/boost/mpl/print.hpp:50:19: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions] </p> <blockquote> <p> const int m_x = 1 / (sizeof(T) - sizeof(T)); </p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/11643 https://svn.boost.org/trac10/ticket/11643 Report #11640: scope_exit: -Wshadow warning issued Thu, 10 Sep 2015 13:33:35 GMT Tue, 19 Jun 2018 11:38:58 GMT <p> Hi, BOOST_SCOPE_EXIT emits warning: declaration shadows a local variable [-Wshadow] in CLANG compiler. Tested with boost 1.54-1.58 and CLANG 3.5-3.7. The issue does not occur on GCC when boost is included using -isystem. </p> <p> Sample program: </p> <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/scope_exit.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">BOOST_SCOPE_EXIT</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span> <span class="p">{}</span> <span class="n">BOOST_SCOPE_EXIT_END</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><p> Compiled with clang++ -isystem /tmp/boost/boost_1_58_0 -Wshadow </p> <blockquote> <p> warning: declaration shadows a local variable [-Wshadow] </p> <blockquote> <p> BOOST_SCOPE_EXIT(i, j) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> /tmp/boost/boost_1_58_0/boost/scope_exit.hpp:900:17: note: expanded from macro 'BOOST_SCOPE_EXIT' </p> <blockquote> <p> <span class="underline">VA_ARGS</span>) <sup> </sup></p> </blockquote> <p> /tmp/boost/boost_1_58_0/boost/scope_exit.hpp:893:59: note: expanded from macro 'BOOST_SCOPE_EXIT_ID' </p> <blockquote> <p> BOOST_SCOPE_EXIT_AUX_PP_VOID_LIST(<span class="underline">VA_ARGS</span>))) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /tmp/boost/boost_1_58_0/boost/scope_exit.hpp:178:59: note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_PP_VOID_LIST' </p> <blockquote> <p> BOOST_SCOPE_EXIT_AUX_PP_KEYWORD_IS_VOID_BACK, <span class="underline">VA_ARGS</span>) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> note: (skipping 66 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) /tmp/boost/boost_1_58_0/boost/preprocessor/list/adt.hpp:35:63: note: expanded from macro 'BOOST_PP_LIST_FIRST_D' # define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /tmp/boost/boost_1_58_0/boost/preprocessor/list/adt.hpp:40:44: note: expanded from macro 'BOOST_PP_LIST_FIRST_I' # define BOOST_PP_LIST_FIRST_I(head, tail) head </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /tmp/boost/boost_1_58_0/boost/scope_exit.hpp:316:5: note: expanded from macro 'BOOST_SCOPE_EXIT_AUX_ARG_DECL' </p> <blockquote> <p> var <sup> </sup></p> </blockquote> <p> p.cxx:5:8: note: previous declaration is here </p> <blockquote> <p> int i, j = 0; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> lukasz.czajczyk@… https://svn.boost.org/trac10/ticket/11640 https://svn.boost.org/trac10/ticket/11640 Report #11639: document std's vs boost's chrono::steady_clock system-wideness discrepancy Thu, 10 Sep 2015 08:20:34 GMT Sun, 25 Oct 2015 23:49:58 GMT <p> boost doc states that its steady_clock is system-wide, in doc/libs/1_59_0/doc/html/chrono/reference.html#chrono.reference.cpp0x.system_clocks_hpp.steady_clock </p> <pre class="wiki">steady_clock class provides access to the system-wide steady clock. The current time can be obtained by calling steady_clock::now(). There is no fixed relationship between values returned by steady_clock::now() and wall-clock time. </pre><p> As far as I know, the C++11 standard does not make this requirement. </p> <p> It would be good to highlight this discrepancy in the doc, especially since the doc "Included on the C++11 Recommendation" section let's you think that boost's chrono and std's chrono are interchangeable. </p> Sébastien Barthélémy <barthelemy@…> https://svn.boost.org/trac10/ticket/11639 https://svn.boost.org/trac10/ticket/11639 Report #11633: chrono IO V1 may throw bad_cast Wed, 09 Sep 2015 14:59:45 GMT Mon, 28 Aug 2017 05:19:54 GMT <p> I had occurences of chrono io throwing bad_cast exceptions, which lead to backtraces like this one: </p> <pre class="wiki"> #0 0x00007ffff54fda30 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #1 0x00007ffff554f2a2 in std::__throw_bad_cast() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #2 0x00007ffff2289bab in std::use_facet&lt;boost::chrono::duration_punct&lt;char&gt; &gt; (__loc=...) at /usr/include/c++/4.8/bits/locale_classes.tcc:137 #3 0x00007ffff2288c61 in boost::chrono::operator&lt;&lt; &lt;char, std::char_traits&lt;char&gt;, boost::rational&lt;int&gt;, boost::ratio&lt;1l, 1l&gt; &gt; (os=..., d=...) at /home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io_v1/chrono_io.hpp:210 </pre><p> I think the attached minimal example reproduces the issue. </p> <p> Here the compile &amp; run log using boost 1.58 </p> <pre class="wiki">$ make clean &amp;&amp; make test rm -f src/*.o src/chrono_io clang++ -std=c++11 -c -g -fPIC -Iinclude -I/usr/include -o src/chrono_io.o src/chrono_io.cc clang++ -std=c++11 -rdynamic -Lsrc -o src/chrono_io src/chrono_io.o -lboost_chrono -lboost_system -lpthread -L/usr/lib/x86_64-linux-gnu LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu ./src/chrono_io terminate called after throwing an instance of 'std::bad_cast' what(): std::bad_cast Aborted (core dumped) Makefile:13: recipe for target 'test' failed make: *** [test] Error 13 </pre><p> Here is the code around boost/include/boost/chrono/io_v1/chrono_io.hpp:210 </p> <pre class="wiki">template &lt;class CharT, class Traits, class Rep, class Period&gt; std::basic_ostream&lt;CharT, Traits&gt;&amp; operator&lt;&lt;(std::basic_ostream&lt;CharT, Traits&gt;&amp; os, const duration&lt;Rep, Period&gt;&amp; d) { typedef duration_punct&lt;CharT&gt; Facet; std::locale loc = os.getloc(); if (!std::has_facet&lt;Facet&gt;(loc)) os.imbue(std::locale(loc, new Facet)); const Facet&amp; f = std::use_facet&lt;Facet&gt;(os.getloc()); //&lt;&lt;&lt;&lt;&lt;&lt;&lt; line210, throw here return os &lt;&lt; d.count() &lt;&lt; ' ' &lt;&lt; f.template name&lt;Period&gt;(d.count()); } </pre><p> maybe we could avoid calling os.getloc() again at line 210 to avoid the race? </p> Sébastien Barthélémy <barthelemy@…> https://svn.boost.org/trac10/ticket/11633 https://svn.boost.org/trac10/ticket/11633 Report #11629: Appears clash when the boost::log and boost::asio::io_service are running in the same time. Wed, 09 Sep 2015 03:12:44 GMT Wed, 09 Sep 2015 03:12:44 GMT <p> I meet the problem that the boost::log can't output any of log to target file when executes boost::asio::io_service.run() for socket. The socket uses the functions as followed: </p> <blockquote> <p> 1) async_connect 2) async_read_until. It receives data from server. 3) async_write. It sends heartbeat data interval 60 seconds. </p> </blockquote> <p> But if I mask the _ioService.run(),The boost::log work normally. what reason is that? what is I remind when use the boost::log and boost::asio::server? </p> <p> BOOST library version is boost_1_58. My OS information as followed: </p> <blockquote> <p> [liangzh@localhost agent]$ uname -a </p> <blockquote> <p> Linux localhost 2.6.32-358.el6.x86_64 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux </p> </blockquote> <p> [liangzh@localhost lebe_log]$ uname -m </p> <blockquote> <p> x86_64 </p> </blockquote> <p> [liangzh@localhost lebe_log]$ uname -r </p> <blockquote> <p> 2.6.32-358.el6.x86_64 </p> </blockquote> <p> [liangzh@localhost agent]$ gcc --version </p> <blockquote> <p> gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. </p> </blockquote> </blockquote> liangzhonghong <1054116023@…> https://svn.boost.org/trac10/ticket/11629 https://svn.boost.org/trac10/ticket/11629 Report #11626: graph: segfault with custom container example Mon, 07 Sep 2015 17:10:05 GMT Mon, 07 Sep 2015 17:25:33 GMT <p> Experimenting with using a custom container for boost graph and started with the example 'ordered_out_edges.cpp'. This example compiles fine, but has a segfault accessing string edge properties of the custom container. Back trace and other info are attached. </p> blobfish@… https://svn.boost.org/trac10/ticket/11626 https://svn.boost.org/trac10/ticket/11626 Report #11622: std::auto_ptr is deprecated Mon, 07 Sep 2015 09:10:26 GMT Wed, 30 May 2018 00:38:12 GMT <p> Hi, </p> <p> I'm using Boost 1.59 and compiling a signals2 program using a new compiler: gcc 5.2.1. </p> <p> My code is now littered with warnings!! warning: ‘template&lt;class&gt; class std::auto_ptr’ is deprecated </p> <p> and indeed: Checking it here <a class="ext-link" href="http://en.cppreference.com/w/cpp/memory/auto_ptr"><span class="icon">​</span>http://en.cppreference.com/w/cpp/memory/auto_ptr</a> I see: "deprecated since C++11" </p> <p> (Seems that std::unique_ptr is the favoured replacement.) </p> <p> Here's the output of an online compiler: <a class="ext-link" href="http://melpon.org/wandbox/permlink/7QyVTXZ51MVonsgv"><span class="icon">​</span>http://melpon.org/wandbox/permlink/7QyVTXZ51MVonsgv</a> </p> anonymous https://svn.boost.org/trac10/ticket/11622 https://svn.boost.org/trac10/ticket/11622 Report #11621: Regexp doesn't match "\\" Sun, 06 Sep 2015 10:37:26 GMT Sun, 06 Sep 2015 10:37:26 GMT <p> While in lexer, regexp: </p> <p> [\"]([<sup>\"]|([<br />]([<br />][\"]|[']|[n]|[t]|[b]|[r]|[ ])|[<br />]<a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a><a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a><a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a>|[<br />][x](<a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a>|[A-F]∣[a-f])(<a class="source" href="https://svn.boost.org/trac10/log/?revs=0-9">[0-9]</a>|[A-F][a-f]))|[<br />]([\n]|[\r\n])([ ]|[\t])*)*[\"] </sup></p> <p> doesn't match strings in expression </p> <p> let ticker_animation = [| </p> <blockquote> <p> "<br />"; "|"; "/"; "-"; </p> </blockquote> <p> The first string "<br />" seems to be matched with escaped second " instead as a string. </p> <p> To check, please visit <a class="ext-link" href="http://www.regexr.com/"><span class="icon">​</span>http://www.regexr.com/</a>. </p> dezelin@… https://svn.boost.org/trac10/ticket/11621 https://svn.boost.org/trac10/ticket/11621 Report #11620: BOOST_NO_AUTO_PTR support for ptr_container Sun, 06 Sep 2015 09:48:23 GMT Sun, 06 Sep 2015 09:48:23 GMT <p> it would be nice if ptr_container could make use of BOOST_NO_AUTO_PTR. </p> timblechmann https://svn.boost.org/trac10/ticket/11620 https://svn.boost.org/trac10/ticket/11620 Report #11619: Chrono V2 IO - format tags 'unsupported'? Fri, 04 Sep 2015 20:24:43 GMT Fri, 11 Sep 2015 17:02:24 GMT <p> <a href="http://www.boost.org/doc/libs/1_59_0/doc/html/chrono/reference.html#chrono.reference.io.ios_state_hpp.sag.set_time_fmt">http://www.boost.org/doc/libs/1_59_0/doc/html/chrono/reference.html#chrono.reference.io.ios_state_hpp.sag.set_time_fmt</a> </p> <p> table 6.3 on the page linked above describes format tags to be used with IO. Several are listed as unsupported. There is no explanation of what 'unsupported' means. Does it mean a format string with one of those tags will cause an exception? Will the format tag be ignored? Will the entire format string fail to work? Will interation over the string stop before or after the 'unsupported' tag? More explanation would be helpful here. </p> steve.hickman@… https://svn.boost.org/trac10/ticket/11619 https://svn.boost.org/trac10/ticket/11619 Report #11613: ptime deserialization runtime issue when using ClCompile->Optimization set to MaxSpeed. Wed, 02 Sep 2015 14:30:51 GMT Wed, 02 Sep 2015 14:30:51 GMT <p> When compiling with &lt;<a class="missing wiki">ClCompile</a>&gt;&lt;Optimization&gt;<a class="missing wiki">MaxSpeed</a>&lt;/Optimization&gt;&lt;<a class="missing wiki">/ClCompile</a>&gt;, ptime doesn't appear to deserialize properly from a file (the internal _date field appears to be bogus). I also deserialize UUID and it appears to be fine. When I switch the Optimization to either Full or Disabled, it seems to deserialize fine. </p> dirtypiece@… https://svn.boost.org/trac10/ticket/11613 https://svn.boost.org/trac10/ticket/11613 Report #11609: circular_buffer erroneously invalidates reverse_iterator at pop_back in debug mode Tue, 01 Sep 2015 15:50:34 GMT Wed, 02 Sep 2015 17:54:42 GMT <p> The circular_buffer container offers reverse iterators. Using one so that it points to the second-to-last element would in theory allow to pop_back() the last element without causing problems with that iterator. However, apparently pop_back() invalidates those reverse iterators even though they wouldn't cause problems, as if the debug_iterator_registry in boost/circular_buffer/debug.hpp is working correctly only for forward iterators but not for backward iterators. </p> <p> Example code that works fine without debug mode, but will run into a failed assertion in debug mode: </p> <pre class="wiki">#define BOOST_CB_ENABLE_DEBUG #include &lt;boost/circular_buffer.hpp&gt; #include &lt;iostream&gt; int main(int /*argc*/, char** /*argv*/) { typedef boost::circular_buffer&lt;int&gt; CircBuffer; CircBuffer testBuffer(2); testBuffer.push_back(4); testBuffer.push_back(8); CircBuffer::const_reverse_iterator bufIter = testBuffer.rbegin(); std::cout &lt;&lt; "element at rbegin=" &lt;&lt; *bufIter &lt;&lt; std::endl; // prints "=8" correctly ++bufIter; std::cout &lt;&lt; "element after ++=" &lt;&lt; *bufIter &lt;&lt; std::endl; // prints "=4" correctly testBuffer.pop_back(); std::cout &lt;&lt; "elem=" &lt;&lt; *bufIter &lt;&lt; std::endl; // ERROR: Causes "Assertion `is_valid(m_buff)' failed." } </pre> christian.stimming@… https://svn.boost.org/trac10/ticket/11609 https://svn.boost.org/trac10/ticket/11609 Report #11601: Boost 1.59 doesn't build with Visual C++ 2015 Mon, 31 Aug 2015 07:33:07 GMT Thu, 03 Sep 2015 17:56:06 GMT <p> Trying to build Boost with Visual C++ 2015 fails with an error message: can't find header file corecrt.h. It turns out that Visual C++ has changed the location of some header files in this release. The batch file vcvarsall.bat correctly sets the new path, but it looks like the Boost build program b2 makes its own guess at paths, and that guess was derived from earlier versions of Visual C++ and is no longer accurate? </p> anonymous https://svn.boost.org/trac10/ticket/11601 https://svn.boost.org/trac10/ticket/11601 Report #11597: undefined reference to boost::system::generic_category() Sat, 29 Aug 2015 05:57:02 GMT Sat, 29 Aug 2015 05:57:02 GMT <p> There is BOOST_SYSTEM_NO_DEPRECATED macro that allows to ignore deprecated vars and functions. However, this not trivial for big size project (<a class="missing wiki">LibreOffice</a>) that depends on dozen external libraries, that use boost, to propagate this define. </p> <p> To rectify it, reverse the logic and require the folks to define BOOST_SYSTEM_DEPRECATED only when deprecated stuff is really needed, with </p> <blockquote> <p> # ifdef BOOST_SYSTEM_DEPRECATED [...] # endif </p> </blockquote> davido https://svn.boost.org/trac10/ticket/11597 https://svn.boost.org/trac10/ticket/11597 Report #11595: boost container forward declares names from the std namespace illegally Thu, 27 Aug 2015 18:49:05 GMT Thu, 27 Aug 2015 18:49:05 GMT <p> Header &lt;boost/container/detail/std_fwd.hpp&gt; forward-declares stuff from the std namespace, which is illegal as per the C++ standard. It tries to detect the standard library to know it can do it safely, but this is imperfect and fails on more exotic standard library implementations. </p> <p> Code should be modified so that it falls back to including the right headers if dealing with an unknown standard library. </p> <p> It should also use better standard library detection logic based on boost.config instead of checking directly for libc++ and libstdc++ defines (indeed, some standard libraries sit on top of others, like STLPort). </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/11595 https://svn.boost.org/trac10/ticket/11595 Report #11594: mpl/test/string.cpp fails, test needs to take into account endianness. Thu, 27 Aug 2015 17:29:00 GMT Thu, 27 Aug 2015 17:40:26 GMT <p> Compiling mpl/test/string.cpp with Oracle Solaris Studio 12.4 on sparc-S2 platform, the test fails as follows: % CC -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m64 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I.. -c -o ./string.o ../libs/mpl/test/string.cpp "../libs/mpl/test/string.cpp", line 66: Warning: Multi-character character literal 'aaaa'. "../libs/mpl/test/string.cpp", line 66: Warning: Multi-character character literal 'aaaa'. ... ... "../libs/mpl/test/string.cpp", line 140: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;25185, 0, 0, 0, 0, 0, 0, 0&gt;, boost::mpl::string&lt;24930, 0, 0, 0, 0, 0, 0, 0&gt;&gt;::<strong></strong><strong></strong><strong></strong>. "../libs/mpl/test/string.cpp", line 143: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;6513249, 0, 0, 0, 0, 0, 0, 0&gt;, boost::mpl::string&lt;6382179, 0, 0, 0, 0, 0, 0, 0&gt;&gt;::<strong></strong><strong></strong><strong></strong>. "../libs/mpl/test/string.cpp", line 146: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;1684234849, 0, 0, 0, 0, 0, 0, 0&gt;, boost::mpl::string&lt;1633837924, 0, 0, 0, 0, 0, 0, 0&gt;&gt;::<strong></strong><strong></strong><strong></strong>. "../libs/mpl/test/string.cpp", line 149: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;1684234849, 101, 0, 0, 0, 0, 0, 0&gt;, boost::mpl::string&lt;1633837924, 101, 0, 0, 0, 0, 0, 0&gt;&gt;::<strong></strong><strong></strong><strong></strong>. ... "../libs/mpl/test/string.cpp", line 319: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;1633771864, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873&gt;, boost::mpl::string&lt;1482776929, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873, 1633771873&gt;&gt;::<strong></strong><strong></strong><strong></strong>. "../libs/mpl/test/string.cpp", line 321: Warning: Multi-character character literal 'aaaa'. "../libs/mpl/test/string.cpp", line 323: Error: Formal argument 1 of type mpl_::assert&lt;0&gt; in call to mpl_::assertion_failed&lt;0&gt;(mpl_::assert&lt;0&gt;) is being passed mpl_::failed<strong></strong><strong></strong><strong></strong>boost::is_same&lt;boost::mpl::string&lt;1633771864, 1633771873, 1633771873, 0, 0, 0, 0, 0&gt;, boost::mpl::string&lt;1482776929, 1633771873, 1633771873, 0, 0, 0, 0, 0&gt;&gt;::<strong></strong><strong></strong><strong></strong>. Compilation aborted, too many Error messages. % </p> <p> In boost/mpl/string.hpp: </p> <blockquote> <p> #if defined(BOOST_ENDIAN_LITTLE_BYTE) &amp;&amp; defined(<span class="underline">SUNPRO_CC) ... #else ... </span></p> </blockquote> <p> condition should be fixed to correctly detect endiannes. </p> <p> The following change causes the testcase to compile. diff string.hpp string.hpp_new 62c62 &lt; #if defined(BOOST_ENDIAN_LITTLE_BYTE) &amp;&amp; defined(<span class="underline">SUNPRO_CC) --- </span></p> <blockquote class="citation"> <blockquote> <p> #if BOOST_ENDIAN_LITTLE_BYTE &amp;&amp; defined(<span class="underline">SUNPRO_CC) </span></p> </blockquote> </blockquote> <p> With this change, the result is: CC -compat=5 -library=stlport4 -xO4 -mt -erroff=%none -m64 -KPIC -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I.. -c -o ./string.o ../libs/mpl/test/string.cpp "../libs/mpl/test/string.cpp", line 66: Warning: Multi-character character literal 'aaaa'. ... "../libs/mpl/test/string.cpp", line 363: Warning: Multi-character character literal 'el'. 72 Warning(s) detected. % </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11594 https://svn.boost.org/trac10/ticket/11594 Report #11588: Build error using --build-type=complete Thu, 27 Aug 2015 12:05:16 GMT Thu, 27 Aug 2015 12:24:01 GMT <p> .../boost_1_59_0 $ ./b2 --layout=versioned --build-type=complete --without-mpi -sICU_PATH=$BUILD_PREFIX toolset=gcc architecture=x86 address-model=64 link=static --prefix=$BUILD_PREFIX install -j8 Performing configuration checks </p> <ul><li>32-bit : no </li><li>64-bit : yes </li><li>arm : no </li><li>mips1 : no </li><li>power : no </li><li>sparc : no </li><li>x86 : yes </li><li>symlinks supported : yes </li><li>lockfree boost::atomic_flag : yes </li><li>has_icu builds : yes </li></ul><p> warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam </p> <ul><li>zlib : yes </li><li>iconv (libc) : yes </li><li>icu : yes </li><li>compiler-supports-visibility : yes </li><li>compiler-supports-ssse3 : yes </li><li>compiler-supports-avx2 : yes </li><li>gcc visibility : yes </li><li>long double support : yes </li><li>zlib : yes (cached) </li><li>zlib : yes (cached) </li></ul><p> warning: Skipping Boost.Locale library with threading=single. warning: Skipping Boost.Thread library with threading=single. warning: Skipping Boost.Wave library with threading=single. </p> <ul><li>zlib : yes (cached) </li><li>zlib : yes (cached) </li><li>zlib : yes (cached) </li><li>zlib : yes (cached) </li><li>zlib : yes (cached) </li></ul><p> error: Name clash for '&lt;p/home/foo/3rdparty/linux-x86_64-gcc49/lib&gt;libboost_atomic-gcc49-mt-sd-1_59.a' error: error: Tried to build the target twice, with property sets having error: these incompatible properties: error: error: - &lt;dll-path&gt;/home/foo/3rdparty/linux-x86_64-gcc49/bin error: - none error: error: Please make sure to have consistent requirements for these error: properties everywhere in your project, especially for install error: targets. </p> anonymous https://svn.boost.org/trac10/ticket/11588 https://svn.boost.org/trac10/ticket/11588 Report #11587: Compute index from offset and vice versa Thu, 27 Aug 2015 09:38:48 GMT Thu, 27 Aug 2015 09:38:48 GMT <p> When using multi_array, or more precisely multi_array_ref, it is sometimes essential to compute a multi-dimensional index from an absolute offset from the origin, and vice versa. It is essential for inter-operability with legacy code that is not aware of multi_array. </p> <p> I believe that two methods: </p> <ul><li>multi_array::index_to_offset </li><li>multi_array::offset_to_index </li></ul><p> will do the job. </p> alex.shtf@… https://svn.boost.org/trac10/ticket/11587 https://svn.boost.org/trac10/ticket/11587 Report #11586: Webcheck result is outdated: Remove or update Thu, 27 Aug 2015 01:55:25 GMT Thu, 27 Aug 2015 01:57:58 GMT <p> <a href="http://www.boost.org/development/webcheck/about.html">http://www.boost.org/development/webcheck/about.html</a> says: </p> <pre class="wiki">This report was generated on Fri May 24 12:09:58 2013, a total of 1101 links were found. </pre><p> I suggest that either: </p> <p> (1) Updates are run, e.g. "/common/code/update-daily.sh" is executed. (If that file has 'daily' in it's name, shouldn't the last execution be more recent than that?) </p> <p> (2) Webcheck is removed, as "no overview" is sometimes better than "outdated, wrong, and possibly buggy overview that isn't regularily sanity-checked let alone proofed against exploits/features". Also, webcheck seems to be orphaned, as their site reports the last activity to have been on 2013-12-15: <a class="ext-link" href="https://github.com/arthurdejong/webcheck/commits/master"><span class="icon">​</span>https://github.com/arthurdejong/webcheck/commits/master</a> </p> Ben Wiederhake <Ben.Wiederhake@…> https://svn.boost.org/trac10/ticket/11586 https://svn.boost.org/trac10/ticket/11586 Report #11585: Johnson All Pairs - wrong edge mapping Wed, 26 Aug 2015 22:37:36 GMT Wed, 26 Aug 2015 22:37:36 GMT <p> I checked the example here : <a href="http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp">http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp</a> </p> <p> The results are correct. Then, I shortened the graph to 3 vertices and 6 edges (see attached file). The print out of the graph is incorrect (see output : some edges are reversed). </p> <p> If you run the example, you'll note edge 0-&gt;2 shortest path is reported as 90 instead of 98. As well, the dot graph produced is showing wrong edge properties. </p> Harold Ishebabi <harold.ishebabi@…> https://svn.boost.org/trac10/ticket/11585 https://svn.boost.org/trac10/ticket/11585 Report #11584: Johnson All Pairs - wrong edge mapping Wed, 26 Aug 2015 22:37:36 GMT Wed, 26 Aug 2015 22:37:36 GMT <p> I checked the example here : <a href="http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp">http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp</a> </p> <p> The results are correct. Then, I shortened the graph to 3 vertices and 6 edges (see attached file). The print out of the graph is incorrect (see output : some edges are reversed). </p> <p> If you run the example, you'll note edge 0-&gt;2 shortest path is reported as 90 instead of 98. As well, the dot graph produced is showing wrong edge properties. </p> Harold Ishebabi <harold.ishebabi@…> https://svn.boost.org/trac10/ticket/11584 https://svn.boost.org/trac10/ticket/11584 Report #11583: Johnson All Pairs - wrong edge mapping Wed, 26 Aug 2015 22:37:32 GMT Wed, 26 Aug 2015 22:37:32 GMT <p> I checked the example here : <a href="http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp">http://www.boost.org/doc/libs/1_40_0/libs/graph/example/johnson-eg.cpp</a> </p> <p> The results are correct. Then, I shortened the graph to 3 vertices and 6 edges (see attached file). The print out of the graph is incorrect (see output : some edges are reversed). </p> <p> If you run the example, you'll note edge 0-&gt;2 shortest path is reported as 90 instead of 98. As well, the dot graph produced is showing wrong edge properties. </p> Harold Ishebabi <harold.ishebabi@…> https://svn.boost.org/trac10/ticket/11583 https://svn.boost.org/trac10/ticket/11583 Report #11581: Interprocess documentation error Wed, 26 Aug 2015 13:55:05 GMT Wed, 26 Aug 2015 13:55:05 GMT <p> In the Reference section for the Boost.Interprocess library (seen at <a href="http://www.boost.org/doc/libs/1_59_0/doc/html/interprocess/indexes_reference.html">http://www.boost.org/doc/libs/1_59_0/doc/html/interprocess/indexes_reference.html</a>), there are a series of links under a heading of "Class Index." These ostensibly allow one to jump through the list of classes by their first letter. However, these links actually point to the Boost.<a class="missing wiki">CircularBuffer</a> documentation, which is confusing; I'm assuming this is a copy/paste error from somewhere. </p> anonymous https://svn.boost.org/trac10/ticket/11581 https://svn.boost.org/trac10/ticket/11581 Report #11580: invalid buffer result Tue, 25 Aug 2015 10:00:19 GMT Sat, 26 Mar 2016 15:33:14 GMT <p> The following code example produces invalid results. Reducing the distance e.g. from 2.37 to 1 produces correct results. I have tested this code with boost 1.57 and boost 1.59 with the same results. </p> <pre class="wiki"> #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/geometries.hpp&gt; namespace bg = boost::geometry; int main() { typedef bg::model::point&lt;double, 2, bg::cs::cartesian&gt; point; typedef bg::model::polygon&lt;point&gt; polygon; polygon poly; bg::read_wkt("POLYGON((14.02 474.96,14.02 494.96,14.022 494.96,14.022 486.24,14.02 474.96))", poly); bg::strategy::buffer::distance_symmetric&lt;double&gt; distance_strategy(2.37); bg::strategy::buffer::side_straight side_strategy; bg::strategy::buffer::join_miter join_strategy; bg::strategy::buffer::end_flat end_strategy; bg::strategy::buffer::point_circle point_strategy; bg::model::multi_polygon&lt;Polygon&gt; grown; bg::buffer(poly, grown, distance_strategy, side_strategy, join_strategy, end_strategy, point_strategy); std::cout &lt;&lt; bg::wkt(grown) &lt;&lt; std::endl; return 0; } </pre><p> The returned shape is: </p> <p> MULTIPOLYGON(((16.39 474.96,16.3842 474.795,16.3669 474.63,16.3382 474.467,16.2982 474.307,16.2471 474.149,16.1851 473.996,16.1126 473.847,16.0299 473.704,15.9374 473.567,15.8355 473.437,15.7248 473.314,15.6058 473.199,15.4791 473.092,15.3453 472.995,15.205 472.908,15.0589 472.83,14.9078 472.763,14.7524 472.706,14.5934 472.66,14.4315 472.626,14.2677 472.603,14.1027 472.591,13.9373 472.591,13.7723 472.603,13.6085 472.626,13.4466 472.66,13.2876 472.706,13.1322 472.763,12.9811 472.83,12.835 472.908,12.6947 472.995,12.5609 473.092,12.4342 473.199,12.3152 473.314,12.2045 473.437,12.1026 473.567,12.0101 473.704,11.9274 473.847,11.8549 473.996,11.7929 474.149,11.7418 474.307,11.7018 474.467,11.6731 474.63,11.6558 474.795,11.65 474.96,11.6558 475.125,11.6731 475.29,11.7018 475.453,11.7418 475.613,11.7929 475.771,11.8549 475.924,11.9274 476.073,12.0101 476.216,12.1026 476.353,12.2045 476.483,12.3152 476.606,12.4342 476.721,12.5609 476.828,12.6947 476.925,12.835 477.012,12.9811 477.09,13.1322 477.157,13.2876 477.214,13.4466 477.26,13.6085 477.294,13.7723 477.317,13.9373 477.329,14.1027 477.329,14.2677 477.317,14.4315 477.294,14.5934 477.26,14.7524 477.214,14.9078 477.157,15.0589 477.09,15.205 477.012,15.3453 476.925,15.4791 476.828,15.6058 476.721,15.7248 476.606,15.8355 476.483,15.9374 476.353,16.0299 476.216,16.1126 476.073,16.1851 475.924,16.2471 475.771,16.2982 475.613,16.3382 475.453,16.3669 475.29,16.3842 475.125,16.39 474.96))) </p> Marios Visvardis <visvardis.marios@…> https://svn.boost.org/trac10/ticket/11580 https://svn.boost.org/trac10/ticket/11580 Report #11577: Parallel graph documentation refers to non-existent type Mon, 24 Aug 2015 18:33:18 GMT Mon, 24 Aug 2015 18:33:18 GMT <p> The distributed_adjacency_list documentation <a href="http://www.boost.org/doc/libs/1_59_0/libs/graph_parallel/doc/html/distributed_adjacency_list.html">http://www.boost.org/doc/libs/1_59_0/libs/graph_parallel/doc/html/distributed_adjacency_list.html</a> refers to <strong>parallel::mpi::bsp_process_group</strong>, which no longer seems to exist. Using the type <strong>boost::graph::distributed::mpi_process_group</strong> instead does work. </p> Jeff Trull <edaskel@…> https://svn.boost.org/trac10/ticket/11577 https://svn.boost.org/trac10/ticket/11577 Report #11576: boost::geometry::intersection wrong results Mon, 24 Aug 2015 17:01:43 GMT Thu, 02 Jun 2016 21:00:20 GMT <p> Here is a code of intersection of two 2d triangles. boost::geometry::intersection (inside get_poly_intersection_area_S_2d function) gives empty result. It was ok in boost 1.55.0 version. </p> <pre class="wiki">// boost_geom.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include &lt;time.h&gt; #include &lt;deque&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;boost/foreach.hpp&gt; bool get_poly_intersection_area_S_2d( const double *poly_x_1, const int poly_n_1, const double *poly_x_2, const int poly_n_2, double *S) { // intersects two 2d polygons using boost::geometry library // polygons are in 3d format [(x0, y0, 0.0) (x1, y1, 0.0) .... (xn, yn, 0.0) ] // S is resulting area of intersection // returns true if intersection exists (area &gt; DBL_EPSILON) and false otherwise typedef boost::geometry::model::d2::point_xy&lt;double&gt; bg_point; typedef boost::geometry::model::polygon&lt; bg_point, false, false &gt; bg_polygon; *S = 0.0; bg_polygon bg_poly_1, bg_poly_2; // init boost 2d polygons by our double 3D polygons for(int i=0; i&lt;poly_n_1; i++) bg_poly_1.outer().push_back(bg_point(poly_x_1[i*3], poly_x_1[i*3+1])); for(int i=0; i&lt;poly_n_2; i++) bg_poly_2.outer().push_back(bg_point(poly_x_2[i*3], poly_x_2[i*3+1])); // correct polygons boost::geometry::correct(bg_poly_1); boost::geometry::correct(bg_poly_2); // call intersection std::deque&lt;bg_polygon&gt; output; bool res = boost::geometry::intersection(bg_poly_1, bg_poly_2, output); if(!res) return false; // for each polygon of intersection we add area BOOST_FOREACH(bg_polygon const&amp; p, output) { double s = boost::geometry::area(p); *S += s; } // no intersection if(fabs(*S) &lt;= DBL_EPSILON) return false; // intersection &gt; DBL_EPSILON return true; } int _tmain(int argc, _TCHAR* argv[]) { /*double p1[3 * 3] = {0.00000000000000000, -0.00000000000000000, 0.00000000000000000, 0.0025482760575599476, 0.00000000000000000, 0.00000000000000000, 0.00053468140165232941, 0.0010376086029810613, 0.00000000000000000}; double p2[4 * 3] = {0.0030662413355881501, 0.0010051691098038377, 0.00000000000000000, 0.0019811507896907981, -0.0011005695262458440, 0.00000000000000000, -3.2443866216813556e-005, -6.2960923264770714e-005, 0.00000000000000000, 0.0010526466796805442, 0.0020427777127849226, 0.00000000000000000};*/ double p1[3 * 3]={ -0.00000000000000000 , 0.00000000000000000 , 0.00000000000000000 , 0.0030892383152813277, 0.00000000000000000 , 0.00000000000000000 , 0.0017033357506405240, 0.0015364430953530355, 0.00000000000000000 }; double p2[3 * 3] = { 0.0023117731015916947, 0.00082400923980274917, 0.00000000000000000, 0.00079878052059454633, 0.00072051609032968962, 0.00000000000000000, 0.0016845031281539609, 0.0015194556912103366, 0.00000000000000000 }; double s = 0; get_poly_intersection_area_S_2d(p1, 3, p2, 3, &amp;s); return 0; } </pre> alex-x@… https://svn.boost.org/trac10/ticket/11576 https://svn.boost.org/trac10/ticket/11576 Report #11575: Boost::Polygon insert(item, true) of polygon_set_data wrong Mon, 24 Aug 2015 16:50:21 GMT Mon, 24 Aug 2015 16:50:21 GMT <p> Codes below shows the way "o_full_set.insert(o_item, true);" which works in 1_53 but the same codes not get the same result with the same input in 1_56. And if i use "o_full_set -= o_item;", then it works fine. </p> <p> oPrboundary : (0, 0) (1000, 0), (1000, 1000) (0, 1000) insert one polygon into pinGroup:(500, 500) (600, 500) (600, 600) (500, 600) </p> <p> #include &lt;iostream&gt; #include &lt;boost/polygon/polygon.hpp&gt; #include &lt;cassert&gt; namespace gtl = boost::polygon; using namespace boost::polygon::operators; </p> <p> <em>lets construct a 10x10 rectangle shaped polygon typedef gtl::polygon_data&lt;int&gt; Polygon; typedef gtl::polygon_traits&lt;Polygon&gt;::point_type Point; typedef gtl::polygon_set_data&lt;int&gt; <a class="missing wiki">PolygonSet</a>; typedef std::vector&lt;Polygon&gt; <a class="missing wiki">PolyDataSet</a>; void getOBS(Polygon &amp;oPrboundary, <a class="missing wiki">PolyDataSet</a> &amp;pinGroup) { </em></p> <blockquote> <p> <a class="missing wiki">PolygonSet</a> o_full_set; o_full_set.insert(oPrboundary, false); </p> </blockquote> <p> </p> <blockquote> <p> foreach (Polygon o_item, pinGroup) { </p> <blockquote> <p> <em>o_full_set.insert(o_item, true); </em> Insert As Hole, which works in 1_53 but not in 1_56 o_full_set -= o_item; <em> works in 1_53 and 1_56 </em></p> </blockquote> <p> } </p> </blockquote> <p> </p> <blockquote> <p> <a class="missing wiki">PolyDataSet</a> o_OBS_set; o_full_set.get(o_OBS_set); </p> </blockquote> <p> </p> <blockquote> <p> for (int i = 0; i &lt; o_OBS_set.size(); ++i) { </p> <blockquote> <p> Polygon o_poly = o_OBS_set.at(i); std::vector&lt;Point&gt; poly_points; poly_points.insert(poly_points.end(), o_poly.begin(), o_poly.end()); foreach(Point o_pos, poly_points) { </p> <blockquote> <p> std::cout &lt;&lt; "(" &lt;&lt; o_pos.x() &lt;&lt; ", " &lt;&lt; ") "; </p> </blockquote> <p> } std::cout &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> <a class="ext-link" href="http://www.cnblogs.com/dawnWind/p/boost_003.html"><span class="icon">​</span>http://www.cnblogs.com/dawnWind/p/boost_003.html</a> </p> cybfly1@… https://svn.boost.org/trac10/ticket/11575 https://svn.boost.org/trac10/ticket/11575 Report #11573: Mac OSX 10.5.8 install of Boost v1.59 Mon, 24 Aug 2015 08:24:33 GMT Mon, 05 Oct 2015 10:35:54 GMT <p> Using Macports to install Boost fails on OSX 10.5.8 (Leopard). Version 1.58 installs fine. Server log file attached... </p> schalk@… https://svn.boost.org/trac10/ticket/11573 https://svn.boost.org/trac10/ticket/11573 Report #11568: Memory mapping with Boost version 1.57 Fri, 21 Aug 2015 11:54:41 GMT Sat, 22 Aug 2015 20:02:43 GMT <p> Hi, </p> <p> I am using Visual studio 2013 and boost library version 1.57. </p> <p> I am using boost::interprocess namespace for mapping file's contents in memory. </p> <p> I am using it in the following way: </p> <p> m_fileMapper = new boost::interprocess::file_mapping((m_strInputFileName-&gt;getStringValue()).c_str(), boost::interprocess::read_only); </p> <p> m_pixelRegion = new boost::interprocess::mapped_region(*m_fileMapper, boost::interprocess::read_only, m_FileHeader.<a class="missing wiki">PixelStartPos</a>); </p> <p> Here (m_strInputFileName-&gt;getStringValue()).c_str() will give the file which will be mapped to the memory. </p> <blockquote> <p> m_FileHeader.<a class="missing wiki">PixelStartPos</a> will give the position of the pixel in the file. </p> </blockquote> <p> But when I execute this it throws an exception of type "boost::interprocess::interprocess_exception" </p> <p> and the error code is 3, which is for "Access denied", even though the file is writable. This will happen when mapping the region. </p> <p> It works correctly with Visual studio 2010 and boost version 1.48 </p> <p> Kindly let me know how to solve this problem. </p> <p> Thanks &amp; regards, Ravi Appaji </p> raviappaji11@… https://svn.boost.org/trac10/ticket/11568 https://svn.boost.org/trac10/ticket/11568 Report #11567: Boost crashes when boost::filesystem::path::imbue(std::locale("")); Fri, 21 Aug 2015 10:47:25 GMT Wed, 30 Sep 2015 15:13:44 GMT <p> This code crashes: </p> <pre class="wiki"> boost::filesystem::path::imbue(std::locale("")); boost::filesystem::path p (L"привет"); </pre><p> in: </p> <pre class="wiki"> void dispatch(const std::wstring&amp; c, U&amp; to, const codecvt_type&amp; cvt) { if (c.size()) convert(&amp;*c.begin(), &amp;*c.begin() + c.size(), to, cvt); // SIGABRT cvt is invalid } </pre> anonymous https://svn.boost.org/trac10/ticket/11567 https://svn.boost.org/trac10/ticket/11567 Report #11564: ZLIB library test failing on Solaris Thu, 20 Aug 2015 13:47:23 GMT Thu, 20 Aug 2015 13:47:23 GMT <p> I'm building Boost 1.59.0 on a Solaris 11 x86_64 virtual machine. I am sure the ZLIB and BZIP2 library packages are installed. These are the commands I use to build: </p> <pre class="wiki">./bootstrap.sh --prefix=/export/home/dev00/boost_1_59_0 --with-toolset=sun ./b2 -sICU_PATH=/opt/icu4c-55.1 link=shared runtime-link=shared address-model=64 variant=release cxxflags="-std=c++11" linkflags="-std=c++11" install 2&gt;&amp;1 | tee ../libsol11.log </pre><p> When the configuration stage finishes, the build indicates it has not detected the ZLIB library. I checked the bin.v2/config.log file and it has this error message: </p> <pre class="wiki">"bin.v2/standalone/ac/zlib.h.cpp", line 1: Error: There is extra text on this line. Error: Cannot continue processing because of prior errors. </pre><p> I tried building the indicated file myself and it does generate the above error message. I checked the file and discovered that the cause of the error is a missing newline terminator. </p> <p> I have looked at the code generating the above file but I could not figure out how to make it add the newline character thus I decided to log this ticket. The file generating the CPP file above is tools/build/test/zlib.py. I'm assuming this is a Python file which I'm not familiar with. </p> lcarreon@… https://svn.boost.org/trac10/ticket/11564 https://svn.boost.org/trac10/ticket/11564 Report #11563: boost::range behavior changed from 1.55 to 1.56 Thu, 20 Aug 2015 12:15:43 GMT Fri, 21 Aug 2015 12:48:54 GMT <p> The following code sums up the problem, I think neither the behavior of &lt;= 1.55 nor the one of &gt;= 1.56 is desirable: </p> <pre class="wiki">#include &lt;boost/range/join.hpp&gt; #include &lt;iostream&gt; #include &lt;vector&gt; template &lt;typename T&gt; void p(T const&amp; t) { for(const auto i: t) { std::cout &lt;&lt; i &lt;&lt; '\n'; } } int main() { std::vector&lt;int&gt; u(8, 0); // Make this const and it works. const std::vector&lt;int&gt; v(8, 0); p(boost::range::join(v, u)); // This does not work &lt;= 1.55 but works &gt;= 1.56 p(boost::range::join(u, v)); // This does not work &gt;= 1.56 but works &lt;= 1.55 return 0; } </pre><p> Also see <a class="ext-link" href="http://melpon.org/wandbox/permlink/QuyJGrrLq3liyKDf"><span class="icon">​</span>http://melpon.org/wandbox/permlink/QuyJGrrLq3liyKDf</a> for easier trial and error. </p> fiesh@… https://svn.boost.org/trac10/ticket/11563 https://svn.boost.org/trac10/ticket/11563 Report #11561: Build fails with threading=single,multi Thu, 20 Aug 2015 07:30:22 GMT Sun, 25 Feb 2018 20:21:57 GMT <p> Hello, I'm the maintainer of boost in the MacPorts package management system. We just updated our boost to 1.59.0, after which we got a <a class="ext-link" href="https://trac.macports.org/ticket/48614"><span class="icon">​</span>report</a> that the build fails if <code>threading=single,multi</code> is used. The error is: </p> <pre class="wiki">error: Name clash for '&lt;pstage/lib&gt;libboost_atomic-mt.dylib' error: error: Tried to build the target twice, with property sets having error: these incompatible properties: error: error: - none error: - &lt;dll-path&gt;/opt/local/bin error: error: Please make sure to have consistent requirements for these error: properties everywhere in your project, especially for install error: targets. </pre><p> This used to work with 1.58.0 and earlier. Our default is <code>threading=multi</code> which still works fine with 1.59.0. </p> ryandesign@… https://svn.boost.org/trac10/ticket/11561 https://svn.boost.org/trac10/ticket/11561 Report #11553: Problem with std::complex Tue, 18 Aug 2015 11:00:02 GMT Tue, 18 Aug 2015 17:19:42 GMT <p> I compiled Boost 1.59.0 with Solaris Studio 12.4 in C++11 mode and I get the following error messages: </p> <p> "libs/python/src/converter/builtin_converters.cpp", line 474: Error: Overloading ambiguity between "std::complex&lt;double&gt;::complex(double, double)" and "std::complex&lt;double&gt;::complex(complex double<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>)". "libs/python/src/converter/builtin_converters.cpp", line 474: Error: Cannot return long from a function that should return std::complex&lt;double&gt;. </p> <p> I suspect this is a compiler issue, just want to confirm. </p> lcarreon@… https://svn.boost.org/trac10/ticket/11553 https://svn.boost.org/trac10/ticket/11553 Report #11552: Warning from chrono that could helpfully be suppressed Tue, 18 Aug 2015 10:58:32 GMT Tue, 22 Aug 2017 20:51:01 GMT <blockquote> <p> Boost.Chrono is emitting warnings with GCC (5.1.0) that cannot be suppressed even using the following cxxflags in the user jamfile </p> </blockquote> <pre class="wiki"> &lt;toolset&gt;gcc:&lt;cxxflags&gt;-Wno-deprecated-declarations &lt;toolset&gt;gcc:&lt;cxxflags&gt;-Wno-long-long &lt;toolset&gt;gcc:&lt;cxxflags&gt;-ftrack-macro-expansion=0 # Suppress note: in expansion of macro </pre><p> and they are repeated on every compilation which is quite annoying when reading the log file. </p> <p> For example: </p> <pre class="wiki">gcc.compile.c++ ..\..\..\bin.v2\libs\timer\build\gcc-mingw-5.1.0\debug\link-static\auto_timers_construction.o In file included from C:/Program Files/mingw-w64/x86_64-5.1.0-win32-seh-rt_v4-rev0/mingw64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/stdint.h:9:0, from ..\..\../boost/cstdint.hpp:60, from ..\..\../boost/ratio/config.hpp:13, from ..\..\../boost/ratio/ratio.hpp:35, from ..\..\../boost/chrono/duration.hpp:41, from ..\..\../boost/chrono/chrono.hpp:11, from ..\..\../boost/timer/timer.hpp:14, from ..\..\..\libs\timer\src\auto_timers_construction.cpp:23: ..\..\../boost/chrono/system_clocks.hpp:77:111: warning: use of C++11 long long integer constant [-Wlong-long] # define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::duration&lt;boost::int_least64_t, ratio&lt;BOOST_RATIO_INTMAX_C(1), BOOST_RATIO_INTMAX_C(10000000)&gt; &gt; ^ ..\..\../boost/chrono/system_clocks.hpp:77:90: note: in expansion of macro 'BOOST_RATIO_INTMAX_C' # define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::duration&lt;boost::int_least64_t, ratio&lt;BOOST_RATIO_INTMAX_C(1), BOOST_RATIO_INTMAX_C(10000000)&gt; &gt; </pre><p> and more... </p> <p> It would be nice if the user would not see these (spurious?) warnings. </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/11552 https://svn.boost.org/trac10/ticket/11552 Report #11551: Missing type member Tue, 18 Aug 2015 10:56:48 GMT Tue, 18 Aug 2015 10:56:48 GMT <p> I compiled Boost 1.59.0 with Solaris Studio 12.4 in C++11 mode and I get the following error messages: </p> <p> "./boost/proto/detail/preprocessed/make_expr_.hpp", line 73: Error: type is not a member of boost::proto::transform&lt;boost::proto::switch_&lt;boost::phoenix::phoenix_generator, boost::proto::tag_of&lt;boost::proto::_&gt;()&gt;, void&gt;::result&lt;boost::phoenix::phoenix_generator(boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt;&gt;, 0&gt;, boost::phoenix::actor&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;1&gt;&gt;, 0&gt;&gt;&gt;, 2&gt;)&gt;. </p> <p> My suspicion is that this is a compiler issue but I just need to confirm with you that it is. </p> lcarreon@… https://svn.boost.org/trac10/ticket/11551 https://svn.boost.org/trac10/ticket/11551 Report #11550: Solaris - boost::call_once issues Tue, 18 Aug 2015 10:46:34 GMT Wed, 23 Sep 2015 22:23:06 GMT <p> I compiled Boost 1.59.0 with Solaris Studio 12.4 in C++11 mode and I </p> <blockquote> <p> get the following error messages: </p> </blockquote> <pre class="wiki">"libs/thread/src/pthread/thread.cpp", line 144: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "libs/thread/src/pthread/thread.cpp", line 150: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "libs/context/src/posix/stack_traits.cpp", line 58: Error: Overloading ambiguity between "boost::call_once&lt;void(&amp;)(unsigned long*), unsigned long*&gt;(boost::once_flag&amp;, void(&amp;)(unsigned long*), unsigned long*&amp;&amp;)" and "boost::call_once&lt;void(*)(unsigned long*), unsigned long*&gt;(boost::once_flag&amp;, void(*)(unsigned long*), unsigned long*)". "libs/context/src/posix/stack_traits.cpp", line 66: Error: Overloading ambiguity between "boost::call_once&lt;void(&amp;)(rlimit*), rlimit*&gt;(boost::once_flag&amp;, void(&amp;)(rlimit*), rlimit*&amp;&amp;)" and "boost::call_once&lt;void(*)(rlimit*), rlimit*&gt;(boost::once_flag&amp;, void(*)(rlimit*), rlimit*)". "libs/coroutine/src/posix/stack_traits.cpp", line 56: Error: Overloading ambiguity between "boost::call_once&lt;void(&amp;)(unsigned long*), unsigned long*&gt;(boost::once_flag&amp;, void(&amp;)(unsigned long*), unsigned long*&amp;&amp;)" and "boost::call_once&lt;void(*)(unsigned long*), unsigned long*&gt;(boost::once_flag&amp;, void(*)(unsigned long*), unsigned long*)". "libs/coroutine/src/posix/stack_traits.cpp", line 64: Error: Overloading ambiguity between "boost::call_once&lt;void(&amp;)(rlimit*), rlimit*&gt;(boost::once_flag&amp;, void(&amp;)(rlimit*), rlimit*&amp;&amp;)" and "boost::call_once&lt;void(*)(rlimit*), rlimit*&gt;(boost::once_flag&amp;, void(*)(rlimit*), rlimit*)". "./boost/thread/once.hpp", line 38: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(*)()&amp;&gt;(boost::once_flag&amp;, void(*)()&amp;)". "./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp", line 145: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/spirit/home/classic/phoenix/closures.hpp", line 427: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/thread/once.hpp", line 38: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(*)()&amp;&gt;(boost::once_flag&amp;, void(*)()&amp;)". "./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp", line 145: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/thread/once.hpp", line 38: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(*)()&amp;&gt;(boost::once_flag&amp;, void(*)()&amp;)". "./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp", line 145: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/spirit/home/classic/phoenix/closures.hpp", line 427: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/thread/once.hpp", line 38: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(*)()&amp;&gt;(boost::once_flag&amp;, void(*)()&amp;)". "./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp", line 145: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". "./boost/thread/once.hpp", line 38: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(*)()&amp;&gt;(boost::once_flag&amp;, void(*)()&amp;)". "./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp", line 145: Error: Overloading ambiguity between "boost::call_once&lt;void(*)()&gt;(boost::once_flag&amp;, void(*)())" and "boost::call_once&lt;void(&amp;)()&gt;(boost::once_flag&amp;, void(&amp;)())". </pre><p> I'm not 100% sure whether these are compiler issues or Boost compiler configuration issues thus I decided to raise this ticket. </p> lcarreon@… https://svn.boost.org/trac10/ticket/11550 https://svn.boost.org/trac10/ticket/11550 Report #11548: Crosscompiling 1.59 with i686-w64-mingw32-g++ fails Tue, 18 Aug 2015 09:07:18 GMT Fri, 18 Nov 2016 10:27:42 GMT <p> Using </p> <blockquote> <p> using gcc : i686 : i686-w64-mingw32-g++ ; </p> </blockquote> <p> in tools/build/src/user-config.jam </p> <p> with i686-w64-mingw32-g++ (GCC) 4.8.2 </p> <p> and calling </p> <p> ./b2 toolset=gcc-i686 address-model=32 link=shared --stagedir=Win32 target-os=windows threading=multi threadapi=win32 variant=release --with-date_time --with-filesystem --with-graph --with-math --with-program_options --with-serialization --with-system --with-thread --with-timer </p> <p> gives compiler errors </p> <p> gcc.compile.c++ bin.v2/libs/serialization/build/gcc-mingw-i686/release/target-os-windows/threadapi-win32/threading-multi/text_woarchive.o In file included from ./boost/archive/detail/common_oarchive.hpp:21:0, </p> <blockquote> <p> from ./boost/archive/basic_text_oarchive.hpp:29, from ./boost/archive/text_woarchive.hpp:36, from libs/serialization/src/text_woarchive.cpp:17: </p> </blockquote> <p> ./boost/archive/detail/basic_oarchive.hpp:64:5: error: function ‘boost::archive::detail::helper_collection&amp; boost::archive::detail::basic_oarchive::get_helper_collection()’ definition is marked dllimport </p> <blockquote> <p> get_helper_collection(){ <sup> </sup></p> </blockquote> <p> In file included from ./boost/archive/detail/common_oarchive.hpp:22:0, </p> <blockquote> <p> from ./boost/archive/basic_text_oarchive.hpp:29, from ./boost/archive/text_woarchive.hpp:36, from libs/serialization/src/text_woarchive.cpp:17: </p> </blockquote> <p> ./boost/archive/detail/interface_oarchive.hpp:32:38: warning: type attributes ignored after type is already defined [-Wattributes] </p> <blockquote> <p> class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_oserializer; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> Crosscompiling 64bit version with x86_64-w64-mingw32-g++ (GCC) 4.8.2 also fails. </p> Alexander Zimmermann <zimmermann@…> https://svn.boost.org/trac10/ticket/11548 https://svn.boost.org/trac10/ticket/11548 Report #11542: Using geometry buffer with integer coordinate type Mon, 17 Aug 2015 16:21:01 GMT Mon, 17 Aug 2015 16:21:01 GMT <p> Applied the following patch to allow use of buffer when using an integer coordinate type. Found in 1_58, also present in 1_59. </p> <p> diff -Naur boost_1_58_0/boost/geometry/strategies/cartesian/buffer_point_square.hpp boost_1_58_0.new/boost/geometry/strategies/cartesian/buffer_point_square.hpp --- boost_1_58_0/boost/geometry/strategies/cartesian/buffer_point_square.hpp 2015-03-30 17:25:04.000000000 +0100 +++ boost_1_58_0.new/boost/geometry/strategies/cartesian/buffer_point_square.hpp 2015-07-01 15:42:33.174193134 +0100 @@ -71,10 +71,10 @@ </p> <blockquote> <p> <a class="missing wiki">DistanceType</a> const&amp; distance, <a class="missing wiki">OutputRange</a>&amp; output_range) const </p> </blockquote> <blockquote> <p> { </p> </blockquote> <ul><li> add_point(point, distance, -1.0, -1.0, output_range); </li><li> add_point(point, distance, -1.0, +1.0, output_range); </li><li> add_point(point, distance, +1.0, +1.0, output_range); </li><li> add_point(point, distance, +1.0, -1.0, output_range); </li></ul><p> + add_point(point, distance, -1, -1, output_range); + add_point(point, distance, -1, +1, output_range); + add_point(point, distance, +1, +1, output_range); + add_point(point, distance, +1, -1, output_range); </p> <blockquote> <p> <em> Close it: output_range.push_back(output_range.front()); </em></p> </blockquote> jim.whittaker@… https://svn.boost.org/trac10/ticket/11542 https://svn.boost.org/trac10/ticket/11542 Report #11539: VS2015 warning: macro redefinition Sat, 15 Aug 2015 11:13:21 GMT Wed, 23 Sep 2015 06:48:10 GMT <p> boost/asio/detail/config.hpp(227): warning C4005: 'BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT': macro redefinition boost/asio/detail/config.hpp(213): note: see previous definition of 'BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT' </p> anonymous https://svn.boost.org/trac10/ticket/11539 https://svn.boost.org/trac10/ticket/11539 Report #11537: named_recursive_mutex deadlock problem Thu, 13 Aug 2015 07:27:49 GMT Thu, 13 Aug 2015 07:27:49 GMT <p> In my fastcgi application code, I tried to use managed_mapped_file to communicate between process, and use named_recursive_mutex to do synchronization. With fastcgi, I started 3 child process, after a few minutes, I found all these 3 process waiting for lock: Thread 1 (Thread 0x7f0e2b536820 (LWP 16593)): <a class="missing ticket">#0</a> 0x0000003d9ee0e054 in <span class="underline">lll_lock_wait () from /lib64/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x0000003d9ee093a3 in _L_lock_892 () from /lib64/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x0000003d9ee09287 in pthread_mutex_lock () from /lib64/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x000000000054a9cf in boost::interprocess::ipcdetail::posix_recursive_mutex::lock() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x000000000054aabc in boost::interprocess::interprocess_recursive_mutex::lock() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x000000000054b304 in boost::interprocess::ipcdetail::shm_named_recursive_mutex::lock() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x000000000054b390 in boost::interprocess::named_recursive_mutex::lock() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x000000000054bade in boost::interprocess::scoped_lock&lt;boost::interprocess::named_recursive_mutex&gt;::scoped_lock(boost::interprocess::named_recursive_mutex&amp;) () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> 0x00000000005647ef in IPRateLimit::CIPLimit::incCount(unsigned int, IPRateLimit::iprate&amp;) () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> 0x00000000004d8017 in (anonymous namespace)::TboProc::operator()() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10" title="#10: Bugs: allyourbase.jam file is bad. (closed: Out of Date)">#10</a> 0x00000000004e40f9 in Goome::FCGI_Accepter&lt;(anonymous namespace)::<a class="missing wiki">TboProc</a>&gt;::dispatch() () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11" title="#11: Bugs: why not using mt19937? (closed: Fixed)">#11</a> 0x00000000004e2f80 in fork_main(int) () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/12" title="#12: Bugs: Can't specify VertexPredicate (closed: Fixed)">#12</a> 0x00000000004e346f in main () </span></p> zzweng_2001@… https://svn.boost.org/trac10/ticket/11537 https://svn.boost.org/trac10/ticket/11537 Report #11535: standard integrate_times function causes tiny time steps Wed, 12 Aug 2015 02:50:48 GMT Mon, 16 Apr 2018 15:48:15 GMT <p> Hello! </p> <p> While implementing a new algorithm, I discovered that the function boost::numeric::odeint::detail::integrate_times(...) produces tiny time steps due to numerical accuracy issues (the relative error dt/t &lt; 1e-18 for type long double with 18 significant digits). After changing the function as below, the runge_kutta4 algorithm became about 15% faster for my problem at the same accuracy. But maybe I am missing the reason for the old implementation? </p> <p> Here is the new code with the old stuff commented out: </p> <pre class="wiki">/* * integrate_times for simple stepper */ template&lt; class Stepper , class System , class State , class TimeIterator , class Time , class Observer &gt; size_t integrate_times( Stepper stepper , System system , State &amp;start_state , TimeIterator start_time , TimeIterator end_time , Time dt , Observer observer , stepper_tag ) { BOOST_USING_STD_MIN(); typename odeint::unwrap_reference&lt; Observer &gt;::type &amp;obs = observer; size_t steps = 0; Time current_dt = dt; while( true ) { Time current_time = *start_time++; obs( start_state , current_time ); if( start_time == end_time ) break; // while( less_with_sign( current_time , *start_time , current_dt ) ) // { current_dt = min BOOST_PREVENT_MACRO_SUBSTITUTION ( dt , *start_time - current_time ); stepper.do_step( system , start_state , current_time , current_dt ); // current_time += current_dt; current_time = *start_time; //THIS IS NEW! steps++; // } } return steps; } </pre> gaiwa84@… https://svn.boost.org/trac10/ticket/11535 https://svn.boost.org/trac10/ticket/11535 Report #11534: timer/inspect execution failure w/ g++-4.9.2 on Solaris 11.2 Tue, 11 Aug 2015 18:51:32 GMT Tue, 11 Aug 2015 18:51:32 GMT <p> Problem:timer/inspect test fails to execute with </p> <blockquote> <p> 1 duplicate bookmarks 13 broken links 1 files with a C-style assert macro </p> </blockquote> <p> with g++4.9.2 on Solaris 11.2. Test fails with studio 12.4 as well. </p> <p> Log of the run: </p> <blockquote> <p> "../../../bin.v2/tools/inspect/build/gcc-4.8.2/release/link-static/inspect" /net/pontus/export/users/aixie/isv_test/boost_test/test_gcc/boost_1_57_0/libs/timer -text -brief &gt; "../../../bin.v2/libs/timer/test/inspect.test/gcc-4.8.2/release/inspect.output" 2&gt;&amp;1 </p> </blockquote> <p> ... </p> <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> Boost Inspection Report Run Date: 00:16:28 UTC, Wednesday 04 February 2015 </p> <p> Totals: </p> <blockquote> <p> 19 files scanned 11 directories scanned (including root) 15 problems reported </p> </blockquote> <p> Problem counts: </p> <blockquote> <p> 0 files missing Boost license info or having wrong reference text 0 files missing copyright notice 0 files with invalid line endings 0 files that don't end with a newline 0 bookmarks with invalid characters 1 duplicate bookmarks 0 invalid urls 13 broken links 0 unlinked files 0 file and directory name issues 0 files with tabs 0 files with non-ASCII chars 0 files with Apple macros 1 files with a C-style assert macro 0 files with a deprecated BOOST macro 0 violations of the Boost min/max guidelines 0 usages of unnamed namespaces in headers (including .ipp files) </p> </blockquote> <p> ... |doc| </p> <blockquote> <p> doc/ </p> <blockquote> <p> "cpu_timers.html": Broken link: ../example/auto_cpu_example.cpp Duplicate bookmark: format Unknown bookmark: #cpu_timer-format "original_timer.html": Broken link: ../../boost/timer.hpp Broken link: ../../boost/progress.hpp Broken link: ../../boost/timer.hpp Broken link: ../../boost/progress.hpp Broken link: ../utility/utility.htm#Class_noncopyable </p> </blockquote> </blockquote> <p> |src| </p> <blockquote> <p> src/ </p> <blockquote> <p> "cpu_timer.cpp": C-style assert macro on line 107 </p> </blockquote> </blockquote> angela.xie@… https://svn.boost.org/trac10/ticket/11534 https://svn.boost.org/trac10/ticket/11534 Report #11529: regression: boost::archive::archive_exception exception during serialization non latin1 strings to xml Fri, 07 Aug 2015 10:44:05 GMT Wed, 09 Mar 2016 10:52:47 GMT <p> Just try compile and run following example: </p> <pre class="wiki">int _tmain(int argc, _TCHAR* argv[]) { boost::filesystem::wofstream ofs("c:\\test.xml"); std::string s1 = "kkk"; std::wstring w1 = L"kkk"; std::wstring w2 = L"апр"; // some non-lati1 (for example russians) letters boost::archive::xml_woarchive oa(ofs); oa &lt;&lt; boost::serialization::make_nvp("key1", s1); oa &lt;&lt; boost::serialization::make_nvp("key2", w1); oa &lt;&lt; boost::serialization::make_nvp("key3", w2); // here exception is throw return 0; } </pre><p> This code was working in 1.38 + VS2005, 1.44+VS2005, 1.52+VS2005, 1.52+VS2012, 1.52+VS2013. When I have updated from boost 1.52 to boost 1.58 (both VS2013) I have mentioned my app crashes during serialization. I have tried this code on 1.57 + VS 2012 (unfortunatelly I don't have 1.57 compiled for VS2013) and it works. So problem appears between 1.57 and 1.58. If need I can obtain crash dumps. </p> nikolay@… https://svn.boost.org/trac10/ticket/11529 https://svn.boost.org/trac10/ticket/11529 Report #11528: MSVS 2015 + boost::range: STL and Boost iterators Thu, 06 Aug 2015 14:16:16 GMT Tue, 28 Feb 2017 15:03:14 GMT <p> The attached test program compiled with MSVS 2013, but doesn't with MSVS2015 in debug mode and Boost-trunk as of 2015-08-05. The <code>transform_iterator</code> is recognised as Boost foward iterator, but only as STL input iterator because its reference type is <code>int</code>. Since <code>boost::max_element</code> uses <code>std::max_element</code>, it doesn't compile in debug mode with: </p> <pre class="wiki">c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility(1005): error C2338: next requires forward iterator </pre><p> I'd be happy if this code compiled and worked, or if otherwise the Boost assertion would fire because the transform iterator is not a Boost forward traversal iterator. </p> Dennis Schneider <dsr@…> https://svn.boost.org/trac10/ticket/11528 https://svn.boost.org/trac10/ticket/11528 Report #11527: socket connection error Thu, 06 Aug 2015 13:52:14 GMT Thu, 06 Aug 2015 13:52:14 GMT <p> image the following code! it uses 2 threads and creates simple server client connection the code is simple and I use synchronize functions to make it easier to understand. in the client thread if I use : </p> <p> while (error_ &amp;&amp; it != end) </p> <blockquote> <p> { skt.close(); <em> skt is socket skt.connect(*it++, error_); } </em></p> </blockquote> <p> the the program crashes when it want to read or write something to the socket !! but if I use:boost::asio::connect(skt, it); then I works perfectly!!! notice that i will have this problem only if I use the code in two threads inside a single process. if I run the code in two different processes everything is fine. I am using windows 7 x67 and VS2013 but I am using 32bit project and 32bit boost library . </p> danial1360@… https://svn.boost.org/trac10/ticket/11527 https://svn.boost.org/trac10/ticket/11527 Report #11523: Interprocess communication between x86 and x64 issue Tue, 04 Aug 2015 13:50:50 GMT Tue, 04 Aug 2015 13:50:50 GMT <p> My code below is a very simple example, that should work to communicate between x86 and x64. But it doesn't... </p> <p> If I create it in x64 and open in win32, the win32 process stuck at a lock at function <em>try_based_lock</em> in <code>boost/int/sync/detail/common_algorithms.hpp</code> In the other way around: win32 create, x64 open: the x64 process crashes at <em>name_length</em> in <code>segment_manager_helper.hpp</code> while trying to find the name from an index (<em>priv_generic_find</em> in <code>segment_manager.hxx</code>). </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt; </span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/interprocess/managed_shared_memory.hpp&gt; </span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">bip</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">interprocess</span><span class="p">;</span> <span class="c1">// open in WIN32, create in x64 </span> <span class="cp">#ifdef _WIN32 </span> <span class="n">bip</span><span class="o">::</span><span class="n">managed_shared_memory</span> <span class="n">msm</span><span class="p">(</span><span class="n">bip</span><span class="o">::</span><span class="n">open_only</span><span class="p">,</span> <span class="s">&quot;TestIPC&quot;</span><span class="p">);</span> <span class="cp">#elsif X64 </span> <span class="n">bip</span><span class="o">::</span><span class="n">shared_memory_object</span><span class="o">::</span><span class="n">remove</span><span class="p">(</span><span class="s">&quot;TestIPC&quot;</span><span class="p">);</span> <span class="n">bip</span><span class="o">::</span><span class="n">managed_shared_memory</span> <span class="n">msm</span><span class="p">(</span><span class="n">bip</span><span class="o">::</span><span class="n">create_only</span><span class="p">,</span> <span class="s">&quot;TestIPC&quot;</span><span class="p">,</span> <span class="mi">4096</span><span class="p">);</span> <span class="n">msm</span><span class="p">.</span><span class="n">construct</span><span class="o">&lt;</span><span class="kt">uint32_t</span><span class="o">&gt;</span><span class="p">(</span><span class="s">&quot;Data&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">](</span><span class="mi">10</span><span class="p">);</span> <span class="cp">#endif </span> <span class="c1">// Get Data and print it </span> <span class="k">auto</span> <span class="n">data</span> <span class="o">=</span> <span class="n">msm</span><span class="p">.</span><span class="n">find</span><span class="o">&lt;</span><span class="kt">uint32_t</span><span class="o">&gt;</span><span class="p">(</span><span class="s">&quot;Data&quot;</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">second</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="o">*</span><span class="n">data</span><span class="p">.</span><span class="n">first</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="n">std</span><span class="o">::</span><span class="n">cin</span><span class="p">.</span><span class="n">ignore</span><span class="p">();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> I am using Windows 7 and VC12. </p> lutztonineubert@… https://svn.boost.org/trac10/ticket/11523 https://svn.boost.org/trac10/ticket/11523 Report #11521: Cannot create basic_vectorstream<std::vector<char>> in Boost 1.55+ Sat, 01 Aug 2015 23:59:07 GMT Thu, 20 Aug 2015 23:06:48 GMT <p> Moving from Boost 1.54 to 1.55 (and 1.58) I now get this error during compilation (VS2010): </p> <p> void GzipDecompression::Decompress(const unsigned char * src, int length) { </p> <blockquote> <p> if(src) { </p> <blockquote> <p> <em> Create an input-stream source for the data buffer so we can used the boost filtering buffer std::ifstream inputstream; typedef boost::iostreams::basic_array_source&lt;char&gt; Device; boost::iostreams::stream_buffer&lt;Device&gt; buffer((char *)src, length); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Inflate using the GZIP filter filtering_streambuf&lt;input&gt; in; in.push(gzip_decompressor()); in.push(buffer); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Get the result into a vector boost::interprocess::basic_vectorstream&lt;std::vector&lt;char&gt;&gt; vectorStream; copy(in, vectorStream); std::vector&lt;char&gt; output(vectorStream.vector()); </em></p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> error C2243: 'type cast' : conversion from 'boost::interprocess::basic_vectorstream&lt;<a class="missing wiki">CharVector</a>&gt; *' to 'volatile const std::basic_streambuf&lt;_Elem,_Traits&gt; *' exists, but is inaccessible c:\boost\boost_1_55_0\boost\iostreams </p> anonymous https://svn.boost.org/trac10/ticket/11521 https://svn.boost.org/trac10/ticket/11521 Report #11520: pointer_iserializer requires operator delete(void*, size_t) for classes that have a specific operator new Fri, 31 Jul 2015 20:59:28 GMT Sun, 06 Mar 2016 08:04:42 GMT <p> Serialization of pointers to objects, which have a class specific operator new fails if the class only provides the regular (see <a class="ext-link" href="https://github.com/boostorg/serialization/blob/master/include/boost/archive/detail/iserializer.hpp#L236"><span class="icon">​</span>https://github.com/boostorg/serialization/blob/master/include/boost/archive/detail/iserializer.hpp#L236</a>) </p> <p> T::operator delete(void*) </p> <p> by requiring definition of </p> <p> T::operator delete(void*, std::size_t) </p> <p> However, the operator delete with size argument is entirely optional in the C++ standard. The comment in the code says this choice was made because the delete operator with only one argument is a usual deallocator, which the author assumes calls the destructor. This is incorrect in two ways: a) operator delete never calls the destructor (the delete expression calls the destructor and then operator delete to deallocate the storage, see sec. 5.3.5 of the standard) b) operator delete with a size argument is a usual delete operator (non-placement), just like the version with one argument. </p> <p> In fact, it seems that the behaviour may be undefined if both versions of the delete operator are defined (sec. 5.3.5 paragraph 10). </p> <p> I don't know how to test which of the two operators exists, but it seems safer to me to use the one-argument version. My existing code stopped working after upgrading boost, and I do not have access to the class being serialized. I am using an external non-intrusive serialization function. </p> Fabian Kislat <fabian.kislat@…> https://svn.boost.org/trac10/ticket/11520 https://svn.boost.org/trac10/ticket/11520 Report #11515: dynamic_bitset move constructor should be conditionally noexcept Mon, 27 Jul 2015 19:09:58 GMT Mon, 27 Jul 2015 19:09:58 GMT <p> It should be noexcept if buffer_type is nothrow move constructible, i.e., <code>noexcept(is_nothrow_move_constructible&lt;buffer_type&gt;::value)</code>. </p> <p> Otherwise, a <code>std::vector&lt;dynamic_bitset&gt;</code> will be forced to copy on reallocation. </p> anonymous https://svn.boost.org/trac10/ticket/11515 https://svn.boost.org/trac10/ticket/11515 Report #11513: roadmap update Mon, 27 Jul 2015 07:29:43 GMT Mon, 27 Jul 2015 07:29:43 GMT <p> hi, could you try update the roadmap ; seems milestone 1.58 has been completed is 1.59 really ~2 weeks away ? great! keep up your amazing work! </p> anonymous https://svn.boost.org/trac10/ticket/11513 https://svn.boost.org/trac10/ticket/11513 Report #11511: concept_checks: -Wshadow warning isued Sun, 26 Jul 2015 13:06:11 GMT Sun, 26 Jul 2015 13:06:11 GMT <p> -Wshadow warnings are issued. </p> davido https://svn.boost.org/trac10/ticket/11511 https://svn.boost.org/trac10/ticket/11511 Report #11509: gzip: -Wunused warning issued Sun, 26 Jul 2015 12:51:58 GMT Sun, 26 Jul 2015 12:51:58 GMT <p> -Wunused warning is issued. </p> davido https://svn.boost.org/trac10/ticket/11509 https://svn.boost.org/trac10/ticket/11509 Report #11508: buffer: -Wshadow warning issued Sun, 26 Jul 2015 12:49:59 GMT Sun, 26 Jul 2015 12:49:59 GMT <p> -Wshadow warnings are issued for the following files: </p> <ul><li>buffer.hpp </li><li>gzip.hpp </li><li>zlib.cpp </li></ul> davido https://svn.boost.org/trac10/ticket/11508 https://svn.boost.org/trac10/ticket/11508 Report #11507: parser: -Wshadow warning issued Sun, 26 Jul 2015 12:46:41 GMT Sun, 26 Jul 2015 12:46:41 GMT <p> -Wshadow warnings are issued. </p> davido https://svn.boost.org/trac10/ticket/11507 https://svn.boost.org/trac10/ticket/11507 Report #11506: rational: -Wshadow warning issued Sun, 26 Jul 2015 12:44:26 GMT Sun, 26 Jul 2015 12:44:26 GMT <p> -Wshadow warning is issued for what parameter. </p> davido https://svn.boost.org/trac10/ticket/11506 https://svn.boost.org/trac10/ticket/11506 Report #11505: operators: -Wundef warning issued for __NVCC__ construct Sun, 26 Jul 2015 12:36:58 GMT Sun, 26 Jul 2015 12:36:58 GMT <p> -Wundef warning is issued for <span class="underline">NVCC</span> construct. </p> <p> Removing this line fixed it for me: </p> <p> "BOOST_WORKAROUND(<span class="underline">NVCC</span>, BOOST_TESTED_AT(1)) \" </p> davido https://svn.boost.org/trac10/ticket/11505 https://svn.boost.org/trac10/ticket/11505 Report #11504: operators: -Wundef warning issued for __NVCC__ construct Sun, 26 Jul 2015 12:33:39 GMT Sun, 26 Jul 2015 12:33:39 GMT <p> -Wundef warning is issued for <span class="underline">NVCC</span> construct. </p> davido https://svn.boost.org/trac10/ticket/11504 https://svn.boost.org/trac10/ticket/11504 Report #11502: narrow_encoding: -Wtype-limits warning is reported Sun, 26 Jul 2015 12:28:26 GMT Wed, 10 Feb 2016 12:51:31 GMT <p> -Wtype-limit is reported on this assert: </p> <blockquote> <p> char to_internal_trivial(char c) const { </p> <blockquote> <p> assert(c &lt;= 0x7f); &lt;=== Type limit return c; </p> </blockquote> <p> } </p> </blockquote> davido https://svn.boost.org/trac10/ticket/11502 https://svn.boost.org/trac10/ticket/11502 Report #11501: standard_callbacks: -Wreturn-type warning when building in release mode Sun, 26 Jul 2015 12:12:13 GMT Wed, 21 Oct 2015 13:32:24 GMT <p> assert macro is replaced to void in release build mode. This leads to -Wreturn-type warning. </p> davido https://svn.boost.org/trac10/ticket/11501 https://svn.boost.org/trac10/ticket/11501 Report #11499: windows - exception lock_error while intensive locking/unlocking of shared_mutex on many threads Sat, 25 Jul 2015 23:07:06 GMT Mon, 15 Aug 2016 17:59:25 GMT <pre class="wiki">#include "stdafx.h" #include &lt;boost/thread/shared_mutex.hpp&gt; #include &lt;thread&gt; #include &lt;mutex&gt; #include &lt;shared_mutex&gt; #include &lt;atomic&gt; #include &lt;vector&gt; using MutexT = boost::shared_mutex; using ReaderLockT = std::lock_guard&lt;MutexT&gt;; using WriterLockT = std::shared_lock&lt;MutexT&gt;; MutexT gMutex; std::atomic&lt;bool&gt; running = true; long reads = 0; void read() { while (running) { ReaderLockT lock(gMutex); std::this_thread::yield(); ++reads; } } int main() { using namespace std; vector&lt;thread&gt; threads; for (int i = 0; i &lt; 256; ++i) { threads.emplace_back(thread(read)); } string str; getline(std::cin, str); running = false; for (auto&amp; thread : threads) { thread.join(); } return 0; } </pre> andrew maclean <agm@…> https://svn.boost.org/trac10/ticket/11499 https://svn.boost.org/trac10/ticket/11499 Report #11497: std::front and std::back Fri, 24 Jul 2015 12:13:12 GMT Fri, 24 Jul 2015 12:13:12 GMT <p> I needed to get the first and last element in an array. Recently the STL got the free form std::begin and std::end which is good, but wouldn't it be an idea to have std::front (or boost::front) and std::back (boost::back) as well? </p> <p> See also <a class="ext-link" href="http://stackoverflow.com/questions/14880172/missing-stdfront-and-stdback"><span class="icon">​</span>http://stackoverflow.com/questions/14880172/missing-stdfront-and-stdback</a> </p> gast128@… https://svn.boost.org/trac10/ticket/11497 https://svn.boost.org/trac10/ticket/11497 Report #11490: boost::lockfree::spsc_queue::pop(T*, size_type) did not compile when used with interprocess allocator Tue, 21 Jul 2015 13:20:41 GMT Wed, 06 Jan 2016 12:37:49 GMT <p> The method runtime_sized_ringbuffer::pop(T*, size_type) when used with interprocess allocator produces the following error when compiled with g++ 4.9.1 under linux: </p> <p> /usr/local/include/boost/lockfree/spsc_queue.hpp: In instantiation of ‘boost::lockfree::detail::runtime_sized_ringbuffer&lt;T, Alloc&gt;::size_type boost::lockfree::detail::runtime_sized_ringbuffer&lt;T, Alloc&gt;::pop(T*, boost::lockfree::detail::runtime_sized_ringbuffer&lt;T, Alloc&gt;::size_type) [with T = int; Alloc = boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt;; boost::lockfree::detail::runtime_sized_ringbuffer&lt;T, Alloc&gt;::size_type = long unsigned int]’: /usr/local/include/boost/lockfree/spsc_queue.hpp:556:27: required from ‘boost::lockfree::detail::runtime_sized_ringbuffer&lt;T, Alloc&gt;::~runtime_sized_ringbuffer() [with T = int; Alloc = boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt;]’ /usr/local/include/boost/lockfree/spsc_queue.hpp:679:7: required from ‘void boost::interprocess::ipcdetail::placement_destroy&lt;T&gt;::destroy_n(void*, std::size_t, std::size_t&amp;) [with T = boost::lockfree::spsc_queue&lt;int, boost::lockfree::allocator&lt;boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt; &gt;; std::size_t = long unsigned int]’ spsc_queue_interprocess_test.cpp:33:1: required from here /usr/local/include/boost/lockfree/spsc_queue.hpp:609:72: error: no matching function for call to ‘boost::lockfree::detail::runtime_sized_ringbuffer&lt;int, boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt;::pop(int*&amp;, boost::lockfree::detail::runtime_sized_ringbuffer&lt;int, boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt;::size_type&amp;, boost::lockfree::detail::runtime_sized_ringbuffer&lt;int, boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt;::pointer&amp;, boost::lockfree::detail::runtime_sized_ringbuffer&lt;int, boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt;::size_type&amp;)’ </p> <blockquote> <p> return ringbuffer_base&lt;T&gt;::pop(ret, size, array_, max_elements_); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/lockfree/spsc_queue.hpp:609:72: note: candidate is: /usr/local/include/boost/lockfree/spsc_queue.hpp:263:12: note: boost::lockfree::detail::ringbuffer_base&lt;T&gt;::size_t boost::lockfree::detail::ringbuffer_base&lt;T&gt;::pop(T*, boost::lockfree::detail::ringbuffer_base&lt;T&gt;::size_t, T*, boost::lockfree::detail::ringbuffer_base&lt;T&gt;::size_t) [with T = int; boost::lockfree::detail::ringbuffer_base&lt;T&gt;::size_t = long unsigned int] </p> <blockquote> <p> size_t pop (T * output_buffer, size_t output_count, T * internal_buffer, size_t max_size) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/include/boost/lockfree/spsc_queue.hpp:263:12: note: no known conversion for argument 3 from ‘boost::lockfree::detail::runtime_sized_ringbuffer&lt;int, boost::interprocess::allocator&lt;int, boost::interprocess::segment_manager&lt;char, boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;, boost::interprocess::iset_index&gt; &gt; &gt;::pointer {aka boost::interprocess::offset_ptr&lt;int, long int, long unsigned int, 0ul&gt;}’ to ‘int*’ </p> <p> I have attached a small test to reproduce the problem and a patch, but other method seems to suffer from the same problem. </p> Philippe Leuba <pleuba@…> https://svn.boost.org/trac10/ticket/11490 https://svn.boost.org/trac10/ticket/11490 Report #11489: async_connect reports "success" on localhost even if the connection is refused Tue, 21 Jul 2015 11:05:22 GMT Tue, 21 Jul 2015 11:05:22 GMT <p> Async_connect does not report "failure" when the server is not open. This problem is replicated only on localhost using TCP communication (on UDP works fine). </p> <p> There are 2 tickets opened on the same issue (<a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8995" title="#8995: Bugs: async_connect reports &#34;success&#34; even if the connection is refused (closed: duplicate)">#8995</a> and <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/8795" title="#8795: Bugs: async_connect incorrectly reports success on failure (reopened)">#8795</a>) both closed, but the problem still replicates in upper versions. </p> cristina.radulescu22@… https://svn.boost.org/trac10/ticket/11489 https://svn.boost.org/trac10/ticket/11489 Report #11487: Boost doesn't build with Visual C++ 2015 Tue, 21 Jul 2015 06:57:14 GMT Wed, 06 Apr 2016 23:14:30 GMT <p> Trying to build Boost with Visual C++ 2015 fails with an error message: can't find header file corecrt.h. It turns out that Visual C++ has changed the location of some header files in this release. The batch file vcvarsall.bat correctly sets the new path, but it looks like the Boost build program b2 makes its own guess at paths, and that guess was derived from earlier versions of Visual C++ and is no longer accurate? </p> Russell Wallace <russell.wallace@…> https://svn.boost.org/trac10/ticket/11487 https://svn.boost.org/trac10/ticket/11487 Report #11486: Unable to Locate bjam.exe on web and unable to build Boost Jam using bootstrap.bat Tue, 21 Jul 2015 02:21:49 GMT Mon, 14 Dec 2015 12:24:33 GMT <p> Hi, I'm wanting to use Boost.Python to connect C++ with Python. I've installed boost. </p> <hr /> <ul><li>during the process I was not sure what MSVC version I have </li></ul><p> The VS 2013 express that I use is located in: Microsoft Visual Studio 12.0 </p> <p> But running the cl.exe (the compiler) within that directory gives Visual C++ version 18!! </p> <p> So I assume I go by the first number. So I downloaded boost windows installer version MSVC-12.0-32bit (32-bit because something nearly always goes wrong in the future like one library is 64-bit while another is 32-bit, so I simply chose 32-bit even though I'm on a Windows 8 64-bit machine). </p> <hr /> <p> Anyway, boost log attached, I tried running boostrap.bat in the boost install directory to try and build boost jam and it failed but maybe you can help there. </p> <p> Or just help me find pre-built binaries because they're not located on <a class="missing wiki">SourceForge</a> where all the links say they are located. -- Please Download and See! </p> <p> Thanks. Regards, -EM </p> Daniel Donnelly <enjoysmath@…> https://svn.boost.org/trac10/ticket/11486 https://svn.boost.org/trac10/ticket/11486 Report #11481: zip_iterator issue with _GLIBCXX_DEBUG and std::vector::insert Thu, 16 Jul 2015 11:59:20 GMT Thu, 16 Jul 2015 11:59:20 GMT <p> If one uses the <code>zip_iterator</code> class template with <code>std::vector::insert(It1, It2, It2)</code>, with <code>_GLIBCXX_DEBUG</code> defined, g++ return a compilation error: </p> <pre class="wiki">/usr/include/c++/4.9.2/debug/functions.h:220:69: error: invalid initialization of non-const reference of type ‘boost::tuples::cons&lt;int&amp;, boost::tuples::cons&lt;int&amp;, boost::tuples::null_type&gt; &gt;&amp;’ from an rvalue of type ‘boost::iterator_facade&lt;boost::zip_iterator&lt;boost::tuples::tuple&lt;__gnu_debug::_Safe_iterator&lt;__gnu_cxx::__normal_iterator&lt;int*, std::__cxx1998::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt;, std::__debug::vector&lt;int&gt; &gt;, __gnu_debug::_Safe_iterator&lt;__gnu_cxx::__normal_iterator&lt;int*, std::__cxx1998::vector&lt;int, std::allocator&lt;int&gt; &gt; &gt;, std::__debug::vector&lt;int&gt; &gt; &gt; &gt;, boost::tuples::cons&lt;int&amp;, boost::tuples::cons&lt;int&amp;, boost::tuples::null_type&gt; &gt;, boost::random_access_traversal_tag, boost::tuples::cons&lt;int&amp;, boost::tuples::cons&lt;int&amp;, boost::tuples::null_type&gt; &gt;, long int&gt;::reference {aka boost::tuples::cons&lt;int&amp;, boost::tuples::cons&lt;int&amp;, boost::tuples::null_type&gt; &gt;}’ return __foreign_iterator_aux4(__it, std::__addressof(*__other)); ^ </pre><p> The attached test case <code>test.cpp</code> shows the error, with g++-4.9. </p> laurent.rineau__cgal_boost@… https://svn.boost.org/trac10/ticket/11481 https://svn.boost.org/trac10/ticket/11481 Report #11480: Interprocess get_last_bootup_time use of Event Log on Windows is completely unreliable Wed, 15 Jul 2015 21:33:40 GMT Thu, 27 Apr 2017 15:48:55 GMT <p> We have been running into an issue where creating an interprocess message_queue would start to fail after some time on a production system (Windows 2012 Server) - throwing an interprocess_exception with error code 1 (native code=0). </p> <p> After setting up remote debugging on the production system, we tracked it down to the get_last_bootup_time() function returning false because it couldn't find the 'Event Log Started (6005)' event in the log. (win32_api.hpp) </p> <p> The Event Logs don't last forever. Windows prunes old events when the logs grow. If I understand the use of the Event Log to determine a boot time correctly, then this is a nasty hack and must be changed. It is not reliable. </p> <p> Perhaps a solution would be to maintain a 'current' boot time file. You could attempt to find the boot time using the Event log (or other technique) and write it to the 'current' file. If you couldn't obtain the boot time, just use the existing 'current' file. If no current file exists, write one with an arbitrary time (eg. 00000). At least this way, it will never fail, and usually will roll over to a new folder after a reboot. </p> Craig White <cwhite102@…> https://svn.boost.org/trac10/ticket/11480 https://svn.boost.org/trac10/ticket/11480 Report #11473: basic_ptree documentation is missing Tue, 14 Jul 2015 12:04:49 GMT Tue, 14 Jul 2015 12:04:49 GMT <p> basic_ptree class documentation is missing. It was available (thou hard to find) in 1.57, but in 1.58 there is no link to it from reference page. None of the 'basic_ptree' occurrences on this page: </p> <p> <a href="http://www.boost.org/doc/libs/1_58_0/doc/html/property_tree/reference.html">http://www.boost.org/doc/libs/1_58_0/doc/html/property_tree/reference.html</a> </p> <p> is a hyperlink. </p> Maciej Gajewski <maciej.gajewski0@…> https://svn.boost.org/trac10/ticket/11473 https://svn.boost.org/trac10/ticket/11473 Report #11470: Invalid results using convex_hull with unsigned integer points coordinates Fri, 10 Jul 2015 11:15:12 GMT Wed, 18 Nov 2015 11:06:12 GMT <p> Hi, I think convex_hull algorithm does not support unsigned integer points coordinates. </p> <p> The following code works well with signed integer but return a wrong result for unsigned version : </p> <pre class="wiki"> #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/polygon.hpp&gt; #include &lt;deque&gt; int main() { typedef boost::geometry::model::d2::point_xy&lt;unsigned int&gt; PointInt; typedef boost::geometry::model::polygon&lt;PointInt&gt; polygon_type; polygon_type poly1, convPoly1; polygon_type poly2, convPoly2; boost::geometry::read_wkt("POLYGON((245 143, 243 113, 236 101, 228 100, 222 106, 217 121, 217 144, 220 155, 227 165, 233 166, 237 163, 245 143))", poly1); boost::geometry::convex_hull(poly1, convPoly1); return 0; } </pre><p> Attached file is a representation of input polygon (orange) and output result (blue) curve. </p> Eric Noirfalise <eric.noirfalise@…> https://svn.boost.org/trac10/ticket/11470 https://svn.boost.org/trac10/ticket/11470 Report #11469: libs/iostreams/test/detail/file_handle.hpp should include unistd.h Thu, 09 Jul 2015 19:43:49 GMT Thu, 09 Jul 2015 19:43:49 GMT <p> the file libs/iostreams/test/detail/file_handle.hpp uses the ::close function. According to Posix, this is declared in unistd.h. </p> <p> However, the file does not include unistd.h </p> <p> It should. </p> <p> Yea...a nit. </p> Ed Vogel <edward.vogel@…> https://svn.boost.org/trac10/ticket/11469 https://svn.boost.org/trac10/ticket/11469 Report #11456: deadline timer works using gcc 4.4, breaks with gcc 4.7, after switching from boost 52 to 58 Wed, 08 Jul 2015 15:19:43 GMT Wed, 08 Jul 2015 15:19:43 GMT <p> Our project recently switched from boost 52 to boost 58 Our boost libs (.so) are built using gcc 4.4 on linux 32 bit </p> <p> When building our test application using gcc 4.4 we see no problems. When building with gcc 4.7 our test application, which consists of 2 deadline timers, starts, but ioservice::run never returns. When enabling -DBOOST_ASIO_ENABLE_HANDLER_TRACKING the application segfaults on boost/asio/detail/op_queue.hpp:42 (o1-&gt;next_ = 02;) </p> <p> Using boost 52, built with gcc 4.4, our test application, built with gcc 4.7, runs without problems. </p> P.S.vanderHeide@… https://svn.boost.org/trac10/ticket/11456 https://svn.boost.org/trac10/ticket/11456 Report #11448: posix::stream_descriptor with ::dup(STDIN_FILENO) as in sample posix chat client kills shell on Solaris 11.2 Thu, 02 Jul 2015 22:48:59 GMT Thu, 02 Jul 2015 23:24:18 GMT <p> If you build boost_1_58_0/libs/asio/example/cpp03/chat/posix_chat_client.cpp on Solaris 11.2 and run it, it immediately terminates. Unfortunately it terminates also the running shell which startet posix_chat_client. </p> <p> It is not important whether you compile with gcc or Sun CC. The behavior is always the same. </p> <p> It you redirect the input from a file (posix_chat_client &lt; some-file) or pipe data to it, everything works. The shell persists. </p> <p> If you disable /dev/poll for Boost::Asio (macro via command line at compilation -DBOOST_ASIO_DISABLE_DEV_POLL) the program runs and accepts inputs. As soon as you terminate the chat client the shell terminates, too. </p> <p> The problem seems to be the initialization of boost::asio::posix::stream_descriptor input_ in class posix_chat_client: input_(io_service, ::dup(STDIN_FILENO)) </p> Oliver Mueller <info@…> https://svn.boost.org/trac10/ticket/11448 https://svn.boost.org/trac10/ticket/11448 Report #11442: boost/smart_ptr/detail/yield_k.hpp should not unconditionally call ::nanosleep Thu, 02 Jul 2015 01:12:41 GMT Thu, 02 Jul 2015 01:12:41 GMT <p> The file boost/smart_ptr/detail/yield_k.hpp will call ::nanosleep when it's compiled in multi-threaded mode. </p> <p> As nanosleep is not required for Boost (there is a BOOST_HAS_NANOSLEEP function), this code should really be guarded by conditionals and an #error directive executed if the platform does not support nanosleep. </p> <p> Yea...a real nit...but my boss wants one posted... </p> <p> Ed </p> Ed Vogel <edward.vogel@…> https://svn.boost.org/trac10/ticket/11442 https://svn.boost.org/trac10/ticket/11442 Report #11441: Documentation sample error Wed, 01 Jul 2015 12:46:04 GMT Thu, 14 Jan 2016 00:12:26 GMT <p> User'd guide. </p> <blockquote> <p> Accumulators sample program: </p> </blockquote> <p> #include &lt;iostream&gt; #include &lt;boost/accumulators/accumulators.hpp&gt; #include &lt;boost/accumulators/statistics/stats.hpp&gt; #include &lt;boost/accumulators/statistics/mean.hpp&gt; #include &lt;boost/accumulators/statistics/moment.hpp&gt; using namespace boost::accumulators; </p> <p> int main() { </p> <blockquote> <p> <em> Define an accumulator set for calculating the mean and the </em> 2nd moment ... accumulator_set&lt;double, stats&lt;tag::mean, tag::moment&lt;2&gt; &gt; &gt; acc; </p> </blockquote> <blockquote> <p> <em> push in some data ... acc(1.2); acc(2.3); acc(3.4); acc(4.5); </em></p> </blockquote> <blockquote> <p> <em> Display the results ... std::cout &lt;&lt; "Mean: " &lt;&lt; mean(acc) &lt;&lt; std::endl; std::cout &lt;&lt; "Moment: " &lt;&lt; accumulators::moment&lt;2&gt;(acc) &lt;&lt; std::endl; </em></p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> In a line "std::cout &lt;&lt; "Moment: " &lt;&lt; accumulators::moment&lt;2&gt;(acc) &lt;&lt; std::endl;" name of namespace "accumulators" should be removed because namespace "accumulators" is already used. </p> ampoznyak@… https://svn.boost.org/trac10/ticket/11441 https://svn.boost.org/trac10/ticket/11441 Report #11440: bootstrap.sh suggests --toolset option Tue, 30 Jun 2015 22:04:55 GMT Tue, 30 Jun 2015 22:04:55 GMT <p> On FreeBSD ./bootstrap.sh --show-libraries says "### No toolset specified. Please use --toolset option." </p> <p> --toolset does not work, and ./bootstrap.sh says that the name of the option is --with-toolset, not --toolset </p> penorman@… https://svn.boost.org/trac10/ticket/11440 https://svn.boost.org/trac10/ticket/11440 Report #11439: Duplicate name of actual target: <pstage/lib>libboost_system.a Tue, 30 Jun 2015 19:15:39 GMT Thu, 17 Sep 2015 20:34:35 GMT <p> Hello, </p> <p> I am trying to compile boost1.53, I can't use a version newer than 1.55 as this is for the Cufflinks RNA tools. I already had this version installed and working previously, but an HDD made me have to reinstall everything. The commands I have used (multiple times) before are: </p> <p> ./bootstrap.sh </p> <p> which gives: </p> <p> Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86_64/b2 Detecting Python version... 2.7 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... not found. Generating Boost.Build configuration in project-config.jam... </p> <p> Bootstrapping is done. To build, run: </p> <blockquote> <p> ./b2 </p> </blockquote> <p> To adjust configuration, edit 'project-config.jam'. Further information: </p> <ul><li>Command line help: ./b2 --help </li></ul><p> </p> <ul><li>Getting started guide: <a href="http://www.boost.org/more/getting_started/unix-variants.html">http://www.boost.org/more/getting_started/unix-variants.html</a> </li></ul><p> </p> <ul><li>Boost.Build documentation: <a href="http://www.boost.org/boost-build2/doc/html/index.html">http://www.boost.org/boost-build2/doc/html/index.html</a> </li></ul><p> Then I run: </p> <p> ./bjam link=static runtime-link=static stage install I get the following </p> <p> Which is now giving me: </p> <p> Performing configuration checks </p> <ul><li>32-bit : no </li><li>64-bit : yes </li><li>x86 : yes </li><li>has_icu builds : yes </li></ul><p> warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam </p> <ul><li>iconv (libc) : yes </li><li>icu : yes </li><li>gcc visibility : yes </li><li>long double support : yes </li></ul><p> warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message. /genome/Apps/boost_1_53_0/tools/build/v2/build/virtual-target.jam:1079: in virtual-target.register-actual-name from module virtual-target error: Duplicate name of actual target: &lt;pstage/lib&gt;libboost_system.a error: previous virtual target { common%common.copy-libboost_system.a.STATIC_LIB { gcc%gcc.archive-libboost_system.a.STATIC_LIB { gcc%gcc.compile.c++-error_code.o.OBJ { error_code.cpp.CPP } } } } error: created from ./stage-proper error: another virtual target { common%common.copy-libboost_system.a.STATIC_LIB { gcc%gcc.archive-libboost_system.a.STATIC_LIB { gcc%gcc.compile.c++-error_code.o.OBJ { error_code.cpp.CPP } } } } error: created from ./stage-proper error: added properties: &lt;runtime-link&gt;shared &lt;warnings&gt;on error: removed properties: &lt;runtime-link&gt;static &lt;warnings&gt;all /genome/Apps/boost_1_53_0/tools/build/v2/build/virtual-target.jam:490: in actualize-no-scanner from module object(file-target)@3722 /genome/Apps/boost_1_53_0/tools/build/v2/build/virtual-target.jam:135: in object(file-target)@3722.actualize from module object(file-target)@3722 /genome/Apps/boost_1_53_0/tools/build/v2/build-system.jam:749: in load from module build-system /genome/Apps/boost_1_53_0/tools/build/v2/kernel/modules.jam:283: in import from module modules /genome/Apps/boost_1_53_0/tools/build/v2/kernel/bootstrap.jam:142: in boost-build from module /genome/Apps/boost_1_53_0/boost-build.jam:17: in module scope from module </p> <p> Whereas before it compiled without issue. I need the runtime-links to be static, when I try to make the cufflinks files I get a bunch of errors from hpp files in /usr/local/boost/* folders otherwise. </p> munholl@… https://svn.boost.org/trac10/ticket/11439 https://svn.boost.org/trac10/ticket/11439 Report #11438: Certificate for Boost wiki has expired Tue, 30 Jun 2015 17:10:09 GMT Tue, 30 Jun 2015 17:10:09 GMT <p> The security certificate for <a class="ext-link" href="https://svn.boost.org/trac/boost/wiki/ModularBoost"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki/ModularBoost</a> expired in March. This results in security warnings when I go to the Boost wiki. </p> marcm@… https://svn.boost.org/trac10/ticket/11438 https://svn.boost.org/trac10/ticket/11438 Report #11437: rolling_mean returns incorrect result when using unsigned int Tue, 30 Jun 2015 10:55:58 GMT Wed, 07 Feb 2018 10:16:33 GMT <p> Using rolling_mean with a sample type of "unsigned int" leads to incorrect results. The following example outputs 1.43166e+009 instead of the expected 1. </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/accumulators/accumulators.hpp&gt; #include &lt;boost/accumulators/statistics/stats.hpp&gt; #include &lt;boost/accumulators/statistics/count.hpp&gt; #include &lt;boost/accumulators/statistics/rolling_mean.hpp&gt; using namespace boost::accumulators; int main(int argc, char** argv) { accumulator_set&lt;unsigned int, stats&lt;tag::rolling_mean, tag::count&gt;&gt; acc(tag::rolling_window::window_size = 3); acc(3); acc(2); acc(1); acc(0); std::cout &lt;&lt; rolling_mean(acc) &lt;&lt; std::endl; } </pre><p> The same problem happens if the sample type is "int" but you pass unsigned ints to the accumulator. For example, if you replace the above code with the following code, the result is the same: </p> <pre class="wiki"> accumulator_set&lt;int, stats&lt;tag::rolling_mean, tag::count&gt;&gt; acc(tag::rolling_window::window_size = 3); acc(3U); acc(2U); acc(1U); acc(0U); </pre><p> I found this problem using Visual Studio 2010, after upgrading from Boost 1.44.0 to 1.58.0. With Boost 1.44.0, the above examples return 1. </p> Gareth White <gwhite@…> https://svn.boost.org/trac10/ticket/11437 https://svn.boost.org/trac10/ticket/11437 Report #11434: Broken link from Lambda docs Tue, 30 Jun 2015 00:56:06 GMT Fri, 23 Dec 2016 07:37:37 GMT <p> The last link from Bibliography (Yiannis Smaragdakis) is broken. </p> <p> <a href="http://www.boost.org/doc/libs/1_58_0/doc/html/lambda.html">http://www.boost.org/doc/libs/1_58_0/doc/html/lambda.html</a> </p> <p> It should point at <a class="ext-link" href="http://yanniss.github.io/fc++/"><span class="icon">​</span>http://yanniss.github.io/fc++/</a> and not <a class="ext-link" href="http://www.cc.gatech.edu/~yannis/fc++/"><span class="icon">​</span>http://www.cc.gatech.edu/~yannis/fc++/</a> </p> ToApolytoXaos https://svn.boost.org/trac10/ticket/11434 https://svn.boost.org/trac10/ticket/11434 Report #11430: accumulators/p_square_cumul_dist runtime failure Mon, 29 Jun 2015 23:31:24 GMT Tue, 30 Jun 2015 00:22:34 GMT <p> accumulators/p_square_cumul_dist runtime failure with g++-4.8.2 on solaris 11.2. </p> <p> test result: ... </p> <blockquote> <p> echo ====== BEGIN OUTPUT ====== cat "../../../bin.v2/libs/accumulators/test/p_square_cumul_dist.test/gcc-4.8.2/release/link-static/p_square_cumul_dist.output" echo ====== END OUTPUT ====== </p> </blockquote> <blockquote> <p> fi exit $status </p> </blockquote> <h6 class="section" id="BEGINOUTPUT">BEGIN OUTPUT</h6> <p> Running 1 test case... p_square_cumul_dist.cpp(66): error in "test_stat": difference{3.166%} between 0.5 * (1.0 + my_erf( histogram[i].first / std::sqrt(2.0) )){0.010316599565214746} and histogram[i].second{0.01} exceeds 3% p_square_cumul_dist.cpp(66): error in "test_stat": difference{3.66597%} between 0.5 * (1.0 + my_erf( histogram[i].first / std::sqrt(2.0) )){0.020733193566368657} and histogram[i].second{0.02} exceeds 3% p_square_cumul_dist.cpp(66): error in "test_stat": difference{3.31687%} between 0.5 * (1.0 + my_erf( histogram[i].first / std::sqrt(2.0) )){0.030995060470952907} and histogram[i].second{0.029999999999999999} exceeds 3% p_square_cumul_dist.cpp(66): error in "test_stat": difference{3.04411%} between 0.5 * (1.0 + my_erf( histogram[i].first / std::sqrt(2.0) )){0.041217642957001199} and histogram[i].second{0.040000000000000001} exceeds 3% </p> <p> <strong>* 4 failures detected in test suite "Master Test Suite" </strong></p> <p> EXIT STATUS: 201 </p> <h6 class="section" id="ENDOUTPUT">END OUTPUT</h6> <p> Test failed with studio 12.4 as well with same error message </p> anonymous https://svn.boost.org/trac10/ticket/11430 https://svn.boost.org/trac10/ticket/11430 Report #11421: [geometry] rstar segmentation fault boost version 1.58.0 Thu, 25 Jun 2015 20:23:15 GMT Mon, 27 Jun 2016 12:47:13 GMT <h2 class="section" id="Notes:">Notes:</h2> <p> The segmentation fault does not occur with boost version 1.55.0.<br /> Discovered when upgrading from Boost 1.55.0 to Boost 1.58.0.<br /> When inserting large numbers (greater than 10<sup>4</sup>) of geometry::model::box objects into an geometry::index::rtree object that uses the boost::geometry::index::rstar algorithm, a segmentation fault occurs. </p> <h2 class="section" id="systeminformation:">system information:</h2> <p> gcc (Gentoo 4.8.2 p1.0, pie-0.5.8) 4.8.2<br /> </p> <p> Linux dctest1 3.4.0-gentoo-01 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> SMP Sun May 27 15:51:01 CDT 2012 x86_64 Intel(R) Xeon(R) CPU X5675 @ 3.07GHz <a class="missing wiki">GenuineIntel</a> GNU/Linux<br /> </p> <p> <a class="missing wiki">MemTotal</a>: 198094372 kB </p> <h2 class="section" id="testprogramusedtoreproducesegmentationfault:">test program used to reproduce segmentation fault:</h2> <pre class="wiki">// File: test.cpp #include &lt;iostream&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/index/rtree.hpp&gt; // NOTE: 1250, 800 makes 10^6 geo fences const int NUM_BOXES_LAT = 1250; const int NUM_BOXES_LON = 800; const float MAX_LAT_DEG = 61.2167f; // Anchorage AK const float MIN_LAT_DEG = 25.7877f; // Miami FL const float MAX_LON_DEG = -68.7703f; // Bangor ME const float MIN_LON_DEG = -149.9000f; // Anchorage AK const float DELTA_LAT_DEG = (MAX_LAT_DEG - MIN_LAT_DEG)/static_cast&lt;float&gt;(NUM_BOXES_LAT); const float DELTA_LON_DEG = (MAX_LON_DEG - MIN_LON_DEG)/static_cast&lt;float&gt;(NUM_BOXES_LON); using COORD_TYPE = boost::geometry::cs::cartesian; using Point = boost::geometry::model::point&lt;float, 2, COORD_TYPE&gt;; using Box = boost::geometry::model::box&lt;Point&gt;; using BoxIDPair = std::pair&lt;Box, unsigned&gt;; int main() { // Create a grid of boxes evenly distributed across North America. // Test Note: swap out rtree algorithms to isolate seg fault problem // boost::geometry::index::rtree&lt; BoxIDPair, boost::geometry::index::rstar&lt;16, 4&gt; &gt; locationGeometryTable; // seg fault @ 10^4 boxes boost::geometry::index::rtree&lt; BoxIDPair, boost::geometry::index::rstar&lt;16&gt; &gt; locationGeometryTable; // seg fault @ 10^4 boxes // boost::geometry::index::rtree&lt; BoxIDPair, boost::geometry::index::quadratic&lt;16&gt; &gt; locationGeometryTable; // pass @ 10^4 boxes; pass @ 10^6 for(unsigned idxLat=0; idxLat&lt;NUM_BOXES_LAT; ++idxLat) { float lat = idxLat*DELTA_LAT_DEG + MIN_LAT_DEG; for(unsigned idxLon=0; idxLon&lt;NUM_BOXES_LON; ++idxLon) { float lon = idxLon*DELTA_LON_DEG + MIN_LON_DEG; unsigned boxID = idxLat*idxLon; // Directly map to cartesian: lon is X; lat is Y Point pt0(lon, lat); Point pt1(lon+0.001f, lat+0.001f); Box box(pt0, pt1); locationGeometryTable.insert(std::make_pair(box, boxID)); } } return 0; } </pre><h2 class="section" id="build:">build:</h2> <p> $ gcc -std=c++11 -lstdc++ -I$BOOST_ROOT/include -DBUFFERSIZE=4096 -g -O0 test.cpp -o test </p> <h2 class="section" id="run:">run:</h2> <p> $ ./test<br /> Segmentation fault </p> <h2 class="section" id="debug:">debug:</h2> <pre class="wiki">$ gdb ./test GNU gdb (Gentoo 7.5 p1) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;http://gnu.org/licenses/gpl.html&gt; This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". For bug reporting instructions, please see: &lt;http://bugs.gentoo.org/&gt;... Reading symbols from test...done. (gdb) catch throw Catchpoint 1 (throw) (gdb) run Starting program: test warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7651127 in __memmove_ssse3_back () from /lib64/libc.so.6 (gdb) backtrace #0 0x00007ffff7651127 in __memmove_ssse3_back () from /lib64/libc.so.6 #1 0x00000000004165fa in boost::geometry::index::detail::varray_detail::copy_dispatch&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*&gt; (first=0x7fffffffc188, last=0x7fffffffc1b8, dst=0x406a6a &lt;boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;::apply_visitor&lt;boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt; &gt;(boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt;&amp;)+62&gt;) at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/varray_detail.hpp:201 #2 0x0000000000413ee6 in boost::geometry::index::detail::varray_detail::copy&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*&gt; ( first=0x7fffffffc188, last=0x7fffffffc1b8, dst=0x406a6a &lt;boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- ::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;::apply_visitor&lt;boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt; &gt;(boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt;&amp;)+62&gt;) at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/varray_detail.hpp:224 #3 0x0000000000411a03 in boost::geometry::index::detail::varray&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_interna---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- l_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, 17ul&gt;::assign_dispatch&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*&gt; ( this=0x406a62 &lt;boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;::apply_visitor&lt;boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt; &gt;(boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allo---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- cator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt;&amp;)+54&gt;, first=0x7fffffffc188, last=0x7fffffffc1b8) at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/varray.hpp:1774 #4 0x00000000004100b4 in boost::geometry::index::detail::varray&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, 17ul&gt;::assign&lt;boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;*&gt; ( this=0x406a62 &lt;boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boos---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- t::detail::variant::void_&gt;::apply_visitor&lt;boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt; &gt;(boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt;&amp;)+54&gt;, first=0x7fffffffc188, last=0x7fffffffc1b8) at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/varray.hpp:950 #5 0x000000000040e698 in boost::geometry::index::detail::rtree::redistribute_elements&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::rstar_tag&gt;::apply&lt;boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt; (n=..., second_node=..., box1=..., box2=..., parameters=..., translator=..., allocators=...) ---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit--- at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/rtree/rstar/redistribute_elements.hpp:442 #6 0x0000000000000003 in ?? () #7 0x00007fffffffca00 in ?? () #8 0x000000000040b798 in boost::geometry::index::detail::rtree::visitors::rstar::level_insert&lt;1ul, boost::geometry::index::detail::rtree::ptr_pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::variant&lt;boost::geometry::index::detail::rtree::variant_leaf&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::variant_internal_node&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_&gt;*&gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::detail::rtree::options&lt;boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::index::detail::rtree::insert_reinsert_tag, boost::geometry::index::detail::rtree::choose_by_overlap_diff_tag, boost::geometry::index::detail::rtree::split_default_tag, boost::geometry::index::detail::rtree::rstar_tag, boost::geometry::index::detail::rtree::node_variant_static_tag&gt;, boost::geometry::index::detail::translator&lt;boost::geometry::index::indexable&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, boost::geometry::index::equal_to&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt; &gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::allocators&lt;std::allocator&lt;std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt; &gt;, std::pair&lt;boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, unsigned int&gt;, boost::geometry::index::rstar&lt;16ul, 4ul, 4ul, 32ul&gt;, boost::geometry::model::box&lt;boost::geometry::model::point&lt;float, 2ul, boost::geometry::cs::cartesian&gt; &gt;, boost::geometry::index::detail::rtree::node_variant_static_tag&gt; &gt;::operator() ( this=&lt;error reading variable: Cannot access memory at address 0x18&gt;, n=&lt;error reading variable: Cannot access memory at address 0x10&gt;) at /data/git/dependencies/boost-1.58.0/include/boost/geometry/index/detail/rtree/rstar/insert.hpp:279 Backtrace stopped: previous frame inner to this frame (corrupt stack?) </pre> Celair <mathom.house@…> https://svn.boost.org/trac10/ticket/11421 https://svn.boost.org/trac10/ticket/11421 Report #11420: program_options crash on run() on specific machine only in release mode Thu, 25 Jun 2015 12:34:53 GMT Thu, 25 Jun 2015 13:05:09 GMT <p> It's a very strange error that occured. I have deployed the program on a machine where no Visual Studio is available. </p> <p> Upon start it crashes instantly so I have created a dump with the task manager and analysed it in Visual Studio 2013. </p> <pre class="wiki">&gt; test.exe!boost::program_options::basic_command_line_parser&lt;char&gt;::run() Line 107 C++ </pre><p> which resolves to </p> <pre class="wiki">template&lt;class charT&gt; basic_parsed_options&lt;charT&gt; basic_command_line_parser&lt;charT&gt;::run() { // save the canonical prefixes which were used by this cmdline parser // eventually inside the parsed results // This will be handy to format recognisable options // for diagnostic messages if everything blows up much later on parsed_options result(m_desc, detail::cmdline::get_canonical_option_prefix()); result.options = detail::cmdline::run(); // Presense of parsed_options -&gt; wparsed_options conversion // does the trick. return basic_parsed_options&lt;charT&gt;(result); } </pre><p> in my program the crash occurs in the following line </p> <pre class="wiki">po::store(po::command_line_parser(argc, argv).options(description).allow_unregistered().run(), vm); </pre><p> The very strange thing is that argc is 0 and argv is 0x0000000000000000 </p> <p> It only happens in release mode and i cannot catch any exception </p> Stephan Bertl <stephan@…> https://svn.boost.org/trac10/ticket/11420 https://svn.boost.org/trac10/ticket/11420 Report #11415: crash in processEvent_ Tue, 23 Jun 2015 10:39:41 GMT Thu, 31 Aug 2017 09:58:54 GMT <p> In polygon/details/polygon_arbitrary_formation.hpp, at the end of function processEvent_ (line 1768), I had a case where iter is dereferenced illegally. </p> <p> Changing line 1741 from: </p> <blockquote> <p> if(verticalTail &amp;&amp; !(verticalCount.second)) { </p> </blockquote> <p> to </p> <blockquote> <p> if (verticalTail &amp;&amp; !(verticalCount.second) &amp;&amp; iter != scanData_.end()) { </p> </blockquote> <p> fixes this problem, but it might be the case that this just misses the addition of a new hole. </p> <p> I have processed many polygons and this only happened with a specific polygon, but looking at the iter determining code earlier in processEvent_ (lines 1669..1698), iter referring to the end of scanData might not be such a special case: </p> <blockquote> <p> iterator iter = lookUp_(currentY); </p> </blockquote> <blockquote> <p> while(iter != scanData_.end() &amp;&amp; ((iter-&gt;first.pt.x() == x_ &amp;&amp; iter-&gt;first.pt.y() == currentY) or (iter-&gt;first.other_pt.x() == x_ &amp;&amp; iter-&gt;first.other_pt.y() == currentY))) { </p> </blockquote> <blockquote> <blockquote> <p> elementIters.push_back(iter); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> ... </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> ++iter; </p> </blockquote> </blockquote> <blockquote> <p> } </p> </blockquote> <p> If the original coder assumed that (verticalTail &amp;&amp; !(verticalCount.second)) implies that (iter != scanData_.end()), well, sometimes it does not. I'll provide more info on actual case(s) (instantiation types, coordinates) in additional notes. </p> <p> In the seen case, scanData_ contained 3 elements, and elementIters had 2. </p> mhilferink@… https://svn.boost.org/trac10/ticket/11415 https://svn.boost.org/trac10/ticket/11415 Report #11414: minor problem in libs/pool/example/sys_allocator.hpp Tue, 23 Jun 2015 00:16:41 GMT Sun, 05 Jul 2015 22:46:41 GMT <p> In sys_allocator.hpp the struct new_delete_allocator has a minor issue. </p> <p> The code is: </p> <blockquote> <p> static pointer allocate(const size_type n, const void* = 0) { return (pointer) new char[n * sizeof(T)]; } static void deallocate(const pointer p, const size_type) { delete [] p; } </p> </blockquote> <p> Note that the deallocate member function calls array delete, but the allocate function does not call array new. According to the standard this is invalid. </p> <p> The HP <a class="missing wiki">NonStop</a> runtime will generate an assert failure on the call to the delete. </p> Ed Vogel <edward.vogel@…> https://svn.boost.org/trac10/ticket/11414 https://svn.boost.org/trac10/ticket/11414 Report #11413: Untrusted secure connection to *ttps://svn.boost.org Mon, 22 Jun 2015 17:59:44 GMT Mon, 22 Jun 2015 17:59:44 GMT <p> I get a untrusted connection warning from Firefox 38.0.5 when trying to connect to *ttps://svn.boost.org </p> anonymous https://svn.boost.org/trac10/ticket/11413 https://svn.boost.org/trac10/ticket/11413 Report #11411: Deprecated std::... in get_pointer.hpp Sun, 21 Jun 2015 17:13:51 GMT Wed, 12 Aug 2015 08:02:16 GMT <p> With g++-mp-5 (<a class="missing wiki">MacPorts</a> gcc5 5.1.0_1) 5.1.0: </p> <p> In file included from .../include/boost/bind/mem_fn.hpp:25:0, </p> <blockquote> <p> from .../include/boost/mem_fn.hpp:22, from .../include/boost/function/detail/prologue.hpp:18, from .../include/boost/function/function_template.hpp:13, from .../include/boost/function/detail/maybe_include.hpp:18, from .../include/boost/function/function1.hpp:11, </p> </blockquote> <p> ... </p> <p> .../include/boost/get_pointer.hpp:27:40: warning: 'template&lt;class&gt; class std::auto_ptr' is deprecated [-Wdeprecated-declarations] </p> <blockquote> <p> template&lt;class T&gt; T * get_pointer(std::auto_ptr&lt;T&gt; const&amp; p) </p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/11411 https://svn.boost.org/trac10/ticket/11411 Report #11407: Boost.Container does not provide hash_value Fri, 19 Jun 2015 11:20:55 GMT Fri, 19 Jun 2015 11:20:55 GMT <p> Boost.Hash provides overloads of hash_value for standard containers, but not for their Boost.Container equivalents. Conversely, Boost.Container also does not provide hash_value overloads for use with Boost.Hash. This prevents boost::container::vector from being used as a drop-in replacement for std::vector, since boost::unordered_map&lt;std::vector&lt;int&gt;, int&gt; is valid but boost::unordered_map&lt;boost::container::vector&lt;int&gt;, int&gt; is not. </p> Rainer Deyke <rainerd@…> https://svn.boost.org/trac10/ticket/11407 https://svn.boost.org/trac10/ticket/11407 Report #11406: Bug in edge connectivity - directed graphs Thu, 18 Jun 2015 16:20:50 GMT Tue, 23 Jun 2015 12:39:36 GMT <p> The Boost edge connectivity algorithm gives a wrong result on a directed path with 3 vertices and 2 edges: 0 --&gt; 1 --&gt; 2. In particular, the output is 1, while it should be 0 (because the graph is not strongly connected). </p> <p> This issue is not due to a different definition of directed edge connectivity, because the output becomes (correctly) 0 if I add an edge 1 --&gt; 0, obtaining: 0 &lt;-&gt; 1 --&gt; 2. </p> <p> A minimal example of this issue is attached. </p> Michele Borassi <michele.borassi@…> https://svn.boost.org/trac10/ticket/11406 https://svn.boost.org/trac10/ticket/11406 Report #11404: boost/numeric/ublas/experimental/sparse_view.hpp fails to compile if -DNDEBUG is used Wed, 17 Jun 2015 15:27:03 GMT Wed, 17 Jun 2015 15:27:03 GMT <p> If -DNDEBUG is specified on the command line the header file boost/numeric/ublas/experimental/sparse_view.hpp will not compile. </p> <p> This can also be seen by trying to build/run the test sparse_view_test.tes with "B2 release" </p> <p> Here's a quick cut/paste: </p> <p> $ cat t.cpp #include &lt;boost/numeric/ublas/experimental/sparse_view.hpp&gt; </p> <p> vogeled@nimloth ~ $ g++ -Iboost/boost_1_56_0 -c -DNDEBUG t.cpp In file included from t.cpp:1: boost/boost_1_56_0/boost/numeric/ublas/experimental/sparse_view.hpp:29: error: e xpected template-name before '&lt;' token boost/boost_1_56_0/boost/numeric/ublas/experimental/sparse_view.hpp:29: error: e xpected `{' before '&lt;' token boost/boost_1_56_0/boost/numeric/ublas/experimental/sparse_view.hpp:29: error: e xpected unqualified-id before '&lt;' token boost/boost_1_56_0/boost/numeric/ublas/experimental/sparse_view.hpp:29: error: e xpected `;' before '&lt;' token </p> Ed Vogel <edward.vogel@…> https://svn.boost.org/trac10/ticket/11404 https://svn.boost.org/trac10/ticket/11404 Report #11403: exception_ptr.hpp causes crash when .NET tries to unload a DLL that uses boost Mon, 15 Jun 2015 08:19:24 GMT Tue, 08 Dec 2015 09:54:52 GMT <p> Hello, I posted this on the gmane board and Emil Dotchevski said I should open a ticket for this. </p> <p> We are working with Visual Studio 2013 and have a plain c++ lib that uses boost. To test it, we wrote a (non clr) console program and a WPF GUI for further use. This WPF GUI contains a clr dll as a wrapper between the .NET world and the plain c++ libs. At startup, both console and WPF call some function pointers in _initterm in crt0dat.c, especially these two: <br /> dynamic initializer for 'boost::exception_detail::exception_ptr_static_exception_object&lt;boost::exception_detail::bad_alloc_&gt;::e<em>(void) <br /> dynamic initializer for 'boost::exception_detail::exception_ptr_static_exception_object&lt;boost::exception_detail::bad_exception_&gt;::e</em>(void) </p> <p> The console terminates cleanly. But the GUI causes an exception in crtdll.c, _CRT_INIT, line 414: </p> <p> /* call the function, which can eventually change <span class="underline">onexitbegin and </span>onexitend */ <br /> (*function_to_call)(); </p> <p> The debugger says the value of *function_to_call is <br /> *function_to_call _t2m@???<span class="underline">Fep@?1???$get_static_exception_object@Ubad_exception_@exception_detail@boost@@@exception_detail@boost@@YA?AVexception_ptr@1@XZ@YAXXZ@?A0xd1be0c67@@YAXXZ </span></p> <p> and causes an unhandled exception at 0x74c7c42d (<a class="missing wiki">KernelBase</a>.dll), The String binding is invalid. </p> <p> However, if I change (remove the static keyword) line 130 in exception_ptr.hpp from <br /> static exception_ptr ep(shared_ptr&lt;exception_detail::clone_base const&gt;(new exception_detail::clone_impl&lt;Exception&gt;(c))); </p> <p> to </p> <p> exception_ptr ep(shared_ptr&lt;exception_detail::clone_base const&gt;(new exception_detail::clone_impl&lt;Exception&gt;(c))); </p> <p> the GUI exits cleanly. </p> <p> Best regards,<br /> Markus Pieper </p> onkelhotte@… https://svn.boost.org/trac10/ticket/11403 https://svn.boost.org/trac10/ticket/11403 Report #11399: Boost geometry models don't support stateful allocator. Fri, 12 Jun 2015 20:08:47 GMT Wed, 15 Jul 2015 15:19:09 GMT <p> The following model class declarations don't contain constructors that take a copy of the allocator types: linestring multi_linestring polygon multi_polygon </p> <p> This makes it impossible to use stateful allocators with geometry models. </p> bmccart@… https://svn.boost.org/trac10/ticket/11399 https://svn.boost.org/trac10/ticket/11399 Report #11397: Can't compile RawConverter from mpq_rational to double Fri, 12 Jun 2015 12:32:31 GMT Fri, 12 Jun 2015 16:13:17 GMT <p> According to documentation I have to create low_level_convert function but compiler (gcc version 4.6.2 (SUSE Linux)) failed to compile it: </p> <p> error: invalid static_cast from type </p> <p> I attached test file. </p> andyplekhanov@… https://svn.boost.org/trac10/ticket/11397 https://svn.boost.org/trac10/ticket/11397 Report #11396: On remove_if documentation page, prototypes are remove, not remove_if Fri, 12 Jun 2015 11:49:58 GMT Fri, 12 Jun 2015 11:49:58 GMT <p> On the documentation page for algorithms/remove_if, the prototypes at the top of the page call it remove, not remove_if. </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/11396 https://svn.boost.org/trac10/ticket/11396 Report #11393: boost::program_options accepting switch-options that match the beginning of defined option, but is not full option typed out. Thu, 11 Jun 2015 08:48:30 GMT Thu, 11 Jun 2015 08:48:30 GMT <p> With: </p> <blockquote> <p> namespace po = boost::program_options; po::options_description desc ("options"); desc.add_options () </p> <blockquote> <p> ( "help,h", "print this help message") ( "config,c", po::value&lt;ustring&gt;(), "config file, default: $XDG_CONFIG_HOME/astroid/config") ( "new-config,n", "make new default config, then exit") ( "mailto,m", po::value&lt;ustring&gt;(), "compose mail with mailto url or address") ( "no-auto-poll", "do not poll automatically"); </p> </blockquote> </blockquote> <blockquote> <p> po::variables_map vm; </p> </blockquote> <blockquote> <p> bool show_help = false; </p> </blockquote> <blockquote> <p> try { </p> <blockquote> <p> po::store ( po::parse_command_line (argc, argv, desc), vm ); </p> </blockquote> <p> } catch (po::unknown_option &amp;ex) { </p> <blockquote> <p> cout &lt;&lt; "unknown option" &lt;&lt; endl; cout &lt;&lt; ex.what() &lt;&lt; endl; show_help = true; </p> </blockquote> </blockquote> <blockquote> <p> } </p> </blockquote> <p> running: </p> <p> ./program --asdf </p> <p> fails, but running: </p> <p> ./program --hel </p> <p> is parsed as --help. </p> eg@… https://svn.boost.org/trac10/ticket/11393 https://svn.boost.org/trac10/ticket/11393 Report #11390: Wrong type in dynamic_bitset::reference constructor Wed, 10 Jun 2015 16:42:24 GMT Thu, 02 Nov 2017 20:49:34 GMT <p> When compiling with visual studio 2013, the following warning is issued (and since we treat these as errors, fails the compilation): </p> <p> boost/dynamic_bitset/dynamic_bitset.hpp(298): warning C4267: 'argument' : conversion from 'size_t' to 'unsigned long', possible loss of data </p> <p> The culprit is the reference constructor: </p> <p> reference(block_type &amp; b, block_type pos) </p> <p> which should be: </p> <p> reference(block_type &amp; b, block_width_type pos) </p> <p> used in the non-const accessor: </p> <p> reference operator[](size_type pos) { </p> <blockquote> <p> return reference(m_bits[block_index(pos)], bit_index(pos)); </p> </blockquote> <blockquote> <p> } </p> </blockquote> <p> bit_index() is defined as returning block_width_type, not block_type (which may be narrower). </p> <p> The const accessor works as expected and is a possible workaround when read-only access is required from a non-const bitset. </p> stefan.atev@… https://svn.boost.org/trac10/ticket/11390 https://svn.boost.org/trac10/ticket/11390 Report #11389: Bug: Unit precision is restricted to double when using conversion constants Wed, 10 Jun 2015 15:40:49 GMT Wed, 10 Jun 2015 15:47:21 GMT <p> From BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS in boost/units/conversions.hpp: </p> <pre class="wiki">BOOST_UNITS_DEFINE_CONVERSION_FACTOR(namespace_::name_ ## _base_unit, unit, double, factor); \ </pre><p> Note the type of the conversion factor value is forced unconditionally to be double. </p> <p> It would be nice if the precision of this constant could be either made more flexible, or made as precise as possible with rounding to a lower-precision constant when lower-precision types are used. For example, using long double would allow higher-precision constants and conversions, but this isn't possible at present since even if a quantity&lt;T, long double&gt; is used, the conversions are still being restricted to double precision. </p> <p> Kind regards, Roger </p> Roger Leigh <rleigh@…> https://svn.boost.org/trac10/ticket/11389 https://svn.boost.org/trac10/ticket/11389 Report #11382: Files with missing or questionable licenses Tue, 09 Jun 2015 03:52:57 GMT Mon, 06 Jul 2015 08:42:26 GMT <p> Initial report: <a class="ext-link" href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788126"><span class="icon">​</span>https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788126</a> </p> <p> Several files do not seem to be covered by any license described in the copyright file. Most serious: interprocess/sync/xsi/advanced_xsi_semaphore.hpp : No license mentioned at all python/detail/python22_fixed.h : Explicitly "All rights reserved" </p> <p> Probably fine but questionable and IMHO should be documented at least as they will fail in automated checks: algorithm/cxx14/mismatch.hpp : Refers to non-existing LICENSE10.txt, probably typo And some non-standard license headers in: rational.hpp math/common_factor_rt.hpp test/utils/runtime/cla/detail/argument_value_usage.hpp shared_container_iterator.hpp program_options/detail/utf8_codecvt_facet.hpp </p> smr@… https://svn.boost.org/trac10/ticket/11382 https://svn.boost.org/trac10/ticket/11382 Report #11375: Support Request -- boost 1.58 bootstrap.sh failed on SunOS 5.10 Fri, 05 Jun 2015 08:33:47 GMT Fri, 02 Sep 2016 18:20:25 GMT <p> I cannot even generate b2 while compiling boost 1.58 since bootstrap.sh failed at very early stage. But it is ok while compiling boost 1.57 </p> <p> error message: -n Building Boost.Build engine with toolset gcc... </p> <p> Failed to build Boost.Build build engine Consult 'bootstrap.log' for more details </p> <p> bootstrap.log: ./build.sh: syntax error at line 147: `BOOST_JAM_CC=$' unexpected </p> chenbo369@… https://svn.boost.org/trac10/ticket/11375 https://svn.boost.org/trac10/ticket/11375 Report #11374: find_flow_cost() not working with bundled or user-defined properties Thu, 04 Jun 2015 09:12:23 GMT Tue, 03 May 2016 08:45:23 GMT <p> I tripped over that bug when trying to use <code>find_flow_cost()</code>. Using the source below, it won't compile. The error log is here : <a class="ext-link" href="http://pastebin.com/Gd3JdbuK"><span class="icon">​</span>http://pastebin.com/Gd3JdbuK</a> </p> <p> I think this is a problem in <code>boost/graph/find_flow_cost.hpp:18</code>. For example, line 19: </p> <pre class="wiki">typedef typename property_traits&lt;typename property_map&lt;Graph, edge_weight_t&gt;::const_type&gt;::value_type Cost; </pre><p> should rather be </p> <pre class="wiki">typedef typename property_traits&lt;Weight&gt;::value_type Cost; </pre><p> The same problem occurs line on 17 and 19. </p> <p> The minimum working example: </p> <pre class="wiki">//======================================================================= // Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee, // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //======================================================================= #include &lt;boost/config.hpp&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/graph/edmonds_karp_max_flow.hpp&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/read_dimacs.hpp&gt; #include &lt;boost/graph/graph_utility.hpp&gt; #include &lt;boost/graph/find_flow_cost.hpp&gt; using namespace boost; typedef adjacency_list_traits&lt;vecS,vecS,directedS&gt; traits; struct edge_t { double capacity; float cost; float residual_capacity; traits::edge_descriptor reversed_edge; }; struct node_t { std::string name; boost::default_color_type color; traits::edge_descriptor predecessor; }; typedef adjacency_list &lt; listS, vecS, directedS, node_t, edge_t &gt; Graph; int main() { Graph g; property_map &lt; Graph, double edge_t::* &gt;::type capacity = get(&amp;edge_t::capacity, g); property_map &lt; Graph, float edge_t::* &gt;::type cost = get(&amp;edge_t::cost, g); property_map &lt; Graph, float edge_t::* &gt;::type residual_capacity = get(&amp;edge_t::residual_capacity, g); property_map &lt; Graph, traits::edge_descriptor edge_t::* &gt;::type rev = get(&amp;edge_t::reversed_edge, g); property_map &lt; Graph, std::string node_t::* &gt;::type name = get(&amp;node_t::name, g); property_map &lt; Graph, boost::default_color_type node_t::* &gt;::type col = get(&amp;node_t::color, g); property_map &lt; Graph, traits::edge_descriptor node_t::* &gt;::type pred = get(&amp;node_t::predecessor, g); traits::vertex_descriptor s, t; read_dimacs_max_flow(g, capacity, rev, s, t); long flow, flow_cost; // XXX The "non-named parameter version" (works fine) flow = edmonds_karp_max_flow(g, s, t,capacity,residual_capacity,rev,col,pred); // XXX The "named parameter version" (producing errors) // flow = edmonds_karp_max_flow(g, s, t, // capacity_map(capacity) // .residual_capacity_map(residual_capacity) // .reverse_edge_map(rev) // .color_map(col) // .predecessor_map(pred)); find_flow_cost(g,capacity,residual_capacity,cost); //flow_cost = find_flow_cost(g,capacity,residual_capacity,cost); std::cout &lt;&lt; "c The total flow:" &lt;&lt; std::endl; std::cout &lt;&lt; "s " &lt;&lt; flow &lt;&lt; std::endl &lt;&lt; std::endl; std::cout &lt;&lt; "c flow values:" &lt;&lt; std::endl; graph_traits &lt; Graph &gt;::vertex_iterator u_iter, u_end; graph_traits &lt; Graph &gt;::out_edge_iterator ei, e_end; for (boost::tie(u_iter, u_end) = vertices(g); u_iter != u_end; ++u_iter) for (boost::tie(ei, e_end) = out_edges(*u_iter, g); ei != e_end; ++ei) if (capacity[*ei] &gt; 0) std::cout &lt;&lt; "a " &lt;&lt; *u_iter &lt;&lt; " " &lt;&lt; target(*ei, g) &lt;&lt; " " &lt;&lt; (capacity[*ei] - residual_capacity[*ei]) &lt;&lt; std::endl; return EXIT_SUCCESS; } </pre> Maël Valais <mael.valais@…> https://svn.boost.org/trac10/ticket/11374 https://svn.boost.org/trac10/ticket/11374 Report #11373: Ticket 10762 (boost 1..57) is nearly a year old, but error ist still in boost (now 1.58) Tue, 02 Jun 2015 20:43:48 GMT Thu, 03 Sep 2015 20:06:19 GMT <p> include/boost/numeric/ublas/matrix.hpp line 1387, wrong parameter type (matrix m) should be (fixed_matrix m) </p> <p> solution see ticket 10762 </p> <p> showstopper, because certain matrix operations do not even compile! </p> <p> please do not deliver untested software </p> anonymous https://svn.boost.org/trac10/ticket/11373 https://svn.boost.org/trac10/ticket/11373 Report #11371: Logging: Advanced event log backend, Blank replaceable parameters Tue, 02 Jun 2015 20:41:09 GMT Tue, 02 Jun 2015 21:05:21 GMT <p> Overview: I'm trying to use Boost Logging for sending events to the Windows event log. In the event log the replaceable parameters are showing up as empty strings, E.g., for a message of "Operation finished successfully in %1 seconds." the event log will simply show "Operation finished successfully in seconds." and the value for %1 is lost (instead of replaced into the string). </p> <p> Code: I reproduced this problem on the example provided in the boost distribution itself (libs\log\example\event_log), after commenting out the custom event mapping section, to work around the issue described in ticket 9292, <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/9292"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/9292</a> </p> <p> =======Event mapping section to be commented out====== </p> <blockquote> <p> sinks::event_log::custom_event_type_mapping&lt; severity_level &gt; type_mapping("Severity"); type_mapping[normal] = sinks::event_log::make_event_type(MY_SEVERITY_INFO); type_mapping[warning] = sinks::event_log::make_event_type(MY_SEVERITY_WARNING); type_mapping[error] = sinks::event_log::make_event_type(MY_SEVERITY_ERROR); backend-&gt;set_event_type_mapper(type_mapping); </p> </blockquote> <p> =======End of event mapping section to be commented out====== </p> <p> Environment: Windows Server 2008R2 (6.1.7601) with compilers from the Windows SDK 7.0 </p> <p> cl.exe version 15.00.30729.01 (VC9), target processor x64. Message compiler mc.exe version 1.12.7600. </p> Eusebio Rufian-Zilbermann <eusebio@…> https://svn.boost.org/trac10/ticket/11371 https://svn.boost.org/trac10/ticket/11371 Report #11369: Boost.Python: return_internal_reference<> bug Tue, 02 Jun 2015 06:13:07 GMT Wed, 03 Jun 2015 08:41:48 GMT <p> I am having an issue with Boost.Python with a very simple use case. </p> <p> I am returning a reference to an object, and it seems that my python object looses its C++ object's reference at a stage for some reason. </p> <p> Please see my example below reproducing this issue. </p> <p> C++ Code: </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;string&gt; #include &lt;cmath&gt; #include &lt;boost/python.hpp&gt; #include &lt;boost/python/suite/indexing/vector_indexing_suite.hpp&gt; class Car { public: Car(std::string name) : m_name(name) {} bool operator==(const Car &amp;other) const { return m_name == other.m_name; } std::string GetName() { return m_name; } private: std::string m_name; }; class Factory { public: Factory(std::string name) : m_name(name) {} bool operator==(const Factory &amp;other) const { return m_name == other.m_name &amp;&amp; m_car_list == other.m_car_list; } Car&amp; create_car(std::string name) { m_car_list.emplace_back(Car(name)); return m_car_list.back(); } std::string GetName() { return m_name; } std::vector&lt;Car&gt;&amp; GetCarList() { return m_car_list;} private: std::string m_name; std::vector&lt;Car&gt; m_car_list; }; class Manufacturer { public: Manufacturer(std::string name) : m_name(name) {} bool operator==(const Manufacturer &amp;other) const { return m_name == other.m_name &amp;&amp; m_factory_list == other.m_factory_list; } Factory&amp; create_factory(std::string name) { m_factory_list.emplace_back(Factory(name)); return m_factory_list.back(); } std::string GetName() { return m_name; } std::vector&lt;Factory&gt;&amp; GetFactoryList() { return m_factory_list;} private: std::string m_name; std::vector&lt;Factory&gt; m_factory_list; }; BOOST_PYTHON_MODULE(carManufacturer) { using namespace boost::python; class_&lt;Manufacturer&gt;("Manufacturer", init&lt;std::string&gt;()) .add_property("factory_list", make_function(&amp;Manufacturer::GetFactoryList, return_internal_reference&lt;&gt;())) .add_property("name", &amp;Manufacturer::GetName) .def("create_factory", &amp;Manufacturer::create_factory, return_internal_reference&lt;&gt;()); class_&lt;Factory&gt;("Factory", init&lt;std::string&gt;()) .add_property("car_list", make_function(&amp;Factory::GetCarList, return_internal_reference&lt;&gt;())) .add_property("name", &amp;Factory::GetName) .def("create_car", &amp;Factory::create_car, return_internal_reference&lt;&gt;()); class_&lt;Car&gt;("Car", init&lt;std::string&gt;()) .add_property("name", &amp;Car::GetName); class_&lt;std::vector&lt;Factory&gt; &gt;("FactoryList") .def(vector_indexing_suite&lt;std::vector&lt;Factory&gt; &gt;()); class_&lt;std::vector&lt;Car&gt; &gt;("Car") .def(vector_indexing_suite&lt;std::vector&lt;Car&gt; &gt;()); } </pre><p> Python Code: </p> <pre class="wiki">from carManufacturer import * vw = Manufacturer("VW") vw_bra_factory = vw.create_factory("Brazil Factory") beetle = vw_bra_factory.create_car("Beetle69") if vw_bra_factory is vw.factory_list[0]: print("equal.") else: print("NOT EQUAL") print("## I expected them to be the same reference..?") print("vw_bra_factory Car List size : " + str(len(vw_bra_factory.car_list))) print("Actual Car List size : " + str(len(vw.factory_list[0].car_list))) print("## This still works. Maybe the python objects differ, but refer to the same C++ object. I can live with that.") vw_sa_factory = vw.create_factory("South Africa Factory") print("vw_bra_factory Car List size : " + str(len(vw_bra_factory.car_list))) print("Actual Car List size : " + str(len(vw.factory_list[0].car_list))) print("## .. what? why? brazil py object has no cars now? I don't get it. I can't have any of that.") print("## What will happen if I create another car in the brazil factory?") combi = vw_bra_factory.create_car("Hippie van") print("vw_bra_factory Car List size : " + str(len(vw_bra_factory.car_list))) print("Actual Car List size : " + str(len(vw.factory_list[0].car_list))) print("## And another.") citi_golf = vw_bra_factory.create_car("Citi golf") print("vw_bra_factory Car List size : " + str(len(vw_bra_factory.car_list))) print("Actual Car List size : " + str(len(vw.factory_list[0].car_list))) print("## 'vw_bra_factory' must have lost its C++ reference it had to 'vw.factory_list[0]' when I created a new factory. Why?") </pre><p> Output: </p> <pre class="wiki">NOT EQUAL ## I expected them to be the same reference..? vw_bra_factory Car List size : 1 Actual Car List size : 1 ## This still works. Maybe the python objects differ, but refer to the same C++ object. I can live with that. vw_bra_factory Car List size : 0 Actual Car List size : 1 ## .. what? why? brazil py object has no cars now? I don't get it. I can't have any of that. ## What will happen if I create another car in the brazil factory? vw_bra_factory Car List size : 1 Actual Car List size : 1 ## And another. vw_bra_factory Car List size : 2 Actual Car List size : 1 ## 'vw_bra_factory' must have lost its C++ reference it had to 'vw.factory_list[0]' when I created a new factory. Why? </pre><p> This is just an example made to reproduce my real work's problem in a presentable way. </p> <p> Is there any workaround to this? I could not find any in bug reports, the mailing list or anywhere else. </p> <p> Regards, Christoff </p> Christoff Heinrich Kok <christoff.kok@…> https://svn.boost.org/trac10/ticket/11369 https://svn.boost.org/trac10/ticket/11369 Report #11355: Sloan ordering does not work on disconnected graphs Wed, 27 May 2015 16:57:08 GMT Wed, 27 May 2015 16:57:08 GMT <p> The Sloan ordering algorithm in graph/sloan_ordering.hpp does not work for disconnected graphs. </p> <p> This can be easily confirmed by running an example of a graph with two disconnected vertices. </p> <p> The attached file simply creates a graph with two vertices without any edges. Running the attached file yields: </p> <pre class="wiki">i: 0 i: 0 </pre><p> The result should be: </p> <pre class="wiki">i: 0 i: 1 </pre><p> Or the result should be: </p> <pre class="wiki">i: 1 i: 0 </pre><p> The problem also holds for larger disconnected graphs. </p> Jeroen Meijer <jjgmeijer@…> https://svn.boost.org/trac10/ticket/11355 https://svn.boost.org/trac10/ticket/11355 Report #11348: Problem constructing boost::iterator_range objects from arrays Tue, 26 May 2015 20:02:12 GMT Tue, 01 Mar 2016 12:55:58 GMT <p> I'm migrating to boost 1.58.0 from an older version and have found that I'm no longer able to construct a boost::iterator_range directly from an array. The following code snippet demonstrates the problem: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/range/iterator_range.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">arr</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span> <span class="p">};</span> <span class="n">boost</span><span class="o">::</span><span class="n">iterator_range</span><span class="o">&lt;</span><span class="kt">int</span> <span class="o">*&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="n">arr</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> Using gcc 4.9.2 on Linux with Boost 1.58.0, the following error is produced: </p> <pre class="wiki">foo.cpp: In function 'int main()': foo.cpp:5:38: error: conversion from 'int [2]' to non-scalar type 'boost::iterator_range&lt;int*&gt;' requested boost::iterator_range&lt;int *&gt; x = arr; ^ </pre><p> The code compiles fine with older versions of Boost (e.g. 1.53.0). It appears that the problem was introduced with this change: <a class="ext-link" href="https://github.com/boostorg/range/commit/7d13f63d5d1324abf519b67f59e1814b2cbe5d55"><span class="icon">​</span>https://github.com/boostorg/range/commit/7d13f63d5d1324abf519b67f59e1814b2cbe5d55</a> although I have not manually verified this. </p> <p> From my brief reading of the change introduced here, it seems to deem a type that is convertible to the base iterator type to not be a compatible range. In the example above, int<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> is convertible to int *, hence the constructor is excluded from consideration. </p> <p> It appears I can work around the problem by calling boost::make_iterator_range, but I would have to change quite a lot of code to use this workaround. Hence I wanted to verify that the previous behaviour was expected, and find out if a fix is possible. </p> <p> I'm happy to help work on a patch, for example perhaps the is_compatible_range check can be tightened to explicitly check for the array case. </p> <p> Thanks, </p> <p> Graham </p> graham@… https://svn.boost.org/trac10/ticket/11348 https://svn.boost.org/trac10/ticket/11348 Report #11345: Compilation with fails when BOOST_THREAD_VERSION=4 defined Tue, 26 May 2015 13:11:52 GMT Tue, 21 Jul 2015 16:33:23 GMT <p> Compilation fails when BOOST_THREAD_VERSION=4 is defined. timed_wait is not a member of boost::condition_variable </p> anonymous https://svn.boost.org/trac10/ticket/11345 https://svn.boost.org/trac10/ticket/11345 Report #11341: dimacs_basic_reader reads corrupted data Mon, 25 May 2015 23:18:06 GMT Mon, 25 May 2015 23:25:25 GMT <p> As analyzed for <a class="ext-link" href="http://stackoverflow.com/questions/30415388/how-to-read-dimacs-vertex-coloring-graphs-in-c/30446685#30446685"><span class="icon">​</span>http://stackoverflow.com/questions/30415388/how-to-read-dimacs-vertex-coloring-graphs-in-c/30446685#30446685</a> </p> <p> The parsing of edge lines is fundamentally broken. </p> <p> A simple file as </p> <pre class="wiki">p edge 2 1 e 1 2 </pre><p> will fail to read correct data (without raising an error). Instead, indeterminate values are read for the edge, and the results are undefined (at the very least depend on the graph model). </p> <p> Related, I don't think the expression <code>(char*) buf.c_str()</code> is legal. I'd suggest at least replacing that by <code>&amp;buf[0]</code>. </p> <p> Further I'd really suggest replacing the parser. For the subset that the question was about, I've suggested two implementations in the linked answer on SO: </p> <pre class="wiki">#include &lt;string&gt; #include &lt;istream&gt; #include &lt;sstream&gt; template &lt;typename Graph&gt; bool read_coloring_problem(std::istream&amp; dimacs, Graph&amp; g) { size_t vertices = 0, edges = 0; std::string line; while (getline(dimacs, line)) { std::istringstream iss(line); char ch; if (iss &gt;&gt; ch) { size_t from, to; std::string format; switch(ch) { case 'c': break; case 'p': if (vertices||edges) return false; if (iss &gt;&gt; format &gt;&gt; vertices &gt;&gt; edges) { if ("edge" != format) return false; } break; case 'e': if (edges-- &amp;&amp; (iss &gt;&gt; from &gt;&gt; to) &amp;&amp; (add_edge(from-1, to-1, g).second)) break; default: return false; } } } return !(edges || !dimacs.eof()); } </pre><p> Or with Boost Spirit: </p> <pre class="wiki">#include &lt;boost/spirit/include/qi.hpp&gt; #include &lt;boost/spirit/include/phoenix.hpp&gt; #include &lt;boost/spirit/include/qi_match.hpp&gt; template &lt;typename Graph&gt; bool read_coloring_problem(std::istream&amp; dimacs, Graph&amp; g) { auto add_edge_ = [&amp;g](size_t from, size_t to) { add_edge(from, to, g); }; size_t vertices = 0, edges = 0; using namespace boost::spirit::qi; namespace px = boost::phoenix; uint_parser&lt;size_t&gt; num_; auto eoil = eol | eoi; auto comment = boost::proto::deep_copy(lexeme["c " &gt;&gt; *(char_ - eol) &gt;&gt; eoil] | eol); auto vertices_ = px::ref(vertices); auto edges_ = px::ref(edges); dimacs &gt;&gt; std::noskipws &gt;&gt; phrase_match( *comment &gt;&gt; ("p" &gt;&gt; lit("edge") &gt;&gt; num_ [vertices_ = _1] &gt;&gt; num_ [edges_ = _1] &gt;&gt; eoil) &gt;&gt; repeat(edges_) [ *comment &gt;&gt; ("e" &gt;&gt; num_ &gt;&gt; num_ &gt;&gt; eoil) [ px::bind(add_edge_, _1-1, _2-1) ] ] &gt;&gt; *comment &gt;&gt; eoi , blank); return dimacs; } </pre><p> I realize there are missing features (<code>weight</code>) </p> anonymous https://svn.boost.org/trac10/ticket/11341 https://svn.boost.org/trac10/ticket/11341 Report #11337: implicit_cast in python/include/boost/python/opaque_pointer_converter.hpp should be boost:: qualified Sat, 23 May 2015 22:44:41 GMT Sat, 23 May 2015 22:47:48 GMT <p> The following test case fails to compile: </p> <pre class="wiki">template &lt;typename T&gt; inline T implicit_cast (void *) { // In reality there is an actual ::implicit_cast implementation in a header file return 0; } #include &lt;boost/python.hpp&gt; int main() { return 0; } </pre><p> The error is: </p> <pre class="wiki">In file included from ./python/include/boost/python.hpp:49:0, from /tmp/implicit_cast.cc:6: ./python/include/boost/python/opaque_pointer_converter.hpp: In static member function ‘static void* boost::python::opaque&lt;Pointee&gt;::extract(PyObject*)’: ./python/include/boost/python/opaque_pointer_converter.hpp:66:68: error: call of overloaded ‘implicit_cast(PyObject*&amp;)’ is ambiguous ? static_cast&lt;python_instance*&gt;(implicit_cast&lt;void*&gt;(op))-&gt;x ^ ./python/include/boost/python/opaque_pointer_converter.hpp:66:68: note: candidates are: In file included from ./python/include/boost/python/converter/builtin_converters.hpp:11:0, from ./python/include/boost/python/converter/arg_to_python.hpp:17, from ./python/include/boost/python/call.hpp:15, from ./python/include/boost/python/object_core.hpp:14, from ./python/include/boost/python/args.hpp:25, from ./python/include/boost/python.hpp:11, from /tmp/implicit_cast.cc:6: ./conversion/include/boost/implicit_cast.hpp:25:10: note: T boost::implicit_cast(typename boost::detail::icast_identity&lt;T&gt;::type) [with T = void*; typename boost::detail::icast_identity&lt;T&gt;::type = void*] inline T implicit_cast (typename boost::detail::icast_identity&lt;T&gt;::type x) { ^ /tmp/implicit_cast.cc:2:10: note: T implicit_cast(void*) [with T = void*] inline T implicit_cast (void *) { ^ </pre><p> Proposed fix: </p> <pre class="wiki">diff --git a/include/boost/python/opaque_pointer_converter.hpp b/include/boost/python/opaque_pointer_converter.hpp index 10eb423..70ab1fe 100644 --- a/include/boost/python/opaque_pointer_converter.hpp +++ b/include/boost/python/opaque_pointer_converter.hpp @@ -63,7 +63,7 @@ private: static void* extract(PyObject* op) { return PyObject_TypeCheck(op, &amp;type_object) - ? static_cast&lt;python_instance*&gt;(implicit_cast&lt;void*&gt;(op))-&gt;x + ? static_cast&lt;python_instance*&gt;(boost::implicit_cast&lt;void*&gt;(op))-&gt;x : 0 ; } </pre> Paul Pluzhnikov <ppluzhnikov@…> https://svn.boost.org/trac10/ticket/11337 https://svn.boost.org/trac10/ticket/11337 Report #11336: units: base_unit_info name and symbol unavailable for absolute units Fri, 22 May 2015 20:53:51 GMT Tue, 26 May 2015 21:37:59 GMT <p> absolute&lt;&gt; works for making temperatures absolute. However, it does not define a specialisation of the base_unit_info, so name_string and symbol_string are unavailable and some methods fails as a result. </p> <p> Please consider making absolute&lt;&gt; provide a base_unit_info specialisation which delegates to the wrapped unit type's base_unit_info, but adds an "absolute " prefix to both and can replace the ostream operator which works partially for the symbol case, but not the unit name which is completely absent. This will make absolute&lt;&gt; behave the same as a normal unwrapped unit. </p> Roger Leigh <rleigh@…> https://svn.boost.org/trac10/ticket/11336 https://svn.boost.org/trac10/ticket/11336 Report #11335: units: [patch] Improve precision of mmHg conversion to Pascal Fri, 22 May 2015 20:10:49 GMT Fri, 22 May 2015 20:10:49 GMT <p> See attached patch. </p> <p> The conversion factor used by the existing code only used three decimal places. However, the standardised conversion factor is 9 decimal places, and is also used in GNU units. Changing to use the full 133.322387415 significantly improves accuracy. </p> <p> I can't put a link in the report since it makes the ticket get rejected as spam, but see the first paragraph of the "Millimeter of mercury" wikepedia page, and GNU units for reference. </p> <p> Defect is in the latest boost back to at least 1.55. </p> <p> Please consider applying the attached patch. </p> <p> Thanks, Roger </p> Roger Leigh <rleigh@…> https://svn.boost.org/trac10/ticket/11335 https://svn.boost.org/trac10/ticket/11335 Report #11334: Add ability to get const filter reference from a const symmetric_filter Fri, 22 May 2015 19:31:39 GMT Fri, 22 May 2015 19:31:39 GMT <p> If you have a const symmetric_filter, you cannot call the filter() function to get a const reference to the underlying implementation. This would be a nice thing to have. </p> nathan@… https://svn.boost.org/trac10/ticket/11334 https://svn.boost.org/trac10/ticket/11334 Report #11326: Suggested patch for boost 1.58.0 and Python 3 < 3.4 breaks build for 3.4 Wed, 20 May 2015 16:00:48 GMT Wed, 20 May 2015 16:00:48 GMT <p> Both the suggested patch: <a href="http://www.boost.org/patches/1_58_0/0001-Fix-exec_file-for-Python-3-3.4.patch">http://www.boost.org/patches/1_58_0/0001-Fix-exec_file-for-Python-3-3.4.patch</a> </p> <p> and the fix in git: <a class="ext-link" href="https://github.com/boostorg/python/commit/3e405b6fd5db5615bbef241763de070118222ca7"><span class="icon">​</span>https://github.com/boostorg/python/commit/3e405b6fd5db5615bbef241763de070118222ca7</a> </p> <p> break the build for Python 3.4. </p> <p> The reason is that the check for Python &gt;= 3.4 is wrong. </p> <p> It is: </p> <pre class="wiki">#if PY_VERSION_HEX &gt;= 0x03400000 </pre><p> but it should be: </p> <pre class="wiki">#if PY_VERSION_HEX &gt;= 0x03040000 </pre> Mika Fischer <mika.fischer@…> https://svn.boost.org/trac10/ticket/11326 https://svn.boost.org/trac10/ticket/11326 Report #11321: Compiling for MSVC (Windows) and Clang Tue, 19 May 2015 13:52:49 GMT Sun, 05 Jul 2015 22:47:49 GMT <p> Can you please help me with compiling for msvc (2013) using clang (3.6) on Windows 7.0 </p> <p> I am using the following command, but unsuccessful (perhaps it's the '$'): </p> <p> b2 toolset=clang link=static runtime-link=static --build-type=complete --abbreviate-paths architecture=x86 address-model=32 cxxflags="-std=c++11 -nostdinc++ -isystem $/c:/PROGRA~2/MICROS~3.0/VC/include -stdlib=libc++" linkflags="-stdlib=c++ -L$/c:/PROGRA~2/MICROS~3.0/VC/lib" --prefix=$/c:/clang -j8 define=BOOST_SYSTEM_NO_DEPRECATED stage release install </p> anonymous https://svn.boost.org/trac10/ticket/11321 https://svn.boost.org/trac10/ticket/11321 Report #11316: Getting Started on Windows Documentation - Does bootstrap.bat Need the Toolchain as an Argument? Sun, 17 May 2015 21:18:26 GMT Sun, 17 May 2015 21:18:26 GMT <p> Hello, </p> <p> I am trying to build boost on Windows using mingw32 (as setup by Qt5). I was following the instructions as per <a href="http://www.boost.org/doc/libs/1_58_0/more/getting_started/windows.html#id37">http://www.boost.org/doc/libs/1_58_0/more/getting_started/windows.html#id37</a> . I extracted the sources, went into /tools/build and ran </p> <pre class="wiki">bootstrap.bat Bootstrapping the build engine 'cl' is not recognized as an internal or external command, operable program or batch file. Failed to bootstrap the build engine Please consult bootstrap.log for furter diagnostics. </pre><p> Further research online suggested I should have used </p> <pre class="wiki">bootstrap.bat mingw </pre><p> after which the bootstrap completes successfully. If this is the case, please could the documentation be changed to state this? </p> <p> Thanks </p> stellarpower@… https://svn.boost.org/trac10/ticket/11316 https://svn.boost.org/trac10/ticket/11316 Report #11315: Compilation warnings created by boost::polygon::operators Sun, 17 May 2015 18:36:41 GMT Wed, 01 Jul 2015 17:33:16 GMT <p> When I compile bp_warn.cc (attached) with Clang and enable "-Wall -Werror", the compilation fails with "template argument uses unnamed type". See attached "warnings.txt" for complete output. </p> <p> This took me a little while to track down, since the error occurs on a call to "*" using primitive types (!). </p> <p> I am not sure this is really a bug in boost::polygon, and I am not sure how to fix it if it is, but I thought I would report it anyway. </p> lopresti@… https://svn.boost.org/trac10/ticket/11315 https://svn.boost.org/trac10/ticket/11315 Report #11304: bind added overload generate ambiguity Thu, 14 May 2015 17:03:23 GMT Thu, 14 May 2015 17:10:20 GMT <p> When providing an explicit return type when the function result_type may or may not be deduced. If the result type is the same than the one requested by the generated function, the two template specialization become valid and then create ambiguity. </p> <hr /> <p> template&lt;class Rt2, class R, class T, </p> <blockquote> <p> class B1, class A1, class A2&gt; _bi::bind_t&lt;Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)&lt;R, T, B1&gt;, typename _bi::list_av_2&lt;A1, A2&gt;::type&gt; BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) </p> </blockquote> <p> template&lt;class R, class T, </p> <blockquote> <p> class B1, class A1, class A2&gt; _bi::bind_t&lt;R, _mfi::BOOST_BIND_MF_NAME(mf1)&lt;R, T, B1&gt;, typename _bi::list_av_2&lt;A1, A2&gt;::type&gt; BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2) </p> </blockquote> <hr /> <p> <em> Here is my use case that fail on my end </em></p> <p> class any_function { public: </p> <p> template &lt;typename T0, typename T1, int i&gt; typename boost::enable_if&lt; </p> <blockquote> <p> boost::is_member_function_pointer&lt;T0&gt;, CAnyFunction&amp;&gt;::type </p> </blockquote> <p> set(T0 t0, T1 t1, boost::arg&lt;i&gt; i1) { </p> <blockquote> <p> typedef function_traits&lt;T0&gt; traits; typedef typename traits::result_type result_type; Functor = </p> <blockquote> <p> boost::function&lt;result_type (traits::arg1_type)&gt; (boost::bind&lt;result_type&gt;(t0, t1, i1)); </p> </blockquote> <p> return *this; </p> </blockquote> <p> }; </p> <p> private: </p> <blockquote> <p> boost::any Functor; </p> </blockquote> <p> } </p> <hr /> gerald.langlois@… https://svn.boost.org/trac10/ticket/11304 https://svn.boost.org/trac10/ticket/11304 Report #11300: I think the invariant in ResourceExtensionFunction for r_c_shortest_paths is not correct Wed, 13 May 2015 19:17:24 GMT Thu, 14 Jan 2016 00:04:12 GMT <p> The documentation for 1.58.0 (<a href="http://www.boost.org/doc/libs/1_58_0/libs/graph/doc/r_c_shortest_paths.html">http://www.boost.org/doc/libs/1_58_0/libs/graph/doc/r_c_shortest_paths.html</a>) correctly states that: </p> <blockquote class="citation"> <p> The implementation is a label-setting algorithm. This means that there must be one or more resources whose cumulated consumption(s) after extension is/are always at least as high as before. This is similar to the Dijkstra algorithm for the SPP without resource constraints where the distance measure must be non-negative. It is sufficient if there is one resource with a non-negative resource consumption along all arcs (for example, non-negative arc lengths or non-negative arc traversal times). </p> </blockquote> <p> But, later on, it says: </p> <blockquote class="citation"> <p> If ref models the <a class="missing wiki">ResourceExtensionFunction</a> concept, and if the type Resource_Container models the <a class="missing wiki">ResourceContainer</a> concept, after the call </p> <p> ref( const Graph&amp; g, </p> <blockquote> <p> Resource_Container&amp; new_cont, const Resource_Container&amp; old_cont, graph_traits&lt;Graph&gt;::edge_descriptor ) </p> </blockquote> <p> the expression old_cont &lt;= new_cont evaluates to true. </p> <p> This is because, as stated above, the implementation is a label-setting algorithm. Therefore, the Less-Than operator for <a class="missing wiki">ResourceContainer</a> must compare one or more resource(s) whose resource consumption(s) along any arc is/are non-decreasing in order for the algorithm to work properly. </p> </blockquote> <p> Now, saying that "old_cont &lt;= new_cont" is much stricter than it should be. The correct requirement (first quote) is that there is <strong>at least one</strong> resource whose consumption monotonically doesn't decrease. What "old_cont &lt;= new_cont" requires, is that <strong>all</strong> resources' consumptions are monotonically non-decreasing. These two things are equivalent iff the label only has one resource. </p> <p> Also, can someone confirm my first impression (after looking at r_c_shorterst_paths.hpp) that this invariant is mentioned in the documentation, but never checked nor <em>assert</em>-ed in the code? </p> a.santini@… https://svn.boost.org/trac10/ticket/11300 https://svn.boost.org/trac10/ticket/11300 Report #11297: adaptors: Documentation for sliced reports the wrong precondition Wed, 13 May 2015 10:32:50 GMT Wed, 13 May 2015 10:32:50 GMT <p> Currently, the precondition for the sliced adaptor is </p> <p> Precondition: 0 &lt;= n &amp;&amp; n &lt;= m &amp;&amp; m &lt; distance(rng). </p> <p> It should instead be </p> <p> Precondition: 0 &lt;= n &amp;&amp; n &lt;= m &amp;&amp; m &lt;= distance(rng). </p> <p> Notice the &lt;= instead of &lt;. </p> <p> The page in question is <a href="http://www.boost.org/doc/libs/1_58_0/libs/range/doc/html/range/reference/adaptors/reference/sliced.html">http://www.boost.org/doc/libs/1_58_0/libs/range/doc/html/range/reference/adaptors/reference/sliced.html</a>. </p> <p> Nitpicky: Maybe a better upper bound would be m &lt;= size(rng) since boost::size returns a range_size&lt;rng&gt;::type which is the type of n and m (the parameters given to adaptors::sliced). Contrast this to boost::distance which returns a range_difference&lt;rng&gt;::type. </p> Frederik Aalund <frederikaalund@…> https://svn.boost.org/trac10/ticket/11297 https://svn.boost.org/trac10/ticket/11297 Report #11295: Matrix Memory problem after using lu_factorize Wed, 13 May 2015 08:17:31 GMT Fri, 16 Jun 2017 11:49:54 GMT <p> Discovered that after using lu_factorize the values of the matrix have changed! </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/numeric/ublas/matrix.hpp&gt; #include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt; #include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; using namespace std; using namespace boost::numeric; int main() { ublas::matrix&lt;double&gt; X(3,3); X.clear(); X(0,0) = 0.995182407377577; X(0,1) =-0.006473367705848; X(0,2) =-0.002032391957706; X(1,0) =-0.006473367705848; X(1,1) = 0.995182407377577; X(1,2) =-0.002032391957706; X(2,0) =-0.002032391957706; X(2,1) =-0.002032391957706; X(2,2) = 0.936175146339137; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; } </pre><p> Output: </p> <pre class="wiki">[3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006473367705848,0.995182407377577,-0.002032391957706),(-0.002032391957706,-0.002032391957706,0.936175146339137)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006504704723334175,0.9951403000320849,-0.002045612067272957),(-0.002042230592742885,-0.002055601674665375,0.9361667907625133)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006536193440632496,0.9950979888485471,-0.002058896174255709),(-0.002052116855767581,-0.002079077442455779,0.9361583394521271)) </pre><p> Is this fixed in newer versions? </p> <p> Thanks </p> <p> Michael Cortis </p> <p> RA, Durham University </p> michael.cortis@… https://svn.boost.org/trac10/ticket/11295 https://svn.boost.org/trac10/ticket/11295 Report #11294: Matrix Memory problem after using lu_factorize Wed, 13 May 2015 08:17:17 GMT Wed, 13 May 2015 08:17:17 GMT <p> Discovered that after using lu_factorize the values of the matrix have changed! </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/numeric/ublas/matrix.hpp&gt; #include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt; #include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; using namespace std; using namespace boost::numeric; int main() { ublas::matrix&lt;double&gt; X(3,3); X.clear(); X(0,0) = 0.995182407377577; X(0,1) =-0.006473367705848; X(0,2) =-0.002032391957706; X(1,0) =-0.006473367705848; X(1,1) = 0.995182407377577; X(1,2) =-0.002032391957706; X(2,0) =-0.002032391957706; X(2,1) =-0.002032391957706; X(2,2) = 0.936175146339137; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; } </pre><p> Output: </p> <pre class="wiki">[3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006473367705848,0.995182407377577,-0.002032391957706),(-0.002032391957706,-0.002032391957706,0.936175146339137)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006504704723334175,0.9951403000320849,-0.002045612067272957),(-0.002042230592742885,-0.002055601674665375,0.9361667907625133)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006536193440632496,0.9950979888485471,-0.002058896174255709),(-0.002052116855767581,-0.002079077442455779,0.9361583394521271)) </pre><p> Is this fixed in newer versions? </p> <p> Thanks </p> <p> Michael Cortis </p> <p> RA, Durham University </p> michael.cortis@… https://svn.boost.org/trac10/ticket/11294 https://svn.boost.org/trac10/ticket/11294 Report #11293: Matrix Memory problem after using lu_factorize Wed, 13 May 2015 08:16:49 GMT Wed, 13 May 2015 08:16:49 GMT <p> Discovered that after using lu_factorize the values of the matrix have changed! </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/numeric/ublas/matrix.hpp&gt; #include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt; #include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; using namespace std; using namespace boost::numeric; int main() { ublas::matrix&lt;double&gt; X(3,3); X.clear(); X(0,0) = 0.995182407377577; X(0,1) =-0.006473367705848; X(0,2) =-0.002032391957706; X(1,0) =-0.006473367705848; X(1,1) = 0.995182407377577; X(1,2) =-0.002032391957706; X(2,0) =-0.002032391957706; X(2,1) =-0.002032391957706; X(2,2) = 0.936175146339137; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; } </pre><p> Output: </p> <pre class="wiki">[3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006473367705848,0.995182407377577,-0.002032391957706),(-0.002032391957706,-0.002032391957706,0.936175146339137)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006504704723334175,0.9951403000320849,-0.002045612067272957),(-0.002042230592742885,-0.002055601674665375,0.9361667907625133)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006536193440632496,0.9950979888485471,-0.002058896174255709),(-0.002052116855767581,-0.002079077442455779,0.9361583394521271)) </pre><p> Is this fixed in newer versions? </p> <p> Thanks </p> <p> Michael Cortis </p> <p> RA, Durham University </p> michael.cortis@… https://svn.boost.org/trac10/ticket/11293 https://svn.boost.org/trac10/ticket/11293 Report #11292: Matrix Memory problem after using lu_factorize Wed, 13 May 2015 08:16:37 GMT Wed, 13 May 2015 08:16:37 GMT <p> Discovered that after using lu_factorize the values of the matrix have changed! </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/numeric/ublas/matrix.hpp&gt; #include &lt;boost/numeric/ublas/matrix_proxy.hpp&gt; #include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; using namespace std; using namespace boost::numeric; int main() { ublas::matrix&lt;double&gt; X(3,3); X.clear(); X(0,0) = 0.995182407377577; X(0,1) =-0.006473367705848; X(0,2) =-0.002032391957706; X(1,0) =-0.006473367705848; X(1,1) = 0.995182407377577; X(1,2) =-0.002032391957706; X(2,0) =-0.002032391957706; X(2,1) =-0.002032391957706; X(2,2) = 0.936175146339137; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; cout&lt;&lt;ublas::lu_factorize(X)&lt;&lt;endl; cout&lt;&lt;setprecision(16)&lt;&lt;X&lt;&lt;endl; } </pre><p> Output: </p> <pre class="wiki">[3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006473367705848,0.995182407377577,-0.002032391957706),(-0.002032391957706,-0.002032391957706,0.936175146339137)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006504704723334175,0.9951403000320849,-0.002045612067272957),(-0.002042230592742885,-0.002055601674665375,0.9361667907625133)) 0 [3,3]((0.995182407377577,-0.006473367705848,-0.002032391957706),(-0.006536193440632496,0.9950979888485471,-0.002058896174255709),(-0.002052116855767581,-0.002079077442455779,0.9361583394521271)) </pre><p> Is this fixed in newer versions? </p> <p> Thanks </p> <p> Michael Cortis </p> <p> RA, Durham University </p> michael.cortis@… https://svn.boost.org/trac10/ticket/11292 https://svn.boost.org/trac10/ticket/11292 Report #11289: Filter test crashes if other "compose" function is defined Tue, 12 May 2015 20:02:58 GMT Tue, 12 May 2015 20:02:58 GMT <p> Because it's not qualifying the calls to the compose function, if you happen to have another function defined named "compose", the test will not compile. </p> anonymous https://svn.boost.org/trac10/ticket/11289 https://svn.boost.org/trac10/ticket/11289 Report #11287: adaptors: strided does not support input iterators Tue, 12 May 2015 08:08:18 GMT Tue, 12 May 2015 08:08:18 GMT <p> Hi, </p> <p> Despite what the documentation says, the stride adaptor does not support input iterators. This is a pity, since for instance its applicability to iterators to coroutines: see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/11274" title="#11274: Bugs: coroutine's iterators don't fully comply (closed: invalid)">#11274</a>. </p> <p> Oliver Kowalke tracked down the issue, and built a small scale example that shows the problem: see <a class="ext-link" href="http://lists.boost.org/boost-users/2015/05/84277.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2015/05/84277.php</a>. The example is repeated below: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; #include &lt;boost/range.hpp&gt; #include &lt;boost/range/adaptor/strided.hpp&gt; namespace foo { template&lt; typename T &gt; class X { private: typedef std::vector&lt; T &gt; vec_t; vec_t vec_; public: X( vec_t const&amp; vec) : vec_( vec) { } class iterator : public std::iterator&lt; std::input_iterator_tag, T &gt; { private: X * x_; typename vec_t::iterator i_; public: typedef typename iterator::pointer pointer_t; typedef typename iterator::reference reference_t; iterator() : x_( 0), i_() {} explicit iterator( X * x) : x_( x), i_( x_-&gt;vec_.begin() ) {} iterator( iterator const&amp; other) : x_( other.x_), i_( other.i_) {} iterator &amp; operator=( iterator const&amp; other) { if ( this == &amp; other) return * this; x_ = other.x_; i_ = other.i_; return * this; } bool operator==( iterator const&amp; other) const { return other.x_ == x_ &amp;&amp; other.i_ == i_; } bool operator!=( iterator const&amp; other) const { return other.x_ != x_ || other.i_ != i_; } iterator &amp; operator++() { ++i_; return * this; } iterator operator++( int) { i_++; return * this; } reference_t operator*() const { return * i_; } pointer_t operator-&gt;() const { return &amp; ( * i_); } }; class const_iterator : public std::iterator&lt; std::input_iterator_tag, const T &gt; { private: X * x_; typename vec_t::const_iterator i_; public: typedef typename iterator::pointer pointer_t; typedef typename iterator::reference reference_t; const_iterator() : x_( 0), i_() {} explicit const_iterator( X * x) : x_( x), i_( x_-&gt;vec_.begin() ) {} const_iterator( const_iterator const&amp; other) : x_( other.x_), i_( other.i_) {} const_iterator &amp; operator=( const_iterator const&amp; other) { if ( this == &amp; other) return * this; x_ = other.x_; i_ = other.i_; return * this; } bool operator==( const_iterator const&amp; other) const { return other.x_ == x_ &amp;&amp; other.i_ == i_; } bool operator!=( const_iterator const&amp; other) const { return other.x_ != x_ || other.i_ != i_; } const_iterator &amp; operator++() { ++i_; return * this; } const_iterator operator++( int) { i_++; return * this; } reference_t operator*() const { return * i_; } pointer_t operator-&gt;() const { return &amp; ( * i_); } }; friend class iterator; friend class const_iterator; }; template&lt; typename T &gt; typename X&lt; T &gt;::iterator range_begin( X&lt; T &gt; &amp; c) { return typename X&lt; T &gt;::iterator( &amp; c); } template&lt; typename T &gt; typename X&lt; T &gt;::const_iterator range_begin( X&lt; T &gt; const&amp; c) { return typename X&lt; T &gt;::const_iterator( &amp; c); } template&lt; typename T &gt; typename X&lt; T &gt;::iterator range_end( X&lt; T &gt; &amp;) { return typename X&lt; T &gt;::iterator(); } template&lt; typename T &gt; typename X&lt; T &gt;::const_iterator range_end( X&lt; T &gt; const&amp;) { return typename X&lt; T &gt;::const_iterator(); } template&lt; typename T &gt; typename X&lt; T &gt;::iterator begin( X&lt; T &gt; &amp; c) { return boost::begin( c); } template&lt; typename T &gt; typename X&lt; T &gt;::const_iterator begin( X&lt; T &gt; const&amp; c) { return boost::begin( c); } template&lt; typename T &gt; typename X&lt; T &gt;::iterator end( X&lt; T &gt; &amp; c) { return boost::end( c); } template&lt; typename T &gt; typename X&lt; T &gt;::const_iterator end( X&lt; T &gt; const&amp; c) { return boost::end( c); } } namespace boost { template&lt; typename T &gt; struct range_mutable_iterator&lt; foo::X&lt; T &gt; &gt; { typedef typename foo::X&lt; T &gt;::iterator type; }; template&lt; typename T &gt; struct range_const_iterator&lt; foo::X&lt; T &gt; &gt; { typedef typename foo::X&lt; T &gt;::const_iterator type; }; } int main() { std::vector&lt; int &gt; vec = { 1,2,3,4,5,6,7,8,9,10 }; auto x = foo::X&lt; int &gt;( vec); for (auto i : x | boost::adaptors::strided( 2) ) std::cout &lt;&lt; i &lt;&lt; " "; std::cout &lt;&lt; '\n'; } </pre> Akim Demaille <akim.demaille@…> https://svn.boost.org/trac10/ticket/11287 https://svn.boost.org/trac10/ticket/11287 Report #11284: VS2013: compiler warnings C4242 Mon, 11 May 2015 19:55:54 GMT Mon, 11 May 2015 19:55:54 GMT <p> Some C4242 [level 4] warnings in asio when compiling with VS 2013 x64. </p> <ul><li>boost.library\v1.57.0\include\boost\asio\detail\impl\win_iocp_socket_service_base.ipp(567) : warning C4242: '=' : conversion from 'int' to 'ADDRESS_FAMILY', possible loss of data </li><li>boost.library\v1.57.0\include\boost\asio\impl\serial_port_base.ipp(511) : warning C4242: '=' : conversion from 'const unsigned int' to 'BYTE', possible loss of data </li></ul> iron9light@… https://svn.boost.org/trac10/ticket/11284 https://svn.boost.org/trac10/ticket/11284 Report #11280: VS 2010 with LLVM Mon, 11 May 2015 09:29:06 GMT Sun, 17 May 2015 11:30:31 GMT <p> I can't compile anything that includes BOOST when I use as a compiler clang on MSVC 2010/2013. The error is a compiler error and not a linker error. I already built BOOST for CLANG on windows, but I didn't get to the linking stage. </p> <p> Here is the error log: </p> <p> 1&gt;------ Build started: Project: llvmTest, Configuration: Debug LLVM Win32 ------ 1&gt; In file included from Source.cpp:1: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread.hpp:13: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread.hpp:12: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread_only.hpp:15: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/win32/thread_data.hpp:10: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread_time.hpp:9: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/date_time/time_clock.hpp:17: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/shared_ptr.hpp:17: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/smart_ptr/shared_ptr.hpp:28: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/smart_ptr/detail/shared_count.hpp:29: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base.hpp:45: 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(27,8): error : unknown type name '_Atomic' 1&gt; typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t; 1&gt; <sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(27,24): error : cannot define or redeclare 'int_least32_t' here because namespace 'detail' does not enclose namespace 'boost' 1&gt; typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t; 1&gt; <del></del><del>~</del></sup><del> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(27,24): error : typedef declarator cannot be qualified 1&gt; typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t; 1&gt; </del><del></del>~<sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(27,39): error : expected ';' after top level declarator 1&gt; typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t; 1&gt; </sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(29,30): error : unknown type name 'atomic_int_least32_t' 1&gt; inline void atomic_increment( atomic_int_least32_t * pw ) 1&gt; <sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(34,46): error : unknown type name 'atomic_int_least32_t' 1&gt; inline boost::int_least32_t atomic_decrement( atomic_int_least32_t * pw ) 1&gt; </sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(39,58): error : unknown type name 'atomic_int_least32_t' 1&gt; inline boost::int_least32_t atomic_conditional_increment( atomic_int_least32_t * pw ) 1&gt; <sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(68,4): error : unknown type name 'atomic_int_least32_t' 1&gt; atomic_int_least32_t use_count_; <em> #shared 1&gt; </em></sup><em> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(69,4): error : unknown type name 'atomic_int_least32_t' 1&gt; atomic_int_least32_t weak_count_; </em> #weak + (#shared != 0) 1&gt; <sup> 1&gt;c:\Boost\include\boost-1_58\boost/smart_ptr/detail/sp_counted_base_clang.hpp(132,46): error : unknown type name 'atomic_int_least32_t' 1&gt; return <span class="underline">c11_atomic_load( const_cast&lt; atomic_int_least32_t* &gt;( &amp;use_count_ ), </span>ATOMIC_ACQUIRE ); 1&gt; </sup> 1&gt; In file included from Source.cpp:1: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread.hpp:13: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread.hpp:12: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread_only.hpp:15: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/win32/thread_data.hpp:11: 1&gt;c:\Boost\include\boost-1_58\boost/thread/win32/thread_primitives.hpp(183,53): error : redeclaration of 'Sleep' cannot add 'dllimport' attribute 1&gt; <span class="underline">declspec(dllimport) void </span>stdcall Sleep(unsigned long); 1&gt; <sup> 1&gt; c:\Boost\include\boost-1_58\boost/smart_ptr/detail/yield_k.hpp(63,28) : note: previous declaration is here 1&gt; extern "C" void <span class="underline">stdcall Sleep( unsigned long ms ); 1&gt; </span></sup><span class="underline"> 1&gt; In file included from Source.cpp:1: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread.hpp:13: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread.hpp:12: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread_only.hpp:15: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/win32/thread_data.hpp:11: 1&gt;c:\Boost\include\boost-1_58\boost/thread/win32/thread_primitives.hpp(418,20): error : no member named 'Sleep' in namespace 'boost::detail::win32'; did you mean simply 'Sleep'? 1&gt; ::boost::detail::win32::Sleep(0); 1&gt; <sup><del></del><del></del><del></del><del></del><del></del><del>~ 1&gt; c:\Boost\include\boost-1_58\boost/smart_ptr/detail/yield_k.hpp(63,28) : note: 'Sleep' declared here 1&gt; extern "C" void </del></sup></span><sup><del>stdcall Sleep( unsigned long ms ); 1&gt; </del></sup><del> 1&gt; In file included from Source.cpp:1: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread.hpp:13: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread.hpp:12: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/thread_only.hpp:15: 1&gt; In file included from c:\Boost\include\boost-1_58\boost/thread/win32/thread_data.hpp:11: 1&gt;c:\Boost\include\boost-1_58\boost/thread/win32/thread_primitives.hpp(426,44): error : no type named 'Sleep' in namespace 'boost::detail::win32' 1&gt; ::boost::detail::win32::Sleep(milliseconds); 1&gt; </del><del></del><del></del><del></del><del></del><del></del><del><sup> 1&gt; 13 errors generated. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </sup></del></p> aaron.adato@… https://svn.boost.org/trac10/ticket/11280 https://svn.boost.org/trac10/ticket/11280 Report #11276: Ability to hold already type erased object into a type erased reference. Fri, 08 May 2015 11:34:55 GMT Sat, 09 May 2015 00:29:28 GMT <p> I would like to ask for an enhancement to this fantastic library, that is making me so happy in the absence of non-library solutions in c++ :) </p> <p> This problem came up in my code: </p> <pre class="wiki"> class my_concept : public any&lt;requirements&gt; { using base = any&lt;requirements&gt;; public: using base::base; }; class my_concept_ref : public any&lt;requirements, _self &amp;&gt; { using base = any&lt;requirements, _self&amp;&gt;; public: template &lt;class... Args&gt; my_concept_ref(Args &amp;&amp;... args) : base(std::forward&lt;Args&gt;(args)...) {} }; //client code vector&lt;my_concept&gt; vec; // vec.push_back(my_concrete_model{}); my_concept_ref get_a_type_erased_type_in_a_ref(vector&lt;my_concept&gt; &amp; vec) { return vec[0]; } //Throws bad_cast: auto &amp; want_my_model = any_cast&lt;my_concrete_model&amp;&gt;(get_a_type_erased_type_in_a_ref()); //I must do this: auto &amp; will_give_me_my_model = any_cast&lt;my_concrete_model&amp;&gt;(any_cast&lt;my_concept &amp;&gt;( get_a_type_erased_type_in_a_ref()); </pre><p> The problem here is that when the constructor for my_concept_ref takes an already type erased type from the vector (my_concept), it wraps that concrete type, which is a model of my_concept, but it was already type_erased, and not the internal concrete model (my_concrete_model). </p> <p> What could be implemented is automatic unwrapping of a type erased type so that I can do this: </p> <pre class="wiki"> //Throws bad_cast: auto &amp; want_my_model = any_cast&lt;my_concrete_model&amp;&gt;(get_a_type_erased_type_in_a_ref()); </pre><p> I think this should work. There is no easy workaround but to cast twice. I think the runtime concept constructor should check wether the class being taking in the constructor is actually already a type erased one based on detecting any&lt;requirements&gt;. I do not want to use in my code both my_concept &amp; and my_concept_ref depending on wether I wrapped my concrete class or not in a type erased wrapper. This would give the library more uniformity and makes sense conceptually, because my_concept &amp; can only be used in case I wrapped my type in a my_concept &amp;, which is not always the case. </p> <p> Great work, by the way! I am trying to make heavy use of the library and so far it is serving me very well. </p> germandiago https://svn.boost.org/trac10/ticket/11276 https://svn.boost.org/trac10/ticket/11276 Report #11270: bost::shared_ptr && boost::optional fail to compile in single if statement Tue, 05 May 2015 20:32:53 GMT Thu, 28 May 2015 23:15:50 GMT <pre class="wiki">/* using sun 12.4 with std=c++11 does not compile shared_ptr and optional in single if statement , example : if ( ptr &amp;&amp; opt_value ) giving following message : Error: The operation "boost::shared_ptr&lt;int&gt; &amp;&amp; boost::optional&lt;int&gt;" is illegal boost version : 1.58 compilation command : /appl/toolbox/solarisstudio12.4/bin/CC -std=c++11 -I/home/vvenedik/C++/boost_1_58_0 -c main_5.cpp -o main_5.o */ #include &lt;boost/optional.hpp&gt; #include &lt;boost/shared_ptr.hpp&gt; #include &lt;iostream&gt; int main() { boost::shared_ptr&lt;int&gt; ptr(new int) ; boost::optional&lt;int&gt; opt_int; opt_int = 5; if ( ptr &amp;&amp; opt_int ) { std::cout &lt;&lt; "compiled and ran OK" &lt;&lt; std::endl; } } </pre> Vladimir Venediktov https://svn.boost.org/trac10/ticket/11270 https://svn.boost.org/trac10/ticket/11270 Report #11264: Add variadic lock_guard of Lockables Sun, 03 May 2015 12:56:45 GMT Thu, 14 May 2015 15:59:40 GMT <p> lock_guard works with <a class="missing wiki">BasicLockable</a>. </p> <p> In order the variadic version to avoid deadlock, it can work only with Lockable, as the use of lock forces it. </p> viboes https://svn.boost.org/trac10/ticket/11264 https://svn.boost.org/trac10/ticket/11264 Report #11260: stored_edge_property's copy constructor is implicitly deleted for some compilers Thu, 30 Apr 2015 18:33:53 GMT Thu, 30 Apr 2015 18:33:53 GMT <p> Stored_edge_property has two possible definitions, depending upon the compiler used. With MSVC or gcc less than 4.6, it is given both a copy constructor and a move constructor. With other compilers, it is given a default move constructor, and its copy constructor is implicitly deleted. </p> <p> This causes compiler errors in some unexpected places. I've attached an example which gives a compiler error when compiled with gcc 4.7.2 using c++11. I've observed the same issue on clang, although I haven't been able to create a simple reproduction for it there. </p> dave.lowell@… https://svn.boost.org/trac10/ticket/11260 https://svn.boost.org/trac10/ticket/11260 Report #11259: boost::movelib::unique_ptr is not convertible to boost::shared_ptr Thu, 30 Apr 2015 18:18:42 GMT Sun, 03 May 2015 22:24:17 GMT <p> I'm working on porting some code to a platform without a C++11 standard library, and wanted to use the Boost versions of shared_ptr and unique_ptr. Unfortunately code like this doesn't work: </p> <pre class="wiki">namespace mystd { using boost::shared_ptr; using boost::make_shared; using boost::movelib::unique_ptr; using boost::movelib::make_unique; } mystd::unique_ptr&lt;int&gt; load_thing() { return mystd::make_unique&lt;int&gt;(1); } mystd::shared_ptr&lt;int&gt; get_thing() { return load_thing(); } </pre><p> because there is no conversion from movelib::unique_ptr to shared_ptr. </p> <p> I'm happy to submit a patch that adds it but I'm not sure whether it's okay to add a Boost.Move dependency to Boost.<a class="missing wiki">SmartPtr</a>. And if I do that, should I also add move emulation to boost::shared_ptr? C++03 users might like the performance benefit of moving them instead of copying them. </p> Tavian Barnes <tavianator@…> https://svn.boost.org/trac10/ticket/11259 https://svn.boost.org/trac10/ticket/11259 Report #11258: Clean up after building Thu, 30 Apr 2015 17:27:04 GMT Tue, 05 May 2015 14:01:26 GMT <p> After building boost with build-type=complete, 2+ gbyte of object files, pch files and program databases is left behind. It'd be nice if there's an option to clean up intermediate files. </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/11258 https://svn.boost.org/trac10/ticket/11258 Report #11252: make make_ready_future more efficient Wed, 29 Apr 2015 23:37:32 GMT Sun, 03 May 2015 20:55:53 GMT <p> this function should be more efficient using a specific shared_state constructor. </p> viboes https://svn.boost.org/trac10/ticket/11252 https://svn.boost.org/trac10/ticket/11252 Report #11248: Some algorithms with requirement for SinglePassRange accept range only by const reference Wed, 29 Apr 2015 09:57:50 GMT Wed, 29 Apr 2015 09:57:50 GMT <p> I came up with it when tried to use generator made by boost.coroutine with boost range algorithms. The following code doesn't compile with MSVC 2012 </p> <pre class="wiki">#include &lt;boost/range/distance.hpp&gt; #include &lt;boost/coroutine/all.hpp&gt; using namespace boost::range; using namespace boost::coroutines; asymmetric_coroutine&lt;int&gt;::pull_type make_dummy_range() { return asymmetric_coroutine&lt;int&gt;::pull_type([](asymmetric_coroutine&lt;int&gt;::push_type&amp; yield) { yield(1); }); } int _tmain(int argc, _TCHAR* argv[]) { boost::distance(make_dummy_range()); // error return 0; } </pre><p> with error </p> <pre class="wiki">D:\Work\3rdparty\boost_1_58_0\boost/concept_check.hpp(181): error C2079: 'boost::CopyConstructible&lt;TT&gt;::b' uses undefined struct 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; TT=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; and 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(124) : see reference to class template instantiation 'boost::CopyConstructible&lt;TT&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; TT=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(147) : see reference to class template instantiation 'boost::range_detail::IncrementableIteratorConcept&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/concept/detail/msvc.hpp(29) : see reference to class template instantiation 'boost::range_detail::SinglePassIteratorConcept&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/concept/detail/msvc.hpp(28) : while compiling class template member function 'void boost::concepts::check&lt;Model&gt;::failed(Model *)' 1&gt; with 1&gt; [ 1&gt; Model=boost::range_detail::SinglePassIteratorConcept&lt;boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/concept/detail/msvc.hpp(66) : see reference to class template instantiation 'boost::concepts::check&lt;Model&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Model=boost::range_detail::SinglePassIteratorConcept&lt;boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(279) : see reference to class template instantiation 'boost::concepts::require&lt;Model&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Model=boost::range_detail::SinglePassIteratorConcept&lt;boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/concept/detail/has_constraints.hpp(42) : see reference to class template instantiation 'boost::SinglePassRangeConcept&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::coroutines::pull_coroutine&lt;int&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/concept/detail/msvc.hpp(58) : see reference to class template instantiation 'boost::concepts::not_satisfied&lt;Model&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Model=boost::SinglePassRangeConcept&lt;boost::coroutines::pull_coroutine&lt;int&gt;&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/algorithm/for_each.hpp(72) : see reference to class template instantiation 'boost::concepts::require&lt;Model&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Model=boost::SinglePassRangeConcept&lt;boost::coroutines::pull_coroutine&lt;int&gt;&gt; 1&gt; ] 1&gt; coroutine_bug.cpp(29) : see reference to function template instantiation 'UnaryFunction boost::range::for_each&lt;boost::coroutines::pull_coroutine&lt;R&gt;,wmain::&lt;lambda_d9c6ee6ee85186807f477d3ab241bdd7&gt;&gt;(SinglePassRange &amp;,UnaryFunction)' being compiled 1&gt; with 1&gt; [ 1&gt; UnaryFunction=wmain::&lt;lambda_d9c6ee6ee85186807f477d3ab241bdd7&gt;, 1&gt; R=int, 1&gt; SinglePassRange=boost::coroutines::pull_coroutine&lt;int&gt; 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364): error C2027: use of undefined type 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/coroutine/asymmetric_coroutine.hpp(812) : see declaration of 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/iterator/iterator_categories.hpp(119) : see reference to class template instantiation 'std::iterator_traits&lt;_Iter&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(126) : see reference to class template instantiation 'boost::iterators::iterator_traversal&lt;Iterator&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364): error C2146: syntax error : missing ';' before identifier 'iterator_category' 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364): error C2602: 'std::iterator_traits&lt;_Iter&gt;::iterator_category' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::iterator_category' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(364): error C2868: 'std::iterator_traits&lt;_Iter&gt;::iterator_category' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365): error C2027: use of undefined type 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/coroutine/asymmetric_coroutine.hpp(812) : see declaration of 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365): error C2146: syntax error : missing ';' before identifier 'value_type' 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365): error C2602: 'std::iterator_traits&lt;_Iter&gt;::value_type' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::value_type' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(365): error C2868: 'std::iterator_traits&lt;_Iter&gt;::value_type' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366): error C2027: use of undefined type 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/coroutine/asymmetric_coroutine.hpp(812) : see declaration of 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366): error C2146: syntax error : missing ';' before identifier 'difference_type' 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366): error C2602: 'std::iterator_traits&lt;_Iter&gt;::difference_type' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::difference_type' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(366): error C2868: 'std::iterator_traits&lt;_Iter&gt;::difference_type' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368): error C2027: use of undefined type 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/coroutine/asymmetric_coroutine.hpp(812) : see declaration of 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368): error C2146: syntax error : missing ';' before identifier 'pointer' 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368): error C2602: 'std::iterator_traits&lt;_Iter&gt;::pointer' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::pointer' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(368): error C2868: 'std::iterator_traits&lt;_Iter&gt;::pointer' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369): error C2027: use of undefined type 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/coroutine/asymmetric_coroutine.hpp(812) : see declaration of 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369): error C2146: syntax error : missing ';' before identifier 'reference' 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369): error C2602: 'std::iterator_traits&lt;_Iter&gt;::reference' is not a member of a base class of 'std::iterator_traits&lt;_Iter&gt;' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369) : see declaration of 'std::iterator_traits&lt;_Iter&gt;::reference' 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(369): error C2868: 'std::iterator_traits&lt;_Iter&gt;::reference' : illegal syntax for using-declaration; expected qualified-name 1&gt; with 1&gt; [ 1&gt; _Iter=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41): error C2516: 'boost::mpl::if_&lt;T1,T2,T3&gt;::type' : is not a legal base class 1&gt; with 1&gt; [ 1&gt; T1=boost::is_convertible&lt;int,std::output_iterator_tag&gt;, 1&gt; T2=boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;, 1&gt; T3=void 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/if.hpp(70) : see declaration of 'boost::mpl::if_&lt;T1,T2,T3&gt;::type' 1&gt; with 1&gt; [ 1&gt; T1=boost::is_convertible&lt;int,std::output_iterator_tag&gt;, 1&gt; T2=boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;, 1&gt; T3=void 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,std::output_iterator_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;, 1&gt; F2=void 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,std::input_iterator_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;boost::iterators::single_pass_traversal_tag&gt;, 1&gt; F2=boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::output_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;,void&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,std::forward_iterator_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;boost::iterators::forward_traversal_tag&gt;, 1&gt; F2=boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::input_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::single_pass_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::output_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;,void&gt;&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,std::bidirectional_iterator_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;boost::iterators::bidirectional_traversal_tag&gt;, 1&gt; F2=boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::forward_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::forward_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::input_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::single_pass_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::output_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;,void&gt;&gt;&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/iterator/iterator_categories.hpp(99) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,std::random_access_iterator_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;boost::iterators::random_access_traversal_tag&gt;, 1&gt; F2=boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::bidirectional_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::bidirectional_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::forward_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::forward_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::input_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::single_pass_traversal_tag&gt;,boost::mpl::eval_if&lt;boost::is_convertible&lt;int,std::output_iterator_tag&gt;,boost::mpl::identity&lt;boost::iterators::incrementable_traversal_tag&gt;,void&gt;&gt;&gt;&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/mpl/eval_if.hpp(41) : see reference to class template instantiation 'boost::iterators::detail::old_category_to_traversal&lt;Cat&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Cat=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/iterator/iterator_categories.hpp(113) : see reference to class template instantiation 'boost::mpl::eval_if&lt;C,F1,F2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; C=boost::is_convertible&lt;int,boost::iterators::incrementable_traversal_tag&gt;, 1&gt; F1=boost::mpl::identity&lt;int&gt;, 1&gt; F2=boost::iterators::detail::old_category_to_traversal&lt;int&gt; 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/iterator/iterator_categories.hpp(121) : see reference to class template instantiation 'boost::iterators::iterator_category_to_traversal&lt;Cat&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Cat=int 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(126): error C2039: 'type' : is not a member of 'boost::iterators::iterator_traversal&lt;Iterator&gt;' 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(126): error C2146: syntax error : missing ';' before identifier 'traversal_category' 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(126): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(128): error C2065: 'traversal_category' : undeclared identifier 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(128): error C2923: 'boost::Convertible' : 'traversal_category' is not a valid template type argument for parameter 'X' 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(128): error C2893: Failed to specialize function template 'boost::concepts::require&lt;Model&gt; boost::concepts::require_(void (__cdecl *)(Model))' 1&gt; With the following template arguments: 1&gt; 'boost::Convertible' 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(128): error C2056: illegal expression 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(140): error C2079: 'boost::range_detail::IncrementableIteratorConcept&lt;Iterator&gt;::i' uses undefined struct 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; and 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/concept_check.hpp(239): error C2079: 'boost::EqualityComparable&lt;TT&gt;::a' uses undefined struct 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; TT=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; and 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(148) : see reference to class template instantiation 'boost::EqualityComparable&lt;TT&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; TT=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/concept_check.hpp(239): error C2079: 'boost::EqualityComparable&lt;TT&gt;::b' uses undefined struct 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; TT=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; and 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(150): error C2146: syntax error : missing ',' before identifier 'traversal_category' 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(150): error C2065: 'traversal_category' : undeclared identifier 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(150): error C2893: Failed to specialize function template 'boost::concepts::require&lt;Model&gt; boost::concepts::require_(void (__cdecl *)(Model))' 1&gt; With the following template arguments: 1&gt; 'boost::Convertible' 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(150): error C2056: illegal expression 1&gt;D:\Work\3rdparty\boost_1_58_0\boost/range/concepts.hpp(174): error C2079: 'boost::range_detail::SinglePassIteratorConcept&lt;Iterator&gt;::i' uses undefined struct 'boost::coroutines::pull_coroutine&lt;R&gt;::const_iterator' 1&gt; with 1&gt; [ 1&gt; Iterator=boost::coroutines::pull_coroutine&lt;int&gt;::const_iterator 1&gt; ] 1&gt; and 1&gt; [ 1&gt; R=int 1&gt; ] 1&gt; 1&gt;Build FAILED. 1&gt; </pre><p> Generator models <a class="missing wiki">SinglePassRange</a> and modify itself will iterating, but distance accept range only by const reference </p> <pre class="wiki"> template&lt; class T &gt; inline BOOST_DEDUCED_TYPENAME range_difference&lt;T&gt;::type distance( const T&amp; r ) { return std::distance( boost::begin( r ), boost::end( r ) ); } </pre><p> I checked other algorithms and found that some of them have non const reference overload (for example count) </p> <pre class="wiki">template&lt;class SinglePassRange, class Value&gt; typename range_difference&lt;SinglePassRange&gt;::type count(SinglePassRange&amp; rng, const Value&amp; val); template&lt;class SinglePassRange, class Value&gt; typename range_difference&lt;const SinglePassRange&gt;::type count(const SinglePassRange&amp; rng, const Value&amp; val); </pre><p> I tried count instead of distance and I was suprised that it doesn't compile too. </p> <pre class="wiki">asymmetric_coroutine&lt;int&gt;::pull_type make_dummy_range() { return asymmetric_coroutine&lt;int&gt;::pull_type([](asymmetric_coroutine&lt;int&gt;::push_type&amp; yield) { yield(1); }); } int _tmain(int argc, _TCHAR* argv[]) { asymmetric_coroutine&lt;int&gt;::pull_type r = make_dummy_range(); boost::count(r, 1); //still complains on const_iterator return 0; } </pre><p> I don't understand why MSVC12 compiler still prefer const ref overload </p> <pre class="wiki">template&lt;class SinglePassRange, class Value&gt; typename range_difference&lt;const SinglePassRange&gt;::type count(const SinglePassRange&amp; rng, const Value&amp; val); </pre><p> but it is </p> Taras Kozlov <kozlov.taras@…> https://svn.boost.org/trac10/ticket/11248 https://svn.boost.org/trac10/ticket/11248 Report #11247: More useful rtree API (public apply_visitor, ...) Wed, 29 Apr 2015 09:47:29 GMT Thu, 14 May 2015 10:11:27 GMT <p> I would like to use geometry::index::rtree to create rtree in memory and then export whole structure to custom database. For that I need access to all nodes not only leaf values. </p> <p> Proposed changes:<br /> </p> <ul><li>make rtree::apply_visitor public </li><li>make rtree::depth public (optional but makes sense imho) </li><li>make second rtree typedef section (box_type, allocators, internal_node, leaf, node_pointer etc.) public </li></ul><p> Using that I can conveniently create my own visitor and traverse all nodes in a tree </p> Tomas P <pecholt@…> https://svn.boost.org/trac10/ticket/11247 https://svn.boost.org/trac10/ticket/11247 Report #11244: A version of vector optimized for the empty case Sat, 25 Apr 2015 19:55:43 GMT Sat, 25 Apr 2015 19:55:43 GMT <p> Hello, </p> <p> it would be useful if boost could provide a version of vector optimized for the case where the vector is empty. In particular, sizeof(vector)==sizeof(void*) with no allocation in the empty case. The size and capacity can be stored in the allocated region when that region exists. This technique can be seen in mozilla's nsTArray, libstdc++'s std::string (before the new ABI in gcc-5) and several other places. Like mozilla, I would like to use this in a tree-like structure, and a large proportion of the nodes are leaves with an empty vector, where 2 pointers make a noticable difference. To be precise, I would actually want a flat_set with a map-like interface (the key can be deduced from the value), but a vector would be a good start. </p> marc.glisse@… https://svn.boost.org/trac10/ticket/11244 https://svn.boost.org/trac10/ticket/11244 Report #11242: Accuray issue with geometry::difference() in version Boost 1.57 (and 1.58) Sat, 25 Apr 2015 12:11:52 GMT Sat, 25 Apr 2015 12:11:52 GMT <p> I'm having an accuracy issue with geometry::difference() in Boost v1.57 (and v1.58) that I didn't see with v1.55. The test program is listed below. I compiled using g++ 4.4.7 on Ubuntu 12.04. </p> <p> Result using Boost v1.55: </p> <pre class="wiki"> 249.232 761.09 249.232 760.98 265.89 760.98 265.89 729.219 94.021 729.219 94.021 761.09 249.232 761.09 </pre><p> Result using Boost v1.57 (and v1.58): </p> <pre class="wiki">249.232003466816 761.09 249.232 760.98 265.89 760.979984987659 265.89 729.219 94.021 729.219 94.021 761.09 249.232003466816 761.09 </pre><p> Apparently, it is related to the rescaling policy introduced in v1.56. I can mitigate the issue by defining the BOOST_GEOMETRY_NO_ROBUSTNESS. </p> <p> Best regards, </p> <p> Mikkel B. Stegmann </p> <hr /> <pre class="wiki">#include &lt;boost/foreach.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry.hpp&gt; #include &lt;cstdio&gt; #include &lt;assert.h&gt; int main() { // 2D point with double precision typedef boost::geometry::model::d2::point_xy&lt;double&gt; BoostPoint; // 2D polygon, ring type: clockwise, closed ("the first point must be spatially equal to the last point") typedef boost::geometry::model::polygon&lt;BoostPoint&gt; BoostPolygon; BoostPolygon rectangleA; rectangleA.outer().push_back(BoostPoint( 94.021, 729.219)); // clock-wise points rectangleA.outer().push_back(BoostPoint( 94.021, 761.090)); rectangleA.outer().push_back(BoostPoint(265.890, 761.090)); rectangleA.outer().push_back(BoostPoint(265.890, 729.219)); rectangleA.outer().push_back(BoostPoint( 94.021, 729.219)); // close BoostPolygon rectangleB; rectangleB.outer().push_back(BoostPoint(249.232, 760.980)); // clock-wise points rectangleB.outer().push_back(BoostPoint(249.232, 780.980)); rectangleB.outer().push_back(BoostPoint(319.232, 780.980)); rectangleB.outer().push_back(BoostPoint(319.232, 760.980)); rectangleB.outer().push_back(BoostPoint(249.232, 760.980)); // close std::list&lt;BoostPolygon&gt; differencePolygons; boost::geometry::difference(rectangleA, rectangleB, differencePolygons); assert(differencePolygons.size()==1); BOOST_FOREACH(const BoostPoint &amp;point, differencePolygons.front().outer()) { printf("%16.15g %16.15g\n", point.x(), point.y()); } return 0; } </pre> mikkel.stegmann@… https://svn.boost.org/trac10/ticket/11242 https://svn.boost.org/trac10/ticket/11242 Report #11240: tons of warnings about unused local typedefs with clang++ Fri, 24 Apr 2015 20:35:09 GMT Mon, 04 May 2015 11:25:38 GMT <p> When compiling anything using <code>BOOST_RANGE_CONCEPT_ASSERT()</code> clang++ emits tons of warnings about used local typedefs if compiled with <code>-Wall</code>. </p> <p> This is a regression compared to 1.57.0. </p> <p> Trivial example program: </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;boost/range/algorithm.hpp&gt; int main(int, char**) { std::vector&lt;int&gt; v; boost::range::sort(v); } </pre><p> Compiled with: </p> <pre class="wiki">clang++ -Wall -I$HOME/opt/boost/boost_1_58_0/include/ \ -L$HOME/opt/boost/boost_1_58_0/lib/ -o cpp1 cpp1.cpp </pre><p> Output (excerpt): </p> <pre class="wiki">In file included from cpp1.cpp:46: In file included from /home/mosu/opt/boost/boost_1_58_0/include/boost/range/algorithm.hpp:29: In file included from /home/mosu/opt/boost/boost_1_58_0/include/boost/range/concepts.hpp:19: /home/mosu/opt/boost/boost_1_58_0/include/boost/concept_check.hpp:51:7: warning: unused typedef 'boost_concept_check51' [-Wunused-local-typedef] BOOST_CONCEPT_ASSERT((Model)); … … 313 warnings generated. </pre><p> These are 313 warnings for that trivial example program above. </p> <p> g++ 4.9.2 does not emit such warnings, with neither version. </p> <p> clang++ 3.6.0 emits those warnings with Boost 1.58.0 but not with 1.57.0 or earlier. </p> Moritz Bunkus <moritz@…> https://svn.boost.org/trac10/ticket/11240 https://svn.boost.org/trac10/ticket/11240 Report #11238: Clang doesn't support -finline-function Fri, 24 Apr 2015 16:04:03 GMT Fri, 24 Apr 2015 16:04:03 GMT <p> Previous versions of clang just ignored it silently, but now it actually emits a warning in 3.5. See <a class="ext-link" href="http://stackoverflow.com/questions/26108606/no-support-to-finline-functions-in-clang-3-5"><span class="icon">​</span>http://stackoverflow.com/questions/26108606/no-support-to-finline-functions-in-clang-3-5</a> for details. </p> <p> Suggest removing "-finline-functions' from clang-darwin.compile OPTIONS on line 86 of tools/build/src/tools/clang-darwin.jam </p> nathan@… https://svn.boost.org/trac10/ticket/11238 https://svn.boost.org/trac10/ticket/11238 Report #11237: Cannot include iostreams/filter/test.hpp in two compilation units Fri, 24 Apr 2015 15:55:04 GMT Fri, 24 Apr 2015 15:55:04 GMT <p> The function "boost::iostreams::rand(int)" is multiply defined if you include test.hpp in two separate compilation units. This function should probably just be marked as inlined. </p> nathan@… https://svn.boost.org/trac10/ticket/11237 https://svn.boost.org/trac10/ticket/11237 Report #11235: Variance error when used with std::complex Fri, 24 Apr 2015 11:20:58 GMT Fri, 24 Apr 2015 11:20:58 GMT <p> The result of variance in complex numbers sequence must be real, but it is complex. </p> <p> It is solved changing the line (in "variance.hpp"): </p> <blockquote> <p> this-&gt;variance = </p> <blockquote> <p> numeric::fdiv(this-&gt;variance * (cnt - 1), cnt) </p> </blockquote> <p> + numeric::fdiv(tmp * tmp, cnt - 1); </p> </blockquote> <p> with this one: </p> <blockquote> <p> this-&gt;variance = </p> <blockquote> <p> numeric::fdiv(this-&gt;variance * (cnt - 1), cnt) </p> </blockquote> <p> + numeric::fdiv(std::pow(std::abs(tmp),2), cnt - 1); </p> </blockquote> <p> P.D: sorry, I don't know how to fix it in "lazy_variance" </p> Martín Sanz Sabater <martin.sanz@…> https://svn.boost.org/trac10/ticket/11235 https://svn.boost.org/trac10/ticket/11235 Report #11227: Support for unidirectional shutdown in ssl::stream Thu, 23 Apr 2015 14:37:54 GMT Tue, 16 Feb 2016 14:57:39 GMT <p> In version 1.57 there is no possibility of sending "close notify" shutdown alert to the peer without waiting for peer's response. </p> <p> The motivation of such feature is that some applications won't send their "close notify" response. In particular, Internet Explorer 11 apparently does not send it's "close notify" response to the server which called boost::asio::ssl::stream::async_shutdown when server's SSL certificate is considered untrusted. As a consequence callback for async_shutdown is never called, and the web server can not shutdown connection gracefully. </p> <p> Citing OpenSSL documentation: "<em>According to the TLS standard, it is acceptable for an application to only send its shutdown alert and then close the underlying connection without waiting for the peer's response</em>"... </p> <p> Taking this into account it would be really helpful for me to have an option in the async_shutdown method which would specify type of SSL shutdown (unidirectional or bidirectional). </p> Oleg Andriyanov (o.andriyanov@… https://svn.boost.org/trac10/ticket/11227 https://svn.boost.org/trac10/ticket/11227 Report #11225: failed to compile with msvc8, variadics used wrong Wed, 22 Apr 2015 12:32:56 GMT Wed, 22 Apr 2015 13:32:10 GMT <p> Hi, </p> <p> in fusion there are now switches to generate code either for compilers that support variadics macros or don't. For that the macro BOOST_PP_VARIADICS macro used, but there is a corner case: vs2005 has an incomplete implementation of variadic macros, that will fail with empty sequences, i.e. see BOOST_PP_IS_EMPTY that handles this is in a special way. </p> <p> Therefore variadics should not be used for generation here. </p> <table class="wiki"> <tr>All code in boost/fusion that uses only BOOST_PP_VARIADICS needs to be extended with &amp;&amp; (!defined(_MSC_VER) <td> defined(_MSC_VER) &amp;&amp; _MSC_VER &gt; 1400) to avoid compiler failures. </td></tr></table> <p> Original error message comes from boost/phoenix, where compiler complains that there are not enough actual arguments for BOOST_PP_IS_EMPTY and other macros. </p> <p> Greetz, ILo. </p> ingo.loehken@… https://svn.boost.org/trac10/ticket/11225 https://svn.boost.org/trac10/ticket/11225 Report #11224: Pre-processing / Pre-generating MPL-containers stopped working Wed, 22 Apr 2015 09:44:30 GMT Wed, 22 Apr 2015 12:11:13 GMT <h2 class="section" id="Background">Background</h2> <p> Boost.MPL allows to pre-process / pre-generate headers for MPL-containers (<code>vector</code>, <code>list</code>, <code>set</code>, <code>map</code>). In particular, headers for containers in <em>variadic</em> and <em>numbered</em> form can be pre-generated. For that, Boost.MPL comes with some python-scripts, located in subdirectory "libs/mpl/preprocessed/" of the Boost-source directory. (As a side-note: Documentation for these python-scripts is missing.) </p> <p> By default, Boost comes with pre-generated headers for MPL-containers that are able to hold up to 50 elements. Using the mentioned python-files it is possible to generate MPL-containers that can hold even more elements. </p> <h2 class="section" id="Problem">Problem</h2> <p> Since release of Boost 1.56.0 the pre-generation of headers for MPL-containers does not work anymore. </p> <h2 class="section" id="Explanation">Explanation</h2> <p> One of the python-scripts used for pre-generation ("<code>pp.py</code>") requires certain information to be found in the header-comments of input-headers. In particular, it required the field <code>$Id$</code> in the header-comment to contain the filename (followed by some additional non-whitespace characters), which it no longer does in release 1.56.0 and newer Boost releases. </p> <p> <code>$Id$</code> is a Subversion substitution-keyword. (See: <code>[http]://svnbook.red-bean.com/en/1.7/svn-book.html#svn.advanced.props.special.keywords</code>) </p> <p> I assume, Boost switched from Subversion to Git before releasing Boost 1.56.0. That would explain why the keyword-substition did no longer work. </p> <h2 class="section" id="Solution">Solution</h2> <p> To make the python-scripts work again, the best solution would be to also make the keyword-substitution work together with Git. However, as this is neither simple nor recommended (see: <code>[https]://git.wiki.kernel.org/index.php/Git_FAQ#Does_Git_have_keyword_expansion.3F</code>) one should probably add the missing information into the header-comments directly before pre-generation. </p> <p> The attached python-script "<code>fix_boost_mpl_preprocess.py</code>" is able to do that. The attached python-script "<code>boost_mpl_preprocess.py</code>" can then be used as a comfortable helper-script for pre-generating. </p> <h2 class="section" id="AdditionalInformation">Additional Information</h2> <p> Explanation for both scripts on Stackoverflow:<br /> <code>[http]://stackoverflow.com/a/29627158/3115457</code> </p> <p> Discussion regarding this problem on the boost-users mailing-list:<br /> <code>[http]://thread.gmane.org/gmane.comp.lib.boost.user/83794</code> </p> Deniz Bahadir <deniz.bahadir@…> https://svn.boost.org/trac10/ticket/11224 https://svn.boost.org/trac10/ticket/11224 Report #11213: Can't debug program using Boost on MacOSX 10.10 using GCC 4.9 and GDB 7 Tue, 21 Apr 2015 08:50:33 GMT Tue, 21 Apr 2015 08:50:33 GMT <p> Hi, </p> <p> My problem is when debugging from Eclipse a program that uses Boost (even pure header) then the GDB debugger is unable to locate frame base for the function being trace into. </p> <p> This happens only when using Boost header. </p> <p> Please note that except this, the program works like a charm in debug and release mode. The problem is only for debugging and inspecting source code referring to Boost. </p> <p> Please not also that the problem only affects OSX (Yosemite), mean that no issue for Linux. </p> <p> The issue is that I can't see the value of the local variables. Below is the message I have in the "(x)= Variables" window of Eclipse : </p> <p> Failed to execute MI command: -data-evaluate-expression result Error message from debugger back end: Could not find the frame base for "main()". </p> <p> The code is as simple as : </p> <p> #include &lt;boost/regex.hpp&gt; #include &lt;iostream&gt; int main() { </p> <blockquote> <p> int result = 1; boost::regex reExpression("[a-z]+"); </p> </blockquote> <blockquote> <p> std::cout &lt;&lt; "!!!Hello World !!!" &lt;&lt; std::endl; result ++; </p> </blockquote> <blockquote> <p> cout &lt;&lt; " Result = " &lt;&lt; result &lt;&lt; "\n"; return result; </p> </blockquote> <p> } </p> <p> The program is compiled using the command : </p> <p> g++ -v -o -g bin/Essai-MACOS-Debug src/Essai.cpp -I/opt/local/include /opt/local/lib/libboost_regex-mt.a </p> <p> If you remove the reference to Boost.Regex then everything is ok. I can inspect the value of the local variable result. </p> <p> More interesting: I built a library with a single function relying on Boost, and call that function from main(). It happens that can inspect the code in main() and have the value of main's local variable but when I came inside the library's function, the one now referring to boost then again I can't see the local variables of that function. </p> <p> So it seems that as soon as a source file is referring to Boost, GDB get confused. </p> <p> I have installed GCC 4.9, GDB 7.7 and Boost 1.57 using <a class="missing wiki">MacPort</a> on OSX Yosemit. </p> <p> I've compile Boost from source with <a class="missing wiki">MacPort</a> in order to use GCC instead of GCC using the command : </p> <p> sudo port install -ns boost config.compiler=macport-gcc-4.9 </p> <p> I also tried with a version of Boost I compiled myself and I did have the same issue. </p> <p> Does anyone knows about this problem ? </p> <p> I've compiled and installed the last GDB version from sources (7.9) and have the same issue described here than with the 7.7.1 provided by <a class="missing wiki">MacPorts</a>. </p> anonymous https://svn.boost.org/trac10/ticket/11213 https://svn.boost.org/trac10/ticket/11213 Report #11212: "type qualifiers ignored on function return type" in ptr_container's map_iterator's operator-> Mon, 20 Apr 2015 21:34:07 GMT Mon, 20 Apr 2015 21:34:07 GMT <p> Sorry to bore you with such trivia, when I know this is easy for anyone who hits it to fix themselves, but it'd be nice if we didn't have to reapply this patch when we upgrade Boost. While I'm raising this on the obsolete version I actually used in the test case below, the fingered code is still present in svn: </p> <p> martind@swiftboat:~/playpen$ cat map_iterator.cpp #include &lt;boost/ptr_container/ptr_map.hpp&gt; martind@swiftboat:~/playpen$ gcc -c -Wignored-qualifiers -Wsystem-headers map_iterator.cpp In file included from /usr/include/boost/ptr_container/ptr_map_adapter.hpp:19:0, </p> <blockquote> <p> from /usr/include/boost/ptr_container/ptr_map.hpp:20, from map_iterator.cpp:1: </p> </blockquote> <p> /usr/include/boost/ptr_container/detail/map_iterator.hpp:52:48: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] martind@swiftboat:~/playpen$ </p> <p> I'll attach a patch against trunk. </p> martin.dorey@… https://svn.boost.org/trac10/ticket/11212 https://svn.boost.org/trac10/ticket/11212 Report #11210: BOOST_CURRENT_FUNCTION internal compiler error Mon, 20 Apr 2015 18:55:59 GMT Mon, 20 Apr 2015 18:55:59 GMT <p> Hi, </p> <p> if using a template function with an parameter that needs to be specified explicitly and is either a pseudo scoped enum or scoped enum with a specific storage type, compilation on vs2013 will fail with and internal compiler error. This can easily be fixed using FUNCTION (XXX) for that compiler-version. </p> <p> (XXX) 2 leading and trailing underscores missing at FUNCTION </p> <p> Greetz, ILo. </p> <p> How to reproduce: </p> <p> struct Val { </p> <blockquote> <p> enum Enum : unsigned char { </p> <blockquote> <p> x, </p> </blockquote> <p> }; </p> </blockquote> <p> }; </p> <p> typedef ScopeEnum::Vals </p> <p> template &lt;Vals eVal&gt; void Foo() { </p> <blockquote> <p> BOOST_ASSERT(eVal == Val::x); </p> </blockquote> <p> } </p> <p> How to solve: (add to line 31 in front of all ifdef, current_function.hpp) </p> <p> #if defined(_MSC_VER) &amp;&amp; (_MSC_VER &gt; 1700) <em> &gt; vs2012 (only tested for vs2013) </em></p> <p> # define BOOST_CURRENT_FUNCTION FUNCTION (XXX) </p> ingo.loehken@… https://svn.boost.org/trac10/ticket/11210 https://svn.boost.org/trac10/ticket/11210 Report #11208: Swapping allocators does not use ADL Mon, 20 Apr 2015 15:04:04 GMT Thu, 28 May 2015 10:25:02 GMT <p> boost::circular buffer has issues when using it with Boost.Interprocess, due to attempting to use std::swap on the allocators. Specifically: </p> <div class="wiki-code"><div class="code"><pre><span class="kt">void</span> <span class="nf">swap_allocator</span><span class="p">(</span><span class="n">circular_buffer</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span> <span class="n">Alloc</span><span class="o">&gt;&amp;</span> <span class="n">cb</span><span class="p">,</span> <span class="k">const</span> <span class="n">false_type</span><span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">swap</span><span class="p">(</span><span class="n">m_alloc</span><span class="p">,</span> <span class="n">cb</span><span class="p">.</span><span class="n">m_alloc</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> does not allow ADL to find the correct swap implementation. This can be worked around by specializing std::swap, but this is not ideal, and leads to some compile issues on OSX with Clang. </p> <p> The correct implementation would look like </p> <div class="wiki-code"><div class="code"><pre><span class="kt">void</span> <span class="nf">swap_allocator</span><span class="p">(</span><span class="n">circular_buffer</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span> <span class="n">Alloc</span><span class="o">&gt;&amp;</span> <span class="n">cb</span><span class="p">,</span> <span class="k">const</span> <span class="n">false_type</span><span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="k">using</span> <span class="n">std</span><span class="o">::</span><span class="n">swap</span><span class="p">;</span> <span class="n">swap</span><span class="p">(</span><span class="n">m_alloc</span><span class="p">,</span> <span class="n">cb</span><span class="p">.</span><span class="n">m_alloc</span><span class="p">);</span> <span class="p">}</span> </pre></div></div> Alex Merry <alexander.merry@…> https://svn.boost.org/trac10/ticket/11208 https://svn.boost.org/trac10/ticket/11208 Report #11207: boost::numeric::ublas::shallow_array_adaptor broken when compiling with -DNDEBUG Mon, 20 Apr 2015 14:01:19 GMT Thu, 14 May 2015 06:49:49 GMT <p> The attached code does not compile with clang++ 3.6, 3.7svn, Xcode's clang++, or g++ 4.9. I get these errors: </p> <pre class="wiki">&gt; /usr/bin/clang++ -DNDEBUG -o broken_shallow_array_adaptor broken_shallow_array_adaptor.cpp -I /opt/local/include In file included from broken_shallow_array_adaptor.cpp:2: In file included from /opt/local/include/boost/numeric/ublas/matrix.hpp:18: In file included from /opt/local/include/boost/numeric/ublas/vector.hpp:21: /opt/local/include/boost/numeric/ublas/storage.hpp:781:9: error: expected member name or ';' after declaration specifiers template &lt;size_t N&gt; ^ /opt/local/include/boost/numeric/ublas/storage.hpp:901:9: error: unknown type name 'const_iterator' const_iterator begin () const { ^ /opt/local/include/boost/numeric/ublas/storage.hpp:905:9: error: unknown type name 'const_iterator' const_iterator cbegin () const { ^ /opt/local/include/boost/numeric/ublas/storage.hpp:909:9: error: unknown type name 'const_iterator' const_iterator end () const { ^ /opt/local/include/boost/numeric/ublas/storage.hpp:913:9: error: unknown type name 'const_iterator' const_iterator cend () const { ^ /opt/local/include/boost/numeric/ublas/storage.hpp:929:39: error: use of undeclared identifier 'const_iterator' typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator; ^ In file included from broken_shallow_array_adaptor.cpp:2: In file included from /opt/local/include/boost/numeric/ublas/matrix.hpp:18: /opt/local/include/boost/numeric/ublas/vector.hpp:477:27: error: no type named 'const_iterator' in 'boost::numeric::ublas::shallow_array_adaptor&lt;const double&gt;' typedef typename A::const_iterator const_subiterator_type; ~~~~~~~~~~~~^~~~~~~~~~~~~~ broken_shallow_array_adaptor.cpp:11:58: note: in instantiation of template class 'boost::numeric::ublas::vector&lt;double, boost::numeric::ublas::shallow_array_adaptor&lt;const double&gt; &gt;' requested here vector&lt;double, shallow_array_adaptor&lt;const double&gt; &gt; tmp2(10, tmp1); ^ 7 errors generated. </pre> Mark.Moll@… https://svn.boost.org/trac10/ticket/11207 https://svn.boost.org/trac10/ticket/11207 Report #11206: address_v4::to_ulong() returns 8 bytes on real 64bit systems Mon, 20 Apr 2015 13:40:45 GMT Mon, 20 Apr 2015 13:40:45 GMT <p> which generates narrowing warning when assigned to 32bit variable </p> <p> please consider adding std::uint32_t address_v4::to_uint32() or something like that </p> pal666@… https://svn.boost.org/trac10/ticket/11206 https://svn.boost.org/trac10/ticket/11206 Report #11204: undefined behavior sanitizer complains about runtime_error thrown in serialization/singleton.hpp before main() Sat, 18 Apr 2015 20:18:04 GMT Sat, 20 Jan 2018 08:49:48 GMT <p> How to reproduce: </p> <pre class="wiki">#include &lt;boost/archive/text_iarchive.hpp&gt; #include &lt;boost/archive/text_oarchive.hpp&gt; #include &lt;boost/serialization/vector.hpp&gt; #include &lt;vector&gt; #include &lt;fstream&gt; using namespace std; struct Data { vector&lt;int&gt; v; }; namespace boost { namespace serialization { template&lt;class Archive&gt; void serialize(Archive &amp; a, Data &amp;d, const unsigned int version) { a &amp; d.v; } } } int main(int argc, char **argv) { if (argc &gt; 10) { ifstream f("/dev/null"); boost::archive::text_iarchive a(f); Data d; a &gt;&gt; d; } else { ofstream f("/dev/null"); boost::archive::text_oarchive a(f); Data d; a &lt;&lt; d; } return 0; } </pre><p> Compile via: </p> <pre class="wiki">$ g++ -g -std=c++11 -I/home/juser/src/boost/modular-boost \ -L/home/juser/src/boost/modular-boost/stage/lib \ -Wl,-R/home/juser/src/boost/modular-boost/stage/lib \ -fsanitize=undefined test_serialize.cc \ -o test_serialize -lboost_serialization </pre><p> (GCC's undefined behavior sanitizer is enabled with <code>-fsanitize=undefined</code>) </p> <p> Run: </p> <pre class="wiki">$ ./test_serialize </pre><p> Expected output: </p> <p> (nothing) </p> <p> Actual output: </p> <pre class="wiki">/home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct extended_type_info_typeid' /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct iserializer' /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct oserializer' /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct extended_type_info_typeid' /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct oserializer' /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132:21: runtime error: reference binding to null pointer of type 'const struct iserializer' </pre><p> First backtrace when breaking in singleton.hpp:132: </p> <pre class="wiki">(gdb) bt #0 boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;Data&gt; &gt;::get_instance () at /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:132 #1 0x0000000000407ebd in boost::serialization::singleton&lt;boost::serialization::extended_type_info_typeid&lt;Data&gt; &gt;::get_const_instance () at /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:141 #2 0x0000000000407924 in boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, Data&gt;::iserializer ( this=0x640a60 &lt;boost::serialization::singleton&lt;boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, Data&gt; &gt;::get_instance()::t&gt;) at /home/juser/src/boost/modular-boost/boost/archive/detail/iserializer.hpp:128 #3 0x0000000000407373 in boost::serialization::detail::singleton_wrapper&lt;boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, Data&gt; &gt;::singleton_wrapper ( this=0x640a60 &lt;boost::serialization::singleton&lt;boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, Data&gt; &gt;::get_instance()::t&gt;) at /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:106 #4 0x000000000040740b in boost::serialization::singleton&lt;boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, Data&gt; &gt;::get_instance () at /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:128 #5 0x0000000000404a13 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /home/juser/src/boost/modular-boost/boost/serialization/singleton.hpp:149 #6 0x0000000000404c6e in _GLOBAL__sub_I_main () at test_serialize.cc:43 #7 0x000000000041abbd in __libc_csu_init () #8 0x00007ffff62e5f6f in __libc_start_main (main=0x4047c6 &lt;main(int, char**)&gt;, argc=1, argv=0x7fffffffdfb8, init=0x41ab70 &lt;__libc_csu_init&gt;, fini=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stack_end=0x7fffffffdfa8) at libc-start.c:245 #9 0x00000000004046f9 in _start () </pre> Georg Sauthoff <mail@…> https://svn.boost.org/trac10/ticket/11204 https://svn.boost.org/trac10/ticket/11204 Report #11202: boost.sort header conflicts with boost.range header Sat, 18 Apr 2015 13:26:28 GMT Tue, 23 Feb 2016 14:47:50 GMT <p> This two-line program fails to compile. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/range/algorithm.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/sort/spreadsort/spreadsort.hpp&gt;</span><span class="cp"></span> </pre></div></div><p> The headers conflict on "boost::sort". The first header declares a <strong>function</strong> boost::sort. The second header declares a <strong>namespace</strong> boost::sort. </p> john2.718281828459045235360287@… https://svn.boost.org/trac10/ticket/11202 https://svn.boost.org/trac10/ticket/11202 Report #11200: Error when compiling log_setup by compiler Intel C++ 14.0 Sat, 18 Apr 2015 08:49:56 GMT Tue, 21 Jul 2015 15:39:57 GMT <p> In case of compilation of log_setup library there is the following error: </p> <pre class="wiki">intel-linux.compile.c++ /home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt/default_formatter_factory.o "/opt/intel/composer_xe_2013_sp1.0.080/bin/intel64/icpc" -c -xc++ -w1 -inline-level=2 -O3 -ip -pthread -fPIC -m64 -fPIC -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-cfree -fno-builtin-memalign -fno-builtin-posix_memalign -fno-builtin-valloc -fno-builtin-pvalloc -no-intel-extensions -fvisibility=hidden -fvisibility-inlines-hidden -ipo -std=gnu++98 -wd177,780,2196,1782,193,304,981,1418,411,734,279 -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_DYN_LINK=1 -DBOOST_LOG_SETUP_BUILDING_THE_LIB=1 -DBOOST_LOG_SETUP_DLL -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_USE_SSSE3 -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG -D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600 -I"." -c -o "/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt/default_formatter_factory.o" "libs/log/src/default_formatter_factory.cpp" ./boost/proto/detail/preprocessed/make_expr_.hpp(73): error: class "boost::proto::transform&lt;PrimitiveTransform, X&gt;::result&lt;boost::phoenix::phoenix_generator (boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, boost::log::v2_mt_posix::expressions::stream_type&gt;, 2L&gt;)&gt; [with PrimitiveTransform=boost::proto::switch_&lt;boost::phoenix::phoenix_generator, boost::proto::tag_of&lt;boost::proto::_&gt; ()&gt;, X=void]" has no member "type" typedef typename proto_generator::template result&lt;proto_generator(expr_type)&gt;::type result_type; ^ detected during: instantiation of class "boost::proto::detail::make_expr_&lt;Tag, Domain, A0, A1, void, void, void, void, void, void, void, void, void&gt; [with Tag=boost::proto::tagns_::tag::assign, Domain=boost::phoenix::phoenix_domain, A0=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, A1=boost::phoenix::actor&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;&gt;]" at line 184 of "./boost/proto/make_expr.hpp" instantiation of class "boost::proto::result_of::make_expr&lt;Tag, Domain, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Domain::proto_is_domain_&gt; [with Tag=boost::proto::tagns_::tag::assign, Domain=boost::phoenix::phoenix_domain, A0=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, A1=boost::phoenix::actor&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;&gt;, A2=void, A3=void, A4=void, A5=void, A6=void, A7=void, A8=void, A9=void]" at line 241 of "./boost/proto/detail/preprocessed/basic_expr.hpp" instantiation of class "boost::proto::exprns_::basic_expr&lt;Tag, boost::proto::argsns_::list2&lt;Arg0, Arg1&gt;, 2L&gt; [with Tag=boost::proto::tagns_::tag::assign, Arg0=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, Arg1=boost::log::v2_mt_posix::expressions::stream_type]" at line 830 of "./boost/proto/matches.hpp" instantiation of class "boost::proto::switch_&lt;Cases, boost::proto::tag_of&lt;boost::proto::_&gt; ()&gt;::impl&lt;Expr, State, Data&gt; [with Cases=boost::phoenix::phoenix_generator, Expr=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, boost::log::v2_mt_posix::expressions::stream_type&gt;, 2L&gt;, State=boost::proto::envns_::empty_state={int}, Data=boost::proto::envns_::empty_env]" at line 238 of "./boost/proto/transform/impl.hpp" instantiation of class "boost::proto::detail::apply_transform&lt;PrimitiveTransform (Expr)&gt; [with PrimitiveTransform=boost::phoenix::phoenix_generator, Expr=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::assign, boost::proto::argsns_::list2&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::phoenix::argument&lt;2&gt;&gt;, 0L&gt;, boost::log::v2_mt_posix::expressions::stream_type&gt;, 2L&gt;]" at line 255 of "./boost/proto/transform/impl.hpp" [ 7 instantiation contexts not shown ] instantiation of class "boost::proto::detail::make_expr_&lt;Tag, Domain, A0, A1, void, void, void, void, void, void, void, void, void&gt; [with Tag=boost::proto::tagns_::tag::shift_left, Domain=boost::phoenix::phoenix_domain, A0=const boost::log::v2_mt_posix::expressions::stream_type &amp;, A1=boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt; &amp;]" at line 184 of "./boost/proto/make_expr.hpp" instantiation of class "boost::proto::result_of::make_expr&lt;Tag, Domain, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Domain::proto_is_domain_&gt; [with Tag=boost::proto::tagns_::tag::shift_left, Domain=boost::phoenix::phoenix_domain, A0=const boost::log::v2_mt_posix::expressions::stream_type &amp;, A1=boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt; &amp;, A2=void, A3=void, A4=void, A5=void, A6=void, A7=void, A8=void, A9=void]" at line 40 of "./boost/core/enable_if.hpp" instantiation of class "boost::lazy_enable_if_c&lt;B, T&gt; [with B=true, T=boost::proto::result_of::make_expr&lt;boost::proto::tagns_::tag::shift_left, boost::phoenix::phoenix_domain, const boost::log::v2_mt_posix::expressions::stream_type &amp;, boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt; &amp;, void, void, void, void, void, void, void, void, void&gt;]" at line 70 of "./boost/proto/operators.hpp" instantiation of class "boost::proto::detail::enable_binary&lt;Domain, Grammar, Trait, Tag, Left, Right&gt; [with Domain=boost::phoenix::phoenix_domain, Grammar=boost::phoenix::meta_grammar, Trait=boost::mpl::or_&lt;boost::proto::is_extension&lt;const boost::log::v2_mt_posix::expressions::stream_type&gt;, boost::proto::is_extension&lt;boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt;&gt;, boost::mpl::bool_&lt;false&gt;, boost::mpl::bool_&lt;false&gt;, boost::mpl::bool_&lt;false&gt;&gt;, Tag=boost::proto::tagns_::tag::shift_left, Left=const boost::log::v2_mt_posix::expressions::stream_type &amp;, Right=boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt; &amp;]" at line 89 of "./boost/proto/operators.hpp" instantiation of class "boost::proto::detail::enable_binary&lt;boost::proto::domainns_::deduce_domain, boost::proto::detail::not_a_grammar, Trait, Tag, Left &amp;, Right &amp;&gt; [with Trait=boost::mpl::or_&lt;boost::proto::is_extension&lt;const boost::log::v2_mt_posix::expressions::stream_type&gt;, boost::proto::is_extension&lt;boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt;&gt;, boost::mpl::bool_&lt;false&gt;, boost::mpl::bool_&lt;false&gt;, boost::mpl::bool_&lt;false&gt;&gt;, Tag=boost::proto::tagns_::tag::shift_left, Left=const boost::log::v2_mt_posix::expressions::stream_type, Right=boost::log::v2_mt_posix::expressions::attribute_actor&lt;boost::mpl::vector30&lt;bool, char, wchar_t, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string, boost::log::v2_mt_posix::string_literal, std::wstring, boost::log::v2_mt_posix::wstring_literal, boost::posix_time::ptime, boost::local_time::local_date_time, boost::posix_time::time_duration, boost::gregorian::date_duration, boost::posix_time::time_period, boost::local_time::local_time_period, boost::gregorian::date_period, boost::log::v2_mt_posix::attributes::named_scope_list, boost::log::v2_mt_posix::aux::thread::id, boost::log::v2_mt_posix::aux::process::id&gt;, boost::log::v2_mt_posix::fallback_to_none, void, boost::phoenix::actor&gt;]" at line 82 of "libs/log/src/default_formatter_factory.cpp" compilation aborted for libs/log/src/default_formatter_factory.cpp (code 2) ...skipped &lt;p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt&gt;libboost_log_setup-il140-mt-1_58.so.1.58.0 for lack of &lt;p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt&gt;default_formatter_factory.o... ...skipped &lt;p/home/phprus/devel/build/deps/i/lib64&gt;libboost_log_setup-il140-mt-1_58.so.1.58.0 for lack of &lt;p/home/phprus/devel/build/deps/boost/boost/bin.v2/libs/log/build/intl-lnx-14.0/rls/bst.l-off/log-api-unx/pch-off/thrd-mlt&gt;libboost_log_setup-il140-mt-1_58.so.1.58.0... </pre> phprus@… https://svn.boost.org/trac10/ticket/11200 https://svn.boost.org/trac10/ticket/11200 Report #11195: named_mufex creation error Fri, 17 Apr 2015 10:13:51 GMT Fri, 17 Apr 2015 10:13:51 GMT <p> When creating a named_mutex object under windows, if the event registry does not contain a record with id 6005 an inteprocess_exception is thrown by get_bootup_time function. The attached sample works if event id 6005 exists but fails otherwise </p> trivelli.lorenzo@… https://svn.boost.org/trac10/ticket/11195 https://svn.boost.org/trac10/ticket/11195 Report #11194: named_mutex creation error Fri, 17 Apr 2015 10:11:50 GMT Fri, 17 Apr 2015 13:49:20 GMT <p> When creating a named_mutex object under windows, if the event registry does not contain a record with id 6005 an inteprocess_exception is thrown by get_bootup_time function. The attached sample works if event id 6005 exists but fails otherwise </p> trivelli.lorenzo@… https://svn.boost.org/trac10/ticket/11194 https://svn.boost.org/trac10/ticket/11194 Report #11188: can not use repeat(int)[] with std::ref and phoenix::ref Tue, 14 Apr 2015 08:37:31 GMT Tue, 14 Jun 2016 18:43:37 GMT <p> Debian libboost-dev 1.55<br /> When trying to compile a rule containing: </p> <pre class="wiki">qi::repeat(std::ref(_n))[some_action] </pre><p> the compiler complains: /usr/include/boost/spirit/home/qi/directive/repeat.hpp:88:40: error: use of deleted function ‘std::reference_wrapper&lt;_Tp&gt;::reference_wrapper(_Tp&amp;&amp;) [with _Tp = int]’<br /> T start() const { return <strong>type(0);</strong> } </p> <p> In this situation qi:repeat (repeat.hpp:88:40) tries to create an iterator from<br /> std::reference_wrapper&lt;&gt;(rhs_value) which is not possible as a reference is needed! </p> <p> As a temporary workaround I used the following help type: </p> <pre class="wiki">template&lt;typename T&gt; class ref_rhs: public std::reference_wrapper&lt;T&gt; { private: T _rhval; public: using std::reference_wrapper&lt;T&gt;::reference_wrapper; // inherit constructors ref_rhs(T&amp;&amp; rhs): std::reference_wrapper&lt;T&gt;(_rhval), _rhval(rhs) {} }; </pre><p> and the call: qi::repeat(ref_rhs&lt;T&gt;(_n))[] works as expected. </p> <p> May be qi:repeat should iterate internally with integers rather than with iterators as the documentation says that in the call qi::repeat(_n) _n must be convertible to int anyway. </p> vveesskkoo@… https://svn.boost.org/trac10/ticket/11188 https://svn.boost.org/trac10/ticket/11188 Report #11187: size function causing hard errors in unrelated code Mon, 13 Apr 2015 22:52:12 GMT Tue, 14 Apr 2015 08:01:20 GMT <p> Consider the following innocuous-seeming program: </p> <pre class="wiki">#include &lt;boost/range.hpp&gt; namespace boost { struct some_type {}; } template&lt;typename T = boost::some_type&gt; struct S {}; void size(S&lt;&gt;) {} int main() { S&lt;&gt; s; size(s); } </pre><p> For me, with clang -std=gnu++14, I get this: </p> <pre class="wiki">[100%] Building CXX object example/CMakeFiles/calendar.dir/calendar.cpp.o In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:24: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:24: /cygdrive/c/boost/org/modular-boost/boost/mpl/eval_if.hpp:60:26: error: no type named 'type' in 'boost::range_mutable_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' typedef typename f_::type type; ~~~~~~~~~~~~~^~~~ /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:65:31: note: in instantiation of template class 'boost::mpl::eval_if_c&lt;false, boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;, boost::range_mutable_iterator&lt;S&lt;boost::some_type&gt;, void&gt; &gt;' requested here typedef typename mpl::eval_if_c&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/difference_type.hpp:28:40: note: in instantiation of template class 'boost::range_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' requested here BOOST_DEDUCED_TYPENAME range_iterator&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:57:40: note: in instantiation of template class 'boost::range_difference&lt;S&lt;boost::some_type&gt; &gt;' requested here BOOST_DEDUCED_TYPENAME range_difference&lt;C&gt;::type ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:87:11: note: in instantiation of template class 'boost::detail::range_size&lt;S&lt;boost::some_type&gt;, void&gt;' requested here : detail::range_size&lt;T&gt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:24: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:24: /cygdrive/c/boost/org/modular-boost/boost/mpl/eval_if.hpp:60:26: error: no type named 'type' in 'boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;' typedef typename f_::type type; ~~~~~~~~~~~~~^~~~ /cygdrive/c/boost/org/modular-boost/boost/range/iterator.hpp:65:31: note: in instantiation of template class 'boost::mpl::eval_if_c&lt;true, boost::range_const_iterator&lt;S&lt;boost::some_type&gt;, void&gt;, boost::range_mutable_iterator&lt;const S&lt;boost::some_type&gt;, void&gt; &gt;' requested here typedef typename mpl::eval_if_c&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:270:40: note: in instantiation of template class 'boost::range_iterator&lt;const S&lt;boost::some_type&gt;, void&gt;' requested here typedef BOOST_DEDUCED_TYPENAME range_iterator&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_concepts.hpp:10: /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:119:60: error: no type named 'iterator_category' in 'std::iterator_traits&lt;int&gt;' typename boost::detail::iterator_traits&lt;Iterator&gt;::iterator_category ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:126:44: note: in instantiation of template class 'boost::iterators::iterator_traversal&lt;int&gt;' requested here typedef BOOST_DEDUCED_TYPENAME iterator_traversal&lt;Iterator&gt;::type traversal_category; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:146:15: note: in instantiation of template class 'boost::range_detail::IncrementableIteratorConcept&lt;int&gt;' requested here : IncrementableIteratorConcept&lt;Iterator&gt; ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::range_detail::SinglePassIteratorConcept&lt;int&gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::constraint&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::range_detail::SinglePassIteratorConcept&lt;int&gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT(( ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:152:71: error: no type named 'traversal_category' in 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category, ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:67: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:36: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:38: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::range_detail::SinglePassIteratorConcept&lt;int&gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::constraint&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:276:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::range_detail::SinglePassIteratorConcept&lt;int&gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT(( ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:32:63: note: in instantiation of template class 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;' requested here inline yes has_constraints_(Model*, wrap_constraints&lt;Model,&amp;Model::constraints&gt;* = 0); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/has_constraints.hpp:44:25: note: while substituting deduced template arguments into function template 'has_constraints_' [with Model = boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;] , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) ); ^ /cygdrive/c/boost/org/modular-boost/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/if.hpp:63:68: note: in instantiation of template class 'boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;' requested here BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value) ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/value_wknd.hpp:57:40: note: expanded from macro 'BOOST_MPL_AUX_VALUE_WKND' # define BOOST_MPL_AUX_VALUE_WKND(C) C ^ /cygdrive/c/boost/org/modular-boost/boost/mpl/aux_/static_cast.hpp:24:62: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST' # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast&lt;T&gt;(expr) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:51:10: note: in instantiation of template class 'boost::mpl::if_&lt;boost::concepts::not_satisfied&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::constraint&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;, boost::concepts::requirement&lt;boost::concepts::failed ************boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::************&gt; &gt;' requested here : mpl::if_&lt; ^ /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:90:9: note: in instantiation of template class 'boost::concepts::requirement_&lt;void (*)(boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;)&gt;' requested here BOOST_RANGE_CONCEPT_ASSERT((boost::SinglePassRangeConcept&lt;T&gt;)); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:102:45: note: expanded from macro 'BOOST_RANGE_CONCEPT_ASSERT' #define BOOST_RANGE_CONCEPT_ASSERT( x ) BOOST_CONCEPT_ASSERT( x ) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:25: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:54:21: note: in instantiation of template class 'boost::range_size&lt;const S&lt;boost::some_type&gt; &gt;' requested here inline typename range_size&lt;const SinglePassRange&gt;::type ^ /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:44:5: note: while substituting deduced template arguments into function template 'size' [with SinglePassRange = S&lt;boost::some_type&gt;] size(s); ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/concept_check.hpp:210:9: error: no viable conversion from 'int' to 'boost::iterators::incrementable_traversal_tag' Y y = x; ^ ~ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt;::~Convertible' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept_check.hpp:209:5: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::Convertible&lt;int, boost::iterators::incrementable_traversal_tag&gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(Convertible) { ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:33:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'int' to 'const boost::iterators::incrementable_traversal_tag &amp;' for 1st argument struct incrementable_traversal_tag ^ /cygdrive/c/boost/org/modular-boost/boost/iterator/iterator_categories.hpp:33:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'int' to 'boost::iterators::incrementable_traversal_tag &amp;&amp;' for 1st argument struct incrementable_traversal_tag ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:20: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size.hpp:21: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/size_type.hpp:20: /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:167:82: error: no type named 'reference' in 'std::iterator_traits&lt;int&gt;' BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits&lt;Iterator&gt;::reference r1(*i); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::range_detail::SinglePassIteratorConcept&lt;int&gt;::~SinglePassIteratorConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:156:13: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;int&gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassIteratorConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:47:18: error: no member named 'begin' in 'S&lt;boost::some_type&gt;' return c.begin(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:102:12: note: in instantiation of function template specialization 'boost::range_detail::range_begin&lt;S&lt;boost::some_type&gt; &gt;' requested here return range_begin( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:287:34: note: in instantiation of function template specialization 'boost::range_adl_barrier::begin&lt;S&lt;boost::some_type&gt; &gt;' requested here iterator i1 = boost::begin(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:48:22: error: no member named 'end' in 'S&lt;boost::some_type&gt;' return c.end(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:96:12: note: in instantiation of function template specialization 'boost::range_detail::range_end&lt;S&lt;boost::some_type&gt; &gt;' requested here return range_end( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:288:34: note: in instantiation of function template specialization 'boost::range_adl_barrier::end&lt;S&lt;boost::some_type&gt; &gt;' requested here iterator i2 = boost::end(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:18: /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:47:18: error: no member named 'begin' in 'S&lt;boost::some_type&gt;' return c.begin(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/begin.hpp:111:12: note: in instantiation of function template specialization 'boost::range_detail::range_begin&lt;const S&lt;boost::some_type&gt; &gt;' requested here return range_begin( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:299:41: note: in instantiation of function template specialization 'boost::range_adl_barrier::begin&lt;S&lt;boost::some_type&gt; &gt;' requested here const_iterator ci1 = boost::begin(const_range); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:293:13: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::const_constraints' requested here const_constraints(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ In file included from /cygdrive/c/Users/eric/Code/range-v3/example/calendar.cpp:34: In file included from /cygdrive/c/boost/org/modular-boost/boost/range.hpp:18: In file included from /cygdrive/c/boost/org/modular-boost/boost/range/functions.hpp:19: /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:48:22: error: no member named 'end' in 'S&lt;boost::some_type&gt;' return c.end(); ~ ^ /cygdrive/c/boost/org/modular-boost/boost/range/end.hpp:105:12: note: in instantiation of function template specialization 'boost::range_detail::range_end&lt;const S&lt;boost::some_type&gt; &gt;' requested here return range_end( r ); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:300:41: note: in instantiation of function template specialization 'boost::range_adl_barrier::end&lt;S&lt;boost::some_type&gt; &gt;' requested here const_iterator ci2 = boost::end(const_range); ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:293:13: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::const_constraints' requested here const_constraints(*m_range); ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt;::~SinglePassRangeConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /cygdrive/c/boost/org/modular-boost/boost/range/concepts.hpp:282:9: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::SinglePassRangeConcept&lt;S&lt;boost::some_type&gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassRangeConcept) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /cygdrive/c/boost/org/modular-boost/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /cygdrive/c/boost/org/modular-boost/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ 10 errors generated. example/CMakeFiles/calendar.dir/build.make:54: recipe for target 'example/CMakeFiles/calendar.dir/calendar.cpp.o' failed make[3]: *** [example/CMakeFiles/calendar.dir/calendar.cpp.o] Error 1 CMakeFiles/Makefile2:5748: recipe for target 'example/CMakeFiles/calendar.dir/all' failed make[2]: *** [example/CMakeFiles/calendar.dir/all] Error 2 CMakeFiles/Makefile2:5760: recipe for target 'example/CMakeFiles/calendar.dir/rule' failed make[1]: *** [example/CMakeFiles/calendar.dir/rule] Error 2 Makefile:2083: recipe for target 'calendar' failed make: *** [calendar] Error 2 </pre> Eric Niebler https://svn.boost.org/trac10/ticket/11187 https://svn.boost.org/trac10/ticket/11187 Report #11186: the certificate for svn.boost.org has expired Mon, 13 Apr 2015 21:24:34 GMT Fri, 14 Aug 2015 01:15:24 GMT <p> The certificate svn.boost.org uses (appears to be a wildcard for *.boost.org) expired on 03/21/2015. Please update it. </p> dkeeler@… https://svn.boost.org/trac10/ticket/11186 https://svn.boost.org/trac10/ticket/11186 Report #11184: boost::asio::async_read_until() not usable on (at least) VC++ 2013 Sun, 12 Apr 2015 00:05:35 GMT Tue, 28 Apr 2015 14:59:57 GMT <p> parameter 2 of boost::asio::async_read_until is a boost::asio::basic_streambuf&lt;Allocator&gt;&amp; - examples even show that you can declare a boost::asio::streambuf lvalue and pass it in. </p> <p> However, doing so and attempting to compile results in the following error: </p> <p> \boost\boost\asio\detail\buffer_sequence_adapter.hpp(111): error C2664: 'boost::asio::const_buffer::const_buffer(const boost::asio::const_buffer &amp;)' : cannot convert argument 1 from 'const char' to 'const boost::asio::mutable_buffer &amp;' 1&gt; Reason: cannot convert from 'const char' to 'const boost::asio::mutable_buffer' 1&gt; No constructor could take the source type, or constructor overload resolution was ambiguous 1&gt; \boost\asio\detail\buffer_sequence_adapter.hpp(104) : while compiling class template member function 'boost::asio::detail::buffer_sequence_adapter&lt;boost::asio::const_buffer,ConstBufferSequence&gt;::buffer_sequence_adapter(const Buffers &amp;)' </p> anonymous https://svn.boost.org/trac10/ticket/11184 https://svn.boost.org/trac10/ticket/11184 Report #11183: boost::asio::async_read_until() not usable on (at least) VC++ 2013 Sun, 12 Apr 2015 00:03:24 GMT Sun, 12 Apr 2015 00:45:08 GMT <p> parameter 2 of boost::asio::async_read_until is a boost::asio::basic_streambuf&lt;Allocator&gt;&amp; - examples even show that you can declare a boost::asio::streambuf lvalue and pass it in. </p> <p> However, doing so and attempting to compile results in the following error: </p> <p> \boost\boost\asio\detail\buffer_sequence_adapter.hpp(111): error C2664: 'boost::asio::const_buffer::const_buffer(const boost::asio::const_buffer &amp;)' : cannot convert argument 1 from 'const char' to 'const boost::asio::mutable_buffer &amp;' 1&gt; Reason: cannot convert from 'const char' to 'const boost::asio::mutable_buffer' 1&gt; No constructor could take the source type, or constructor overload resolution was ambiguous 1&gt; \boost\asio\detail\buffer_sequence_adapter.hpp(104) : while compiling class template member function 'boost::asio::detail::buffer_sequence_adapter&lt;boost::asio::const_buffer,ConstBufferSequence&gt;::buffer_sequence_adapter(const Buffers &amp;)' </p> olipro@… https://svn.boost.org/trac10/ticket/11183 https://svn.boost.org/trac10/ticket/11183 Report #11182: Iostreams can't find symbol only on OSX Sat, 11 Apr 2015 16:34:04 GMT Mon, 12 Feb 2018 03:49:08 GMT <p> <strong>System</strong>: Darwin Kernel Version 14.3.0 </p> <p> <strong>Compiler</strong>: GCC 4.9 </p> <p> <strong>Boost version</strong>: Tried with 1.55, 1.57, 1.58-beta, boost-trunk of today </p> <p> <strong>Minimal example</strong>: </p> <pre class="wiki">#include &lt;boost/iostreams/device/file_descriptor.hpp&gt; #include &lt;boost/iostreams/stream.hpp&gt; int main () { boost::iostreams::stream&lt;boost::iostreams::file_descriptor&gt; fdstream; return 0; } </pre><p> <strong>Outcome</strong>: </p> <pre class="wiki">$ /usr/local/bin/g++-4.9 -I /opt/boost/include/ -L /opt/boost/lib/ -lboost_iostreams -o foo foo.cpp Undefined symbols for architecture x86_64: "boost::iostreams::file_descriptor::seek(long, std::_Ios_Seekdir)", referenced from: std::fpos&lt;__mbstate_t&gt; boost::iostreams::detail::seek_device_impl&lt;boost::iostreams::any_tag&gt;::seek&lt;boost::iostreams::file_descriptor&gt;(boost::iostreams::file_descriptor&amp;, long, std::_Ios_Seekdir, std::_Ios_Openmode) in ccr82hhn.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status </pre> a.santini@… https://svn.boost.org/trac10/ticket/11182 https://svn.boost.org/trac10/ticket/11182 Report #11181: Header conflict "using-declaration causes a multiple declaration of 'boost::iterators::use_default'" Fri, 10 Apr 2015 11:00:17 GMT Thu, 03 Nov 2016 21:56:28 GMT <p> I got "using-declaration causes a multiple declaration of 'boost::iterators::use_default'" error in my msvc. To reproduce bug you must create test.cpp with following text: </p> <pre class="wiki">//test.cpp #include &lt;boost/type_erasure/iterator.hpp&gt; #include &lt;boost/assign.hpp&gt; </pre><p> PS BUG appears only in boost 1.57.0, in older versions (for example 1.55.0) code compiles without errors. </p> fsmoke@… https://svn.boost.org/trac10/ticket/11181 https://svn.boost.org/trac10/ticket/11181 Report #11180: has_set_intersection Fri, 10 Apr 2015 10:36:15 GMT Fri, 12 May 2017 08:05:01 GMT <p> We sometimes have the requirement that we are only interested if two ranges have overlap. While in general for ranges this is somewhat difficult, for sorted ranges it seems easy: </p> <p> template&lt;class In1, class In2, class <a class="missing wiki">BinaryPredicate</a>&gt; bool has_set_intersection(In1 itFirst1, In1 itLast1, In2 itFirst2, In2 itLast2, <a class="missing wiki">BinaryPredicate</a> comp) { </p> <blockquote> <p> bool bOverlap = false; </p> </blockquote> <blockquote> <p> while (itFirst1 != itLast1 &amp;&amp; itFirst2 != itLast2) { </p> <blockquote> <p> if (comp(*itFirst1, *itFirst2)) { </p> <blockquote> <p> ++itFirst1; </p> </blockquote> <p> } else if (comp(*itFirst2, *itFirst1)) { </p> <blockquote> <p> ++itFirst2; </p> </blockquote> <p> } else { </p> <blockquote> <p> bOverlap = true; break; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> return bOverlap; </p> </blockquote> <p> } </p> <p> Ofc this can be achieved with the normal set_intersection as well but that loops until the end of one of the ranges and requires an extra output iterator functor. </p> <p> Maybe an idea? </p> gast128@… https://svn.boost.org/trac10/ticket/11180 https://svn.boost.org/trac10/ticket/11180 Report #11179: create_directories() does not allow control of permissions Fri, 10 Apr 2015 00:42:02 GMT Wed, 02 Dec 2015 08:29:51 GMT <p> Currently, there is no way to tell create_directory() or create_directories() what permissions to set for a new directory. This is particularly annoying when calling these functions from a library, where it's simply impossible to fiddle with umask. </p> <p> It would be really nice to have an overload that allows permissions to be set. </p> Michi Henning <michi.henning@…> https://svn.boost.org/trac10/ticket/11179 https://svn.boost.org/trac10/ticket/11179 Report #11178: cpp_dec_float calculation bug Thu, 09 Apr 2015 17:01:00 GMT Thu, 09 Apr 2015 17:24:41 GMT <p> #include &lt;iostream&gt; </p> <p> #include &lt;boost/multiprecision/cpp_dec_float.hpp&gt; </p> <p> using namespace boost::multiprecision; using namespace std; </p> <p> int main(int argc, char *argv[]) { </p> <blockquote> <p> cpp_dec_float_100 p("4.5"); cpp_dec_float_100 a("7.2"); </p> </blockquote> <blockquote> <p> cpp_dec_float_100 r = p / a;<em>("0.625"); cout &lt;&lt; r.str() &lt;&lt; endl; </em></p> </blockquote> <blockquote> <p> if (r == cpp_dec_float_100("0.625")) cout &lt;&lt; "HOHO" &lt;&lt; endl; cout &lt;&lt; r.str(2, ios_base::fixed) &lt;&lt; endl; </p> </blockquote> <blockquote> <p> r *= 100; cout &lt;&lt; r.str(2, ios_base::fixed) &lt;&lt; endl; r = round(r); cout &lt;&lt; r.str(2, ios_base::fixed) &lt;&lt; endl; r /= 100; </p> </blockquote> <blockquote> <p> cout &lt;&lt; r.str(2, ios_base::fixed) &lt;&lt; endl; </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> nxjiang1@… https://svn.boost.org/trac10/ticket/11178 https://svn.boost.org/trac10/ticket/11178 Report #11172: Posix semaphores wait/timed_wait under linux and EINTR return code Tue, 07 Apr 2015 12:06:17 GMT Wed, 08 Apr 2015 12:38:35 GMT <p> Semaphore's wait/timed_wait methods throws exception if EINTR is returned by sem_wait/sem_timedwait. This code could be returned if wait is interrupted by signal handler (in agree with POSIX.1-2001). </p> <p> It looks like EINTR handling should be kept inside that functions. </p> poroh1981@… https://svn.boost.org/trac10/ticket/11172 https://svn.boost.org/trac10/ticket/11172 Report #11169: boost::optional triggers -Wmaybe-uninitialized errors in g++ Mon, 06 Apr 2015 16:24:34 GMT Mon, 19 Sep 2016 07:38:03 GMT <p> Example taken from <a class="missing wiki">StackOverflow</a> question 21755206* </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; ::boost::optional&lt;int&gt; getitem(); int go(int nr) { boost::optional&lt;int&gt; a = getitem(); boost::optional&lt;int&gt; b; if (nr &gt; 0) b = nr; if (a != b) return 1; return 0; } </pre><pre class="wiki">g++ -c -O2 -Wall /tmp/test.cpp /tmp/test.cpp: In function ‘int go(int)’ /tmp/test.cpp:13:3: warning: ‘*((void*)&amp; b +4)’ may be used uninitialized in this function [-Wmaybe-uninitialized] if (a != b) ^ </pre><p> This has been reported as gcc bug 47679*. </p> <p> Two workarounds that seem to work in my testing are value-initializing dummy_ in the aligned_storage default constructor or adding an empty asm statement that lists dummy_ as an output. Would it be possible to include a fix in mainline boost? </p> <ul><li>Sorry, but trac flags this as spam if I include direct links. </li></ul> Mathias Stearn <redbeard0531@…> https://svn.boost.org/trac10/ticket/11169 https://svn.boost.org/trac10/ticket/11169 Report #11167: auto_cpu_timer reports questionable CPU utilization Sat, 04 Apr 2015 18:12:31 GMT Sat, 04 Apr 2015 18:12:31 GMT <p> Userspace time exceeds wall time showing &gt;100% CPU utilization on OSX : 0.011577s wall, 0.020000s user + 0.000000s system = 0.020000s CPU (172.8%) </p> <p> I have not seen any fractional values for userspace time, it looks like it can only increase in 0.01s intervals causing the incorrect print out above. </p> <hr /> <p> #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;boost/timer/timer.hpp&gt; </p> <p> int main(int argc, const char * argv[]) { </p> <blockquote> <p> std::vector&lt;float&gt; hv( 1000*1000 ); { </p> <blockquote> <p> boost::timer::auto_cpu_timer t; std::generate(hv.begin(), hv.end(), rand); </p> </blockquote> <p> } return 0; </p> </blockquote> <p> } </p> grubertm@… https://svn.boost.org/trac10/ticket/11167 https://svn.boost.org/trac10/ticket/11167 Report #11164: Graph adjacency_list, add_vertex compile error on clang 3.6 Thu, 02 Apr 2015 21:19:51 GMT Wed, 03 Feb 2016 00:24:39 GMT <p> I have an issue similar to <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10382" title="#10382: Bugs: 1.56.0 Graph adjacency_list has compile errors on g++ 4.6.4 (new)">#10382</a>. When compiling the following program </p> <pre class="wiki">#include &lt;boost/graph/adjacency_list.hpp&gt; struct Payload { Payload() = default; Payload(const Payload&amp;) {}; Payload&amp; operator=(const Payload&amp;) { return *this; }; }; struct PayloadD : public Payload { }; class Props { public: PayloadD payload; }; int main(int argc, char** argv) { using boost::adjacency_list; using boost::vecS; using boost::directedS; typedef adjacency_list&lt;vecS, vecS, directedS, Props&gt; Graph; Graph graph; boost::add_vertex(graph); return 0; } </pre><p> Using clang 3.6 I get the error message: </p> <pre class="wiki">/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/bits/stl_construct.h:75:38: error: call to implicitly-deleted copy constructor of 'boost::detail::stored_edge_property&lt;unsigned long, boost::no_property&gt;' { ::new(static_cast&lt;void*&gt;(__p)) _T1(std::forward&lt;_Args&gt;(__args)...); } ... /usr/include/boost/graph/detail/adjacency_list.hpp:317:7: note: copy constructor is implicitly deleted because 'stored_edge_property&lt;unsigned long, boost::no_property&gt;' has a user-declared move constructor stored_edge_property(self&amp;&amp; x) = default; </pre><p> The same program compiles fine with gcc 4.8.2, 4.9.2, and clang 3.5. </p> <p> The attached patch changes stored_edge_property such that it always creates a custom copy constructor and copy assignment operator. With this changes clang 3.6 can build the program. </p> dstoeckel@… https://svn.boost.org/trac10/ticket/11164 https://svn.boost.org/trac10/ticket/11164 Report #11156: Missing boost library "libboost_zlib-vc120-mt-gd-1_57.lib" Tue, 31 Mar 2015 00:38:31 GMT Tue, 31 Mar 2015 01:04:15 GMT <p> Hello! </p> <p> Libraries are built under VC++ 12.0<br /> Proven methods of build: </p> <ol><li>bjam toolset=msvc variant=debug,release link=static runtime-link=static </li><li>bjam toolset=msvc link=static threading=multi release stage bjam toolset=msvc link=static threading=multi debug stage </li><li>like this: <a class="ext-link" href="http://stackoverflow.com/questions/7282645/how-to-build-boost-iostreams-with-gzip-and-bzip2-support-on-windows"><span class="icon">​</span>http://stackoverflow.com/questions/7282645/how-to-build-boost-iostreams-with-gzip-and-bzip2-support-on-windows</a> </li></ol><p> The project had been prescribed library paths. No one method helped get the library "libboost_zlib-vc120-mt-gd-1_57.lib" and in the folder "boost/stage/lib" this file does not exist. </p> <p> Documentation: <a href="http://www.boost.org/doc/libs/1_40_0/libs/iostreams/doc/classes/gzip.html">http://www.boost.org/doc/libs/1_40_0/libs/iostreams/doc/classes/gzip.html</a> </p> <p> The program, which would like to compile: </p> <pre class="wiki">#define _SCL_SECURE_NO_WARNINGS #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/filter/zlib.hpp&gt; #include &lt;boost/iostreams/filter/gzip.hpp&gt; #include &lt;boost/iostreams/device/file.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; int main(void) { boost::iostreams::filtering_ostreambuf out; out.push(boost::iostreams::gzip_compressor()); out.push(boost::iostreams::file_sink("data.txt", std::ios::binary)); boost::iostreams::copy(boost::iostreams::file_source("data.gz", std::ios::binary), out); return 0; } </pre> Vit.link420@… https://svn.boost.org/trac10/ticket/11156 https://svn.boost.org/trac10/ticket/11156 Report #11154: Constructing boost::interprocess::interprocess_semaphore throws in MacOS 10.9.5 Mon, 30 Mar 2015 17:11:38 GMT Mon, 21 May 2018 19:14:02 GMT <p> Using boost::interprocess::interprocess_semaphore from Boost 1.56 and running MacOS 10.9.5, it simply throws an exception saying the function is not implemented: </p> <blockquote> <p> libc++abi.dylib: terminating with uncaught exception of type boost::interprocess::interprocess_exception: Function not implemented </p> </blockquote> <p> This is a regression from Boost 1.49 and MacOS 10.9.5, where this works fine. </p> <p> Looking at the two, it appears that 1.49 is using the generic spin emulation for interprocess_semaphore, whereas 1.56 is implementing interprocess_semaphore using POSIX unnamed semaphores, which aren't implemented in MacOS 10.9.5. </p> Jonathan Jones <jonathan.jones@…> https://svn.boost.org/trac10/ticket/11154 https://svn.boost.org/trac10/ticket/11154 Report #11146: iostreams seekpos/seekoff must not throw exceptions Thu, 26 Mar 2015 16:23:37 GMT Thu, 26 Mar 2015 16:23:37 GMT <p> Currently, <code>direct_streambuf&lt;T, Tr&gt;::seek_impl</code> throws <code>bad_seek()</code> exception on invalid input. </p> <p> The current standard draft N4296 says in section 27.8.2.4 about <code>seekoff</code>: </p> <p> <em>If the positioning operation fails, or if the constructed object cannot represent the resultant stream position, the return value is pos_type(off_type(-1)).</em> </p> <p> At least the MSVC STL implementation does not expect pubseekoff/seekoff to throw, thus does not catch the exception and the bad_seek() exception may leak to the caller even though ios_base::exceptions() is 0. </p> stheophil@… https://svn.boost.org/trac10/ticket/11146 https://svn.boost.org/trac10/ticket/11146 Report #11144: Kamada Kawai graph layout algorithm crashes with MSVC 2013 with -O2 Wed, 25 Mar 2015 12:34:32 GMT Wed, 25 Mar 2015 12:34:32 GMT <p> The attached file demonstrates a crash which only occurs when compiled with optimizations enabled. When compiling in debug the incorrect code path shown in the stack trace is not chosen. </p> <p> A full compile output to show the exact compile options used is also included. </p> alex@… https://svn.boost.org/trac10/ticket/11144 https://svn.boost.org/trac10/ticket/11144 Report #11138: filesystem::path::canonical() failed with junction points on Windows Tue, 24 Mar 2015 14:48:38 GMT Wed, 19 Jul 2017 18:28:41 GMT <p> Hi, </p> <p> In my recent use of filesystem in Boost 1.57, the call of path::canonical() on Windows 7 returns an invalid path if part of the path in question is a junction point. </p> <p> This failure can be reproduced with the following code: </p> <div class="wiki-code"><div class="code"><pre> <span class="c1">// &quot;C:\Gehua&quot; is a junction point of &quot;D:\Gehua&quot;</span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span> <span class="n">work</span><span class="p">(</span><span class="s">&quot;d:/Gehua/work&quot;</span><span class="p">);</span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span> <span class="n">work_canonical</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">canonical</span><span class="p">(</span><span class="n">work</span><span class="p">));</span> <span class="n">std</span><span class="o">::</span><span class="n">wstring</span> <span class="n">s</span> <span class="o">=</span> <span class="n">fs</span><span class="o">::</span><span class="n">canonical</span><span class="p">(</span><span class="n">work_canonical</span><span class="p">).</span><span class="n">native</span><span class="p">();</span> <span class="c1">// True path passes</span> <span class="n">assert</span><span class="p">(</span><span class="n">s</span> <span class="o">==</span> <span class="sa">L</span><span class="s">&quot;d:/Gehua</span><span class="se">\\</span><span class="s">work&quot;</span><span class="p">);</span> <span class="c1">// try the junction path </span> <span class="n">fs</span><span class="o">::</span><span class="n">path</span> <span class="n">work_junction</span><span class="p">(</span><span class="s">&quot;c:/Gehua/work&quot;</span><span class="p">);</span> <span class="c1">// this passes</span> <span class="n">assert</span><span class="p">(</span><span class="n">fs</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">work_junction</span><span class="p">));</span> <span class="n">s</span> <span class="o">=</span> <span class="n">fs</span><span class="o">::</span><span class="n">canonical</span><span class="p">(</span><span class="n">work_junction</span><span class="p">).</span><span class="n">native</span><span class="p">();</span> <span class="c1">// this one fails!</span> <span class="c1">// s has value &quot;c:/Gehua\\Gehua\\work&quot;</span> <span class="n">assert</span><span class="p">(</span><span class="n">s</span> <span class="o">==</span> <span class="sa">L</span><span class="s">&quot;d:/Gehua</span><span class="se">\\</span><span class="s">work&quot;</span><span class="p">);</span> </pre></div></div><p> The call returned a value of "c:/Gehua\\Gehua\\work", which was wrong. </p> yanggehua@… https://svn.boost.org/trac10/ticket/11138 https://svn.boost.org/trac10/ticket/11138 Report #11137: Bug in graph/dijkstra_shortest_paths_no_color_map.hpp Tue, 24 Mar 2015 12:48:51 GMT Tue, 24 Mar 2015 13:11:14 GMT <p> Hi, </p> <p> I'm a new user to Boost Graph Library and I'm just start to figure out how to use it. So I apologize if I'm wrong. </p> <p> While testing dijkstra algorithm, I found a possible bug in graph/dijkstra_shortest_paths_no_color_map.hpp. </p> <p> In function dijkstra_shortest_paths_no_color_map_no_init, the code does not initialize distance_map[start_vertex] to 0 before push it into vertex_queue, as the document says here <a href="http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/dijkstra_shortest_paths_no_color_map.html">http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/dijkstra_shortest_paths_no_color_map.html</a> </p> <p> So this will always return at the start vertex if the distance_map is initialized to infinity: </p> <pre class="wiki">if (!distance_compare(min_vertex_distance, distance_infinity)) { // This is the minimum vertex, so all other vertices are unreachable return; } </pre><p> Hui Xiao </p> hokix@… https://svn.boost.org/trac10/ticket/11137 https://svn.boost.org/trac10/ticket/11137 Report #11134: MSM: adjust type fusion::nil to fusion::nil_ Sun, 22 Mar 2015 19:35:23 GMT Sun, 22 Mar 2015 19:35:23 GMT <p> In order to help with some ObjectiveC++ issues, the boost fusion code renamed the type 'nil' to 'nil_'. There is still an alias to 'nil' in order to preserve ABI, but the 'nil_' is the true name of the type. </p> <p> I would like to adjust accumulators to use the actual 'nil_' type instead, in order to make this code more ObjectiveC++ friendly (where 'nil' is a keyword, sadly). </p> jared.grubb+boost@… https://svn.boost.org/trac10/ticket/11134 https://svn.boost.org/trac10/ticket/11134 Report #11133: Graph: using 'nil' as a local variable Sat, 21 Mar 2015 23:22:01 GMT Sat, 21 Mar 2015 23:25:51 GMT <p> The word "nil" is a keyword in Objective-C++ (this is C++ with the ObjC features too). </p> <p> I'd like to rename some of the local variables in these headers that cause issues when code is compiled in ObjC++. </p> jared.grubb+boost@… https://svn.boost.org/trac10/ticket/11133 https://svn.boost.org/trac10/ticket/11133 Report #11131: [bb10/qnx failures] Build error Fri, 20 Mar 2015 00:27:40 GMT Fri, 20 Mar 2015 00:27:40 GMT <p> Build error on QNX/BB10 crosscompiling: </p> <blockquote> <p> from ./boost/smart_ptr/make_shared_array.hpp:12, from ./boost/smart_ptr/make_shared.hpp:18, from ./boost/archive/detail/helper_collection.hpp:28, from ./boost/archive/detail/basic_iarchive.hpp:28, from libs/serialization/src/basic_iarchive.cpp:42: </p> </blockquote> <p> ./boost/smart_ptr/detail/array_allocator.hpp:216:21: error: 'ptrdiff_t' does not name a type </p> <blockquote> <p> typedef ptrdiff_t difference_type; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> cc: /opt/bbndk/host_10_3_1_12/linux/x86/usr/lib/gcc/arm-unknown-nto-qnx8.0.0eabi/4.8.3/cc1plus error 1 </p> <p> Fix see git commit 94824c807f76dc4f3d41109a75808ed288f858f9 </p> Jörg Böhme <joerg@…> https://svn.boost.org/trac10/ticket/11131 https://svn.boost.org/trac10/ticket/11131 Report #11130: [bb10/qnx failures] Build error Fri, 20 Mar 2015 00:19:48 GMT Fri, 20 Mar 2015 00:19:48 GMT <p> Missing std:: namespace in include/boost/property_tree/detail/info_parser_read.hpp </p> <p> Fix see git commit 616631208c11c47826f07037d8827052800ce98c </p> Jörg Böhme <joerg@…> https://svn.boost.org/trac10/ticket/11130 https://svn.boost.org/trac10/ticket/11130 Report #11129: [bb10/qnx failures] Build error Fri, 20 Mar 2015 00:09:19 GMT Fri, 20 Mar 2015 00:09:19 GMT <p> Missing include for std::find in boost/msm/back/metafunctions.hpp </p> <p> Fix see git commit ef4de1dc4177dc1057692bc447fd0b9e6625771e </p> Jörg Böhme <joerg@…> https://svn.boost.org/trac10/ticket/11129 https://svn.boost.org/trac10/ticket/11129 Report #11126: View as text on the wiki is broken Thu, 19 Mar 2015 11:32:21 GMT Thu, 19 Mar 2015 11:32:21 GMT <p> To repeat: </p> <ol><li>Go to <a class="ext-link" href="https://svn.boost.org/trac/boost/wiki/SoCSubmissionTemplate"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki/SoCSubmissionTemplate</a>. </li></ol><ol start="2"><li>At the bottom of the page where it says "Download in other formats" choose "Plain text". </li></ol><ol start="3"><li>Witness the explosion: </li></ol><p> The response from the server contained duplicate headers. This problem is generally the result of a misconfigured website or proxy. Only the website or proxy administrator can fix this issue. Error code: ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION </p> <p> Niall </p> Niall Douglas https://svn.boost.org/trac10/ticket/11126 https://svn.boost.org/trac10/ticket/11126 Report #11124: Headers are not rebuilt completely Wed, 18 Mar 2015 18:10:54 GMT Wed, 18 Mar 2015 18:32:34 GMT <p> Once you clone repo and run build such as this: ./b2 -a </p> <p> One would assume that all libraries are built and ALL header files are copied or linked into proper place but it is not the case. Only files which built .libs are depend upon installed into include (boost) directory. If library is not used in the build process it is left out. Just look for "Signals2" for example. </p> esadovoi@… https://svn.boost.org/trac10/ticket/11124 https://svn.boost.org/trac10/ticket/11124 Report #11123: Accumulators: adjust type fusion::nil to fusion::nil_ Wed, 18 Mar 2015 17:58:27 GMT Sat, 21 Mar 2015 23:06:01 GMT <p> In order to help with some ObjectiveC++ issues, the boost fusion code renamed the type 'nil' to 'nil_'. There is still an alias to 'nil' in order to preserve ABI, but the 'nil_' is the true name of the type. </p> <p> I would like to adjust accumulators to use the actual 'nil_' type instead, in order to make this code more ObjectiveC++ friendly (where 'nil' is a keyword, sadly). </p> jaredgrubb+boost@… https://svn.boost.org/trac10/ticket/11123 https://svn.boost.org/trac10/ticket/11123 Report #11122: Bulk/Range set/unset operations Wed, 18 Mar 2015 15:20:47 GMT Wed, 18 Mar 2015 15:25:44 GMT <p> I need to set/unset a subrange of the elements within a dynamic bitset. The current best way (that I know of) of doing this, is assigning a value to each element individually. </p> <p> This is far from optimal, since an optimal solution would iterate over the blocks, setting the value once for each block. It is also non-trivial to work around this, since one needs to consider that the sub-range might being and end in the middle of some block. </p> <p> I propose to add the following two overloads to the set and unset member functions, to allow for this use case: </p> <p> std::size_t set(std::size_t from, std::size_t to, bool value); std::size_t unset(std::size_t from, std::size_t to, bool value); <em> (maybe range-based and iterator-based versions should be added as well) </em></p> <p> I'm willing to implement, test, and document this. But want to discuss before: </p> <p> What do you think? Is there a better solution to this problem that is both safe and efficient? </p> gonzalobg88@… https://svn.boost.org/trac10/ticket/11122 https://svn.boost.org/trac10/ticket/11122 Report #11120: Problem compile with python 3 support. Wed, 18 Mar 2015 09:07:06 GMT Thu, 22 Feb 2018 01:15:11 GMT <pre class="wiki">./bootstrap.sh --with-python=/usr/bin/python3 --with-python-root=/usr ./b2 ... gcc.compile.c++ bin.v2/libs/python/build/gcc-4.9.2/release/threading-multi/object/function_doc_signature.o In file included from ./boost/python/detail/prefix.hpp:13:0, from ./boost/python/converter/registrations.hpp:8, from libs/python/src/object/function_doc_signature.cpp:9: ./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory # include &lt;pyconfig.h&gt; ^ compilation terminated. "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG -I"." -I"/usr/include/python3.4" -c -o "bin.v2/libs/python/build/gcc-4.9.2/release/threading-multi/object/function_doc_signature.o" "libs/python/src/object/function_doc_signature.cpp" ...failed gcc.compile.c++ bin.v2/libs/python/build/gcc-4.9.2/release/threading-multi/object/function_doc_signature.o... ...skipped &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;libboost_python.so.1.57.0 for lack of &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;numeric.o... ...skipped &lt;pstage/lib&gt;libboost_python.so.1.57.0 for lack of &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;libboost_python.so.1.57.0... ...skipped &lt;pstage/lib&gt;libboost_python.so for lack of &lt;pstage/lib&gt;libboost_python.so.1.57.0... ...skipped &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;libboost_python3.so.1.57.0 for lack of &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;numeric.o... ...skipped &lt;pstage/lib&gt;libboost_python3.so.1.57.0 for lack of &lt;pbin.v2/libs/python/build/gcc-4.9.2/release/threading-multi&gt;libboost_python3.so.1.57.0... ...skipped &lt;pstage/lib&gt;libboost_python3.so for lack of &lt;pstage/lib&gt;libboost_python3.so.1.57.0... ... ...failed updating 56 targets... ...skipped 12 targets... ...updated 1062 targets... </pre><p> <br /> System: PCLinuxOS 32bit Mate<br /> </p> <p> gcc: 4.92<br /> </p> <p> pkgconfig: 0.28<br /> </p> <p> python2: 2.7.6<br /> </p> <p> python3: 3.4.2<br /> </p> <p> I want add log from compile, but I don't know how. </p> <p> How I can find pyconfig.h ? </p> tele https://svn.boost.org/trac10/ticket/11120 https://svn.boost.org/trac10/ticket/11120 Report #11118: test libs/range/test/adaptor_test/indexed.cpp is bad Fri, 13 Mar 2015 18:08:20 GMT Fri, 13 Mar 2015 18:08:20 GMT <p> This test contains two invocations of the BOOST_STATIC_ASSERT macro that need additional parens around the parameters. For implementations that don't support variadic macros, the BOOST_STATIC_ASSERT macro is defined to take one parameter. </p> <p> As written the test passes two. </p> Ed Vogel <edward.vogel@…> https://svn.boost.org/trac10/ticket/11118 https://svn.boost.org/trac10/ticket/11118 Report #11117: asio: massive regression test failures Fri, 13 Mar 2015 17:53:11 GMT Fri, 13 Mar 2015 17:53:11 GMT <p> I am running the regression tests on the develop branch with Oracle Solaris Studio12.4 on Solaris 11.2 OS. </p> <p> Tests for asio fail as follows: ../boost/system/config.hpp", line 34: Error: #error Must not define both BOOST_SYSTEM_DYN_LINK and BOOST_SYSTEM_STATIC_LINK. </p> <p> I looked at the developer issues on <a href="http://www.boost.org/development/tests/develop/developer/issues.html">http://www.boost.org/development/tests/develop/developer/issues.html</a> </p> <p> and see that asio tests fail similarly. </p> <p> See discussion on <a class="ext-link" href="http://lists.boost.org/Archives/boost/2015/03/220407.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2015/03/220407.php</a> </p> <p> For possible solution: Removing the following line &lt;library&gt;/boost/system<em>boost_system </em></p> <p> from libs/asio/test/Jamfile.v2 </p> <p> seems to resolve the issue. </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11117 https://svn.boost.org/trac10/ticket/11117 Report #11116: asio: massive regression test failures Fri, 13 Mar 2015 17:51:10 GMT Fri, 13 Mar 2015 17:51:10 GMT <p> I am running the regression tests on the develop branch with Oracle Solaris Studio12.4 on Solaris 11.2 OS. </p> <p> Tests for asio fail as follows: ../boost/system/config.hpp", line 34: Error: #error Must not define both BOOST_SYSTEM_DYN_LINK and BOOST_SYSTEM_STATIC_LINK. </p> <p> I looked at the developer issues on <a href="http://www.boost.org/development/tests/develop/developer/issues.html">http://www.boost.org/development/tests/develop/developer/issues.html</a> </p> <p> and see that asio tests fail similarly. </p> <p> See discussion on <a class="ext-link" href="http://lists.boost.org/Archives/boost/2015/03/220407.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2015/03/220407.php</a> </p> <p> For possible solution: Removing the following line &lt;library&gt;/boost/system<em>boost_system </em></p> <p> from libs/asio/test/Jamfile.v2 </p> <p> seems to resolve the issue. </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/11116 https://svn.boost.org/trac10/ticket/11116 Report #11114: Function for checking if file or directory is child of given ancestor directory. Fri, 13 Mar 2015 11:02:53 GMT Fri, 13 Mar 2015 11:02:53 GMT <p> To implement a function which returns true if a given file or directory is a child of a given ancestor directory. </p> perez.didac@… https://svn.boost.org/trac10/ticket/11114 https://svn.boost.org/trac10/ticket/11114 Report #11111: Enable deterministic builds (Linux) Thu, 12 Mar 2015 09:30:18 GMT Thu, 12 Mar 2015 09:38:40 GMT <p> Building static libraries under Linux is not reproducible as the resulting libs have different md5sums every time. </p> <p> The problem seems to be in gcc.jam which calls ar/ranlib without the 'deterministic' options. </p> <p> A trivial patch is attached. </p> <p> It would be nice if the boost build system could support reproducible builds. This is a first step. </p> Jens Richter <jens.richter@…> https://svn.boost.org/trac10/ticket/11111 https://svn.boost.org/trac10/ticket/11111 Report #11108: boost asio from_string rejects valid ipv6 address Wed, 11 Mar 2015 22:31:56 GMT Wed, 11 Mar 2015 22:31:56 GMT <p> from RFC 4291 2.2.2, '::2:3:4:5:6:7:8' is a valid ipv6 address<br /> following code incorrectly sets ec.m_val to 10022 </p> <pre class="wiki">std::string thost("::2:3:4:5:6:7:8"); boost::system::error_code ec; addr = boost::asio::ip::address::from_string(thost, ec); </pre> mark andrews <mandrews58@…> https://svn.boost.org/trac10/ticket/11108 https://svn.boost.org/trac10/ticket/11108 Report #11101: urlencode() and urldecode() Wed, 11 Mar 2015 12:11:05 GMT Mon, 11 Jul 2016 21:40:46 GMT <p> These functions are quite handy when dealing with web stuff. Could they be added to Boost? </p> <p> See also PHP's urlencode and urldecode. </p> olafvdspek@… https://svn.boost.org/trac10/ticket/11101 https://svn.boost.org/trac10/ticket/11101 Report #11093: Limitations of unique_ptr in C++03 mode Tue, 10 Mar 2015 07:30:14 GMT Tue, 10 Mar 2015 07:30:14 GMT <p> This is a follow-up of a thread on boost-dev mailing list which touches the topic of boost::movelib::unique_ptr emulation in C++03. </p> <p> One of such limitations is related to copy initialization expressions: </p> <div class="wiki-code"><div class="code"><pre><span class="n">unique_ptr</span><span class="o">&lt;</span><span class="n">Derived</span><span class="o">&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="n">make_unique</span><span class="o">&lt;</span><span class="n">Derived</span><span class="o">&gt;</span><span class="p">();</span> <span class="n">unique_ptr</span><span class="o">&lt;</span><span class="n">Base</span><span class="o">&gt;</span> <span class="n">y</span> <span class="o">=</span> <span class="n">move</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> </pre></div></div><p> which won't compile, while: </p> <div class="wiki-code"><div class="code"><pre><span class="n">unique_ptr</span><span class="o">&lt;</span><span class="n">Derived</span><span class="o">&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="n">make_unique</span><span class="o">&lt;</span><span class="n">Derived</span><span class="o">&gt;</span><span class="p">();</span> <span class="n">unique_ptr</span><span class="o">&lt;</span><span class="n">Base</span><span class="o">&gt;</span> <span class="n">y</span><span class="p">(</span><span class="n">move</span><span class="p">(</span><span class="n">x</span><span class="p">));</span> </pre></div></div><p> will compile without any problems. </p> <p> There are probably some other limitations. It would be best if they were documented. </p> Adam Romanek <romanek.adam@…> https://svn.boost.org/trac10/ticket/11093 https://svn.boost.org/trac10/ticket/11093 Report #11092: Boost write_graphml writes non-conformant GraphML for boolean attributes Tue, 10 Mar 2015 01:05:59 GMT Mon, 12 Dec 2016 17:24:54 GMT <p> Boolean attributes are serialized as 0 and 1. They should be written as "false" and "true" instead. </p> <p> The GraphML spec does not specify what values are acceptable, but according to the GraphML primer, "The type of the GraphML-Attribute can be either boolean, int, long, float, double, or string. These types are defined like the corresponding types in the Java(TM)-Programming language.". </p> <p> In source code, Java would allow only "true" and "false" for boolean values. If we add any representation that Java's Boolean.parseString() recognizes, the case wouldn't matter, but "1" still wouldn't parse as true. </p> <p> Other libraries like NetworkX fail to parse GraphML with boolean attributes written by Boost. See also https :<em> github.com / networkx / networkx / pull / 1063. </em></p> freedesktop@… https://svn.boost.org/trac10/ticket/11092 https://svn.boost.org/trac10/ticket/11092 Report #11091: notify_all_at_thread_exit - ThreadSanitizer: data race Mon, 09 Mar 2015 23:43:03 GMT Mon, 09 Mar 2015 23:43:18 GMT <pre class="wiki"> Test output: BenPope x86_64 Ubuntu - thread - notify_all_at_thread_exit_p / clang-linux-3.6~tsan~c14_libc++ Rev 9b68e2eec037cbcb6f96d7d54079e7e1a6a274ab / Mon, 09 Mar 2015 11:14:53 +0000 Compile [2015-03-09 15:31:08 UTC]: succeed "clang++-3.6" -c -x c++ -Wextra -Wno-long-long -Wno-unused-parameter -Wunused-function -std=c++1y -stdlib=libc++ -fsanitize=thread -O0 -fno-inline -Wall -pthread -fPIC -Wextra -Wno-long-long -Wno-unused-parameter -Wunused-function -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED -DBOOST_THREAD_USE_DLL=1 -I".." -o "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/sync/conditions/notify_all_at_thread_exit_pass.o" "../libs/thread/test/sync/conditions/notify_all_at_thread_exit_pass.cpp" Link [2015-03-09 15:31:08 UTC]: succeed "clang++-3.6" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-R -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -Wl,-rpath-link -Wl,"/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi" -o "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/notify_all_at_thread_exit_p" -Wl,--start-group "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/sync/conditions/notify_all_at_thread_exit_pass.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/winrt_init.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_thread.so.1.58.0" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/chrono/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_chrono.so.1.58.0" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/system/build/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/libboost_system.so.1.58.0" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -fsanitize=thread -lc++ -lc++abi -pthread RmTemps /home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/notify_all_at_thread_exit_p rm -f "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/sync/conditions/notify_all_at_thread_exit_pass.o" "/home/ben/development/boost/test/build/develop/results/boost/bin.v2/libs/thread/test/notify_all_at_thread_exit_p.test/clang-linux-3.6~tsan~c14_libc++/debug/debug-symbols-off/threading-multi/winrt_init.o" Run [2015-03-09 15:31:08 UTC]: fail ================== WARNING: ThreadSanitizer: data race (pid=14082) Write of size 8 at 0x7fd7f9795c48 by thread T1: #0 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x00000002567a) Previous write of size 8 at 0x7fd7f9795c48 by main thread: #0 &lt;null&gt; &lt;null&gt; (0x000000000001) Location is stack of thread T1. Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::(anonymous namespace)::thread_proxy(void*) ================== ================== WARNING: ThreadSanitizer: data race (pid=14082) Read of size 8 at 0x7d4c0000de58 by thread T1: #0 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000318e5) #1 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000256a3) Previous write of size 8 at 0x7d4c0000de58 by main thread (mutexes: write M24): #0 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::swap(boost::shared_ptr&lt;boost::detail::thread_data_base&gt;&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x000000031796) #1 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::operator=(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x00000003142d) #2 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x000000025579) #3 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #4 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #5 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Location is heap block of size 424 at 0x7d4c0000de40 allocated by main thread: #0 operator new(unsigned long) /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:571:3 (notify_all_at_thread_exit_p+0x00000045aebd) #1 boost::detail::thread_data&lt;void (*)()&gt;* boost::detail::heap_new&lt;boost::detail::thread_data&lt;void (*)()&gt;, void (*)()&gt;(void (*&amp;&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6acb) #2 boost::thread::make_thread_info(void (*)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3a87) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f82) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Mutex M24 (0x0000014d9438) created at: #0 pthread_mutex_init /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1082:3 (notify_all_at_thread_exit_p+0x00000045f790) #1 boost::mutex::mutex() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c27d7) #2 __cxx_global_var_init10 &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004439cc) #3 _GLOBAL__sub_I_notify_all_at_thread_exit_pass.cpp &lt;null&gt; (notify_all_at_thread_exit_p+0x000000443a43) #4 __libc_csu_init &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004d538c) Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) ================== ================== WARNING: ThreadSanitizer: data race (pid=14082) Write of size 8 at 0x7fd7f9795c38 by thread T1: #0 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000318f9) #1 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000256a3) Previous write of size 8 at 0x7fd7f9795c38 by main thread: #0 &lt;null&gt; &lt;null&gt; (0x000000000001) Location is stack of thread T1. Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) ================== ================== WARNING: ThreadSanitizer: data race (pid=14082) Read of size 8 at 0x7d4c0000de60 by thread T1: #0 boost::detail::shared_count::shared_count(boost::detail::shared_count const&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c7696) #1 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x000000031929) #2 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000256a3) Previous write of size 8 at 0x7d4c0000de60 by main thread (mutexes: write M24): #0 boost::detail::shared_count::swap(boost::detail::shared_count&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c71cb) #1 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::swap(boost::shared_ptr&lt;boost::detail::thread_data_base&gt;&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000317d6) #2 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::operator=(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x00000003142d) #3 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x000000025579) #4 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #5 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #6 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Location is heap block of size 424 at 0x7d4c0000de40 allocated by main thread: #0 operator new(unsigned long) /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:571:3 (notify_all_at_thread_exit_p+0x00000045aebd) #1 boost::detail::thread_data&lt;void (*)()&gt;* boost::detail::heap_new&lt;boost::detail::thread_data&lt;void (*)()&gt;, void (*)()&gt;(void (*&amp;&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6acb) #2 boost::thread::make_thread_info(void (*)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3a87) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f82) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Mutex M24 (0x0000014d9438) created at: #0 pthread_mutex_init /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1082:3 (notify_all_at_thread_exit_p+0x00000045f790) #1 boost::mutex::mutex() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c27d7) #2 __cxx_global_var_init10 &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004439cc) #3 _GLOBAL__sub_I_notify_all_at_thread_exit_pass.cpp &lt;null&gt; (notify_all_at_thread_exit_p+0x000000443a43) #4 __libc_csu_init &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004d538c) Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::detail::shared_count::shared_count(boost::detail::shared_count const&amp;) ================== ================== WARNING: ThreadSanitizer: data race (pid=14082) Write of size 8 at 0x7fd7f9795c40 by thread T1: #0 boost::detail::shared_count::shared_count(boost::detail::shared_count const&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c76aa) #1 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x000000031929) #2 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000256a3) Previous write of size 8 at 0x7fd7f9795c40 by main thread: #0 &lt;null&gt; &lt;null&gt; (0x000000000001) Location is stack of thread T1. Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::detail::shared_count::shared_count(boost::detail::shared_count const&amp;) ================== ================== WARNING: ThreadSanitizer: data race (pid=14082) Atomic write of size 4 at 0x7d080000ef88 by thread T1: #0 __tsan_atomic32_fetch_add /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc:613:3 (notify_all_at_thread_exit_p+0x0000004a5256) #1 boost::detail::atomic_increment(int _Atomic*) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c77cc) #2 boost::detail::sp_counted_base::add_ref_copy() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c7749) #3 boost::detail::shared_count::shared_count(boost::detail::shared_count const&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c76e6) #4 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr(boost::shared_ptr&lt;boost::detail::thread_data_base&gt; const&amp;) &lt;null&gt; (libboost_thread.so.1.58.0+0x000000031929) #5 boost::(anonymous namespace)::thread_proxy(void*) &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000256a3) Previous write of size 8 at 0x7d080000ef88 by main thread (mutexes: write M24): #0 operator new(unsigned long) /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:571:3 (notify_all_at_thread_exit_p+0x00000045aebd) #1 boost::detail::shared_count::shared_count&lt;boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::detail::thread_data&lt;void (*)()&gt;*) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6f67) #2 void boost::detail::sp_pointer_construct&lt;boost::detail::thread_data_base, boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::shared_ptr&lt;boost::detail::thread_data_base&gt;*, boost::detail::thread_data&lt;void (*)()&gt;*, boost::detail::shared_count&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6dd0) #3 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr&lt;boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::detail::thread_data&lt;void (*)()&gt;*) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6c7b) #4 boost::thread::make_thread_info(void (*)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3a93) #5 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f82) #6 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Location is heap block of size 24 at 0x7d080000ef80 allocated by main thread: #0 operator new(unsigned long) /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:571:3 (notify_all_at_thread_exit_p+0x00000045aebd) #1 boost::detail::shared_count::shared_count&lt;boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::detail::thread_data&lt;void (*)()&gt;*) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6f67) #2 void boost::detail::sp_pointer_construct&lt;boost::detail::thread_data_base, boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::shared_ptr&lt;boost::detail::thread_data_base&gt;*, boost::detail::thread_data&lt;void (*)()&gt;*, boost::detail::shared_count&amp;) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6dd0) #3 boost::shared_ptr&lt;boost::detail::thread_data_base&gt;::shared_ptr&lt;boost::detail::thread_data&lt;void (*)()&gt; &gt;(boost::detail::thread_data&lt;void (*)()&gt;*) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c6c7b) #4 boost::thread::make_thread_info(void (*)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3a93) #5 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f82) #6 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) Mutex M24 (0x0000014d9438) created at: #0 pthread_mutex_init /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1082:3 (notify_all_at_thread_exit_p+0x00000045f790) #1 boost::mutex::mutex() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c27d7) #2 __cxx_global_var_init10 &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004439cc) #3 _GLOBAL__sub_I_notify_all_at_thread_exit_pass.cpp &lt;null&gt; (notify_all_at_thread_exit_p+0x000000443a43) #4 __libc_csu_init &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004d538c) Thread T1 (tid=14087, running) created by main thread at: #0 pthread_create /home/development/llvm/3.6.0/final/llvm.src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:896:3 (notify_all_at_thread_exit_p+0x00000045e361) #1 boost::thread::start_thread_noexcept() &lt;null&gt; (libboost_thread.so.1.58.0+0x0000000255b0) #2 boost::thread::start_thread() &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c3ba3) #3 boost::thread::thread&lt;void (&amp;)()&gt;(void (&amp;)()) &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c2f8b) #4 main &lt;null&gt; (notify_all_at_thread_exit_p+0x0000004c0903) SUMMARY: ThreadSanitizer: data race ??:0 boost::detail::atomic_increment(int _Atomic*) ================== No errors detected. ThreadSanitizer: reported 6 warnings EXIT STATUS: 66 </pre> viboes https://svn.boost.org/trac10/ticket/11091 https://svn.boost.org/trac10/ticket/11091 Report #11084: segfault in process_queued_events, boost statechart Fri, 06 Mar 2015 21:17:54 GMT Fri, 06 Mar 2015 21:17:54 GMT <p> Im using boost 1.57.0. I had a segfault in the process_event method. The event (build with react) is processed ok, the segfault is procduced when is processes events inqueued. </p> <p> Im searching in the code, but no exist events in the eventQueue_ queue. What condition would be exist for this thing? </p> <p> Many thanks </p> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> &lt;signal handler called&gt; <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> intrusive_ptr (this=0x8d88efc, evt=...) at /usr/include/boost/smart_ptr/intrusive_ptr.hpp:90 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> process_queued_events (this=0x8d88efc, evt=...) at /usr/include/boost/statechart/state_machine.hpp:907 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10" title="#10: Bugs: allyourbase.jam file is bad. (closed: Out of Date)">#10</a> boost::statechart::state_machine&lt;<a class="missing wiki">ConnectorStateMachine</a>, <a class="missing wiki">ConnIdle</a>, std::allocator&lt;void&gt;, boost::statechart::null_exception_translator&gt;::process_event (this=0x8d88efc, evt=...) </p> <blockquote> <p> at /usr/include/boost/statechart/state_machine.hpp:280 </p> </blockquote> rodrigo.tobar@… https://svn.boost.org/trac10/ticket/11084 https://svn.boost.org/trac10/ticket/11084 Report #11083: tools/build/src/tools/sun.jam needs additional -W0,-abiopt=mangle6 for C++ compilations Fri, 06 Mar 2015 20:12:20 GMT Fri, 06 Mar 2015 22:16:28 GMT <ol><li>Description of the failure </li></ol><p> Several tests inside libs/icl/test directory fail with Oracle Studio 12.4 C++ compiler on Solaris producing error message similar to what one of those tests: libs/icl/test/fastest_interval_set_infix.cpp produces: </p> <blockquote> <p> "CC" -library=stlport4 -xO4 -mt -erroff=%none -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_TEST_NO_AUTO_LINK=1 -DDATE_TIME_INLINE -DNDEBUG -D<span class="underline">typeof</span>=<span class="underline">typeof</span> -I"../../.." -c -o "../../../bin.v2/libs/icl/test/fastest_interval_set_infix.test/sun/release/link-static/stdlib-sun-stlport/threading-multi/fastest_interval_set_infix_/fastest_interval_set_infix.o" "fastest_interval_set_infix_/fastest_interval_set_infix.cpp" </p> </blockquote> <p> "../../../boost/icl/concept/interval_set.hpp", line 187: Error: boost::icl::add_intersection&lt;boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&gt;(boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&amp;, const boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&amp;, const boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;&amp;) and boost::icl::add_intersection&lt;boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&gt;(boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&amp;, const boost::icl::interval_set&lt;boost::rational&lt;int&gt;, less, boost::icl::continuous_interval&lt;boost::rational&lt;int&gt;, less&gt;, allocator&gt;&amp;, const boost::rational&lt;int&gt;&amp;) have same extern name "<span class="underline">1cFboostDiclQadd_intersection4n0BMinterval_set4n0AIrational4Ci</span>nDstdEless3CTA<span class="underline">n0BTcontinuous_interval4n0C_n0E</span>_n0DJallocator3C3<span class="underline"></span>_6Fr3rk3r5_3_". </p> <ol start="2"><li>Cause of the failure. </li></ol><p> This is a name-mangling compiler bug that compiler developers can't fix without breaking compatibility. The bug exists on <a class="missing wiki">Solaris/Sparc</a>, and on Solaris x86 with -m32. The bug does not exist on Linux, or on Solaris x86 with -m64, because the bug was discovered before those platforms were supported. The workaround is to compile with -W0,-abiopt=mangle6, which is the default for the systems were the code works. When you use this option, you must recompile all C++ code and use the option everywhere. </p> <ol start="3"><li>Possible Solution. </li></ol><p> To replace one line inside tools/build/src/tools/sun.jam inside actions compile.c++ subroutine by adding -W0,-abiopt=mangle6 option into compilation instruction. Specifically, replace: </p> <blockquote> <p> "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(&lt;)" "$(&gt;)" </p> </blockquote> <p> with </p> <blockquote> <p> "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -W0,-abiopt=mangle6 -c -o "$(&lt;)" "$(&gt;)" </p> </blockquote> Sergey.Sprogis@… https://svn.boost.org/trac10/ticket/11083 https://svn.boost.org/trac10/ticket/11083 Report #11080: MSVC level 4 compiler warnings in function_output_iterator Fri, 06 Mar 2015 14:10:44 GMT Fri, 06 Mar 2015 14:42:08 GMT <p> When compiling a project using signals2 (boost v. 1.56) with warning level 4 (/W4) in Visual Studio 2013, warnings are generated on the file function_output_iterator.hpp. </p> <p> The warning is C4512: assignment operator could not be generated. </p> <p> Supplying patch which solves the issue by declaring those classes noncopyable. </p> Erik Levin <p.erik.d.levin@…> https://svn.boost.org/trac10/ticket/11080 https://svn.boost.org/trac10/ticket/11080 Report #11073: boost::mpi an order of magnitude slower than pure MPI for sending vector of doubles Thu, 05 Mar 2015 16:11:56 GMT Thu, 05 Mar 2015 16:11:56 GMT <p> As detailed in my email to boost users (h ttp://lists.boost.org/boost-users/2015/02/83807.php) it seems to take an order of magnitude longer to send a vector of doubles using boost::mpi than it takes using C bindings of MPI. I couldn't find anything in the documentation about optimizing transfers of standard types so I'd assume they are already optimized but that doesn't seem to be the case. Am I missing something or is there a serious performance issue in boost::mpi when sending (largeish) vectors of standard types? </p> ilja.j.honkonen@… https://svn.boost.org/trac10/ticket/11073 https://svn.boost.org/trac10/ticket/11073 Report #11072: [iostreams] mapped_file::size() returns the wrong size on 32-bit windows platforms for files larger than 4gb Thu, 05 Mar 2015 12:12:46 GMT Thu, 05 Mar 2015 12:12:46 GMT <p> The signature is size_t mapped_file::size() which is uint32_t for 32-bit builds. This means files larger than 4gb will return an incorrect value. </p> <p> Looking at the windows implementation source for mapped_file <a class="ext-link" href="https://github.com/boostorg/iostreams/blob/master/src/mapped_file.cpp"><span class="icon">​</span>https://github.com/boostorg/iostreams/blob/master/src/mapped_file.cpp</a> around line 220. The size is queried and stored as a local boost::intmax_t but when assigning to size_ it is static_cast to the smaller type. </p> <p> I think the fix is to change the size member to be always 64-bit but I'm not familiar enough with the rest of the library to know if this would have any knock on effects. I suspect this is also an issue on linux as well but I am unable to easily test that at the moment, </p> James Whitworth <fun4jimmy@…> https://svn.boost.org/trac10/ticket/11072 https://svn.boost.org/trac10/ticket/11072 Report #11070: async_connect never calls back on mac with -fvisibility=hidden Wed, 04 Mar 2015 14:50:25 GMT Wed, 18 Mar 2015 16:21:07 GMT <p> See the attached file for a minimal code to reproduce. I have tested this on mac os yosemite with "Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)". </p> <p> To test: </p> <pre class="wiki">mkdir build cd build cmake .. make ./main </pre><p> Result: The program never returns </p> <p> Expected: The program finishes (possibly with a "connection refused" error) </p> <p> What I do is to create a socket in the main binary (without using it) and do an async_connect in a library with hidden symbols. </p> <p> This code works if I comment the -fvisibility=hidden line in the CMakeLists.txt or if I comment the socket creation in main(). </p> <p> This seems to be related to boost::asio::detail::service_registry::keys_match which compares service types. It relies on typeinfo to do that (unless BOOST_ASIO_NO_TYPEID is set). </p> <p> For that to work, typeid_wrapper is forced to default visibility (see #pragma at boost/asio/detail/service_registry.hpp:32), but in recent mac os versions it seems that it is not enough anymore. It seems that a symbol Foo&lt;T&gt; is exported if and only if Foo AND T are set to default visibility. So, in this case, we have two typeinfos for the same type typeid_wrapper&lt;stream_socket_service&lt;ip::tcp&gt;&gt; and they are not merged at dynamic linking because the symbols are hidden. </p> <p> One possible fix is to set default visibility to stream_socket_service and ip::tcp. This makes my example work, but it should be needed also for other services and protocols as well. I have made a patch for for this, but I don't know if this is the right way to fix it. </p> blastrock https://svn.boost.org/trac10/ticket/11070 https://svn.boost.org/trac10/ticket/11070 Report #11069: io_service hangs for 5 minutes Wed, 04 Mar 2015 10:56:37 GMT Fri, 06 Mar 2015 14:43:31 GMT <p> Everything said below is applicable to Linux, 64-bit, CentOS 6.6, compiled by g++ 4.4. </p> <p> I have an io_service object which is runned by several threads. According to the logic at the program finish all sockets which belong to this io_service are closed and these threads begin to exit one by one. </p> <p> Just before threads exits, it posts on the io_service a callback which joins this thread from another thread and cleans up some associated data. </p> <p> Everything runs perfect until only one thread is left. Occasionally this thread is not running any posted event for exactly 5 minutes. It is just waiting for something. After 5 minutes it wakes up, joins all the the threads which were posted, and successfully exits. It doesn't happen all the time, but approx. every 50 program executions I get this situations. </p> <p> According to asio sources, epoll reactor has some timeout which equals to exactly 5 minutes. It seems that there is a bug somewhere. </p> <p> P.S.: Meanwhile the main program thread waits for condition_variable which is set by the last thread running io_service, which signals that all the threads exited. </p> dmitrmax@… https://svn.boost.org/trac10/ticket/11069 https://svn.boost.org/trac10/ticket/11069 Report #11068: Link error with icpc when using Boost* 1.51+ MPL library and g++* Tue, 03 Mar 2015 23:16:19 GMT Tue, 03 Mar 2015 23:16:19 GMT <p> Our customer reported this issue with boost 1.51, the latest boost 1.57 still has this issue. please fix. </p> <p> the issue detail and work around is also posted online if you google the title. </p> <p> %cat t.h #include &lt;boost/mpl/vector.hpp&gt; template&lt;typename T&gt; struct my; void foo(my&lt;boost::mpl::vector&lt;&gt; &gt;* = 0); </p> <p> %cat u.cpp #include "t.h" int main() { foo();} </p> <p> %cat t.cpp #include "t.h" void foo(my&lt;boost::mpl::vector&lt;&gt; &gt;*) {} </p> <p> %icpc -c -I$BOOST_INC u.cpp %g++ -c -I$BOOST_INC t.cpp %icpc u.o t.o u.o: In function `main': u.cpp:(.text+0x2b): undefined reference to `foo(my&lt;boost::mpl::vector&lt;boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, b:mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::nost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na, boost::mpl::na&gt; &gt;*)' </p> <p> Work around: 1.Go to "./boost/mpl/aux/config" directory 2.Comment out the following line in the file adl.hpp </p> <blockquote> <p> BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) </p> </blockquote> Jennifer Jiang <jennifer.l.jiang@…> https://svn.boost.org/trac10/ticket/11068 https://svn.boost.org/trac10/ticket/11068 Report #11067: boost::gregorian::date_iterator missing postfix operators ++ and -- Tue, 03 Mar 2015 16:29:10 GMT Thu, 28 Dec 2017 13:35:12 GMT <p> /* Consider the following (somewhat canonical) code snippet */ { </p> <blockquote> <p> std::vector&lt;boost::gregorian::date&gt; dates(count); auto dt_i = dates.begin(); boost::gregorian::month_iterator m_i(some_start_date, 1); </p> </blockquote> <blockquote> <p> while (dt_i != dts.end()) </p> <blockquote> <p> *dt_i++ = *m_i++; /* this will call prefix ++ operator on m_i </p> <blockquote> <p> leading to subtle bug */ </p> </blockquote> </blockquote> </blockquote> <p> } </p> dkochin@… https://svn.boost.org/trac10/ticket/11067 https://svn.boost.org/trac10/ticket/11067 Report #11066: smart_ptr/detail/sp_convertible.hpp should include <cstddef> Sun, 01 Mar 2015 19:04:11 GMT Sun, 01 Mar 2015 19:04:11 GMT <p> smart_ptr/detail/sp_convertible.hpp uses std::size_t type but does not include cstddef standard header. </p> <p> This can lead to errors if &lt;cstddef&gt; is not included by config headers (happens if stdlib configuration part of config headers is disabled). </p> <pre class="wiki">] cat smart1.cc #include &lt;boost/smart_ptr/intrusive_ptr.hpp&gt; ] gcc smart1.cc -DBOOST_NO_CONFIG -I . In file included from ./boost/smart_ptr/intrusive_ptr.hpp:20:0, from smart1.cc:1: ./boost/smart_ptr/detail/sp_convertible.hpp:61:25: error: 'std::size_t' has not been declared ] </pre><p> I got this behavior on Solaris (with Solaris Studio compiler first), but I bet it does not matter. </p> <p> There is a simple fix: </p> <pre class="wiki">] git diff . diff --git a/include/boost/smart_ptr/detail/sp_convertible.hpp b/include/boost/smart_ptr/detail/sp_convertible.hpp index 31b2627..4bba9ed 100644 --- a/include/boost/smart_ptr/detail/sp_convertible.hpp +++ b/include/boost/smart_ptr/detail/sp_convertible.hpp @@ -16,6 +16,7 @@ // http://www.boost.org/LICENSE_1_0.txt #include &lt;boost/config.hpp&gt; +#include &lt;cstddef&gt; #if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) &amp;&amp; defined( BOOST_NO_SFINAE ) # define BOOST_SP_NO_SP_CONVERTIBLE ] </pre> Fedor Sergeev <Fedor.Sergeev@…> https://svn.boost.org/trac10/ticket/11066 https://svn.boost.org/trac10/ticket/11066 Report #11065: BZIP2_BINARY option broken in Windows Sun, 01 Mar 2015 02:07:20 GMT Sun, 01 Mar 2015 02:07:20 GMT <p> Documentation ( <a href="http://www.boost.org/doc/libs/1_57_0/libs/iostreams/doc/installation.html">http://www.boost.org/doc/libs/1_57_0/libs/iostreams/doc/installation.html</a> ) suggests that users should be able to link to a precompiled bzip2 library. On Windows, that is not the case. In your Jamfile.v2, the following function breaks that option: </p> <pre class="wiki"># Given a name of library, either 'zlib', or 'bzip2', creates the necessary # main target and returns it. If compression is disabled, returns nothing. # The 'sources' argument is the list of sources names for the library, # which will be used if building the library. rule create-library ( library-name : windows-name unix-name : sources + : requirements * ) { local LIB = $(library-name:U) ; if ! $(library-name) in zlib bzip2 { EXIT "Wrong library name passed to 'create-library' in libs/iostream/build/Jamfile.v2" ; } if [ os.name ] = NT &amp;&amp; ! $($(LIB)_SOURCE) &amp;&amp; ! $($(LIB)_INCLUDE) { if $(debug) { ECHO "notice: iostreams: not using $(library-name) compression " ; } NO_$(LIB) = 1 ; # This is necessary to that test Jamfiles don't run compression # tests when not needed. Dirty, but I don't have time to # write full-blow project module for zlib and bzip2. modules.poke : NO_$(LIB) : 1 ; } &lt;snip /&gt; </pre><p> That conditional needs to also consider whether $($(LIB)_BINARY) is set. As a side note if that conditional is fixed, the correct value for Windows would be "bz2" instead of libbz2. The aforementioned documentation makes it sound like Windows desires the prefix, but that is not the case for bzip2. It is, however, for zlib, which inexplicably doesn't use this rule. </p> joshuadavidson@… https://svn.boost.org/trac10/ticket/11065 https://svn.boost.org/trac10/ticket/11065 Report #11060: any_range cannot be used at all Fri, 27 Feb 2015 17:57:16 GMT Sat, 28 Feb 2015 15:50:55 GMT <p> #include &lt;boost/range/any_range.hpp&gt; </p> <p> fails under all major compilers (msvc2013, gcc492, clang35). f.e. clang first error message: </p> <p> ...\boost_1_57_0\boost/range/detail/any_iterator.hpp:131:15: error: no template named 'postfix_increment_proxy'; did you mean 'iterators::detail::postfix_increment_proxy'? </p> BulatZiganshin <Bulat.Ziganshin@…> https://svn.boost.org/trac10/ticket/11060 https://svn.boost.org/trac10/ticket/11060 Report #11059: Ability to compile boost with customize namespace Wed, 25 Feb 2015 20:06:02 GMT Thu, 26 Mar 2015 07:31:28 GMT <p> Rather than using namespace "boost" upon building the libs, I would like to use "boost_MAJOR_MINOR_PATCH". I see that bcp will namespace certain libs, but I want all of them from the onset. Is there a way to set this in bjam or in the bootstrap.sh? </p> <p> Thanks. </p> r4rita@… https://svn.boost.org/trac10/ticket/11059 https://svn.boost.org/trac10/ticket/11059 Report #11058: (parsing) Some thrown exceptions's messages are missing important info about the offending options Wed, 25 Feb 2015 10:45:32 GMT Sat, 04 Apr 2015 21:02:24 GMT <p> The "unknown_option" exception has a message that looks like "unrecognized option". </p> <p> This can be easily improved by modifying the line cmdline.cpp:427 </p> <p> to: boost::throw_exception(unknown_option(opt.string_key)); </p> <p> <em></em><em></em><em></em><em></em><em> Similar issue with " multiple occurences" exception. The exception message does not specify which of the options occured multiple times. This can be fixed by adding the constructor parameter in "multiple_occurences" exception class, and passing it to the parent class. </em></p> Denis N <dzinyss@…> https://svn.boost.org/trac10/ticket/11058 https://svn.boost.org/trac10/ticket/11058 Report #11057: fs::copy fails with FILE_ATTRIBUTE_REPARSE_POINT attribute Wed, 25 Feb 2015 10:01:56 GMT Mon, 27 Jul 2015 05:57:38 GMT <p> Platform : Windows 7 64bits </p> <p> When using fs::copy on a regular file with Windows APL attributes (Archive, sparse file, reparse point), fs::copy returns error code BOOST_ERROR_NOT_SUPPORTED. </p> <p> When passing though the fs::copy, the "from" file is not detected as a regular file walking to the "else" case. </p> <p> With a little investigation, file status reports our file as a reparse file because of the REPARSE_POINT attribute. </p> <p> Is this behaviour the expected one ? knowing that a direct call to fs::copy_file works. </p> loic.velut@… https://svn.boost.org/trac10/ticket/11057 https://svn.boost.org/trac10/ticket/11057 Report #11052: Make all executors copyable pointing to a shared context Fri, 20 Feb 2015 14:08:23 GMT Tue, 29 Sep 2015 20:18:58 GMT <p> Ensuring that the lifetime of an executor is longer than the continuations could be hard for the user. </p> <p> In particular, the tests add a sleep for to ensure it. This is not robust enough. </p> viboes https://svn.boost.org/trac10/ticket/11052 https://svn.boost.org/trac10/ticket/11052 Report #11051: filesystem::temp_directory_path() fails on OSX Fri, 20 Feb 2015 12:17:08 GMT Fri, 20 Feb 2015 12:17:08 GMT <p> On OSX the call to filesystem::temp_directory_path() throws an exception with error ENOTDIR. </p> <p> This happens because on OSX the environment variable TMPDIR has a trailing /. There are quite a few references to this on the web. </p> <p> On my system OSX 10.10.2 the TMPDIR is set to: /var/folders/<a class="changeset" href="https://svn.boost.org/trac10/changeset/8/y110f55j7ws94zpl8wfdpfpx13r441/T" title="Initial content for next-gen Boost website. ">r8/y110f55j7ws94zpl8wfdpfpx13r441/T/</a> </p> <p> Workaround: Use </p> <blockquote> <p> system::error_code ec; filesystem::path p = filesystem::temp_directory_path(ec); </p> </blockquote> <p> and ignore the error code. (which is ENOTDIR) </p> <p> Suggested fix: Remove trailing / after getting environment variable in "boost_1_57_0\libs\filesystem\src\operations.cpp" at around line 1770. </p> Gerik Rhoden <Gerik.Rhoden@…> https://svn.boost.org/trac10/ticket/11051 https://svn.boost.org/trac10/ticket/11051 Report #11041: Add no_unit to duration_style. Tue, 17 Feb 2015 19:08:27 GMT Sat, 05 Mar 2016 09:32:21 GMT <p> When using Chrono I/O V2, currently there's no easy way to specify that only the numeric value of a duration without the unit should be output to a stream (equivalent of duration unit pattern "%v"). It would be useful to add a new enumerator, say 'no_unit', to duration_style enumeration, and a corresponding stream manipulator (e.g. 'no_unit_format'). </p> rkawulak https://svn.boost.org/trac10/ticket/11041 https://svn.boost.org/trac10/ticket/11041 Report #11039: filesystem_error exception uses wrong encoding for what() Mon, 16 Feb 2015 16:20:19 GMT Mon, 16 Feb 2015 16:20:19 GMT <p> If one tries to access locked file on Windows with RU_ru locale, he'll get an exception with "отказано в доступе" (access denied) returned by its what() method. It's written in 1251 encoding, and it's very inconvenient to work with. I think, that there should be at least wwhat() method to get wstring of exception in Unicode. </p> polkovnikov.ph@… https://svn.boost.org/trac10/ticket/11039 https://svn.boost.org/trac10/ticket/11039 Report #11037: last_write_time doesn't work on Windows on files with custom access rights Mon, 16 Feb 2015 16:07:02 GMT Mon, 16 Feb 2015 16:14:47 GMT <p> last_write_time uses <a class="missing wiki">CreateFile</a> internally with some minimal rights. Anyway, it doesn't have rights to read the last write time of "System Volume Information", even though such data are available i.e. for Windows Explorer. The right way to get descriptor for such file or folder is <a class="missing wiki">FindFirstFile</a>. </p> <p> Here's an example based on the answer from <a class="missing wiki">StackOverflow</a> by Hans Passant: </p> <p> std::size_t last_write_time(boost::filesystem::path const &amp; path) { </p> <blockquote> <p> WIN32_FIND_DATAW info; auto hdl = FindFirstFileW(path.wstring().c_str(), &amp;info); if (hdl == INVALID_HANDLE_VALUE) return std::time_t(-1); std::time_t retval = to_time_t(info.ftLastWriteTime); <a class="missing wiki">FindClose</a>(hdl); <em> better use BOOST_SCOPE_EXIT two lines higher return retval; </em></p> </blockquote> <p> } </p> anonymous https://svn.boost.org/trac10/ticket/11037 https://svn.boost.org/trac10/ticket/11037 Report #11034: boost::iostreams::copy: conversion from 'std::streamsize' to 'int' Mon, 16 Feb 2015 15:24:26 GMT Mon, 16 Feb 2015 15:24:26 GMT <p> When using &lt;boost/iostreams/copy.hpp&gt; in VS 2013 Update 2, I've got </p> <p> boost\iostreams\copy.hpp(128): warning C4244: 'argument' : conversion from 'std::streamsize' to 'int', possible loss of data </p> <p> I'm passing <code>ifstream</code> through <code>copy</code> to Poco SHA1, and the files are more than 2 GB long. It is not easy to tell if hashes for the files are correct, but from source code it seems that they are not. </p> <p> The strange row "size_(buffer_size) <em> Cast for <a class="missing wiki">SunPro</a> 5.3." looks like it was made deliberately to fix some other bug. </em></p> <p> Trying to hotfix this bug I run into a problem, that the type should be std::streamsize and std::size_t simultaneosly. size_t is required by std::allocator::allocate. I've found similar problem here: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7873"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7873</a> </p> <p> Unfortunately I don't understand the code well enough to workaround that allocator parameter issue. </p> polkovnikov.ph@… https://svn.boost.org/trac10/ticket/11034 https://svn.boost.org/trac10/ticket/11034 Report #11033: boost::iostreams::copy: conversion from 'std::streamsize' to 'int' Mon, 16 Feb 2015 15:22:22 GMT Mon, 16 Feb 2015 15:22:22 GMT <p> When using &lt;boost/iostreams/copy.hpp&gt; in VS 2013 Update 2, I've got </p> <p> boost\iostreams\copy.hpp(128): warning C4244: 'argument' : conversion from 'std::streamsize' to 'int', possible loss of data </p> <p> I'm passing <code>ifstream</code> through <code>copy</code> to Poco SHA1, and the files are more than 2 GB long. It is not easy to tell if hashes for the files are correct, but from source code it seems that they are not. </p> <p> The strange row "size_(buffer_size) <em> Cast for <a class="missing wiki">SunPro</a> 5.3." looks like it was made deliberately to fix some other bug. </em></p> <p> Trying to hotfix this bug I run into a problem, that the type should be std::streamsize and std::size_t simultaneosly. size_t is required by std::allocator::allocate. I've found similar problem here: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7873"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7873</a> </p> <p> Unfortunately I don't understand the code well enough to workaround that allocator parameter issue. </p> polkovnikov.ph@… https://svn.boost.org/trac10/ticket/11033 https://svn.boost.org/trac10/ticket/11033 Report #11032: boost::offset_ptr needs explicit ctor Mon, 16 Feb 2015 14:38:13 GMT Tue, 17 Nov 2015 14:29:08 GMT <p> Both the libc++ std library implementation and the MSVC library implementation require that their pointer types can be upcast. </p> <p> The list and tree data structures have a class hierarchy of node types and often seem to pass pointers to the base types (or to offset_ptr&lt;void&gt;) that are then upcast to the most derived types. offset_ptr has no explicit constructor that allows upcasts, only implicit ctors for downcasts. </p> <p> We have patched our version of offset_ptr with this constructor: </p> <pre class="wiki">//!Explicit constructor from other offset_ptr. Never throws. template&lt;class T2&gt; explicit offset_ptr(const offset_ptr&lt;T2, DifferenceType, OffsetType, OffsetAlignment&gt; &amp;ptr , typename ipcdetail::enable_if_c&lt; !ipcdetail::is_convertible&lt;T2*, PointedType*&gt;::value &gt;::type * = 0) : internal(ipcdetail::offset_ptr_to_offset&lt;OffsetType&gt;(static_cast&lt;PointedType*&gt;(ptr.get()), this)) {} </pre><p> </p> stheophil@… https://svn.boost.org/trac10/ticket/11032 https://svn.boost.org/trac10/ticket/11032 Report #11030: Building boost with MSVC, MASM and SAFESEH Mon, 16 Feb 2015 07:23:36 GMT Mon, 16 Feb 2015 07:23:36 GMT <p> Hi, </p> <p> in </p> <p> <a class="ext-link" href="http://boost.2283326.n4.nabble.com/context-msvc-SAFESEH-td4652245.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/context-msvc-SAFESEH-td4652245.html</a> </p> <p> there was a discussion about the "safeseh" option for MASM (assembler-compuiler for MSVC). </p> <p> I had troubles linking the MASM output with other SAFESEH libraries. In version 1.56 I could solve the problem by adding /safeseh in boost_1_56_0\libs\context\build\Jamfile.v2 as supposed: </p> <p> actions masm { </p> <blockquote> <p> ml /safeseh /c /Fo"$(&lt;)" "$(&gt;)" </p> </blockquote> <p> } </p> <p> and -safeseh in boost_1_56_0\tools\build\src\tools\msvc.jam, line 952: </p> <blockquote> <p> local default-assembler-i386 = "ml -coff -safeseh" ; </p> </blockquote> <p> It would be great if someone could add a build-option to specify safeseh for the assembler-compiler. </p> <p> Tobias </p> Tobias Loew https://svn.boost.org/trac10/ticket/11030 https://svn.boost.org/trac10/ticket/11030 Report #11026: Add exceptions to file sinks when writing fails Sat, 14 Feb 2015 16:03:09 GMT Sat, 14 Feb 2015 16:03:09 GMT <p> Currently, if writing to a stream fails, the error goes unnoticed by the application. This primarily concerns text_file_backend and text_multifile_backend. There should be an exception thrown in such cases, preferably containing the cause of failure, which is not currently provided by the underlying stream. Also, some failures tend to happen repeatedly over prolonged time (e.g. when there is no free space left on the filesystem), and the library should not spam the application with exceptions in such cases. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/11026 https://svn.boost.org/trac10/ticket/11026 Report #11021: Natural sort Fri, 13 Feb 2015 17:03:12 GMT Mon, 11 Jul 2016 21:31:21 GMT <p> Alphabetically sorting gives unwanted results for humans. For example the following strings get sorted this way: Arena 1 Arena 10 Arena 2 </p> <p> What humans like is: Arena 1 Arena 2 Arena 10 </p> <p> This is not trivial since the numbers can appear anywhere. Would this be a nice extension for Boost as well? Microsoft has solved this in StrCmpLogicalW. See also 'sorting-for-humans-natural-sort-order' (can't include a link; I get a trac-think-it-is-a-spam error). </p> gast128@… https://svn.boost.org/trac10/ticket/11021 https://svn.boost.org/trac10/ticket/11021 Report #11019: Error while building 1.57 with MinGW4.7.1 Fri, 13 Feb 2015 14:49:12 GMT Fri, 13 Feb 2015 14:56:41 GMT <p> I'm trying to build Boost 1.57 with GCC 4.7.1 bundled with <a class="missing wiki">CodeBlocks</a> on Win7 64b. </p> <p> I did this : </p> <p> mkdir c:\boost\build cd c:\boost\tools\build\v2 bootstrap.bat gcc b2 install --prefix=C:\boost\build set PATH=%PATH%;C:\boost\build\bin cd c:\boost b2 --build-dir=C:\boost\build toolset=gcc --build-type=complete </p> <p> And I get this : </p> <p> error: Name clash for '&lt;pstage\lib&gt;libboost_exception-mgw47-mt-1_57.a' </p> <p> error: Tried to build the target twice, with property sets having error: these incompabile properties: </p> <p> error: - none error: - &lt;linkflags&gt;-shared-libgcc &lt;linkflags&gt;-shared-libstdc++ </p> <p> error: Please make sure to have consistent requirements for these error: properties everywhere in your project, especially for install error: targets. </p> <p> Did I miss anything ? </p> <p> I haven't found anything on google / boost bug database. </p> anonymous https://svn.boost.org/trac10/ticket/11019 https://svn.boost.org/trac10/ticket/11019 Report #11017: typo in Boost.Hash documentation Thu, 12 Feb 2015 19:54:55 GMT Fri, 13 Feb 2015 18:35:49 GMT <p> In <a href="http://www.boost.org/doc/libs/1_57_0/doc/html/hash/tutorial.html">http://www.boost.org/doc/libs/1_57_0/doc/html/hash/tutorial.html</a> </p> <pre class="wiki"> std::transform(x.begin(), x.end(), std::insert_iterator(hashes), boost::hash&lt;typename Container::value_type&gt;()); </pre><p> std::insert_iterator(hashes) is not a valid syntax. Use std::back_inserter(hashes) instead. </p> anonymous https://svn.boost.org/trac10/ticket/11017 https://svn.boost.org/trac10/ticket/11017 Report #11015: Bug with boost/graph/detail/edge.hpp Wed, 11 Feb 2015 17:17:41 GMT Wed, 04 Nov 2015 13:58:02 GMT <p> Hi, </p> <p> I found a bug and it has not been solved yet (i searched on the latest source on the git repo), ok here it is: </p> <p> The bug is that the use of the header "boost/graph/detail/edge.hpp" alone in a program cause an error at the compilation: </p> <p> This error say that the "hash struct" is not a template class. After some searching i noticed that this "hash struct" is a template specialization, and the problem is that the "hash struct" generic template is not included in this file, i fixed it by adding the "boost/functional/hash/hash.hpp" header. </p> <p> I don't know if this fix could be enough, but it works for my use. </p> mzartek@… https://svn.boost.org/trac10/ticket/11015 https://svn.boost.org/trac10/ticket/11015 Report #11013: file_descriptor_sink won't create a file in "app" mode Tue, 10 Feb 2015 17:55:44 GMT Tue, 10 Feb 2015 17:55:44 GMT <p> When file_descriptor_sink(filename, ios::app) is used on Linux, it refuses to create the file if the file doesn't already exist. </p> <p> This is inconsistent with std::ofstream's behavior with ios::app, and it's inconsistent with file_descriptor_sink's behavior on Windows (where it does create the file if it doesn't exist). </p> <p> See pull request 9 on the boostorg/iostreams <a class="missing wiki">GitHub</a> repository. </p> Josh Kelley <joshkel@…> https://svn.boost.org/trac10/ticket/11013 https://svn.boost.org/trac10/ticket/11013 Report #11010: Why does boost setup suck Tue, 10 Feb 2015 01:46:21 GMT Tue, 10 Feb 2015 01:46:21 GMT <p> You guys need better write ups and need to show how to install and use on major IDE like Xcode, Visual Studios, Code Blocks, etc. this has the worst user experience ever.. </p> anonymous https://svn.boost.org/trac10/ticket/11010 https://svn.boost.org/trac10/ticket/11010 Report #11003: Pointless use of using namespace std Mon, 09 Feb 2015 15:59:40 GMT Mon, 09 Feb 2015 15:59:40 GMT <p> There's a few lines in boost/asio/detail/impl/signal_set_service.ipp that use "using namespace std" inside a block for a single call to std::memset rather than just using "std::memset." These blocks of code are also clearly copied from each other but that might not be an issue. </p> <p> Here's a patch switching those lines around: </p> <pre class="wiki">--- boost/asio/detail/impl/signal_set_service.ipp Mon Feb 9 10:42:58 2015 +++ boost/asio/detail/impl/signal_set_service.ipp Mon Feb 9 10:44:35 2015 @@ -271,9 +271,8 @@ if (state-&gt;registration_count_[signal_number] == 0) { # if defined(BOOST_ASIO_HAS_SIGACTION) - using namespace std; // For memset. struct sigaction sa; - memset(&amp;sa, 0, sizeof(sa)); + std::memset(&amp;sa, 0, sizeof(sa)); sa.sa_handler = boost_asio_signal_handler; sigfillset(&amp;sa.sa_mask); if (::sigaction(signal_number, &amp;sa, 0) == -1) @@ -342,9 +341,8 @@ if (state-&gt;registration_count_[signal_number] == 1) { # if defined(BOOST_ASIO_HAS_SIGACTION) - using namespace std; // For memset. struct sigaction sa; - memset(&amp;sa, 0, sizeof(sa)); + std::memset(&amp;sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; if (::sigaction(signal_number, &amp;sa, 0) == -1) # else // defined(BOOST_ASIO_HAS_SIGACTION) @@ -396,9 +394,8 @@ if (state-&gt;registration_count_[reg-&gt;signal_number_] == 1) { # if defined(BOOST_ASIO_HAS_SIGACTION) - using namespace std; // For memset. struct sigaction sa; - memset(&amp;sa, 0, sizeof(sa)); + std::memset(&amp;sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; if (::sigaction(reg-&gt;signal_number_, &amp;sa, 0) == -1) # else // defined(BOOST_ASIO_HAS_SIGACTION) </pre> fsmv@… https://svn.boost.org/trac10/ticket/11003 https://svn.boost.org/trac10/ticket/11003 Report #11002: winsock_init.ipp(36) : error C2665: 'InterlockedIncrement' Mon, 09 Feb 2015 08:35:59 GMT Mon, 09 Feb 2015 08:35:59 GMT <p> current compilation of code that deps on boost::asio fails with vs2013 for x64, because the used types cannot be resolved in an unambiguous manner. </p> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(36) : error C2665: '<a class="missing wiki">InterlockedIncrement</a>' : none of the 3 over loads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8844): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned </span>int64 *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8833): or 'unsigned long <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned long *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8824): or 'unsigned int <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned int *)' while trying to match the argument list '(long *)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(40) : error C2665: '<a class="missing wiki">InterlockedExchange</a>' : none of the 3 overl oads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8910): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedExchange</a>(volatile unsigned </span>int64 *,unsigned </p> </blockquote> <p> <span class="underline">int64)' </span></p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8898): or 'unsigned long <a class="missing wiki">InterlockedExchange</a>(volatile unsigned long *,unsigned long)' </p> </blockquote> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8888): or 'unsigned int <a class="missing wiki">InterlockedExchange</a>(volatile unsigned int *,unsigned int)' while trying to match the argument list '(long *, long)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(46) : error C2665: '<a class="missing wiki">InterlockedIncrement</a>' : none of the 3 over loads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8844): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned </span>int64 *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8833): or 'unsigned long <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned long *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8824): or 'unsigned int <a class="missing wiki">InterlockedIncrement</a>(volatile unsigned int *)' while trying to match the argument list '(long *)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(48) : error C2665: '<a class="missing wiki">InterlockedExchange</a>' : none of the 3 overl oads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8910): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedExchange</a>(volatile unsigned </span>int64 *,unsigned </p> </blockquote> <p> <span class="underline">int64)' </span></p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8898): or 'unsigned long <a class="missing wiki">InterlockedExchange</a>(volatile unsigned long *,unsigned long)' </p> </blockquote> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8888): or 'unsigned int <a class="missing wiki">InterlockedExchange</a>(volatile unsigned int *,unsigned int)' while trying to match the argument list '(long *, int)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(54) : error C2665: '<a class="missing wiki">InterlockedDecrement</a>' : none of the 3 over loads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8875): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned </span>int64 *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8864): or 'unsigned long <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned long *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8855): or 'unsigned int <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned int *)' while trying to match the argument list '(long *)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(62) : error C2665: '<a class="missing wiki">InterlockedDecrement</a>' : none of the 3 over loads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8875): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned </span>int64 *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8864): or 'unsigned long <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned long *)' C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8855): or 'unsigned int <a class="missing wiki">InterlockedDecrement</a>(volatile unsigned int *)' while trying to match the argument list '(long *)' </p> </blockquote> <p> &lt;build-dir&gt;\vc120-mt-gd-6_5-x64\include\boost/asio/detail/impl/winsock_init.ipp(67) : error C2665: '<a class="missing wiki">InterlockedExchangeAdd</a>' : none of the 3 ov erloads could convert all the argument types </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8964): could be 'unsigned <span class="underline">int64 <a class="missing wiki">InterlockedExchangeAdd</a>(volatile unsigned </span>int64 *,unsign </p> </blockquote> <p> ed <span class="underline">int64)' </span></p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8942): or 'unsigned long <a class="missing wiki">InterlockedExchangeAdd</a>(volatile unsigned long *,unsigned lon </p> </blockquote> <p> g)' </p> <blockquote> <p> C:\Program Files (x86)\Windows Kits\8.1\include\um\winbase.h(8922): or 'unsigned int <a class="missing wiki">InterlockedExchangeAdd</a>(volatile unsigned int *,unsigned int)' </p> </blockquote> <blockquote> <p> while trying to match the argument list '(long *, int)' </p> </blockquote> ingo.loehken@… https://svn.boost.org/trac10/ticket/11002 https://svn.boost.org/trac10/ticket/11002 Report #11001: insert_range lacks support for extensible associative sequences Mon, 09 Feb 2015 00:10:47 GMT Mon, 09 Feb 2015 00:10:47 GMT <p> According to reference, the insert_range should work for any Extensible sequence or Extensible Associative sequence, but the following fails to compile. </p> <pre class="wiki">#include &lt;boost/mpl/pair.hpp&gt; #include &lt;boost/mpl/map.hpp&gt; #include &lt;boost/mpl/insert_range.hpp&gt; #include &lt;boost/mpl/end.hpp&gt; #include &lt;boost/mpl/equal.hpp&gt; typedef boost::mpl::map&lt;boost::mpl::pair&lt;int, int&gt;, boost::mpl::pair&lt;void, void&gt; &gt; myMap; typedef boost::mpl::insert_range&lt;boost::mpl::map&lt;&gt;, boost::mpl::end&lt;boost::mpl::map&lt;&gt; &gt;::type, myMap&gt;::type copyOfMyMap; BOOST_MPL_ASSERT((boost::mpl::equal&lt;myMap, copyOfMyMap&gt;)); int main() { return 0; } </pre><p> I tracked the issue down to the definition of insert_range_impl, whose default implementation assumes a front_inserter is defined for the given sequence, but neither Extensible nor every Extensible Associative sequences are required to also be a Front Extensible sequence: </p> <pre class="wiki">reverse_copy&lt; joint_view&lt; iterator_range&lt;typename begin&lt;Sequence&gt;::type,Pos&gt; , joint_view&lt; Range , iterator_range&lt;Pos,typename end&lt;Sequence&gt;::type&gt; &gt; &gt; , front_inserter&lt; typename clear&lt;Sequence&gt;::type &gt; &gt; </pre><p> I found the fix to be implementing insert_range_impl by means of insert, which is defined for every Extensible sequence, using fold to iterate: </p> <pre class="wiki">fold&lt; joint_view&lt; iterator_range&lt;typename begin&lt;Sequence&gt;::type,Pos&gt; , joint_view&lt; Range , iterator_range&lt;Pos,typename end&lt;Sequence&gt;::type&gt; &gt; &gt; , typename clear&lt;Sequence&gt;::type , insert&lt;_1, end&lt;_1&gt;, _2&gt; &gt; </pre><p> I'll file a pull request for this fix, any comments are welcome. </p> brunocodutra@… https://svn.boost.org/trac10/ticket/11001 https://svn.boost.org/trac10/ticket/11001 Report #10999: Issue while compiling mol with icc. Fri, 06 Feb 2015 23:00:02 GMT Fri, 06 Feb 2015 23:00:02 GMT <p> The error described at: </p> <p> <a class="ext-link" href="https://software.intel.com/en-us/forums/topic/516083"><span class="icon">​</span>https://software.intel.com/en-us/forums/topic/516083</a> </p> <p> is still there in boost 1.57.0 </p> <p> we worked around the issue with: </p> <p> <a class="ext-link" href="https://github.com/cms-sw/cmsdist/blob/IB/CMSSW_7_4_X/stable/boost-1.57.0-icc.patch"><span class="icon">​</span>https://github.com/cms-sw/cmsdist/blob/IB/CMSSW_7_4_X/stable/boost-1.57.0-icc.patch</a> </p> <p> can this be merged upstream? </p> giulio.eulisse@… https://svn.boost.org/trac10/ticket/10999 https://svn.boost.org/trac10/ticket/10999 Report #10998: Error: Boost_MPI send(): explicit specialization must precede its first use Fri, 06 Feb 2015 12:26:47 GMT Tue, 21 Feb 2017 14:57:24 GMT <p> Dear Boost-Support, </p> <p> when compiling a file with NVCC 6.5.14 containing calls to isend() etc. of boost:mpi, the following error occ </p> <p> nvcc -std=c++11 -arch=sm_20 -c file.cu boost/1.55.0-gnu4.8/include/boost/mpi/communicator.hpp(1612): error: explicit specialization of function "boost::mpi::communicator::send(int, int, const T &amp;) const [with T=boost::mpi::packed_oarchive]" must precede its first use ( (1127): here) </p> <p> boost/1.55.0-gnu4.8/include/boost/mpi/communicator.hpp(1635): error: explicit specialization of function "boost::mpi::communicator::recv(int, int, T &amp;) const [with T=boost::mpi::packed_iarchive]" must precede its first use ( (1191): here) </p> <p> boost/1.55.0-gnu4.8/include/boost/mpi/communicator.hpp(1670): error: explicit specialization of function "boost::mpi::communicator::isend(int, int, const T &amp;) const [with T=boost::mpi::packed_oarchive]" must precede its first use ( (1276): here) </p> <p> Could you please help me regarding the error above? </p> <p> Best regards, Peter </p> anonymous https://svn.boost.org/trac10/ticket/10998 https://svn.boost.org/trac10/ticket/10998 Report #10989: strided breaks on impure traversal tags Mon, 02 Feb 2015 17:31:03 GMT Mon, 02 Feb 2015 20:19:32 GMT <p> From <a class="ext-link" href="http://stackoverflow.com/questions/28280553/boostadaptorsstrided-cannot-be-used-after-boostadaptorstransformed"><span class="icon">​</span>http://stackoverflow.com/questions/28280553/boostadaptorsstrided-cannot-be-used-after-boostadaptorstransformed</a> </p> <p> [...]/boost/1.57.0/include/boost/range/iterator_range_core.hpp:216:20: error: no matching function for call to ‘boost::range_detail::strided_iterator&lt;boost::iterators::transform_iterator&lt;TrivialTrafo, __gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int&gt; &gt;, boost::iterators::use_default, boost::iterators::use_default&gt;, boost::iterators::detail::iterator_category_with_traversal&lt;std::input_iterator_tag, boost::iterators::random_access_traversal_tag&gt; &gt;::strided_iterator(boost::range_detail::strided_iterator&lt;boost::iterators::transform_iterator&lt;TrivialTrafo, __gnu_cxx::__normal_iterator&lt;int*, std::vector&lt;int&gt; &gt;, boost::iterators::use_default, boost::iterators::use_default&gt;, boost::iterators::random_access_traversal_tag&gt;&amp;)’ </p> <blockquote> <p> , m_End(End) </p> </blockquote> <p> Problem is that make_begin_strided_iterator et al coerce the returned iterator traversal category/tag to a pure traversal tag, which doesn't necessarily agree with the Category passed to iterator_range for the base type. Fix is to use iterators::pure_iterator_traversal. </p> anonymous https://svn.boost.org/trac10/ticket/10989 https://svn.boost.org/trac10/ticket/10989 Report #10988: Range filtered adapter incorrectly requires a ForwardRange Sun, 01 Feb 2015 18:26:23 GMT Sun, 01 Feb 2015 19:06:54 GMT <p> The filtered Range adapter incorrectly requires a <a class="missing wiki">ForwardRange</a>. A <a class="missing wiki">SinglePassRange</a> should be sufficient, since it is for the Boost.Iterator filter_iterator. </p> Neil Groves https://svn.boost.org/trac10/ticket/10988 https://svn.boost.org/trac10/ticket/10988 Report #10986: Missing std:: qualifier for rand in test_triangular.cpp Fri, 30 Jan 2015 21:44:59 GMT Fri, 30 Jan 2015 21:44:59 GMT <p> Compiling libs/numeric/ublas/test/test_triangular.cpp on Solaris 11.2 with Oracle Solaris Studio12.4 compiler with -library=stlport4, we see </p> <p> "../libs/numeric/ublas/test/test_triangular.cpp", line 49: Error: The function "rand" must have a prototype. </p> <p> "../libs/numeric/ublas/test/test_triangular.cpp", line 51: Error: The function "rand" must have a prototype. </p> <p> "../libs/numeric/ublas/test/test_triangular.cpp", line 48: Error: The function "rand" must have a prototype. </p> <p> 3 Error(s) detected. </p> <p> The rand() function needs to be qualified with std::. </p> <p> diff ./test_triangular.cpp ./test_triangular.cpp_orig </p> <p> 3,5d2 &lt; #include &lt;cstdlib&gt; </p> <p> &lt; &lt; 51,52c48,49 &lt; b(i) = std::rand() % 10; &lt; double main = -10 + std::rand() % 20 ; --- </p> <blockquote class="citation"> <blockquote> <p> b(i) = rand() % 10; double main = -10 + rand() % 20 ; </p> </blockquote> </blockquote> <p> 54c51 &lt; double side = -10 + std::rand() % 20 ; --- </p> <blockquote class="citation"> <blockquote> <p> double side = -10 + rand() % 20 ; </p> </blockquote> </blockquote> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/10986 https://svn.boost.org/trac10/ticket/10986 Report #10983: box-box distance doesn't seem to work with spherical coordinate systems Thu, 29 Jan 2015 23:29:45 GMT Mon, 11 May 2015 05:25:04 GMT <p> The "geometry distance matrix" indicates that all geometry-to-geometry distances have been implemented in 1.57. But the box-to-box distance doesn't seem to work with spherical geometries, at least with gcc 4.4.7. </p> <p> One of the errors seems to be a "not yet implemented" error, so perhaps it hasn't been done yet. It does have some tricky business that a cartesian box wouldn't have, but it's a straightforward exercise in trying different cases. </p> <p> I'm certainly delighted with boost::geometry's functionality as is, but it would be great if this worked. And many apologies if the mistake is mine. </p> <p> See example below for problem. </p> <hr /> <pre class="wiki">#include &lt;boost/geometry/geometry.hpp&gt; typedef boost::geometry::model::point&lt;double,2,boost::geometry::cs::cartesian&gt; cartesian_point; typedef boost::geometry::model::point&lt;double,2,boost::geometry::cs::spherical_equatorial&lt;boost::geometry::degree&gt; &gt; spherical_point; int main() { // Works... boost::geometry::model::box&lt;cartesian_point&gt; c_box1, c_box2; boost::geometry::distance(c_box1,c_box2); // Doesn't work! boost::geometry::model::box&lt;spherical_point&gt; s_box1, s_box2; boost::geometry::distance(s_box1,s_box2); return 0; } </pre> mdrinto@… https://svn.boost.org/trac10/ticket/10983 https://svn.boost.org/trac10/ticket/10983 Report #10982: addressof.hpp: should BOOST_ASIO_HAS_STD_ADDRESSOF be replaced with BOOST_NO_CXX11_ADDRESSOF ? Thu, 29 Jan 2015 13:40:50 GMT Fri, 13 Feb 2015 18:27:53 GMT <p> Hi, </p> <p> I'm on the border-line with compilers supporting (or not) various C++0x versions, and found this to be an issue: boost config already contains a macro: </p> <p> BOOST_NO_CXX11_ADDRESSOF </p> <p> However, in <a class="missing wiki">BoostAsio</a> - this looks like a duplication that really ignores the config, and in order to compile asio BOOST_ASIO_HAS_STD_ADDRESSOF needs also be defined. </p> <p> Shouldn't it be replaced by BOOST_NO_CXX11_ADDRESSOF defined in config instead? </p> lukasz.forynski@… https://svn.boost.org/trac10/ticket/10982 https://svn.boost.org/trac10/ticket/10982 Report #10981: boost::function breaks with assignment or construction from nullptr Thu, 29 Jan 2015 12:57:48 GMT Thu, 29 Jan 2015 12:57:48 GMT <p> Repro: </p> <pre class="wiki">#include &lt;boost/function.hpp&gt; int main() { boost::function&lt;int()&gt; foo; foo = nullptr; } </pre><p> This appears to hit the operator= overload taking a functor. An overload for std::nullptr_t should probably be added. </p> <p> There appears to be a similar issue with the constructor as well: </p> <pre class="wiki">#include &lt;boost/function.hpp&gt; int main() { boost::function&lt;int()&gt; foo = nullptr; } </pre> anonymous https://svn.boost.org/trac10/ticket/10981 https://svn.boost.org/trac10/ticket/10981 Report #10977: Add functions for obtaining full MPI transfer info of variable Wed, 28 Jan 2015 18:40:00 GMT Wed, 28 Jan 2015 18:40:00 GMT <p> I have a couple of MPI projects which duplicate functionality, so that neither depends on the other, for which boost::mpi would seem like a good place. </p> <p> In order to transfer something using MPI 3 pieces of info are required: 1) the starting address of data, 2) number of items (contiguous in memory) to send and 3) the (MPI) type of each item. As far as I can tell functions in boost::mpi only return the type but not the count nor the address of variables. I'd like to see this functionality in boost or add it myself if that's ok. For basic types the function would be e.g.: </p> <p> std::tuple&lt; </p> <blockquote> <p> void*, int, MPI_Datatype </p> <blockquote class="citation"> <p> get_mpi_transfer_info(const char&amp; variable) { </p> </blockquote> <p> return std::make_tuple( </p> <blockquote> <p> (void*) &amp;variable, 1, MPI_CHAR </p> </blockquote> <p> ); </p> </blockquote> <p> } </p> <p> For std types in contiguous containers only the count would differ (omitting error checking): </p> <p> std::tuple&lt; </p> <blockquote> <p> void*, int, MPI_Datatype </p> <blockquote class="citation"> <p> get_mpi_transfer_info(const std::vector&lt;char&gt;&amp; variable) { </p> </blockquote> <p> return std::make_tuple( </p> <blockquote> <p> (void*) variable.data(), variable.size(), MPI_CHAR </p> </blockquote> <p> ); </p> </blockquote> <p> } </p> <p> For non-standard types the function would try to use the types' get_mpi_transfer_info() member function. Here's one of my current implementations for this functionality (add missing h to beginning of link): ttps://github.com/nasailja/gensimcell/blob/master/source/get_var_mpi_datatype.hpp It can probably be shortened with better use of overloads, templates, etc. but should give a good idea of what I'm after. </p> ilja.j.honkonen@… https://svn.boost.org/trac10/ticket/10977 https://svn.boost.org/trac10/ticket/10977 Report #10974: dynamic_bitset.hpp should not use "using namespace std" Tue, 27 Jan 2015 15:23:28 GMT Tue, 27 Jan 2015 15:23:28 GMT <p> Inside a few methods in the file dynamic_bitset.hpp, the statement "using namespace std" is used. This can cause havoc on some systems. The attached patch (made against 1.57.0) fixes this. </p> <p> I was unable to thoroughly test this for BOOST_OLD_IOSTREAMS, because I don't have such an ancient environment at my disposal. </p> loose@… https://svn.boost.org/trac10/ticket/10974 https://svn.boost.org/trac10/ticket/10974 Report #10973: Bootstrap doesn't configure project-config.jam correctly on Windows 8 Tue, 27 Jan 2015 12:27:34 GMT Tue, 27 Jan 2015 12:27:34 GMT <p> "Bootstrap gcc" or "Bootstrap mingw" doesn't configure the project-config.jam file correctly on Windows. </p> <p> It will always set "using msvc." This is corrected when I set "using gcc" in project-config.jam. </p> <p> I use TGM-GCC version 4.9.2 on 64-bit Windows 8. I compiled the 32-bit versions of the Boost library. I successfully compiled the libraries after doing the above. </p> anonymous https://svn.boost.org/trac10/ticket/10973 https://svn.boost.org/trac10/ticket/10973 Report #10970: uses of make_reverse_iterator conflict with C++14's. Sun, 25 Jan 2015 15:59:41 GMT Sat, 07 May 2016 19:04:55 GMT <p> C++14 introduces make_reverse_iterator, which conflicts with Boost's when compiling with libc++. </p> <p> At the very least, this affects targets using the multi_index library (ordered_index.hpp, random_access_index.hpp, and sequenced_index.hpp). </p> <p> A quick workaround would be to simply replace occurrences of make_reverse_iterator with boost::make_reverse_iterator, following the trend in the accumulators (statistics/tail.hpp) and graph (core_numbers.hpp) libraries. </p> Larisse Voufo <lvoufo@…> https://svn.boost.org/trac10/ticket/10970 https://svn.boost.org/trac10/ticket/10970 Report #10967: Timed wait points inconsistently convert relative to absolute waits Sat, 24 Jan 2015 19:54:24 GMT Tue, 14 Nov 2017 20:55:59 GMT <p> Possibly related: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6787" title="#6787: Bugs: boost::thread::sleep() hangs if system time is rolled back (closed: fixed)">#6787</a> </p> <p> Stepping through the Boost.Thread win32 implementation, interruptible_wait() and non_interruptible_wait() are capable of accepting both relative and absolute timeouts. However condition_variable and thread join are always implemented as absolute timeouts, while thread sleep is always implemented as relative timeouts. I also see that timed mutex always converts absolute to relative too on win32. </p> <p> These all should be fixed to correctly use either relative or absolute timeouts as requested by the user, firstly at the upper layers where necessary. Then all waits on Windows always need to go via interruptible_wait() or non_interruptible_wait() as appropriate as these implement the proper calls on Windows for absolute deadline timers when absolute timeouts are requested. </p> Niall Douglas https://svn.boost.org/trac10/ticket/10967 https://svn.boost.org/trac10/ticket/10967 Report #10966: packaged_task::reset should not reuse the shared state to conform to C++11 Sat, 24 Jan 2015 09:51:16 GMT Mon, 26 Jan 2015 07:33:49 GMT <p> The standard says </p> <pre class="wiki">void reset(); Effects: as if *this = packaged_task(std::move(f)), where f is the task stored in *this. [ Note: This constructs a new shared state for *this. The old state is abandoned (30.6.4). — end note ] Throws: — bad_alloc if memory for the new shared state could not be allocated. — any exception thrown by the move constructor of the task stored in the shared state. — future_error with an error condition of no_state if *this has no shared state. </pre><p> Boost.Thread reuse the shared state. </p> <pre class="wiki">Effects: Reset the state of the packaged_task so that it can be called again. </pre> viboes https://svn.boost.org/trac10/ticket/10966 https://svn.boost.org/trac10/ticket/10966 Report #10962: libs/pool/test/test_bug_5526.cpp fails to compile due to missing header Fri, 23 Jan 2015 18:57:19 GMT Wed, 25 Feb 2015 19:34:58 GMT <p> Test libs/pool/test/test_bug_5526.cpp fails to compile with oracle Solaris Studio12.4 on Solaris11.2. The error message is <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: auto_ptr is not a member of std. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: A declaration does not specify a tag or an identifier. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: Use ";" to terminate declarations. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: A declaration was expected instead of "&lt;". <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Warning: declarator required in declaration. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: Use ";" to terminate declarations. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: A declaration was expected instead of "&gt;". <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: aptr is not defined. <br /> "../libs/pool/test/test_bug_5526.cpp", line 29: Error: A declaration does not specify a tag or an identifier. <br /> "../libs/pool/test/test_bug_5526.cpp", line 33: Error: aptr is not defined. <br /> 9 Error(s) and 1 Warning(s) detected. <br /> </p> <p> Adding <br /> #include &lt;memory&gt; <br /> to the test seems to resolve the issue. <br /> </p> <p> The diff's are <br /> diff ../libs/pool/test/test_bug_5526.cpp ../libs/pool/test/test_bug_5526.cpp_orig <br /> 10d9 <br /> &lt; #include &lt;memory&gt; </p> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/10962 https://svn.boost.org/trac10/ticket/10962 Report #10956: null point exception using asio based on linux Fri, 23 Jan 2015 06:58:49 GMT Thu, 11 Aug 2016 03:57:59 GMT <p> I have writen a linux server application based on centos boost asio.I have created thread pool accelerating asyn asio,but it is cored down like following. <a class="missing ticket">#0</a> start_op (this=0x1196e18, impl=..., op_type=1, op=0x7fd2b01a8c30, is_continuation=&lt;value optimized out&gt;, is_non_blocking=true, noop=false) </p> <blockquote> <p> at /usr/share/server_depends/cmake/depends/net/../../../depends/net/../boost_1_56_0/boost/asio/detail/impl/epoll_reactor.ipp:219 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> boost::asio::detail::reactive_socket_service_base::start_op (this=0x1196e18, impl=..., op_type=1, op=0x7fd2b01a8c30, is_continuation=&lt;value optimized out&gt;, is_non_blocking=true, noop=false) </p> <blockquote> <p> at /usr/share/server_depends/cmake/depends/net/../../../depends/net/../boost_1_56_0/boost/asio/detail/impl/reactive_socket_service_base.ipp:214 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x00007fd2b94dc667 in async_send&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer, asio_net::shared_const_buffer&gt;, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;, asio_net::shared_const_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t&lt;void, boost::_mfi::mf2&lt;void, asio_net::<a class="missing wiki">AsioSocket</a>, boost::system::error_code const&amp;, unsigned long&gt;, boost::_bi::list3&lt;boost::_bi::value&lt;asio_net::AsioSocket*&gt;, boost::arg&lt;1&gt;, boost::arg&lt;2&gt; &gt; &gt; &gt; &gt; (this=&lt;value optimized out&gt;, ec=&lt;value optimized out&gt;, bytes_transferred=&lt;value optimized out&gt;, start=&lt;value optimized out&gt;) </p> <blockquote> <p> at /usr/share/server_depends/cmake/depends/net/../../../depends/net/../boost_1_56_0/boost/asio/detail/reactive_socket_service_base.hpp:216 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> async_send&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer, asio_net::shared_const_buffer&gt;, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;, asio_net::shared_const_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t&lt;void, boost::_mfi::mf2&lt;void, asio_net::<a class="missing wiki">AsioSocket</a>, boost::system::error_code const&amp;, unsigned long&gt;, boost::_bi::list3&lt;boost::_bi::value&lt;asio_net::AsioSocket*&gt;, boost::arg&lt;1&gt;, boost::arg&lt;2&gt; &gt; &gt; &gt; &gt; (this=&lt;value optimized out&gt;, ec=&lt;value optimized out&gt;, bytes_transferred=&lt;value optimized out&gt;, start=&lt;value optimized out&gt;) </p> <blockquote> <p> at /usr/share/server_depends/cmake/depends/net/../../../depends/net/../boost_1_56_0/boost/asio/stream_socket_service.hpp:330 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> async_write_some&lt;boost::asio::detail::consuming_buffers&lt;boost::asio::const_buffer, asio_net::shared_const_buffer&gt;, boost::asio::detail::write_op&lt;boost::asio::basic_stream_socket&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;, asio_net::shared_const_buffer, boost::asio::detail::transfer_all_t, boost::_bi::bind_t&lt;void, boost::_mfi::mf2&lt;void, asio_net::<a class="missing wiki">AsioSocket</a>, boost::system::error_code const&amp;, unsigned long&gt;, boost::_bi::list3&lt;boost::_bi::value&lt;asio_net::AsioSocket*&gt;, boost::arg&lt;1&gt;, boost::arg&lt;2&gt; &gt; &gt; &gt; &gt; (this=&lt;value optimized out&gt;, ec=&lt;value optimized out&gt;, bytes_transferred=&lt;value optimized out&gt;, start=&lt;value optimized out&gt;) </p> <blockquote> <p> at /usr/share/server_depends/cmake/depends/net/../../../depends/net/../boost_1_56_0/boost/asio/basic_stream_socket.hpp:732 </p> </blockquote> <p> I guess that the socket writing thread starts a reactor io when the other thread closes it concurrency.Is that a bug?Does the socket closing function should add some lock to avoid it. </p> xuzhiteng <419855192@…> https://svn.boost.org/trac10/ticket/10956 https://svn.boost.org/trac10/ticket/10956 Report #10954: boost::spirit::iterator_policies::split_std_deque memory leak on reference count Thu, 22 Jan 2015 20:21:18 GMT Sun, 10 Dec 2017 15:21:55 GMT <p> The split_std_deque implementation does not free unsued memory if only one reference to it remains. This is even true when invoking clear_queue(). See attaches example for more details. </p> daniel.f.starke@… https://svn.boost.org/trac10/ticket/10954 https://svn.boost.org/trac10/ticket/10954 Report #10952: program_options in wchar_t Thu, 22 Jan 2015 09:26:33 GMT Mon, 11 Sep 2017 13:09:43 GMT <p> In Visual Studio 2013, ansi MFC builds are deprecated. More products will have to convert to wchar_t. I am aware that wchar_t is not the best Unicode representation, but it is quite dominant on Windows platforms. Some program_options parts however are bound to hard code ansi strings. For example the options_description uses std::string and char*: </p> <div class="wiki-code"><div class="code"><pre><span class="n">po</span><span class="p">::</span><span class="n">options_description</span> <span class="n">desc</span><span class="p">(</span><span class="s2">&quot;Allowed options&quot;</span><span class="p">);</span> <span class="n">std</span><span class="p">::</span><span class="n">wcout</span> <span class="o">&lt;&lt;</span> <span class="n">desc</span><span class="p">;</span> <span class="o">//</span><span class="n">error</span> <span class="p">(</span><span class="n">actual</span> <span class="n">use</span> <span class="ow">is</span> <span class="n">a</span> <span class="n">std</span><span class="p">::</span><span class="n">wofstream</span><span class="p">)</span> </pre></div></div><p> Can't this just made complete template based on char type? </p> gast128@… https://svn.boost.org/trac10/ticket/10952 https://svn.boost.org/trac10/ticket/10952 Report #10946: Add dt to system arguments Tue, 20 Jan 2015 17:25:03 GMT Thu, 29 Jan 2015 21:29:57 GMT <p> A popular algorithm for calculating the change in velocity of a charged particle in a magnetic field (1) requires the length of the time step while integrating (dx/dt := f(x,t,dt)) and cannot be used with odeint as far as I could tell so I suggest modifying the definition of system from sys( x , dxdt , t ) to sys( x , dxdt , t , dt ). Some enable_if magic should allow all existing code using the current API to work. </p> <p> (1) Equations 25 and 26 in (h)ttp://www.dtic.mil/dtic/tr/fulltext/u2/a023511.pdf </p> ilja.j.honkonen@… https://svn.boost.org/trac10/ticket/10946 https://svn.boost.org/trac10/ticket/10946 Report #10942: Boost.Thread fails to build on Cygwin Sun, 18 Jan 2015 19:11:18 GMT Sat, 04 Apr 2015 22:53:40 GMT <p> By default on Cygwin, the Boost.Thread headers choose the POSIX API. This decision is made in <code>boost/thread/detail/platform.hpp</code>: </p> <pre class="wiki">#if defined(BOOST_THREAD_POSIX) # define BOOST_THREAD_PLATFORM_PTHREAD #else # if defined(BOOST_THREAD_WIN32) # define BOOST_THREAD_PLATFORM_WIN32 # elif defined(BOOST_HAS_PTHREADS) # define BOOST_THREAD_PLATFORM_PTHREAD # else # error "Sorry, no boost threads are available for this platform." # endif #endif </pre><p> In the Cygwin case, neither <code>BOOST_THREAD_POSIX</code> nor <code>BOOST_THREAD_WIN32</code> appear to be defined, but <code>BOOST_THREAD_CYGWIN</code>, so the logic above chooses <code>BOOST_THREAD_PLATFORM_PTHREAD</code>. </p> <p> This is actually correct, in my opinion; Cygwin is a POSIX platform. </p> <p> However, the Jamfile by default chooses Win32 on Cygwin: </p> <pre class="wiki">local rule default_threadapi ( ) { local api = pthread ; if [ os.name ] = "NT" { api = win32 ; } return $(api) ; } </pre><p> which later results in a bunch of errors when <code>win32/thread.cpp</code> is compiled against <code>pthread/thread_data.hpp</code> et al. </p> <p> So, either the default in <code>platform.hpp</code> should be changed to Win32 under Cygwin, or (better) the default <code>threadapi</code> in the Jamfile should be changed to <code>pthread</code> under Cygwin. </p> <p> Manually specifying <code>threadapi=pthread</code> is not a particularly good option, because Boost.Thread is a dependency of some tests, and when </p> <pre class="wiki">b2 toolset=gcc,gcc-cxx11,clang,clang-cxx11,msvc-8.0,msvc-10.0,msvc-11.0,msvc-12.0 </pre><p> (for example) is invoked to test a library, <code>threadapi=pthread</code> is not possible. </p> Peter Dimov https://svn.boost.org/trac10/ticket/10942 https://svn.boost.org/trac10/ticket/10942 Report #10940: boost:asio/boost::thread does not work on windows 8 store/phone environment Sun, 18 Jan 2015 15:39:46 GMT Sun, 18 Jan 2015 16:04:46 GMT <p> I have try painfully to build a test app that just use serial class from boos::asio but on windows 8 store\phone, it does not work </p> <p> c:\boost\boost\asio\detail\impl\win_thread.ipp(81): error C2039: '_beginthreadex' : is not a member of '`global namespace<em> c:\boost\boost\asio\detail\impl\win_thread.ipp(81): error C3861: '_beginthreadex': identifier not found </em></p> <p> With store\phone app, MS remove some function search as beginthreadex etc... it will be best that boost::asio use boost::thread or std::thread, but even that boost::thread does not work on windows 8 store app anyway related to the same thing </p> sylvain.rochette@… https://svn.boost.org/trac10/ticket/10940 https://svn.boost.org/trac10/ticket/10940 Report #10937: tuple_manipulator has char in constructor Sat, 17 Jan 2015 19:06:24 GMT Sat, 17 Jan 2015 19:06:24 GMT <p> The constructor of tuple_manipulator has hard coded type char. Shouldn't this be <a class="missing wiki">CharType</a>? </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">CharType</span><span class="o">&gt;</span> <span class="k">class</span> <span class="nc">tuple_manipulator</span> <span class="p">{</span> <span class="k">const</span> <span class="n">detail</span><span class="o">::</span><span class="n">format_info</span><span class="o">::</span><span class="n">manipulator_type</span> <span class="n">mt</span><span class="p">;</span> <span class="n">CharType</span> <span class="n">f_c</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="k">explicit</span> <span class="n">tuple_manipulator</span><span class="p">(</span><span class="n">detail</span><span class="o">::</span><span class="n">format_info</span><span class="o">::</span><span class="n">manipulator_type</span> <span class="n">m</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> </pre></div></div><p> -&gt; </p> <div class="wiki-code"><div class="code"><pre> <span class="k">explicit</span> <span class="n">tuple_manipulator</span><span class="p">(</span><span class="n">detail</span><span class="o">::</span><span class="n">format_info</span><span class="o">::</span><span class="n">manipulator_type</span> <span class="n">m</span><span class="p">,</span> <span class="k">const</span> <span class="n">CharType</span> <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> </pre></div></div> gast128@… https://svn.boost.org/trac10/ticket/10937 https://svn.boost.org/trac10/ticket/10937 Report #10936: How to build boost_1_32_0 for Visual studio 2012 Fri, 16 Jan 2015 14:55:21 GMT Fri, 16 Jan 2015 16:36:35 GMT <p> I have successfully build boost_1_57_0. Now I need to build boost_1_32_0, but same steps cannot be applied to older version of the boost, because folder does not contain bootstrap or bjam, or b2. I tried to run build.bat from boost_1_32_0\tools\build\jam_src\ directory, it was unsuccessfully. I got message "\Microsoft was unexpected at this time". Is there other way of how to build boost_1_32_0 versions of boost library? </p> <p> Thank you </p> yurinaolga87@… https://svn.boost.org/trac10/ticket/10936 https://svn.boost.org/trac10/ticket/10936 Report #10935: Header-only option for Boost.Timer Thu, 15 Jan 2015 22:21:21 GMT Thu, 15 Jan 2015 22:21:21 GMT <p> As discussed on the Mailing List: </p> <blockquote class="citation"> <p> So as far as I understand, Boost.Test has moved from Boost.Timer v1 (2001) to Boost.Timer v2 (2011). Boost.Timer v2 depends on Boost.Chrono, which optionally can be compiled header-only, and on Boost.System. But Boost.Timer itself has no option to be compiled header-only (AFAIU). So basically the regression is in Boost.Timer, which now requires linking. But because that is already introduced in 2011, it cannot be called a sudden regression. However, the influence on Boost.Test is quite large. </p> <p> We use Boost.Test (the header-only option) since 2007 and wish to keep it header-only. I know what to do to make it compile (link with Boost.Timer) but that is an unwished option for several reasons, so: a regression. </p> </blockquote> <p> I looked a Boost.Timer, and it seems reasonable to add a header-only option. </p> <p> If you open a ticket, I'll give it a try. But it will be a week or two, so a ticket is best. </p> Barend Gehrels https://svn.boost.org/trac10/ticket/10935 https://svn.boost.org/trac10/ticket/10935 Report #10933: Boost.Python incomplete type in "contains" Wed, 14 Jan 2015 15:20:21 GMT Tue, 31 Mar 2015 02:21:30 GMT <p> Hi, </p> <p> I am compiling Boost.Python with <strong>nvcc/6.5</strong>, <strong>gcc/4.6.2</strong>, <strong>python/2.7.8</strong> and <strong>cmake/3.0.1</strong> right now. </p> <p> As a side note, I modified the standard <em><a class="missing wiki">FindPythonLibs</a>.cmake</em> a bit to match the <em>cuda_add_library calls</em>. </p> <p> During compile, I get the error </p> <pre class="wiki">boost/python/object_core.hpp(499): error: function "boost::python::api::object_operators&lt;U&gt;::attr(const char *) const" returns incomplete type "boost::python::api::const_object_attribute" </pre><p> from <em>include/boost/python/object_core.hpp</em> </p> <pre class="wiki">template &lt;typename U&gt; template &lt;class T&gt; object api::object_operators&lt;U&gt;::contains(T const&amp; key) const { return this-&gt;attr("__contains__")(object(key)); } </pre><p> Replacing the return statement with </p> <pre class="wiki"> return (*this)[object(key)]; </pre><p> seems to compile and my modules work, but I am not sure if the functionality is still ok since I have no idea what this function actually does (nor how to test/trigger it). </p> <p> It would be great if we can fix that compile error and someone could give me a review. </p> a.huebl@… https://svn.boost.org/trac10/ticket/10933 https://svn.boost.org/trac10/ticket/10933 Report #10925: fialed to build math library with studo 12.4 c++ on Solaris 11.2 Fri, 09 Jan 2015 23:53:45 GMT Thu, 02 Apr 2015 17:10:33 GMT <p> Problem:fails to build math library with studio 12.4 on Solaris 11.2 </p> <blockquote> <p> with "../../../boost/math/cstdfloat/cstdfloat_types.hpp", line 393: Error: The type "boost::STATIC_ASSERTION_FAILURE&lt;0&gt;" is incomplete. </p> </blockquote> <p> 1 Error(s) detected. </p> angela.xie@… https://svn.boost.org/trac10/ticket/10925 https://svn.boost.org/trac10/ticket/10925 Report #10923: exec-dynamic fails with Python 3 Fri, 09 Jan 2015 20:37:45 GMT Thu, 01 Dec 2016 12:13:19 GMT <p> The reason being that the test case calls PyImport_AppendInittab after Py_Initialize. One solution is to call Py_Finalize before PyImport_AppendInittab, and the re-call Py_Initialize. I implement this in a somewhat structured fashion in the attached patch. </p> Petr Machata <pmachata@…> https://svn.boost.org/trac10/ticket/10923 https://svn.boost.org/trac10/ticket/10923 Report #10922: Fails to link python-extension project when msvc target is used Fri, 09 Jan 2015 12:28:23 GMT Tue, 23 Jan 2018 01:14:01 GMT <p> For <code>python-extension</code> boost.build project, using target msvc, on link stage the command line is generated incorrectly and the build fails. </p> <p> Generated command line: </p> <pre class="wiki">link /NOLOGO /INCREMENTAL:NO /DLL /NOENTRY /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console /out:"bin\msvc-12.0\debug\threading-multi\mytest.pyd" /IMPLIB:"bin\msvc-12.0\debug\threading-multi\mytest.pdb" /LIBPATH:"C:\Program Files (x86)\Python34\libs" @"bin\msvc-12.0\debug\threading-multi\mytest.pyd.rsp" </pre><p> Error displayed: <code>LINK : fatal error LNK1207: incompatible PDB format in 'D:\Temp\test\bin\msvc-12.0\debug\threading-multi\mytest.pdb'; delete and rebuild</code> </p> <p> Note the <code>IMPLIB</code> part referencing the <code>.pdb</code> file instead of the <code>.lib</code> file. </p> <p> Steps to reproduce: </p> <ul><li>unpack the attachment </li><li>copy the boost lib to <code>boost</code> directory </li><li>copy boost.build to <code>boost-build</code> directory </li><li>run <code>boost-build\bin\b2</code> </li><li>or <code>boost-build\bin\b2 target=msvc-12</code> </li></ul><p> Tested with msvc 10 and 12. Standard shared library/dll project compiles fine. </p> Pavel Machyniak <machyniak@…> https://svn.boost.org/trac10/ticket/10922 https://svn.boost.org/trac10/ticket/10922 Report #10921: Seeding boost::random::mt19937 from a pair of iterators throws an exception Fri, 09 Jan 2015 11:28:30 GMT Thu, 26 Feb 2015 07:24:31 GMT <p> The problem is that when seeding <code>boost::random::mt19937</code> from a pair of iterators <code>std::invalid_argument("Not enough elements in call to seed")</code> exception is thrown. </p> <p> An isolated test case looks like this: </p> <pre class="wiki">#include &lt;boost/array.hpp&gt; #include &lt;boost/random.hpp&gt; //typedef boost::random::rand48 generator_t; typedef boost::random::mt19937 generator_t; int main() { typedef boost::array&lt;int, 3&gt; seed_range_t; seed_range_t seed = {1, 2, 3}; boost::random::seed_seq seed2(seed.begin(), seed.end()); generator_t generator1(seed2); // works fine seed_range_t::iterator begin = seed.begin(); generator_t generator2(begin, seed.end()); // throws std::invalid_argument("Not enough elements in call to seed") } </pre><p> The documentation of the relevant constructor [1] does not help too much. </p> <p> Please note that using the same input sequence through <code>boost::random::seed_seq</code> works fine. Moreover, the same input sequence passed directly to the constructor of <code>boost::random::rand48</code> generator also produces no exceptions. </p> <p> I'm not sure if <code>mersenne_twister_engine</code> needs larger input or the implementation is broken. Please advice. </p> <p> [1] <a href="http://www.boost.org/doc/libs/1_57_0/doc/html/boost/random/mersenne_twister_engine.html#idp93974544-bb">http://www.boost.org/doc/libs/1_57_0/doc/html/boost/random/mersenne_twister_engine.html#idp93974544-bb</a> </p> Adam Romanek <romanek.adam@…> https://svn.boost.org/trac10/ticket/10921 https://svn.boost.org/trac10/ticket/10921 Report #10920: Boost error from XlC11. 01 using BOOST 1.53 in union Fri, 09 Jan 2015 06:26:05 GMT Mon, 23 Mar 2015 17:58:02 GMT <p> Hi All, </p> <p> We are trying to compile sample boost code to demonstrate union on Aix64: Testcase: <a href="http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/algorithms/union_.html">http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/algorithms/union_.html</a> </p> <p> Following are the details of compiler Xlc Version:Version: 11.01.0000.0011 OS version:6100-06-05-1115 Boost version:1.53 </p> <p> It throws errors: "/usr/vacpp/include/vector.t", line 163.36: 1540-0716 (S) The template argument "std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::mod..." does not match the template parameter "template class Container". "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "_Ucopy". "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "class std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,snps_boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::allocator&gt;,std::allocator&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model:...". "/usr/vacpp/include/vector.t", line 163.36: 1540-1174 (S) The member "template pointer _Ucopy(_It, _It, pointer)" is not declared as a template in its containing class definition. "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "_Ucopy". "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "class std::vector&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::allocator&gt;,std::allocator&lt;boost_1_53_0::geometry::model::ring&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,snps_boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::allocator&gt; &gt; &gt;". "/boost/boost/geometry/geometries/polygon.hpp", line 69.7: 1540-0700 (I) The previous message was produced while processing "class boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::vector,std::allocator,std::allocator&gt;". "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "main()". "/usr/vacpp/include/vector.t", line 163.36: 1540-0716 (S) The template argument "std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;snps_boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geom..." does not match the template parameter "template class <a class="missing wiki">PointList</a>". "/usr/vacpp/include/vector.t", line 163.36: 1540-0700 (I) The previous message was produced while processing "_Ucopy". "/usr/vacpp/include/vector.t", line 163.36: 1540-0700 (I) The previous message was produced while processing "class std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;snps_boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::vector,std::allocator,std::allocator&gt;,std::allocator&lt;boost_1_53_0::geometry::model::polygon...". "/remote/ports/aix/xlcpp11_1_aix53/usr/vacpp/include/vector.t", line 163.36: 1540-1174 (S) The member "template pointer _Ucopy(_It, _It, pointer)" is not declared as a template in its containing class definition. "test.cpp", line 25.26: 1540-0700 (I) The previous message was produced while processing "_Ucopy". "test.cpp", line 25.26: 1540-0700 (I) The previous message was produced while processing "class std::vector&lt;boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::vector,std::allocator,std::allocator&gt;,std::allocator&lt;boost_1_53_0::geometry::model::polygon&lt;boost_1_53_0::geometry::model::d2::point_xy&lt;double,boost_1_53_0::geometry::cs::cartesian&gt;,1,1,std::vector,std::vector,std::allocator,std::allocator&gt; &gt; &gt;". "test.cpp", line 12.5: 1540-0700 (I) The previous message was produced while processing "main()". </p> <p> Is this a known bug ? Please help us in case a patch is available. </p> devika.rs@… https://svn.boost.org/trac10/ticket/10920 https://svn.boost.org/trac10/ticket/10920 Report #10918: Boost pool does not compile with MSVC /Za Thu, 08 Jan 2015 02:45:50 GMT Fri, 13 Feb 2015 18:29:42 GMT <p> The following code does not compile with Visual Studio C++ 2013 update 4, compiler flag /Za </p> <pre class="wiki"> #include &lt;boost/pool/pool.hpp&gt; int main() { boost::pool&lt;&gt; d_BoostPool( 16 ); d_BoostPool.ordered_malloc( 28 ); return 0; } </pre><p> The guilty behavior is similar to the one shown here: <a class="ext-link" href="http://stackoverflow.com/q/27830761/2549876"><span class="icon">​</span>http://stackoverflow.com/q/27830761/2549876</a> </p> anonymous https://svn.boost.org/trac10/ticket/10918 https://svn.boost.org/trac10/ticket/10918 Report #10916: Change wait_for_all to work on models of Future. Wed, 07 Jan 2015 02:48:57 GMT Wed, 07 Jan 2015 02:49:06 GMT viboes https://svn.boost.org/trac10/ticket/10916 https://svn.boost.org/trac10/ticket/10916 Report #10915: Change wait_for_any to work on models of Future. Wed, 07 Jan 2015 02:47:53 GMT Wed, 07 Jan 2015 02:48:00 GMT <p> Using notify_when_any implement a generic wait_for_any on models of Future. </p> viboes https://svn.boost.org/trac10/ticket/10915 https://svn.boost.org/trac10/ticket/10915 Report #10914: Add a future::notify_when_ready function Wed, 07 Jan 2015 02:46:17 GMT Wed, 07 Jan 2015 02:46:29 GMT <p> This function should help to implement a generic wait_for_any on models of Future. </p> viboes https://svn.boost.org/trac10/ticket/10914 https://svn.boost.org/trac10/ticket/10914 Report #10913: Missing std:: qualifier for pow call in units/test/test_output.cpp Tue, 06 Jan 2015 19:05:56 GMT Tue, 06 Jan 2015 19:05:56 GMT <p> Compiling test_output.cpp with Oracle Solaris Studio 12.4 compiler on Solaris 11.2 with -library=stlport4, we see </p> <p> "../libs/units/test/test_output.cpp", line 262: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 262: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 356: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 356: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 404: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 404: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 413: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 413: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 414: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 414: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 415: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 415: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 416: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 416: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 417: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 417: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 418: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 418: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 419: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 419: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 437: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 437: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 438: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 438: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 439: Error: The function "pow" must have a prototype. </p> <p> The call to pow is unqualified and the following change resolves the issue. % diff ./test_output.cpp ./test_output.cpp_orig 262c262 &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 10) * byte_base_unit::unit_type(), "1024 b"); --- </p> <blockquote class="citation"> <blockquote> <p> BOOST_UNITS_TEST_OUTPUT(pow(2., 10) * byte_base_unit::unit_type(), "1024 b"); </p> </blockquote> </blockquote> <p> 356c356 &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 10) * byte_base_unit::unit_type(), "1.024 kilobyte"); --- </p> <blockquote class="citation"> <blockquote> <p> BOOST_UNITS_TEST_OUTPUT(pow(2., 10) * byte_base_unit::unit_type(), "1.024 kilobyte"); </p> </blockquote> </blockquote> <p> 404c404 &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 10) * byte_base_unit::unit_type(), "1.024 kb"); --- </p> <blockquote class="citation"> <blockquote> <p> BOOST_UNITS_TEST_OUTPUT(pow(2., 10) * byte_base_unit::unit_type(), "1.024 kb"); </p> </blockquote> </blockquote> <p> 413,419c413,419 &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 20) * byte_base_unit::unit_type(), "1 Mib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 30) * byte_base_unit::unit_type(), "1 Gib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 40) * byte_base_unit::unit_type(), "1 Tib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 50) * byte_base_unit::unit_type(), "1 Pib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 60) * byte_base_unit::unit_type(), "1 Eib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 70) * byte_base_unit::unit_type(), "1 Zib"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 80) * byte_base_unit::unit_type(), "1 Yib"); --- </p> <blockquote class="citation"> <blockquote> <p> BOOST_UNITS_TEST_OUTPUT(pow(2., 20) * byte_base_unit::unit_type(), "1 Mib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 30) * byte_base_unit::unit_type(), "1 Gib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 40) * byte_base_unit::unit_type(), "1 Tib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 50) * byte_base_unit::unit_type(), "1 Pib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 60) * byte_base_unit::unit_type(), "1 Eib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 70) * byte_base_unit::unit_type(), "1 Zib"); BOOST_UNITS_TEST_OUTPUT(pow(2., 80) * byte_base_unit::unit_type(), "1 Yib"); </p> </blockquote> </blockquote> <p> 437,442c437,442 &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 32) *byte_base_unit::unit_type(), "4 gibibyte"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 41) *byte_base_unit::unit_type(), "2 tebibyte"); <em> <a class="ext-link" href="http://en.wikipedia.org/wiki/Tebibyte"><span class="icon">​</span>http://en.wikipedia.org/wiki/Tebibyte</a> &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 50) *byte_base_unit::unit_type(), "1 pebibyte"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 60) *byte_base_unit::unit_type(), "1 exbibyte"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 70) *byte_base_unit::unit_type(), "1 zebibyte"); &lt; BOOST_UNITS_TEST_OUTPUT(std::pow(2., 80) *byte_base_unit::unit_type(), "1 yobibyte"); --- </em></p> <blockquote class="citation"> <blockquote> <p> BOOST_UNITS_TEST_OUTPUT(pow(2., 32) *byte_base_unit::unit_type(), "4 gibibyte"); BOOST_UNITS_TEST_OUTPUT(pow(2., 41) *byte_base_unit::unit_type(), "2 tebibyte"); <em> <a class="ext-link" href="http://en.wikipedia.org/wiki/Tebibyte"><span class="icon">​</span>http://en.wikipedia.org/wiki/Tebibyte</a> BOOST_UNITS_TEST_OUTPUT(pow(2., 50) *byte_base_unit::unit_type(), "1 pebibyte"); BOOST_UNITS_TEST_OUTPUT(pow(2., 60) *byte_base_unit::unit_type(), "1 exbibyte"); BOOST_UNITS_TEST_OUTPUT(pow(2., 70) *byte_base_unit::unit_type(), "1 zebibyte"); BOOST_UNITS_TEST_OUTPUT(pow(2., 80) *byte_base_unit::unit_type(), "1 yobibyte"); </em></p> </blockquote> </blockquote> Aparna Kumta <aparna.kumta@…> https://svn.boost.org/trac10/ticket/10913 https://svn.boost.org/trac10/ticket/10913 Report #10911: boost/iostreams/filter/zlib.hpp gives C4275 warning with visual studio Fri, 02 Jan 2015 14:50:08 GMT Tue, 30 Jun 2015 07:40:27 GMT <p> please change the line </p> <pre class="wiki"># pragma warning(disable:4251 4231 4660) // Dependencies not exported. </pre><p> to </p> <pre class="wiki"># pragma warning(disable:4251 4231 4660 4275) // Dependencies not exported. </pre><p> This will fix... </p> <pre class="wiki">1&gt;c:\development\boost_1_56_0\boost\iostreams\filter\zlib.hpp(138): warning C4275: non dll-interface class 'std::ios_base::failure' used as base for dll-interface class 'boost::iostreams::zlib_error' 1&gt; c:\program files (x86)\microsoft visual studio 12.0\vc\include\xiosbase(221) : see declaration of 'std::ios_base::failure' 1&gt; c:\development\boost_1_56_0\boost\iostreams\filter\zlib.hpp(138) : see declaration of 'boost::iostreams::zlib_error' </pre> Joseph Southwell <joseph@…> https://svn.boost.org/trac10/ticket/10911 https://svn.boost.org/trac10/ticket/10911 Report #10910: arm64 value for <instruction-set> feature support Tue, 30 Dec 2014 11:21:49 GMT Tue, 30 Dec 2014 11:21:49 GMT <p> I want to build boost for arm64 instruction set. But getting error: </p> <blockquote> <p> error: "arm64" is not a known value of feature &lt;instruction-set&gt; </p> </blockquote> <p> This error occurs because builtin.jam file contains just following <strong>valid</strong> values for instruction-set feature: </p> <blockquote> <p> armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6j iwmmxt ep9312 armv7 armv7s </p> </blockquote> <p> I also checked several versions of boost - all of them don't contain arm64 value at builtin.jam file. Meanwhile arm64 is a valid argument to <strong>-arch</strong> option for compiler (e.g. clang) </p> <p> So my question is: why don't add there "arm64" value to the list of valid values for instruction-set feature? </p> dmigous@… https://svn.boost.org/trac10/ticket/10910 https://svn.boost.org/trac10/ticket/10910 Report #10909: Problems with building boost system library using mingw Tue, 30 Dec 2014 09:11:12 GMT Tue, 30 Dec 2014 09:11:12 GMT <p> I'm trying to build 'system' library from Boost under Windows using command: </p> <blockquote class="citation"> <p> bjam --toolset=gcc target-os=qnx --build-dir=c:\boost_1_57_0 --build-type=complete --with-system stage </p> </blockquote> <p> and keep getting error: </p> <blockquote class="citation"> <p> C:\boost_1_57_0&gt;bjam --toolset=gcc target-os=qnx --build-dir=c:\boost_1_57_0 --build-type=complete --with-system stage ...found 1 target... ...updating 1 target... config-cache.write c:\boost_1_57_0\boost\bin.v2\project-cache.jam ...updated 1 target... </p> <p> Component configuration: </p> <ul><li>atomic : not building </li><li>chrono : not building </li><li>container : not building </li><li>context : not building </li><li>coroutine : not building </li><li>date_time : not building </li><li>exception : not building </li><li>filesystem : not building </li><li>graph : not building </li><li>graph_parallel : not building </li><li>iostreams : not building </li><li>locale : not building </li><li>log : not building </li><li>math : not building </li><li>mpi : not building </li><li>program_options : not building </li><li>python : not building </li><li>random : not building </li><li>regex : not building </li><li>serialization : not building </li><li>signals : not building </li><li>system : building </li><li>test : not building </li><li>thread : not building </li><li>timer : not building </li><li>wave : not building </li></ul><p> ...found 205 targets... ...updating 4 targets... gcc.link.dll c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\debug\target-os-qnx\threading-multi\libboost_system-mgw48-mt-d-1_57.so.1.57.0 c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lrt collect2.exe: error: ld returned 1 exit status </p> <blockquote> <p> "g++" -o "c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\debug\target-os-qnx\threading-multi\libboost_system-mgw48-mt-d-1_57.so.1.57.0" </p> </blockquote> <p> -shared -Wl,--start-group "c:\boost_1_57 _0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\debug\target-os-qnx\threading-multi\error_code.o" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -g -pthread </p> <p> ...failed gcc.link.dll c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\debug\target-os-qnx\threading-multi\libboost_system-mgw48-mt-d-1_57.so.1.57.0... ...skipped &lt;pstage\lib&gt;libboost_system-mgw48-mt-d-1_57.so.1.57.0 for lack of &lt;pc:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\debug\target-os-qnx\threading-multi&gt;libboost_system-mgw48- mt-d-1_57.so.1.57.0... gcc.link.dll c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\target-os-qnx\threading-multi\libboost_system-mgw48-mt-1_57.so.1.57.0 c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: cannot find -lrt collect2.exe: error: ld returned 1 exit status </p> <blockquote> <p> "g++" -o "c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\target-os-qnx\threading-multi\libboost_system-mgw48-mt-1_57.so.1.57.0" </p> </blockquote> <p> -shared -Wl,--start-group "c:\boost_1_57 _0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\target-os-qnx\threading-multi\error_code.o" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -pthread </p> <p> ...failed gcc.link.dll c:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\target-os-qnx\threading-multi\libboost_system-mgw48-mt-1_57.so.1.57.0... ...skipped &lt;pstage\lib&gt;libboost_system-mgw48-mt-1_57.so.1.57.0 for lack of &lt;pc:\boost_1_57_0\boost\bin.v2\libs\system\build\gcc-mingw-4.8.1\release\target-os-qnx\threading-multi&gt;libboost_system-mgw48- mt-1_57.so.1.57.0... ...failed updating 2 targets... ...skipped 2 targets... </p> </blockquote> <p> The rt lib seems to be missing, where can I obtain such lib to successfully compile 'system' lib? </p> <p> Changing bootstrap argument between gcc / mingw doesn't help. Before using bootstrap I set path to mingw using: </p> <blockquote class="citation"> <p> set PATH=c:\mingw\bin;%PATH% </p> </blockquote> <p> and change bootstrap.bat in line 38 to: </p> <blockquote class="citation"> <p> set toolset=gcc </p> </blockquote> <p> Any idea how to successfully compile system library under windows for QNX? </p> piotrek.orzechowski@… https://svn.boost.org/trac10/ticket/10909 https://svn.boost.org/trac10/ticket/10909 Report #10907: Fix for mingw Mon, 29 Dec 2014 22:40:14 GMT Mon, 29 Dec 2014 22:45:42 GMT <p> Fix some problems for mingw, see github boostorg/interprocess pull request. </p> Pavel Vatagin <pavelvat@…> https://svn.boost.org/trac10/ticket/10907 https://svn.boost.org/trac10/ticket/10907 Report #10906: async_connect can't be stopped on boost 1.57, win 7 64bit Mon, 29 Dec 2014 16:05:27 GMT Mon, 05 Jun 2017 11:53:50 GMT <p> I currently use Windows 7 64bit, MSVC2010 and Boost.Asio 1.57. I would like to connect to a TCP server with a timeout. If the timeout expires, I should close the connection as soon as possible as the IP address (chosen by a user) is probably wrong. </p> <p> With my computer, closing the socket takes about 15 seconds to complete, which makes my program not responsive for a while. On Linux the same code seems to be fine. I attach a code that reproduce the problem. </p> anonymous https://svn.boost.org/trac10/ticket/10906 https://svn.boost.org/trac10/ticket/10906 Report #10903: planar_face_traversal function Sat, 27 Dec 2014 04:53:22 GMT Mon, 29 Dec 2014 09:17:18 GMT <p> Visual Studio 'Release' Configuration. In function </p> <blockquote> <p> void planar_face_traversal(const Graph&amp; g, </p> <blockquote> <p> <a class="missing wiki">PlanarEmbedding</a> embedding, Visitor&amp; visitor, <a class="missing wiki">EdgeIndexMap</a> em ) </p> </blockquote> </blockquote> <p> In the for loop </p> <blockquote> <p> for(boost::tie(fi,fi_end) = edges(g); fi != fi_end; ++fi) </p> </blockquote> <p> as soon as it executes the line </p> <blockquote> <p> edge_t e(*fi); </p> </blockquote> <p> the variable 'g' becomes null at runtime. This is true for VS 2010, 2012, 2013. For Debug configuration, it does not occur, but as soon as the code is put 'release' the problem is consistent. It looks like a Visual Studio bug, but I am not sure how to claim a bug report to Microsoft. </p> dumnas@… https://svn.boost.org/trac10/ticket/10903 https://svn.boost.org/trac10/ticket/10903 Report #10900: read_symlink fails to correctly read NTFS junctions Fri, 26 Dec 2014 16:16:26 GMT Fri, 22 Sep 2017 08:59:32 GMT <p> <em>Tested on Windows 7 64-bit.</em> </p> <p> NTFS directory junctions are now recognized as a symlink by <code>is_reparse_point_a_symlink</code> but <code>read_symlink</code> does not correctly handle those "mount point" reparse points yet. </p> <p> Among other things this also breaks the <code>canonical</code> operation. </p> <p> The <code>REPARSE_DATA_BUFFER</code> returned by <code>DeviceIoControl</code> needs to be accessed differently for regular symlinks and mount points. See msdn.microsoft.com/en-us/library/ff552012.aspx </p> <p> Accessing the "PrintName" as a symlink typically results in the first two (wide) characters of the path being skipped and generally in undefined behavior. </p> <p> A possible fix would be to add a conditional statement checking <code>info.rdb.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT</code> and then amend the <code>symlink_path.assign</code> call accordingly (using <code>info.rdb.MountPointReparseBuffer</code> instead of <code>info.rdb.SymbolicLinkReparseBuffer</code>). </p> <p> In version 1.57.0 the offending code can be found in <em>libs/filesystem/src/operations.cpp</em> around line 1514. </p> Benjamin Kummer-Hardt <benjamin@…> https://svn.boost.org/trac10/ticket/10900 https://svn.boost.org/trac10/ticket/10900 Report #10899: symbol visibility: cannot catch an exception thrown by boost::throw_exception on mac OS Fri, 26 Dec 2014 12:56:32 GMT Mon, 02 Feb 2015 15:03:38 GMT <h2 class="section" id="Theproblem">The problem</h2> <p> The problem showed up with an exception from boost::property_tree, but I believe it is more general. </p> <p> I have a library (named liba in the attached example) which </p> <ul><li>is built with hidden symbols visibility </li><li>uses boost::property_tree in a <code>deserialize()</code> function </li><li>catch <code>boost::property_tree::ptree_bad_path</code> exception if any (so this is not an "exception crossing dll boundary issue") </li></ul><p> This usually works (test_a works on all platforms) except when </p> <ul><li>we're on mac os </li><li>the <code>deserialize()</code> function is called from another library which also uses boost::property_tree </li></ul><p> In such a case, liba fails to catch the <code>boost::property_tree::ptree_bad_path</code> exception (test_b fails on mac os, but passes on linux). </p> <p> So, my problem is that on mac os, liba behaves differently depending on whether it's caller uses boost::property_tree or not. </p> <h2 class="section" id="Atentativeexplanation">A tentative explanation</h2> <p> I think the problem comes from symbol visibility inconsistency: </p> <ul><li>because of boost::throw_exception, the exception which is thrown is not a <code>boost::property_tree::ptree_bad_path</code> but a subclass <code>boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;</code> </li></ul><ul><li>in <code>include/boost/exception/exception.hpp</code>, <code>error_info_injector</code> visibility is forced to be public (this change comes from <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4594" title="#4594: Patches: Boost exception classes do not have GCC default visibility (closed: fixed)">#4594</a>) <pre class="wiki">#if defined(__GNUC__) # if (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 1) || (__GNUC__ &gt; 4) # pragma GCC visibility push (default) # endif #endif template &lt;class T&gt; struct error_info_injector: public T, public exception { explicit error_info_injector( T const &amp; x ): T(x) { } ~error_info_injector() throw() { } }; </pre></li></ul><ul><li>However, <code>boost::property_tree::ptree_bad_path</code> is still hidden: <ul><li>there is no visibility #pragma in <code>include/boost/property_tree/exceptions.hpp</code> forcing it to be public </li><li>I build the library with hidden symbols by default </li><li>I want to catch the exception within the library, so I do not need to make the symbol public. </li></ul></li></ul><p> What seems to happen on mac (see the typeid adresses) when running test_b: </p> <ul><li>symbol <code>boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;</code> is global, and <em>the version from libb is used</em>. </li></ul><ul><li>symbol <code>boost::property_tree::ptree_bad_path</code> is private, each lib uses its own version </li></ul><ul><li>within liba, <code>boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;</code> is thrown, but liba fails to upcast it to its own version of <code>boost::property_tree::ptree_bad_path</code>, so it catches it as std::exception instead (and throw it again) </li></ul><ul><li>then within libb, the exception is caught again, but this time casting it to libb's version <code>boost::property_tree::ptree_bad_path</code> works. </li></ul><p> When calling the <code>serialize()</code> function from test_a (which does not use boost::property_tree), there is no symbol confusion and the exception is caught within liba, as expected. </p> <p> If this is right, the root cause is that one class is hidden and the other not. If we make both exception classes public or private, then it works as expected. </p> <p> I'm not sure why test_b passes on linux, it may have something to do with weak symbols: nm shows the public symbols as weak on linux, but not on mac. </p> <h2 class="section" id="Buildingandrunningonmac">Building and running on mac</h2> <pre class="wiki">$ make clean rm -f src/a.o src/liba.so src/test_a.o src/test_a src/b.o src/libb.so src/test_b.o src/test_b src/*.swp *.swp src/.a* src/.b* $ make all c++ -c -g -Iinclude -o src/test_a.o src/test_a.cc c++ -c -g -fPIC -Da_EXPORTS -Iinclude -I/Users/hcuche/.local/share/qi/toolchains/mac64/boost/include -o src/a.o src/a.cc c++ -shared -Wl -o src/liba.so src/a.o clang: warning: unknown warning option '-Wl' c++ -Lsrc -o src/test_a src/test_a.o -la c++ -c -g -Iinclude -o src/test_b.o src/test_b.cc c++ -c -g -fPIC -fvisibility=hidden -Db_EXPORTS -Iinclude -I/Users/hcuche/.local/share/qi/toolchains/mac64/boost/include -o src/b.o src/b.cc c++ -shared -Wl -o src/libb.so src/b.o src/liba.so clang: warning: unknown warning option '-Wl' c++ -Lsrc -o src/test_b src/test_b.o -lb -la $ DYLD_LIBRARY_PATH=./src ./src/test_a A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x1085f2ed0 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x1085f2f00 A::deserialize caught ptree_bad_path with typeid 0x1085f32d0 test_a: OK got "A::deserialize caught ptree_bad_path" $ DYLD_LIBRARY_PATH=./src ./src/test_b B::load typeid(boost::property_tree::ptree_bad_path): 0x10515f3d0 B::load typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x10515f400 A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x105197ed0 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x10515f400 A::deserialize caught std::exception with typeid 0x1051982d0 A::load caught ptree_bad_path with typeid 0x1051982d0 test_b: KO got "B::load caught ptree_bad_path" $ c++ --version Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.5.0 Thread model: posix </pre><h2 class="section" id="Buildingandrunningonlinuxwithgcc">Building and running on linux with gcc</h2> <pre class="wiki">$ make clean rm -f src/*.o src/*.so src/test_a src/test_b src/.a* src/.b* ._* src/._* include/._* $ make all g++ -c -g -Iinclude -o src/test_a.o src/test_a.cc g++ -c -g -fPIC -Da_EXPORTS -Iinclude -I/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include -o src/a.o src/a.cc g++ -shared -Wl -o src/liba.so src/a.o g++ -Lsrc -o src/test_a src/test_a.o -la g++ -c -g -Iinclude -o src/test_b.o src/test_b.cc g++ -c -g -fPIC -fvisibility=hidden -Db_EXPORTS -Iinclude -I/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include -o src/b.o src/b.cc g++ -shared -Wl -o src/libb.so src/b.o src/liba.so g++ -Lsrc -o src/test_b src/test_b.o -lb -la $ LD_LIBRARY_PATH=./src ./src/test_a A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x7f1912652c60 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7f1912652c20 A::deserialize caught ptree_bad_path with typeid 0x7f1912652b80 test_a: OK got "A::deserialize caught ptree_bad_path" $ LD_LIBRARY_PATH=./src ./src/test_b B::load typeid(boost::property_tree::ptree_bad_path): 0x7fefc97dfce0 B::load typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7fefc97dfca0 A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x7fefc95cdc60 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7fefc97dfca0 A::deserialize caught ptree_bad_path with typeid 0x7fefc95cdb80 test_b: OK got "A::deserialize caught ptree_bad_path" $ g++ --version g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. </pre><h2 class="section" id="Buildingandrunningonlinuxwithclang">Building and running on linux with clang</h2> <pre class="wiki">$ make clean rm -f src/*.o src/*.so src/test_a src/test_b src/.a* src/.b* ._* src/._* include/._* $ CXX=clang++ make all clang++ -c -g -Iinclude -o src/test_a.o src/test_a.cc clang++ -c -g -fPIC -Da_EXPORTS -Iinclude -I/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include -o src/a.o src/a.cc clang++ -shared -Wl -o src/liba.so src/a.o clang++ -Lsrc -o src/test_a src/test_a.o -la clang++ -c -g -Iinclude -o src/test_b.o src/test_b.cc clang++ -c -g -fPIC -fvisibility=hidden -Db_EXPORTS -Iinclude -I/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include -o src/b.o src/b.cc clang++ -shared -Wl -o src/libb.so src/b.o src/liba.so clang++ -Lsrc -o src/test_b src/test_b.o -lb -la $ LD_LIBRARY_PATH=./src ./src/test_a A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x7f8bfa09e800 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7f8bfa09e830 A::deserialize caught ptree_bad_path with typeid 0x7f8bfa09ec00 test_a: OK got "A::deserialize caught ptree_bad_path" $ LD_LIBRARY_PATH=./src ./src/test_b B::load typeid(boost::property_tree::ptree_bad_path): 0x7f1d50790920 B::load typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7f1d50790950 A::deserialize typeid(boost::property_tree::ptree_bad_path): 0x7f1d5057d800 A::deserialize typeid(boost::exception_detail::error_info_injector&lt;boost::property_tree::ptree_bad_path&gt;): 0x7f1d5057d830 A::deserialize caught ptree_bad_path with typeid 0x7f1d5057dc00 test_b: OK got "A::deserialize caught ptree_bad_path" $ clang++ --version Ubuntu clang version 3.3-5ubuntu4~precise1 (branches/release_33) (based on LLVM 3.3) Target: x86_64-pc-linux-gnu Thread model: posix </pre> Sébastien Barthélémy <barthelemy@…> https://svn.boost.org/trac10/ticket/10899 https://svn.boost.org/trac10/ticket/10899 Report #10898: Variadic constructor for ssl::stream so it can wrap streams whose constructors take n arguments Wed, 24 Dec 2014 16:56:32 GMT Wed, 24 Dec 2014 16:56:32 GMT <p> I have specific use case ( passing through a proxy ) where I need to wrap an ssl stream in an ssl stream. This becomes possible if I change the constructor for ssl stream as follows. </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="p">...</span><span class="n">Arg</span><span class="o">&gt;</span> <span class="n">stream</span><span class="p">(</span><span class="n">context</span><span class="o">&amp;</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">Arg</span><span class="o">&amp;&amp;</span> <span class="p">...</span><span class="n">arg</span><span class="p">)</span> <span class="o">:</span> <span class="n">next_layer_</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">forward</span><span class="o">&lt;</span><span class="n">Arg</span><span class="o">&gt;</span><span class="p">(</span><span class="n">arg</span><span class="p">)...),</span> <span class="n">core_</span><span class="p">(</span><span class="n">ctx</span><span class="p">.</span><span class="n">native_handle</span><span class="p">(),</span> <span class="n">next_layer_</span><span class="p">.</span><span class="n">lowest_layer</span><span class="p">().</span><span class="n">get_io_service</span><span class="p">())</span> <span class="p">{</span> <span class="n">backwards_compatible_impl_</span><span class="p">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="n">core_</span><span class="p">.</span><span class="n">engine_</span><span class="p">.</span><span class="n">native_handle</span><span class="p">();</span> <span class="p">}</span> <span class="p">}}}}</span> </pre></div></div> Joseph Southwell <joseph@…> https://svn.boost.org/trac10/ticket/10898 https://svn.boost.org/trac10/ticket/10898 Report #10897: Pool allocator does not perfect forward its arguments Wed, 24 Dec 2014 15:17:51 GMT Mon, 13 Jun 2016 14:17:05 GMT <p> The pool_allocator library has not been updated to C++11 yet. One of the greatest missing feature is the lack of perfect forwarding of the parameters of "conctruct" in pool_allocator and fast_pool_allocator. This prevent the move constructor of the allocated object to be called. Right now the construct implementation is as follow: </p> <pre class="wiki">static void construct(const pointer ptr, const value_type &amp; t) { new (ptr) T(t); } </pre><p> while it should be: </p> <pre class="wiki">template&lt;typename ...Args&gt; static void construct(const pointer ptr, Args&amp;&amp; ...args) { new (ptr) T(std::forward&lt;Args&gt; (args)...); } </pre> bertello.matteo@… https://svn.boost.org/trac10/ticket/10897 https://svn.boost.org/trac10/ticket/10897 Report #10896: astar_maze.cpp: Debug assertion under Windows MSVC-12 Wed, 24 Dec 2014 12:34:03 GMT Wed, 16 Dec 2015 14:35:48 GMT <p> Dear maintainers, the example astar_maze.cpp compiled under Windows 7 x64 as 32 Bit executable, throws a debug assertion. See the callstack (attachment). I called this example without any arguments from the debugger so it used the default grid size of 20x20. </p> <p> The assertion get triggered at </p> <blockquote> <p> bucket_pointer get_bucket(std::size_t bucket_index) const </p> <blockquote> <p> { </p> </blockquote> </blockquote> <p> ---&gt; BOOST_ASSERT(buckets_); </p> <blockquote> <p> return buckets_ + static_cast&lt;std::ptrdiff_t&gt;(bucket_index); </p> </blockquote> <blockquote> <p> } </p> </blockquote> <p> buckets_ is nullptr. </p> <p> Environment: Windows 7 x 64 Visual Studio 2013 Update 4 Express for Desktop </p> <p> Attachments: </p> <ul><li>callstack </li><li>minidump </li><li>solution folder (compressed) </li></ul> georg@… https://svn.boost.org/trac10/ticket/10896 https://svn.boost.org/trac10/ticket/10896 Report #10895: graph - copy_component is broken Tue, 23 Dec 2014 21:13:48 GMT Thu, 23 Apr 2015 21:40:19 GMT <p> I noticed two issues with copy_component in graph/copy.hpp. </p> <ol><li>The non-named parameter version gives compiler error due to failing look up: </li></ol><pre class="wiki"> return detail::copy_component_impl (g_in, src, g_out, make_vertex_copier(g_in, g_out), make_edge_copier(g_in, g_out), make_iterator_property_map(orig2copy.begin(), get(vertex_index, g_in), orig2copy[0]), bgl_named_params&lt;char,char&gt;('x') // dummy param object ); </pre><p> error: 'make_vertex_copier' was not declared in this scope. </p> <p> Prefixing them with <strong>detail::</strong> solves this issue. This change makes it similar to copy_graph which also refers to the detail namespace for these functions. </p> <p> Fixed version: </p> <pre class="wiki"> return detail::copy_component_impl (g_in, src, g_out, detail::make_vertex_copier(g_in, g_out), detail::make_edge_copier(g_in, g_out), make_iterator_property_map(orig2copy.begin(), get(vertex_index, g_in), orig2copy[0]), bgl_named_params&lt;char,char&gt;('x') // dummy param object ); </pre><ol start="2"><li>In graph_copy_visitor struct's <strong>copy_one_vertex</strong> member function, the template arguments include <strong>class Graph</strong> but it is not used (neither in the function arguments nor inside the func. body). </li></ol><pre class="wiki"> template &lt;class Vertex, class Graph&gt; typename graph_traits&lt;NewGraph&gt;::vertex_descriptor copy_one_vertex(Vertex u) const { ... } </pre><p> So the compiler complains about the failing deduction. </p> <p> error: template argument deduction/substitution failed: note: couldn't deduce template parameter 'Graph' </p> <p> Fix: Removing the template argument class Graph fixes the issue. </p> <pre class="wiki"> template &lt;class Vertex&gt; typename graph_traits&lt;NewGraph&gt;::vertex_descriptor copy_one_vertex(Vertex u) const { ... } </pre><p> Note: Tried with GCC 4.7.2 and 4.8.3 </p> erdem@… https://svn.boost.org/trac10/ticket/10895 https://svn.boost.org/trac10/ticket/10895 Report #10894: Add an adaptor to iterate a range in pairs of (current element, next element) Tue, 23 Dec 2014 12:07:00 GMT Thu, 21 Jan 2016 08:51:26 GMT <p> An often needed functionality is iterating a range and accessing the current and next element of the range. </p> <p> Currently this can be done as follows: </p> <div class="wiki-code"><div class="code"><pre><span class="n">assert</span><span class="p">(</span><span class="n">someVec</span><span class="p">.</span><span class="n">size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">);</span> <span class="k">for</span><span class="p">(</span><span class="k">auto</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_iterator_range</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_zip_iterator</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_tuple</span><span class="p">(</span> <span class="n">someVec</span><span class="p">.</span><span class="n">cbegin</span><span class="p">(),</span> <span class="n">std</span><span class="o">::</span><span class="n">next</span><span class="p">(</span><span class="n">someVec</span><span class="p">.</span><span class="n">cbegin</span><span class="p">()))),</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_zip_iterator</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_tuple</span><span class="p">(</span> <span class="n">std</span><span class="o">::</span><span class="n">prev</span><span class="p">(</span><span class="n">someVec</span><span class="p">.</span><span class="n">cend</span><span class="p">()),</span> <span class="n">someVec</span><span class="p">.</span><span class="n">cend</span><span class="p">())))</span> <span class="p">)</span> <span class="p">{</span> <span class="k">auto</span> <span class="n">current</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="mi">0</span><span class="o">&gt;</span><span class="p">(</span><span class="n">pair</span><span class="p">);</span> <span class="k">auto</span> <span class="n">next</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="mi">1</span><span class="o">&gt;</span><span class="p">(</span><span class="n">pair</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> An adaptor would strongly increase readability: </p> <div class="wiki-code"><div class="code"><pre><span class="n">assert</span><span class="p">(</span><span class="n">someVec</span><span class="p">.</span><span class="n">size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">);</span> <span class="k">using</span> <span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="k">operator</span><span class="o">|</span><span class="p">;</span> <span class="k">for</span><span class="p">(</span><span class="k">auto</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">someVec</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="n">paired</span><span class="p">())</span> <span class="p">{</span> <span class="n">pair</span><span class="p">.</span><span class="n">current</span><span class="p">();</span> <span class="n">pair</span><span class="p">.</span><span class="n">next</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> Of course the difference between current and next could be made customizable as well. </p> Matthäus Brandl (brandl.matthaeus@… https://svn.boost.org/trac10/ticket/10894 https://svn.boost.org/trac10/ticket/10894 Report #10892: Boost Asio Mon, 22 Dec 2014 19:52:05 GMT Mon, 22 Dec 2014 19:52:05 GMT <p> I have posted on stackoverflow to see if I am implementing the TCP Server incorrectly, but this has worked for me for years. </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/27609306/boost-asio-error"><span class="icon">​</span>http://stackoverflow.com/questions/27609306/boost-asio-error</a> </p> <p> I think I wrote it originally with Boost 1.38, and upgraded boost versions about every 6 months. Around Boost 1.47 I ran into this problem, but I just used BOOST_ASIO_ENABLE_OLD_SSL to continue running with the old SSL logic to make it work. I am now trying to fix it because I think the older SSL logic may be contributing to another bug in the code. </p> <p> It could be that the older SSL logic didn't check everything it was supposed to, and this is the correct functionality. But if that is the case, I'm not sure what I am doing wrong. </p> Matthew Mueller <Matthew.a.mueller@…> https://svn.boost.org/trac10/ticket/10892 https://svn.boost.org/trac10/ticket/10892 Report #10891: Uneeded usage of namespace causes problems for the compiler Mon, 22 Dec 2014 19:34:55 GMT Fri, 13 Feb 2015 18:30:09 GMT <p> Problem due to unnecessary </p> <pre class="wiki">using namespace detail; </pre><p> on several occasions in boost/units/cmath.hpp </p> <p> Compare Boost ticket 8651 (<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/8651"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/8651</a>) for the equivalent workaround in variant and Gcc bug 57524 (<a class="ext-link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57524"><span class="icon">​</span>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57524</a>) for original bug. </p> anonymous https://svn.boost.org/trac10/ticket/10891 https://svn.boost.org/trac10/ticket/10891 Report #10885: Serialization relies upon exceptions Fri, 19 Dec 2014 08:33:36 GMT Fri, 19 Dec 2014 08:33:36 GMT <p> Loading and saving ::boost::gregorian::date in greg_serialize.hpp relies upon an exception to detect if the serialized string corresponds to a special value. This has a negative effect on the runtime in debug mode. </p> anonymous https://svn.boost.org/trac10/ticket/10885 https://svn.boost.org/trac10/ticket/10885 Report #10884: Support for Clang using std::chrono in boost::asio Thu, 18 Dec 2014 18:12:08 GMT Thu, 18 Dec 2014 18:12:08 GMT <p> boost automatically detects that gcc can use std::chrono, but clang requires defining BOOST_ASIO_HAS_STD_CHRONO. It would be nice if clang were detected as well </p> robotoman@… https://svn.boost.org/trac10/ticket/10884 https://svn.boost.org/trac10/ticket/10884 Report #10883: Using allow-long-disguise misspelled options become positionals Thu, 18 Dec 2014 13:13:51 GMT Tue, 23 Dec 2014 10:25:45 GMT <p> Using allow-long-disguise in the parsing style, misspelled options are downgraded to positionals. The resulting error message: "too many positional options" is confusing and doesn't help at all the user to detect the error. </p> pellegrini.dario@… https://svn.boost.org/trac10/ticket/10883 https://svn.boost.org/trac10/ticket/10883 Report #10881: address-model=64 combined with --with-libraries results in x86 built Thu, 18 Dec 2014 10:55:57 GMT Thu, 18 Dec 2014 10:55:57 GMT <p> Maybe my approach is wrong but this </p> <p> ./bootstrap.sh address-model=64 </p> <p> results in building all libraries for x64 architecture and this </p> <p> ./bootstrap.sh address-model=64 --with-libraries=atomic,chrono,date_time,filesystem </p> <p> Results in atomic,chrono,date_time,filesystem being built for x86. Why? </p> anonymous https://svn.boost.org/trac10/ticket/10881 https://svn.boost.org/trac10/ticket/10881 Report #10878: boost::thread::attributes -> no non-variadic-support Tue, 16 Dec 2014 22:12:16 GMT Fri, 02 Sep 2016 20:55:32 GMT <p> In terms of applying thread attributes right now the documentation describes only this signature: </p> <p> template&lt;typename Callable&gt; thread(attributes&amp; attrs, Callable func); </p> <p> but this does not work when variadics are not supported (leading to error: type 'boost::thread_attributes' does not provide a call operator) </p> <p> Nevertheless, this temporaray way works out: </p> <p> thread(attributes&amp; attrs, boost::bind(Callable func)); </p> a.carot@… https://svn.boost.org/trac10/ticket/10878 https://svn.boost.org/trac10/ticket/10878 Report #10876: windows_intermodule_singleton breaks when mixing debug/release dll/exe Tue, 16 Dec 2014 11:14:43 GMT Tue, 16 Dec 2014 11:14:43 GMT <p> Ticket <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/9262" title="#9262: Bugs: windows_intermodule_singleton breaks when calling a Debug dll from a ... (reopened)">#9262</a> describes a problem related to windows_intermodule_singleton being created in one runtime and then accessed in another (debug/release runtimes). I believe there is at least one more "problematic" object besides the std::map that from boost 1.56 is replaced with boost::container::map. </p> <p> The struct windows_bootstamp contains a std::string and since objects of this type is created in shared memory the problem with mixed runtimes is still there. </p> anders.widen@… https://svn.boost.org/trac10/ticket/10876 https://svn.boost.org/trac10/ticket/10876 Report #10874: Tips To Understanding The Important Details Of Van Insurance Sun, 14 Dec 2014 21:44:21 GMT Sun, 14 Dec 2014 21:44:21 GMT <p> <a class="missing wiki">iframe http://www.veoh.com/static/swf/veoh/SPL.swf?videoAutoPlay=0&amp;permalinkId=v197427717WbmxKED height="498" width="510"</a>You may be a new car owner, or someone thinking about buying a car, or just in the market for better deals on your auto insurance. Regardless of the situation, it's critical to know how to the best deal - and the best coverage - when shopping for auto insurance. </p> <p> Learning about car insurance can help you to find the best policy and rate for you. You want to make sure that you are covered and you should understand that coverage so that you know what you are paying for. Property damage liability covers you in the event that your vehicle hits someones property. It is a required coverage in all but 3 states. </p> <p> One, less well-known way to get further discounts on auto insurance, especially if you have a teen driver around who is only going back young driver van insurance and forth to school, is to request whether your insurance offers a discount for low mileage. If you can accurately estimate the actual mileage your teen drives and report it accurately, you will pay less. </p> <p> When trying to get a lower rate on your auto cheap van insurance for young drivers insurance, don't be afraid to shop around. Auto insurance companies use different formulas to calculate who is a higher risk driver and therefore who has higher premiums. Even a slightly different set of questions could mean big savings for you. </p> <p> When considering what options you want to include with your auto insurance, be sure to see if towing insurance is something that you really need. Oftentimes towing is already included in certain types of accidents. If you belong to certain auto assistance agencies, they may already provide this coverage to you. Most often, it is not financially beneficial to include this extra. </p> <p> Before signing up for an insurance, you should carefully go over the policy. Pay a professional to explain it to you, if you need to. You must know what you will be covered for, in order to assess if you will be getting your money's worth. If the policy seems written in such a way that does not make it accessible, your insurance company might be trying to hide something. </p> <p> Check out your state's minimum insurance guidelines, and follow them. Some states only require you to have liability coverage, but others require personal injury as well. Make sure you know your state's practices so that you do not fail to meet them, and end up with a ticket for not having enough coverage. </p> <p> If you have other drivers on your insurance policy, remove them to get a better deal. Most insurance companies have a "guest" clause, meaning that you can occasionally allow someone to drive your car and be covered, as long as they have your permission. If your roommate only drives your car twice a month, there's no reason they should be on there! </p> <p> When you have any kind of questions regarding exactly where in addition to tips commercial van insurance quote on how to make use of <a class="ext-link" href="http://vaninsurance.company/"><span class="icon">​</span>multi car and van insurance</a>, it is possible to call us with the web site. When purchasing car insurance, consider opting for the highest deductible option you can get to keep your premiums low. To make sure you have the money to pay the deductible if you should need it, bank the difference from the expensive premium you would pay for a lower deductible. A safe driver will come out way ahead over time. </p> <p> Never drive your car without liability insurance. This insurance type can save you a lot of money as the insurance company pays the damages you caused to someone. Without this insurance type, you would be liable for all the costs. Choose the coverage that is right for you and your unique situation. </p> <p> Avoid auto insurance extremes. You can definitely be hurt by a lack of adequate insurance. Even more costly is being over-insured. Many people pay for coverage they can not ever possibly need. The result can be a huge drain on your budget. Evaluate your car insurance coverage and rates annually. </p> <p> Shopping for auto insurance often feels overwhelming to many people, but it need not be a stressful experience. By taking the time to educate yourself on auto insurance and the many options available to you, you will be able to make the choice that is right for you and your needs. </p> dianagillan@… https://svn.boost.org/trac10/ticket/10874 https://svn.boost.org/trac10/ticket/10874 Report #10872: MSVC static analyser warning in Boost.System Sun, 14 Dec 2014 01:04:19 GMT Mon, 15 Dec 2014 16:55:18 GMT <p> boost\system\detail\error_code.ipp(422) : warning C6102: Using 'lpMsgBuf' from failed function call at line '418'.: Lines: 410, 411, 422 </p> Niall Douglas https://svn.boost.org/trac10/ticket/10872 https://svn.boost.org/trac10/ticket/10872 Report #10871: Warnings in Boost.System when built on 64 bit system on MSVC Sun, 14 Dec 2014 01:00:56 GMT Mon, 15 Dec 2014 16:57:17 GMT <p> .\boost/system/detail/error_code.ipp(384) : warning C4267: 'argument' : conversion from 'size_t' to 'DWORD', possible loss of data .\boost/system/detail/error_code.ipp(401) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data </p> Niall Douglas https://svn.boost.org/trac10/ticket/10871 https://svn.boost.org/trac10/ticket/10871 Report #10868: Intersecting integer polygons produces incorrect or self-intersecting result Thu, 11 Dec 2014 21:48:25 GMT Wed, 27 May 2015 21:27:18 GMT <p> I've noticed several instances of Boost.Geometry returning incorrect or self-intersecting polygons when working in integers (32 and 64 bit). </p> <p> EXAMPLE: Polygon A has vertices (42817136,-3774506), (43029074,-3929862), (31446819,18947953), (30772384,19615678), (30101303,19612322), (30114725,16928001), (33520458,6878575), (35332375,2413654), (35725796,2024148), (42817136,-3774506) </p> <p> Polygon B has vertices (-33386239,-33721784), (33721785,-33386239), (33386240,33721785), (-33721784,33386240) </p> <p> Intersecting Polygon A and Polygon B returns: </p> <p> A correct but self-intersecting polygon using Boost 1.55 </p> <p> An incorrect polygon using Boost 1.57 and int64_t coordinates </p> <p> An incorrect and self-intersecting polygon using Boost 1.57 and int32_t coordinates. </p> <p> For both Boost 1.57 tests, I enabled BOOST_GEOMETRY_NO_ROBUSTNESS to avoid floating point rescaling. </p> starinshak1@… https://svn.boost.org/trac10/ticket/10868 https://svn.boost.org/trac10/ticket/10868 Report #10867: Undocumented precondition for extended_p_square accumulator Thu, 11 Dec 2014 13:50:13 GMT Thu, 11 Dec 2014 13:50:13 GMT <p> probs has to be sorted ascendingly for correct results. This is not mentioned in the documentation. </p> <p> typedef accumulator_set&lt;double, stats&lt;tag::extended_p_square&gt; &gt; accumulator_t; accumulator_t acc(tag::extended_p_square::probabilities = probs); </p> Jens.Decker@… https://svn.boost.org/trac10/ticket/10867 https://svn.boost.org/trac10/ticket/10867 Report #10865: boost::iterators::transform_iterator<LambdaType> is not default constructible on Clang Thu, 11 Dec 2014 09:49:25 GMT Mon, 02 Feb 2015 01:12:09 GMT <p> The attached code compiles with GCC 4.9.2 and MSVC 2013, but fails with Clang 3.5.0. I've first reported it against clang, but they explained that it's actually incorrect in Boost, see clang bug <a class="missing ticket">#21787</a> (the bugtracker rejects links here). </p> Balázs Kádár <Balzs.Kdr.ext@…> https://svn.boost.org/trac10/ticket/10865 https://svn.boost.org/trac10/ticket/10865 Report #10864: Boost 1.57 + Xcode 6: function/lamba incompatibility Wed, 10 Dec 2014 18:24:56 GMT Wed, 10 Dec 2014 19:03:24 GMT <p> Boost 1.57 and clang 6 (from Xcode 6) reject this program: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/lambda/lambda.hpp&gt; #include &lt;boost/function.hpp&gt; typedef boost::function&lt;void(std::ostream&amp;)&gt; Streamer; void out(const Streamer&amp; func) { func(std::cout); } int main(int argc, char *argv[]) { out(boost::lambda::_1 &lt;&lt; "hi there\n"); return 0; } </pre><p> Errors start with: </p> <pre class="wiki">boost/lambda/detail/lambda_traits.hpp:256:58: error: cannot form a reference to 'void' typename detail::IF&lt;boost::is_function&lt;T&gt;::value, T&amp;, const T&gt;::RET ^ </pre><p> This works with Boost 1.55 with clang 6. </p> <p> This works with Boost 1.57 with older compilers. </p> nat@… https://svn.boost.org/trac10/ticket/10864 https://svn.boost.org/trac10/ticket/10864 Report #10860: Switch to 1.57 causes crash in xpressive lib in Win64 release configuration Tue, 09 Dec 2014 09:08:08 GMT Tue, 09 Dec 2014 09:08:08 GMT <p> Check for attached code, I simplified original code as much as possible so don't bother with logic. </p> <p> Crash happens in xpressive/detail/static/compile.hpp loc 38, but only in Windows 64-bit release configuration ( any other: Linux (g++ 4.8.2,) or debug or 32-bit work just fine ). I use Visual Studio 2013 Update 4 for Win build. </p> <p> Addition INFO: If you build w/o NDEBUG symbol defined or if you turned off optimization it works fine. </p> <p> P.S. This code works fine with boost 1.51 and Visual Studio 2010. </p> Ivan Sakic <ivansakic@…> https://svn.boost.org/trac10/ticket/10860 https://svn.boost.org/trac10/ticket/10860 Report #10859: Minor typo in Boost.Interprocess Tue, 09 Dec 2014 03:10:16 GMT Tue, 09 Dec 2014 03:10:16 GMT <p> Patch attached. </p> oss.2012.team+2014E@… https://svn.boost.org/trac10/ticket/10859 https://svn.boost.org/trac10/ticket/10859 Report #10850: gcc-x86-implementation of "atomic_exchange_and_add" triggers intel's "unitialized variable" runtime check Thu, 04 Dec 2014 18:21:44 GMT Thu, 04 Dec 2014 18:23:51 GMT <p> The current implementation of atomic_exchange_and_add for gcc x86 is (<a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp</a>) as following: </p> <p> inline int atomic_exchange_and_add( int * pw, int dv ) { </p> <blockquote> <p> <em> int r = *pw; </em> *pw += dv; <em> return r; </em></p> </blockquote> <blockquote> <p> int r; </p> </blockquote> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> <blockquote> <p> "lock\n\t" "xadd %1, %0": "=m"( *pw ), "=r"( r ): <em> outputs (%0, %1) "m"( *pw ), "1"( dv ): </em> inputs (%2, %3 == %1) "memory", "cc" <em> clobbers </em></p> </blockquote> <p> ); </p> </blockquote> <blockquote> <p> return r; </p> </blockquote> <p> } </p> <p> This unfortunately triggers the "unitialized variable" runtime check of the Intel c++ compiler. Since r is actually superfluous, a simple patch can fix the problem: </p> <p> inline int atomic_exchange_and_add( int * pw, int dv ) { </p> <blockquote> <p> <em> int r = *pw; </em> *pw += dv; <em> return r; </em></p> </blockquote> <p> </p> <blockquote> <p> <span class="underline">asm</span> <span class="underline">volatile</span> ( </p> <blockquote> <p> "lock\n\t" "xadd %1, %0": "+m"( *pw ), "+r"( dv ): <em> input/output (%0, %1) </em></p> <blockquote> <p> : </p> </blockquote> <p> "memory", "cc" <em> clobbers </em></p> </blockquote> <p> ); </p> </blockquote> <p> </p> <blockquote> <p> return dv; </p> </blockquote> <p> } My colleague, who wrote the patch, checked that the generated assembler code is almost identical to the original one. "Almost" in the sense, that the removal of r changes some offsets. </p> fabian.hachenberg@… https://svn.boost.org/trac10/ticket/10850 https://svn.boost.org/trac10/ticket/10850 Report #10849: Dereferencing null pointer in Point<>::dimension_checker::apply() Thu, 04 Dec 2014 18:21:04 GMT Mon, 15 Dec 2014 23:08:50 GMT <p> The following lines: </p> <blockquote> <p> P* p = 0; geometry::set&lt;Dimension&gt;(*p, geometry::get&lt;Dimension&gt;(*p)); </p> </blockquote> <p> indicate that the first parameter of the set&lt;&gt;() call will be a null pointer if it is evaluated before the call to get&lt;&gt;(). </p> <p> If this is intentional *and* you can guarantee that the get&lt;&gt;() call will always be made before the first parameter is evaluated, then it should be documented with comments inline. Or, better yet, split the code into 2 lines to insure *p isn't an attempt to dereference a null pointer and to insure that static code checkers don't think it is. </p> Steve Hickman <steve.hickman@…> https://svn.boost.org/trac10/ticket/10849 https://svn.boost.org/trac10/ticket/10849 Report #10848: try_acquire_file_lock/ try_acquire_file_lock_sharable uses = instead of == in comparison Thu, 04 Dec 2014 18:13:38 GMT Thu, 04 Dec 2014 18:13:38 GMT <p> The last line for both try_acquire_file_lock and try_acquire_file_lock_sharable is: </p> <blockquote> <p> return (acquired = true); </p> </blockquote> <p> It is unclear if the use of assignment ('=') instead of comparison ('==') here is intentional. My static analysis checker picked it up as a bug. If this is intentional, it should be documented with comments inline. Or, better yet, split into 2 lines of code so static analysis doesn't flag it. </p> Steve Hickman <steve.hickman@…> https://svn.boost.org/trac10/ticket/10848 https://svn.boost.org/trac10/ticket/10848 Report #10846: Bug in python::detail::cv_tag<> Thu, 04 Dec 2014 12:56:37 GMT Thu, 04 Dec 2014 13:05:40 GMT <p> I believe I spotted a bug in boost/python/detail/cv_category.hpp. In cv_tag the constant is_volatile is initialized with is_const_. </p> <p> <a class="ext-link" href="https://github.com/boostorg/python/blob/master/include/boost/python/detail/cv_category.hpp#L15"><span class="icon">​</span>https://github.com/boostorg/python/blob/master/include/boost/python/detail/cv_category.hpp#L15</a> </p> David Siegel <david@…> https://svn.boost.org/trac10/ticket/10846 https://svn.boost.org/trac10/ticket/10846 Report #10842: Boost.Parameter: Class Template parameter can't be abstract Wed, 03 Dec 2014 08:52:38 GMT Wed, 03 Dec 2014 08:53:09 GMT <p> VS 2013 fails to compile when abstract class is passed as class template parameter with error "cannot instantiate abstract class". Sample: </p> <p> #include &lt;boost/parameter.hpp&gt; </p> <p> class Intf { public: </p> <blockquote> <p> virtual void func() = 0; </p> </blockquote> <p> }; </p> <p> BOOST_PARAMETER_TEMPLATE_KEYWORD(param) </p> <p> template&lt;class Arg&gt; class P { public: </p> <blockquote> <p> typedef typename boost::parameter::parameters&lt; </p> <blockquote> <p> boost::parameter::optional&lt;tag::param&gt; </p> <blockquote class="citation"> <p> ::bind&lt;Arg&gt;::type args; </p> </blockquote> </blockquote> <p> typedef typename boost::parameter::value_type&lt;args, tag::param, void&gt;::type param_type; </p> </blockquote> <p> }; </p> <p> int main() { </p> <blockquote> <p> P&lt;param&lt;Intf&gt; &gt; p; </p> <blockquote> <p> return 0; </p> </blockquote> </blockquote> <p> } </p> o0o0@… https://svn.boost.org/trac10/ticket/10842 https://svn.boost.org/trac10/ticket/10842 Report #10841: runtime error boost::numeric:;odeint:: Wed, 03 Dec 2014 04:32:55 GMT Thu, 29 Jan 2015 21:43:18 GMT <p> Dear all, </p> <p> I encountered a run-time error while using odeint. In a class method this command is executed: </p> <pre class="wiki">size_t size =boost::numeric::odeint::integrate(model, x, 0.0, 1.0, 0.1); </pre><p> when x is a VECTOR defined as: </p> <pre class="wiki">typedef std::vector&lt;double&gt; state_type; </pre><p> No compile, link errors occur; however, in run-time following window pops up after some iteration of the integrator. It says: <strong>vector iterator not incrementable.</strong> as shown in figure attached. </p> <p> By changing vector definition to array definition the problem will be resolved. So the following works when 3 is number of states: </p> <pre class="wiki">typedef boost::array&lt; double , 3 &gt; state_type; </pre><p> This problem happens by use of the odeint-v2 commit messaged "fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/142" title="#142: Bugs: Build config for gcc: GCC and GXX variables broken (closed: Fixed)">#142</a>, fixes boost include issue in bjam" and boost 1.56.0 on Windows 8 64 bits, Visual Studio 2012, platform v110 (equivalent c++11). </p> taghia.javad@… https://svn.boost.org/trac10/ticket/10841 https://svn.boost.org/trac10/ticket/10841 Report #10834: ptr_array cannot be used with boost::nullable<T> as type parameter Tue, 02 Dec 2014 09:45:51 GMT Tue, 02 Dec 2014 09:54:07 GMT <p> The copy constructor of ptr_array uses operator[] to access the elements of the ptr_array to copy.<br /> Problem one: It is not save to call ptr_array[i] if element i is null.<br /> Problem two: Operator[] returns a reference to remove_nullable&lt;T&gt;::type. The address of this object is then casted to const T*, which fails with compilation error C2664 if T=nullable&lt;X&gt;, because X* cannot be casted to nullable&lt;X&gt;*. </p> <p> Reproduction: compile attached test.cpp<br /> Possible fix: see attached patch<br /> <br /> Regards, Florian </p> florian.schmid1978@… https://svn.boost.org/trac10/ticket/10834 https://svn.boost.org/trac10/ticket/10834 Report #10831: ublas OneElement returns 0.0 Mon, 01 Dec 2014 14:03:24 GMT Wed, 14 Jan 2015 13:23:57 GMT <p> In ublas::detail::concepts.hpp the function &lt;template class T&gt; <a class="missing wiki">OneElement</a>(T) { </p> <blockquote> <p> return T(0.0); </p> </blockquote> <p> } returns 0 for all types. In older versions the function returned 1.f 1. for floats and doubles etc. </p> <p> This breaks some client code. In my case the Mkl bindings (Math Kernel Library of Intel) for ublas. </p> r.r.ottenhoff@… https://svn.boost.org/trac10/ticket/10831 https://svn.boost.org/trac10/ticket/10831 Report #10830: Clang static analyzer warns about <boost/graph/named_function_params.hpp> Mon, 01 Dec 2014 13:52:53 GMT Wed, 14 Mar 2018 13:38:31 GMT <p> When running the clang static analyzer (v3.4.1) on some code of mine that uses boost graph, it reports this warning about boost/graph/named_function_params.hpp: </p> <p> /usr/local/include/boost/graph/named_function_params.hpp:240:5: warning: Address of stack memory associated with temporary object of type 'boost::param_not_found' returned to caller </p> <blockquote> <p> return lookup_named_param_def&lt;Tag, Args, param_not_found&gt;::get(p, param_not_found()); <sup><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del>~ </del></sup></p> </blockquote> <p> 1 warning generated. </p> <p> I believe that's a genuine error. </p> anonymous https://svn.boost.org/trac10/ticket/10830 https://svn.boost.org/trac10/ticket/10830 Report #10829: cardinality() of an interval_set is std::size_t independent of interval type, causing overflow Mon, 01 Dec 2014 09:32:41 GMT Mon, 01 Dec 2014 10:47:41 GMT <p> For an interval_set boost::icl::interval_set&lt;int64_t&gt;, the cardinality function boost::icl::cardinality() returns std::size_t, which is 32-bit on 32-bit machines. This makes the result wrong, due to overflow, whenever the cardinality of the interval_set does not fit into 32-bit. </p> <p> The following code works on 64-bit but not on 32-bit: </p> <pre class="wiki">#include &lt;boost/icl/interval_set.hpp&gt; int main() { boost::icl::interval_set&lt;int64_t&gt; is; is.add(boost::icl::interval&lt;int64_t&gt;::closed(1, 4294967297LL)); assert(boost::icl::cardinality(is) == 4294967297LL); } </pre> konstantin.miller@… https://svn.boost.org/trac10/ticket/10829 https://svn.boost.org/trac10/ticket/10829 Report #10828: Boost asio ssl: password callback not called if private key passed with context::use_private_key Sun, 30 Nov 2014 22:32:52 GMT Sun, 30 Nov 2014 22:38:53 GMT <p> I'm writing a test unit that uses the boost asio ssl. </p> <p> I'm using Boost 1.54 on Ubuntu 14.04 64 bit. </p> <p> I plan to make the test self-sufficient and not rely on files to specify the private key, so I want to hard encode the key and its password in the test itself (they are just test key and password). </p> <p> The code is below. For now it does nothing but I'm just trying to make the password callback work when the private key is specified: </p> <hr /> <p> std::string password_callback( </p> <blockquote> <p> std::size_t max_length, boost::asio::ssl::context::password_purpose purpose) </p> </blockquote> <p> { </p> <blockquote> <p> return "test"; </p> </blockquote> <p> } </p> <p> TEST(<a class="missing wiki">StreamReader</a>, sslStream) { </p> <blockquote> <p> std::string certificate = "-----BEGIN CERTIFICATE-----\n\ </p> </blockquote> <p> MIIFJjCCAw4CCQDQjrFrRcdRkjANBgkqhkiG9w0BAQsFADBVMQswCQYDVQQGEwJT\n\ BLABLABLABLA"; </p> <blockquote> <p> std::string key = "-----BEGIN RSA PRIVATE KEY-----\n\ </p> </blockquote> <p> Proc-Type: 4,ENCRYPTED\n\ DEK-Info: DES-EDE3-CBC,06622C22CAB27AC2\n\ \n\ JMudxXy4ZxB733xh7QO4elsVCTzJZuWl9Go4ZMuWx0DZb2fYHqXynKZSf7UactSw\n\ vhKJnLPZaa5U+xOr9cdpSd3SwtQyNu6yaVQH3af2ILRwUsw9mQmI8yqIIF1Y6AgV\n\ BLABLABLABLA"; </p> <blockquote> <p> boost::asio::io_service io_service; boost::asio::ssl::context ctx(boost::asio::ssl::context::tlsv12); ctx.set_password_callback(password_callback); ctx.use_certificate(boost::asio::const_buffer(certificate.c_str(), certificate.size()), boost::asio::ssl::context::pem); ctx.use_private_key(boost::asio::const_buffer(key.c_str(), key.size()), boost::asio::ssl::context::pem); ctx.set_verify_mode(boost::asio::ssl::verify_peer); </p> </blockquote> <p> } </p> <hr /> <p> When use_private_key is executed then the password callback is not called and I have to enter the password manually in the console. If I replace use_private_key with use_private_key_file then the callback is called. </p> <p> I would expect password_callback to be called also when use_private_key is used. </p> <p> Checking the internals of use_private_key I find this: boost::system::error_code context::use_private_key( </p> <blockquote> <p> const const_buffer&amp; private_key, context::file_format format, boost::system::error_code&amp; ec) </p> </blockquote> <p> { </p> <blockquote> <p> ::ERR_clear_error(); </p> </blockquote> <blockquote> <p> bio_cleanup bio = { make_buffer_bio(private_key) }; if (bio.p) { </p> <blockquote> <p> evp_pkey_cleanup evp_private_key = { 0 }; switch (format) { case context_base::asn1: </p> <blockquote> <p> evp_private_key.p = ::d2i_PrivateKey_bio(bio.p, 0); break; </p> </blockquote> <p> case context_base::pem: </p> <blockquote> <p> evp_private_key.p = ::PEM_read_bio_PrivateKey(bio.p, 0, 0, 0); break; </p> </blockquote> <p> default: </p> <blockquote> <p> { </p> <blockquote> <p> ec = boost::asio::error::invalid_argument; return ec; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> if (evp_private_key.p) { </p> <blockquote> <p> if (::SSL_CTX_use_PrivateKey(handle_, evp_private_key.p) == 1) { </p> <blockquote> <p> ec = boost::system::error_code(); return ec; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> ec = boost::system::error_code( </p> <blockquote> <p> static_cast&lt;int&gt;(::ERR_get_error()), boost::asio::error::get_ssl_category()); </p> </blockquote> <p> return ec; </p> </blockquote> <p> } </p> <p> PEM_read_bio_PrivateKey accepts a callback parameter or a passphrase, but they are left null. </p> Paolo Brandoli <paolo.brandoli@…> https://svn.boost.org/trac10/ticket/10828 https://svn.boost.org/trac10/ticket/10828 Report #10819: Error in the documentation Wed, 26 Nov 2014 11:49:50 GMT Fri, 13 Feb 2015 18:36:17 GMT <p> Hello, </p> <p> I found an little error in your documentation. In the chapter on message queues : <a href="http://www.boost.org/doc/libs/1_36_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.message_queue">http://www.boost.org/doc/libs/1_36_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.message_queue</a> </p> <p> Under the "Using a message queue" title, in the third code example, you have : </p> <pre class="wiki"> message_queue mq (open_only //only create ,"message_queue" //name ); </pre><p> And the commentary line "<em>only create" is wrong : the code actually opens the queue in "open only". </em></p> <p> Best regards Gilles </p> gilles.lourdelet@… https://svn.boost.org/trac10/ticket/10819 https://svn.boost.org/trac10/ticket/10819 Report #10818: A C4267 "possible loss of data" warning when compiling on VS2013 x64 with /W4 Wed, 26 Nov 2014 06:14:30 GMT Wed, 26 Nov 2014 06:14:30 GMT <p> Example: </p> <blockquote> <p> boost::dynamic_bitset&lt;&gt; flags; </p> </blockquote> <p> ... </p> <blockquote> <p> bool b = flags<a class="changeset" href="https://svn.boost.org/trac10/changeset/56" title="*** empty log message *** ">[56]</a>; </p> </blockquote> <p> Warning when calling the reference class constructor from the [] operator. </p> <p> Compiler -- VS2013, Platform -- x64, Debug mode, Warning level -- /W4. </p> <p> Fix: I found if you changed the pos parameter of the reference class constructor to size_type, the warning went away. </p> <p> From: </p> <blockquote> <p> reference(block_type &amp; b, block_type pos) </p> </blockquote> <p> To: </p> <blockquote> <p> reference(block_type &amp; b, size_type pos) </p> </blockquote> <p> Location Line 88 of dynamic_bitset.hpp </p> <p> Actual error message: </p> <p> 4&gt;C:\Boost\1_56_0-VS_2013-x64\include\boost-1_56\boost/dynamic_bitset/dynamic_bitset.hpp(296): warning C4267: 'argument' : conversion from 'size_t' to 'unsigned long', possible loss of data 4&gt; C:\Boost\1_56_0-VS_2013-x64\include\boost-1_56\boost/dynamic_bitset/dynamic_bitset.hpp(295) : while compiling class template member function 'boost::dynamic_bitset&lt;unsigned long,std::allocator&lt;Block&gt;&gt;::reference boost::dynamic_bitset&lt;Block,std::allocator&lt;Block&gt;&gt;::operator [](boost::dynamic_bitset&lt;Block,std::allocator&lt;Block&gt;&gt;::size_type)' </p> <p> reference(block_type &amp; b, size_type pos) </p> kaa123@… https://svn.boost.org/trac10/ticket/10818 https://svn.boost.org/trac10/ticket/10818 Report #10817: missing argument global-setup Tue, 25 Nov 2014 22:30:30 GMT Thu, 11 Dec 2014 10:28:53 GMT <p> I was attempting to build boost on Win 8.1 with just the MS VC++ Compiler for Python (microsoft.com/en-us/download/details.aspx?id=44266) so no Visual Studio installed. </p> <p> I encountered the error below when running <code>b2</code>. Modifying project-config.jam to have the line <code>using msvc : : : &lt;setup&gt; ;</code> allow the build to continue to completion. </p> <pre class="wiki">c:\boost_1_57_0&gt;b2 --debug-configuration notice: found boost-build.jam at C:/boost_1_57_0/boost-build.jam notice: loading Boost.Build from C:/boost_1_57_0/tools/build/src notice: Searching 'C:\Windows' 'C:\Users\IEUser' 'C:\Users\IEUser' 'C:\boost_1_57_0\tools/build/src' 'C:\boost_1_57_0' ' C:/boost_1_57_0/tools/build/src/kernel' 'C:/boost_1_57_0/tools/build/src/util' 'C:/boost_1_57_0/tools/build/src/build' ' C:/boost_1_57_0/tools/build/src/tools' 'C:/boost_1_57_0/tools/build/src/contrib' 'C:/boost_1_57_0/tools/build/src/.' for site-config configuration file 'site-config.jam'. notice: Configuration file 'site-config.jam' not found in 'C:\Windows' 'C:\Users\IEUser' 'C:\Users\IEUser' 'C:\boost_1_5 7_0\tools/build/src' 'C:\boost_1_57_0' 'C:/boost_1_57_0/tools/build/src/kernel' 'C:/boost_1_57_0/tools/build/src/util' ' C:/boost_1_57_0/tools/build/src/build' 'C:/boost_1_57_0/tools/build/src/tools' 'C:/boost_1_57_0/tools/build/src/contrib' 'C:/boost_1_57_0/tools/build/src/.'. notice: Searching 'C:\Users\IEUser' 'C:\Users\IEUser' 'C:\boost_1_57_0\tools/build/src' 'C:\boost_1_57_0' 'C:/boost_1_57 _0/tools/build/src/kernel' 'C:/boost_1_57_0/tools/build/src/util' 'C:/boost_1_57_0/tools/build/src/build' 'C:/boost_1_57 _0/tools/build/src/tools' 'C:/boost_1_57_0/tools/build/src/contrib' 'C:/boost_1_57_0/tools/build/src/.' for user-config configuration file 'user-config.jam'. notice: Configuration file 'user-config.jam' not found in 'C:\Users\IEUser' 'C:\Users\IEUser' 'C:\boost_1_57_0\tools/bui ld/src' 'C:\boost_1_57_0' 'C:/boost_1_57_0/tools/build/src/kernel' 'C:/boost_1_57_0/tools/build/src/util' 'C:/boost_1_57 _0/tools/build/src/build' 'C:/boost_1_57_0/tools/build/src/tools' 'C:/boost_1_57_0/tools/build/src/contrib' 'C:/boost_1_ 57_0/tools/build/src/.'. notice: Searching '.' for project-config configuration file 'project-config.jam'. notice: Loading project-config configuration file 'project-config.jam' from '.'. notice: will use 'cl.exe' for msvc, condition &lt;toolset&gt;msvc C:/boost_1_57_0/tools/build/src/tools\msvc.jam:1075: in configure-really *** argument error * rule generate-setup-cmd ( version : command : parent : options * : cpu : global-setup : default-global-setup-options : default-setup ) * called with: ( default : C:\Users\IEUser\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\bin : C: \Users\IEUser\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC : : i386 : : x86 : vcvars32.bat ) * missing argument global-setup C:/boost_1_57_0/tools/build/src/tools\msvc.jam:809:see definition of rule 'generate-setup-cmd' being called C:/boost_1_57_0/tools/build/src/tools\msvc.jam:201: in configure C:/boost_1_57_0/tools/build/src/tools\msvc.jam:153: in msvc.init C:/boost_1_57_0/tools/build/src/build\toolset.jam:43: in toolset.using C:/boost_1_57_0/tools/build/src/build\project.jam:1007: in using project-config.jam:3: in modules.load C:/boost_1_57_0/tools/build/src\build-system.jam:249: in load-config C:/boost_1_57_0/tools/build/src\build-system.jam:412: in load-configuration-files C:/boost_1_57_0/tools/build/src\build-system.jam:524: in load C:\boost_1_57_0\tools\build\src/kernel\modules.jam:289: in import C:\boost_1_57_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build C:\boost_1_57_0\boost-build.jam:17: in module scope </pre> calumlind@… https://svn.boost.org/trac10/ticket/10817 https://svn.boost.org/trac10/ticket/10817 Report #10815: Boost 1.55 property_tree INFO parser does not round-trip for \t (tab) Mon, 24 Nov 2014 21:12:25 GMT Fri, 13 Feb 2015 18:31:10 GMT <p> Following GTest fails, as embedded tab (\t) has been expanded to a 'real tab' by write_info (note that \n, \0, \r are all escaped properly </p> <pre class="wiki"> TEST(AdHocTest, AHT0051Boost__property_tree__info_parser_tab) { std::stringstream ss; std::string inputRaw, input, output, exp, act; boost::property_tree::ptree ptree; inputRaw = "key2 \"value with special characters in it {}; #\\n\\t\\\"\\r\"\n"; ss.str(inputRaw); ASSERT_NO_THROW(boost::property_tree::info_parser::read_info(ss, ptree)) &lt;&lt; "parse inputRaw"; EXPECT_EQ(std::string("value with special characters in it {}; #\n\t\"\r"), ptree.get&lt;std::string&gt;("key2")); ss = std::stringstream(); ASSERT_NO_THROW(boost::property_tree::info_parser::write_info(ss, ptree)) &lt;&lt; "extract input"; input = ss.str(); exp = "key2 \"value with special characters in it {}; #\\n\\t\\\"\\r\"\n"; act = input; EXPECT_EQ(exp.size(), act.size()); EXPECT_EQ(exp, act); for (size_t ix = 0, diffs = 0; (ix &lt; exp.size()) &amp;&amp; (ix &lt; act.size()) &amp;&amp; (diffs &lt; 5); ++ix) { if (exp[ix] != act[ix]) { ++diffs; } EXPECT_EQ(exp[ix], act[ix]) &lt;&lt; "ix=" &lt;&lt; ix; } } </pre> brewmanz <brewmanz@…> https://svn.boost.org/trac10/ticket/10815 https://svn.boost.org/trac10/ticket/10815 Report #10814: Boost asio socket keeps established connection forever even after endpoint is closed. Mon, 24 Nov 2014 20:40:33 GMT Mon, 24 Nov 2014 20:40:33 GMT <p> Context: </p> <p> Server side: </p> <blockquote> <p> Accept socket loop blocking read from accepted socket </p> </blockquote> <p> Client side: </p> <blockquote> <p> Connect loop blocking write to connected socket </p> </blockquote> <p> Sporadically the client endpoint is ended but the server is not notified of that event. After that, the client can connect again to the server (even tho gdb says the thread is on recv) but the server never returns from the blocking read due to, probably, the new endpoint sending data doesn't match the last one: </p> <p> Server side: </p> <pre class="wiki">Local Address Foreign Address 192.168.1.1:1234 192.168.1.2:50000 </pre><p> Client side after connection was dropped: </p> <pre class="wiki">Local Address Foreign Address 192.168.1.2:50001 192.168.1.2:1234 </pre><p> As I said, the issue is sporadic but I can reproduce the same blocking behaviour as follows: </p> <ol><li>Run the server and client normally. Client sends data and server reads it. </li><li>Enable a traffic filter with a firewall blocking/dropping packages at the client. </li><li>After step 2, I can kill the client process and the server will never realize that the client is no longer there, so it will block at recv forever. </li></ol><p> Regards, Iván </p> Iván <versuchen@…> https://svn.boost.org/trac10/ticket/10814 https://svn.boost.org/trac10/ticket/10814 Report #10813: Boost headers files incorrect permissions Sun, 23 Nov 2014 09:04:29 GMT Fri, 13 Feb 2015 18:31:57 GMT <p> I recently updated Boost 1.57, I noticed that a few header files "parameter.hpp" and some of those in the "parameter" directory has permission 755 instead of normal 644. Why make these normal header files executable? </p> zhouyan@… https://svn.boost.org/trac10/ticket/10813 https://svn.boost.org/trac10/ticket/10813 Report #10810: Property tree XML parser eats whitespace of text elements Fri, 21 Nov 2014 20:15:08 GMT Fri, 21 Nov 2014 20:15:08 GMT <p> The trim_whitespace flag converts this XML: </p> <div class="wiki-code"><div class="code"><pre><span class="nt">&lt;yes&gt;</span> <span class="nt">&lt;sadly&gt;</span>Whitespace matters <span class="nt">&lt;/sadly&gt;</span> <span class="nt">&lt;/yes&gt;</span> </pre></div></div><p> into this: </p> <div class="wiki-code"><div class="code"><pre><span class="nt">&lt;yes&gt;</span> <span class="nt">&lt;sadly&gt;</span>Whitespace matters<span class="nt">&lt;/sadly&gt;</span> <span class="nt">&lt;/yes&gt;</span> </pre></div></div><p> While the deletion of whitespace in elements that contain other elements is fine, I would consider it a bug to delete whitespace in elements that contain only text. It wouldn't do this to attributes, so it shouldn't do it to text elements. </p> <p> I believe that the cause is that the boost version of rapidxml combines the two flags <code>parse_trim_whitespace</code> and <code>parse_normalize_whitespace</code> into one, <code>trim_whitespace</code>. </p> ahaferburg@… https://svn.boost.org/trac10/ticket/10810 https://svn.boost.org/trac10/ticket/10810 Report #10809: Seeking breaks iostreams::restriction<std::istream> internal state Fri, 21 Nov 2014 01:47:49 GMT Fri, 21 Nov 2014 01:47:49 GMT <p> As in the attached test case, calling seekg() on a restricted istream appears to break the internal state such that more characters can be extracted than expected. </p> <p> I've done some digging around, and I think this is because the restriction device does a seek relative to std::ios_base::cur, which returns -1 from the underlying implementation: Calling std::streambuf::pubseekoff() with way = ios_base::cur and which = (ios_base::in | ios_base::out) fails according to the C++ standard section 27.8.2.4. </p> <p> When fixing this, it's worth noting that calling pubseekoff() will also fail with libstdc++ if it's passed (ios_base::in | ios_base::out) when the stream buffer has only an output buffer or input buffer, but not both. </p> <p> Tested with g++-4.6.3 and g++-4.8.? on 64 bit linux Ubuntu. Behaviour is consistent with clang++-libc++, but inconsistent with MSVC. </p> chris42f@… https://svn.boost.org/trac10/ticket/10809 https://svn.boost.org/trac10/ticket/10809 Report #10807: Single-letter short-cuts in Interprocess index are mostly broken Thu, 20 Nov 2014 10:31:51 GMT Fri, 13 Feb 2015 18:36:30 GMT <p> Very similar to ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7899" title="#7899: Bugs: Invalid URLs in container documentation (closed: fixed)">#7899</a>. In &lt;<a href="http://www.boost.org/doc/libs/1_57_0/doc/html/interprocess/indexes_reference.html">http://www.boost.org/doc/libs/1_57_0/doc/html/interprocess/indexes_reference.html</a>&gt;, many of the single-letter links point at some other boost module's documentation (<code>circular_buffer</code>, <code>container</code>). </p> Stefan Ring <stefanrin@…> https://svn.boost.org/trac10/ticket/10807 https://svn.boost.org/trac10/ticket/10807 Report #10805: Bugs: problem in push_relabel_max_flow algorithm when using std::numeric_limits<double>::max() as capacity in some edges Wed, 19 Nov 2014 15:29:51 GMT Fri, 13 Feb 2015 18:32:27 GMT <blockquote> <p> I am having trouble using the push_relabel_max_flow algorithm when I put std::numeric_limits&lt;double&gt;::max() as capacity attribute in some edges. </p> </blockquote> <p> is there a maximum value that I can use as capacities. which ?. </p> <p> I adjunct an example that reproduces the error: </p> <blockquote> <p> /home/madoery/boost_1_55_0/boost/graph/push_relabel_max_flow.hpp:750: typename boost::property_traits&lt;<a class="missing wiki">CapacityEdgeMap</a>&gt;::value_type boost::push_relabel_max_flow(Graph&amp;, typename boost::graph_traits&lt;Graph&gt;::vertex_descriptor, typename boost::graph_traits&lt;Graph&gt;::vertex_descriptor, <a class="missing wiki">CapacityEdgeMap</a>, <a class="missing wiki">ResidualCapacityEdgeMap</a>, <a class="missing wiki">ReverseEdgeMap</a>, <a class="missing wiki">VertexIndexMap</a>) [with Graph = boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::bidirectionalS, vertexInfo, edgeInfo&gt;, <a class="missing wiki">CapacityEdgeMap</a> = boost::adj_list_edge_property_map&lt;boost::bidirectional_tag, double, double&amp;, long unsigned int, edgeInfo, double edgeInfo::*&gt;, <a class="missing wiki">ResidualCapacityEdgeMap</a> = boost::adj_list_edge_property_map&lt;boost::bidirectional_tag, double, double&amp;, long unsigned int, edgeInfo, double edgeInfo::*&gt;, <a class="missing wiki">ReverseEdgeMap</a> = boost::adj_list_edge_property_map&lt;boost::bidirectional_tag, boost::detail::edge_desc_impl&lt;boost::bidirectional_tag, long unsigned int&gt;, boost::detail::edge_desc_impl&lt;boost::bidirectional_tag, long unsigned int&gt;&amp;, long unsigned int, edgeInfo, boost::detail::edge_desc_impl&lt;boost::bidirectional_tag, long unsigned int&gt; edgeInfo::*&gt;, <a class="missing wiki">VertexIndexMap</a> = boost::vec_adj_list_vertex_id_map&lt;vertexInfo, long unsigned int&gt;, typename boost::property_traits&lt;<a class="missing wiki">CapacityEdgeMap</a>&gt;::value_type = double, typename boost::graph_traits&lt;Graph&gt;::vertex_descriptor = long unsigned int]: Assertion `algo.is_flow()' failed. </p> </blockquote> <p> On the other side, <a class="ext-link" href="http://lists.boost.org/Archives/boost/2011/01/174683.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2011/01/174683.php</a> treats the problem of using double precision as capacity attributes on the edges. Jeremiah Willcock advices to just replace the == and != operations in is_flow (and not &lt; and &gt;) and asks if the code works correctly in that case. I made the replacement but I had to use precision (epsilon) too high (in the order of 0.2, 0.3) to make the BOOST_ASSERT(algo.is_flow()) to pass. </p> <p> Maybe these are two different problems or not. I am not sure, but they seems to be regarding the same assert that is failing </p> <p> </p> Pablo Madoery <madoerypablo@…> https://svn.boost.org/trac10/ticket/10805 https://svn.boost.org/trac10/ticket/10805 Report #10802: Use make_shared<impl_type> Wed, 19 Nov 2014 12:13:19 GMT Wed, 19 Nov 2014 12:13:19 GMT <p> file_descriptor::file_descriptor() uses new impl_type, you might want to use make_shared&lt;impl_type&gt; instead. </p> anonymous https://svn.boost.org/trac10/ticket/10802 https://svn.boost.org/trac10/ticket/10802 Report #10801: Used uninitialized error in boyer_myrvold_impl.hpp Wed, 19 Nov 2014 00:47:37 GMT Tue, 09 Aug 2016 09:06:33 GMT <p> I met an error when using boyer_myrvold_planar_test() function in Boost_1_55_0 to generate the kuratowski subgraph. Error message is listed as follows: </p> <p> ./boost/graph/planar_detail/boyer_myrvold_impl.hpp:1545:11 error: 'z' may be used uninitialized in this function. </p> <p> I added a "Wno-maybe-uninitialized" flag to Makefile to remove this error temporarily, but it's not a good method. I'm looking for a better way to fix this. </p> wanglurg@… https://svn.boost.org/trac10/ticket/10801 https://svn.boost.org/trac10/ticket/10801 Report #10800: boost::iostreams seems to be unmaintained Tue, 18 Nov 2014 09:14:09 GMT Tue, 18 Nov 2014 09:42:36 GMT <p> Hi guys, </p> <p> I see 9 opened pull requests and 0 closed in git repository of boost::iostreams. It seems that there is no active project collaborator who can merge the requests. </p> <p> Can you please look at this? </p> <p> Thanks. </p> ivan.grynko https://svn.boost.org/trac10/ticket/10800 https://svn.boost.org/trac10/ticket/10800 Report #10799: Several problems building the example/tutorial project Mon, 17 Nov 2014 22:21:29 GMT Tue, 14 Apr 2015 20:54:37 GMT <p> -- There are a number of problems reported here, so you may want to break this down into pieces for separate tracking. However, I would consider this item to be fixed only when I can build the example/tutorial and it works. I had a hard time building the example/tutorial project. Some of this is, I believe, due to bugs in the distribution, and some is probably my lack of understanding. Some of this I posted to the Boost interest group before I could join this (Python C++) SIG, hoping it would get forwarded on here, so there may be a duplication. </p> <ol><li>Calling bjam in the example/tutorial project failed to even start up the build system. This was because the example/bootstrap.jam pointed to the wrong path for the build system root. Instead of ../../../tools/build/v2, it should be ../../../tools/build/src/kernel. When I changed this, bjam now got past the build system startup. </li></ol><p> </p> <ol start="2"><li>Building the project not only compiles hello.cpp, but it also builds a private copy of the <a class="missing wiki">Boost/Python</a> library. So I needed to supply the properties needed to correctly build this library (i.e., link=shared, address-mode=64). Of course, I needed to supply those same properties anyway as part of creating the extension. </li></ol><p> There's probably a way to change something so that the extension uses the library built in the Boost.Python's own project, or if I have obtained the libraries without having to build them, it would use these. I don't know if you intended to have the tutorial example make its own copies, but it seems a waste of resources to do so. </p> <ol start="3"><li>The link for debug mode failed, saying that the .pdb file was in the wrong format (LNK1207). This is a bug, due to an option in the link command '/IMPORTLIB:...hello_ext.pdb'. So the linker is creating the .pdb file as an import library, then complaining that it's not a valid pdb file. I changed '.pdb' to '.lib'. I could also have removed this option entirely, since hello_ext.pyd doesn't have anything to export anyway. </li></ol><p> </p> <ol start="4"><li>Before figuring out that the link was the problem, I changed the /Z7 argument to /Zi in the compile command for hello.cpp. I don't know if this was necessary, or if it was necessary to leave it in place. For now, I just wanted to get it to build. Without /Z7, the debug symbols go into example/tutorial/vc120.pdb. I don't know if the linker found these or not. When I try stepping into the extension, I'll know for sure. Microsoft prefers that .pdb files be used for debug symbols rather than embedding them in the .obj files, so this might be the only real reason to make the change. </li></ol><p> </p> <ol start="5"><li>The link for both release mode failed with two undefined symbols, <span class="underline">imp_DecodePointer and </span>imp_EncodePointer, which are in kernel32.lib. I tried adding kernel32.lib to the link's inputs. But then it warned that there could be static constructors/destructors not getting called. After much research on this topic, I found that the source of the problem was the /NOENTRY argument in the link command, which has the consequence that the automatic CRT initialization of the DLL doesn't occur. So I remove the /NOENTRY and got not warnings, and I didn't need to add kernerl32.lib either. </li></ol><p> </p> <ol start="6"><li>A minor point. The MACHINE:X64 is redundant. The linker knows it's X64 because of the architecture of the input files and libraries. Nothing wrong with it being there, but it's just clutter in the code. </li></ol><p> </p> <ol start="7"><li>Now bjam was successful in building whatever it wanted to build. It said that hello.test passed. Sounds great, I thought. But I then went into Python and tried 'import hello_ext' and that failed. So I have an issue with the test program passing, while the extension didn't actually work. </li></ol><p> </p> <ol start="8"><li>The problem was that bjam didn't put the hello_ext.pyd file in my Python's lib/site-packages folder. It built the .pyd and .pdb files in the example/tutorial/bin/... staging area, and copied (ONLY) the .pyd file to example/tutorial. So not only did the .pyd file get put in the wrong place, but the .pdb was left out. If I am going to debug my extension (such as with Visual Studio's Python Tools), the .pdb file also needs to be in the lib/site-packages folder. Without the .pdb file, the PTVS debugger will not set breakpoints or step into the extension code. </li></ol><p> </p> <ol start="9"><li>I spent another few hours figuring out why the import statement in Python didn't work. Python could not load the hello_ext.pyd because it has references to BOOST_PYTHON_....DLL. If I run Python from the example/tutorial directory itself, it works because this DLL had been build there. That explains why the hello.test passed (as bjam ran it from that same directory). So to fix this problem, I copied the DLL (and its accompanying PDB) from the place where it was built into a directory in my PATH. It would also work to have these files placed in the Python lib/site-packages folder, since the main DLL's folder is one of the places that Windows looks for imported DLLs. </li></ol><p> To summarize, the fixes I made in order to build the example and use it in Python were: </p> <ul><li>Change the build system path in examples/bootstrap.jam. </li><li>Change the /IMPORTLIB:....pdb to ....lib in the link command. I could have removed it altogether. </li><li>Remove /NOENTRY from the link command. </li><li>Manually copy the example/tutorial/bin/.../hello_ext.(pyd,pdb) files to Python's lib/site-packages. </li><li>Manually copy the Boost.Python DLL and PDB files to a location in my %PATH% (or to lib/site-packages) </li></ul><p> These last two steps are not necessary if I run Python from the example/tutorial directory itself, as Python will find the PYD there and it will find the Boost.Python DLL there as well. So if the other problems are fixed, then the tutorial would be telling the truth that the extension can be imported and works correctly PROVIDED that you don't change directories after doing the build. </p> <p> Maybe there's something later in the tutorial about modifying the jamfile to specify where you want the files installed so that Python can import them no matter what directory Python was called from. If this is the case, that's OK with me, as long as the tutorial says <strong>clearly</strong> where you first build the example that at this point, Python <strong>must be run from the example/tutorial directory</strong>. </p> <p> This cost me about a whole day's time, and I'm pretty resourceful. And I actually want to build my own extensions in VS instead of bjam, linking to the Boost.Python DLL. I started of by trying this, and my extension crashed. So that's why I went about building the example with bjam, to at least see what a successful deployment looked like. I now understand that my original attempt crashed because linking to the Boost.Python DLL is not enough to be sure that the target PYD will load. </p> <p> If I had understood that in the first place, I would have taken care to put the Boost.Python DLL on my PATH, and not tried building the example in the manner specified in the tutorial. But then I would not have discovered those build bugs, and they would have gone unreported. </p> <p> I suppose that a lot of people would have given up building the tutorial example and then given up on Boost.Python altogether. </p> <p> One more comment. You should make sure, as part of the QA process for releasing Boost that you be sure that all the examples can be built and work properly, particularly on Windows with all the MSVC toolsets. Item (1) would apply to all platforms, so I would guess that the example/tutorial was not tested at all. </p> <p> Michael Rolle </p> m@… https://svn.boost.org/trac10/ticket/10799 https://svn.boost.org/trac10/ticket/10799 Report #10797: boost::join multiply defined (from algorithm/string/join.hpp and range/join.hpp) Mon, 17 Nov 2014 10:02:26 GMT Mon, 17 Nov 2014 10:02:26 GMT <p> algorithm/string/join.hpp pulls boost::algorithm::join into the boost namespace with a </p> <p> using algorithm::join </p> <p> statement. This crates a conflict with range/join.hpp which defines boost::join directly. If I want to use both in one compilation unit, I have to wrap one of them in a separate class --&gt; ugly. </p> <p> Suggested fix: I do not think that "using algorithm::join" is needed in the file algorithm/string/join.hpp. </p> Andreas Baak <andreas.baak@…> https://svn.boost.org/trac10/ticket/10797 https://svn.boost.org/trac10/ticket/10797 Report #10796: JSON writer incorrectly escapes UTF8 strings Sun, 16 Nov 2014 20:10:25 GMT Sun, 16 Nov 2014 20:10:25 GMT <p> Consider a string s = "Šnipiškių". </p> <p> JSON writer stores "\u00C5\u00A0nipi\u00C5\u00A1ki\u00C5\u00B3", which is actually "Å nipiÅ¡kių". </p> <p> Expected behaviour: </p> <ol><li>UTF-8 strings properly escaped by boost::property_tree::write_json </li><li>boost::property_tree::read_json then reads EXACTLY the same UTF8 string. </li></ol><p> I.e., if the original ptree contained "Šnipiškių", the same string "Šnipiškių" must be read back by read_json. </p> vygis.d@… https://svn.boost.org/trac10/ticket/10796 https://svn.boost.org/trac10/ticket/10796 Report #10795: Include asio/ssl/context.hpp reports two leaks on Windows Sun, 16 Nov 2014 02:48:37 GMT Fri, 06 May 2016 21:33:06 GMT <p> Simply including the header file &lt;boost/asio/ssl/context.hpp&gt; causes the Microsoft Visual Studio debug runtime (MSVCRTD library) to report two 32 byte leaks on exit. It is not clear if these are from asio or from OpenSSL. This sample program compiled for 64-bit Windows using Visual Studio 2013 demonstrates the problem: </p> <pre class="wiki">#include &lt;boost/asio/ssl/context.hpp&gt; #include &lt;crtdbg.h&gt; int main() { int flags = _CrtSetDbgFlag (_CRTDBG_REPORT_FLAG); flags |= _CRTDBG_LEAK_CHECK_DF; _CrtSetDbgFlag (flags); } </pre><p> This report is shown on exit, when main returns: </p> <pre class="wiki">Detected memory leaks! Dumping objects -&gt; {716} normal block at 0x00000000003953F0, 32 bytes long. Data: &lt; &gt; 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {715} normal block at 0x00000000003952D0, 32 bytes long. Data: &lt; S9 &gt; 00 00 00 00 CD CD CD CD F0 53 39 00 00 00 00 00 Object dump complete. </pre> Vinnie Falco <vinnie.falco@…> https://svn.boost.org/trac10/ticket/10795 https://svn.boost.org/trac10/ticket/10795 Report #10793: Compilation errors in Visual Studio 2013 with /Za (disabled extensions) Fri, 14 Nov 2014 20:48:44 GMT Wed, 01 Nov 2017 01:03:58 GMT <p> Use of Scope Exit generates compilation errors in Visual Studio 2013 (version 18.00.31101 for x86) if <code>/Za</code> option (disabled language extensions) is used. </p> <p> I haven't checked other VS versions. I haven't checked previous Boost versions. And <code>/Za</code> is not set by default (language extensions are enabled by default). </p> <p> With <code>BOOST_SCOPE_EXIT_ALL</code> we get following errors: </p> <pre class="wiki">C:\Users\Adam Badura\Dropbox\Projekty\scope_exit&gt;cl /EHsc /Za /I"C:\Programming\boost_1_57_0" BOOST_SCOPE_EXIT_ALL.cpp Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86 Copyright (C) Microsoft Corporation. All rights reserved. BOOST_SCOPE_EXIT_ALL.cpp C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2143: syntax error : missing ';' before '&lt;' C:\Programming\boost_1_57_0\boost/scope_exit.hpp(427) : see reference to class template instantiation 'boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type&lt;ID,T&gt;' being compiled C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2913: explicit specialization; 'boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type&lt;ID,boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type_default_param&gt;::id2type_impl' is not a specialization of a class template C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2059: syntax error : '&lt;' C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body </pre><p> With <code>BOOST_SCOPE_EXIT</code> we get following errors: </p> <pre class="wiki">C:\Users\Adam Badura\Dropbox\Projekty\scope_exit&gt;cl /EHsc /Za /I"C:\Programming\boost_1_57_0" BOOST_SCOPE_EXIT.cpp Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86 Copyright (C) Microsoft Corporation. All rights reserved. BOOST_SCOPE_EXIT.cpp C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2143: syntax error : missing ';' before '&lt;' C:\Programming\boost_1_57_0\boost/scope_exit.hpp(427) : see reference to class template instantiation 'boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type&lt;ID,T&gt;' being compiled C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2913: explicit specialization; 'boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type&lt;ID,boost::scope_exit::aux::msvc_typeof_this::msvc_extract_type_default_param&gt;::id2type_impl' is not a specialization of a class template C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2059: syntax error : '&lt;' C:\Programming\boost_1_57_0\boost/scope_exit.hpp(419) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body BOOST_SCOPE_EXIT.cpp(9) : warning C4003: not enough actual parameters for macro 'BOOST_PP_EXPAND_I' </pre><p> Note that in case of <code>BOOST_SCOPE_EXIT</code> we also get warning C4003. And it shows in clean build (without <code>/Za</code>) as well. </p> adam.f.badura@… https://svn.boost.org/trac10/ticket/10793 https://svn.boost.org/trac10/ticket/10793 Report #10791: wiki is horribly stale Fri, 14 Nov 2014 04:51:44 GMT Fri, 14 Nov 2014 04:51:44 GMT <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/wiki"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki</a> </p> <p> talks as if the transition to github hasn't been made, still talks about subversion, etc. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/10791 https://svn.boost.org/trac10/ticket/10791 Report #10789: unexpected behaviour with boost range join on rvalue Thu, 13 Nov 2014 07:05:05 GMT Thu, 13 Nov 2014 07:11:20 GMT <p> I'm trying to append one element to a range, and iterate over the resulting compound range. When the rhs of the <code>join</code> is an lvalue, everything seems ok. However, when the rhs of the <code>join</code> is an rvalue, I'm seeing something unexpected. </p> <p> Specifically, when such a joined range is accessed directly by a <code>for(auto e : range)</code> loop, or when it is saved in a variable using <code>auto</code>, then iterated over, the singleton in the second container is not produced correctly. If however the joined range is passed by reference (other than non-const lvalue, obviously), then iterated over, the result is correct. </p> Matei David <matei@…> https://svn.boost.org/trac10/ticket/10789 https://svn.boost.org/trac10/ticket/10789 Report #10787: MPI wrapper autodetection fails for SGI Wed, 12 Nov 2014 16:05:51 GMT Fri, 14 Nov 2014 14:59:58 GMT <p> Detection for mpi wrapper compiler fails when using SGI's mpi, the only command printing compile info is -show which fails because boost assumes -show is for mpich which also has -compile_info and -link_info but sgi's doesn't: </p> <p> mpicxx -show g++ -I/nasa/sgi/mpt/2.11r13/include -L/nasa/sgi/mpt/2.11r13/lib -lmpi++ -lmpi </p> <p> mpirun -v MPT: libxmpi.so 'SGI MPT 2.11 10/16/14 05:50:05' </p> ilja.j.honkonen@… https://svn.boost.org/trac10/ticket/10787 https://svn.boost.org/trac10/ticket/10787 Report #10785: Lambda assignment fails to compile in 1.57.0 Wed, 12 Nov 2014 09:50:58 GMT Mon, 20 Apr 2015 12:11:28 GMT <p> The following code used to work. From Boost 1.57.0 it does not compile with Clang 3.4, 3.5, 3.6 and Apple Clang. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/function.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/lambda/lambda.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/lambda/bind.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">add</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">,</span> <span class="kt">int</span> <span class="n">b</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">;</span> <span class="p">}</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">function</span><span class="o">&lt;</span><span class="kt">int</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">fuse</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">lambda</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">add</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">lambda</span><span class="o">::</span><span class="n">_1</span><span class="p">,</span> <span class="o">-</span><span class="n">boost</span><span class="o">::</span><span class="n">lambda</span><span class="o">::</span><span class="n">_2</span><span class="p">);</span> <span class="kt">int</span> <span class="n">a</span> <span class="o">=</span> <span class="n">fuse</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">a</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> The compiler error reads: </p> <pre class="wiki">In file included from boost_lambda.cpp:3: In file included from /Users/dolfim/src/boost_1_57_0/boost/lambda/lambda.hpp:14: In file included from /Users/dolfim/src/boost_1_57_0/boost/lambda/core.hpp:46: /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/lambda_traits.hpp:256:58: error: cannot form a reference to 'void' typename detail::IF&lt;boost::is_function&lt;T&gt;::value, T&amp;, const T&gt;::RET ^ /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/operators.hpp:148:98: note: in instantiation of template class 'boost::lambda::const_copy_argument&lt;const void&gt;' requested here BOOST_LAMBDA_BE2(BOOST_LAMBDA_COMMA_OPERATOR_NAME, other_action&lt;comma_action&gt;, const A, const B, const_copy_argument) ^ /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/operators.hpp:63:20: note: expanded from macro 'BOOST_LAMBDA_BE2' tuple&lt;typename CONVERSION &lt;CONSTA&gt;::type, lambda_functor&lt;Arg&gt; &gt; \ ^ /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/operators.hpp:148:18: note: while substituting deduced template arguments into function template 'operator,' [with A = void, Arg = boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt;] BOOST_LAMBDA_BE2(BOOST_LAMBDA_COMMA_OPERATOR_NAME, other_action&lt;comma_action&gt;, const A, const B, const_copy_argument) ^ /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/operators.hpp:145:42: note: expanded from macro 'BOOST_LAMBDA_COMMA_OPERATOR_NAME' #define BOOST_LAMBDA_COMMA_OPERATOR_NAME operator, ^ /Users/dolfim/src/boost_1_57_0/boost/lambda/detail/operators.hpp:65:78: note: expanded from macro 'BOOST_LAMBDA_BE2' &gt; \ ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/is_copy_constructible.hpp:104:24: note: in instantiation of template class 'boost::detail::is_copy_constructible_impl2&lt;false, boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here boost::detail::is_copy_constructible_impl2&lt; ^ /Users/dolfim/src/boost_1_57_0/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/is_copy_constructible.hpp:113:71: note: in instantiation of template class 'boost::detail::is_copy_constructible_impl&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_copy_constructible,T,::boost::detail::is_copy_constructible_impl&lt;T&gt;::value) ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/detail/bool_trait_def.hpp:61:30: note: expanded from macro 'BOOST_TT_AUX_BOOL_TRAIT_DEF1' BOOST_TT_AUX_BOOL_C_BASE(C) \ ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/detail/bool_trait_def.hpp:55:81: note: expanded from macro 'BOOST_TT_AUX_BOOL_C_BASE' # define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::boost::integral_constant&lt;bool,C&gt; ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/has_trivial_copy.hpp:36:76: note: in instantiation of template class 'boost::is_copy_constructible&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_COPY(T) &amp;&amp; boost::is_copy_constructible&lt;T&gt;::value); ^ /Users/dolfim/src/boost_1_57_0/boost/config/suffix.hpp:394:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/has_trivial_copy.hpp:62:78: note: in instantiation of template class 'boost::detail::has_trivial_copy_impl&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy_constructor,T,::boost::detail::has_trivial_copy_impl&lt;T&gt;::value) ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/detail/bool_trait_def.hpp:61:30: note: expanded from macro 'BOOST_TT_AUX_BOOL_TRAIT_DEF1' BOOST_TT_AUX_BOOL_C_BASE(C) \ ^ /Users/dolfim/src/boost_1_57_0/boost/type_traits/detail/bool_trait_def.hpp:55:81: note: expanded from macro 'BOOST_TT_AUX_BOOL_C_BASE' # define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::boost::integral_constant&lt;bool,C&gt; ^ /Users/dolfim/src/boost_1_57_0/boost/function/function_template.hpp:939:20: note: in instantiation of template class 'boost::has_trivial_copy_constructor&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here if (boost::has_trivial_copy_constructor&lt;Functor&gt;::value &amp;&amp; ^ /Users/dolfim/src/boost_1_57_0/boost/function/function_template.hpp:722:13: note: in instantiation of function template specialization 'boost::function2&lt;int, int, int&gt;::assign_to&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here this-&gt;assign_to(f); ^ /Users/dolfim/src/boost_1_57_0/boost/function/function_template.hpp:1071:5: note: in instantiation of function template specialization 'boost::function2&lt;int, int, int&gt;::function2&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here base_type(f) ^ boost_lambda.cpp:14:44: note: in instantiation of function template specialization 'boost::function&lt;int (int, int)&gt;::function&lt;boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::action&lt;3, boost::lambda::function_action&lt;3, boost::lambda::detail::unspecified&gt; &gt;, boost::tuples::tuple&lt;int (*const)(int, int), const boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;FIRST&gt; &gt;, const boost::lambda::lambda_functor&lt;boost::lambda::lambda_functor_base&lt;boost::lambda::unary_arithmetic_action&lt;boost::lambda::minus_action&gt;, boost::tuples::tuple&lt;boost::lambda::lambda_functor&lt;boost::lambda::placeholder&lt;SECOND&gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt; &gt; &gt; &gt;' requested here boost::function&lt;int (int, int)&gt; fuse = boost::lambda::bind(&amp;add, boost::lambda::_1, -boost::lambda::_2); ^ 1 error generated. </pre> dolfim@… https://svn.boost.org/trac10/ticket/10785 https://svn.boost.org/trac10/ticket/10785 Report #10784: Error compiling syslog_backend with icc-11.1.064 Tue, 11 Nov 2014 21:52:54 GMT Wed, 12 Nov 2014 13:07:34 GMT <p> I am trying to compile boost 1.56.0 with icc-11.1.064 on ubuntu 12.04. That specific compiler is needed for compatibility with existing code. </p> <p> It's failing with this error: </p> <p> ./boost/asio/detail/keyword_tss_ptr.hpp(62): error: template argument list must match the parameter list </p> <blockquote> <p> BOOST_ASIO_THREAD_KEYWORD T* keyword_tss_ptr&lt;T&gt;::value_; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> compilation aborted for libs/log/src/syslog_backend.cpp (code 2) </p> <blockquote> <p> "icpc" -c -xc++ -w1 -inline-level=2 -O3 -ip -pthread -fPIC -fPIC -wd177,780,2196,1782,193,304,981,1418,411,734,279 -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_HAS_ICU=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_USE_SSSE3 -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG -D_GNU_SOURCE=1 -D_XOPEN_SOURCE=600 -I"." -I"/usr/include" -c -o "bin.v2/libs/log/build/intel-linux/release/build-no/log-api-unix/threading-multi/syslog_backend.o" "libs/log/src/syslog_backend.cpp" </p> </blockquote> <p> ...failed intel-linux.compile.c++ bin.v2/libs/log/build/intel-linux/release/build-no/log-api-unix/threading-multi/syslog_backend.o... intel-linux.compile.c++ bin.v2/libs/log/build/intel-linux/release/build-no/log-api-unix/threading-multi/threadsafe_queue.o intel-linux.compile.c++ bin.v2/libs/log/build/intel-linux/release/build-no/log-api-unix/threading-multi/trivial.o </p> <p> If I compile with 'define=BOOST_LOG_WITHOUT_SYSLOG' then it builds successfully but I'd like to have the syslog backend support available. Any help would be much appreciated. </p> bhall@… https://svn.boost.org/trac10/ticket/10784 https://svn.boost.org/trac10/ticket/10784 Report #10782: bootstrap.bat fails with recursion exceeding stack limits on win32 Tue, 11 Nov 2014 16:06:06 GMT Tue, 22 Sep 2015 10:20:29 GMT <pre class="wiki">D:\upload\boost_1_57_0&gt;bootstrap.bat Building Boost.Build engine ****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=1240, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** D:\upload\boost_1_57_0\tools\build\src\engine&gt; </pre><p> Platform is 32bit Windows XP. This is not the same bug as <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/10330"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/10330</a> </p> slowriot <riot@…> https://svn.boost.org/trac10/ticket/10782 https://svn.boost.org/trac10/ticket/10782 Report #10781: Minor typo in regex_actions.hpp Tue, 11 Nov 2014 03:11:59 GMT Tue, 11 Nov 2014 03:11:59 GMT <p> Patch attached. </p> oss.2012.team+2014C@… https://svn.boost.org/trac10/ticket/10781 https://svn.boost.org/trac10/ticket/10781 Report #10779: error compiling boostlib_locale on HPUX. Mon, 10 Nov 2014 10:09:06 GMT Fri, 13 Feb 2015 18:32:56 GMT <p> Hi All, </p> <p> I am trying to compile boost libraries 1.55.0 on HPUX platform with compiler version [aCC.A.06.25].. </p> <p> while compiling it's giving me following error. </p> <hr /> <p> "/usr/local/remote/packages/compiler_remote/ansicA.06.25_aCC.A.06.25/opt/aCC/include_std/rw/rwlocale", line 722: error <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2322" title="#2322: Bugs: Throw specifier missing on exception_clone (closed: fixed)">#2322</a>: object of abstract class type "boost::locale::calendar_facet" is not allowed: </p> <blockquote> <p> function "boost::locale::calendar_facet::create_calendar" is a pure virtual function </p> </blockquote> <blockquote> <p> _Facet *<span class="underline">facet = new _Facet (); </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of "_Facet *<span class="underline">rw::</span>rw_create_named_facet(_Facet *, const char *, size_t) [with _Facet=boost::locale::calendar_facet]" at line 79 of "/usr/local/remote/packages/compiler_remote/ansicA.06.25_aCC.A.06.25/opt/aCC/include_std/rw/vendor" instantiation of "_Facet *<span class="underline">rw::</span>rw_create_native_facet(_Facet *) [with _Facet=boost::locale::calendar_facet]" at line 537 of "/usr/local/remote/packages/compiler_remote/ansicA.06.25_aCC.A.06.25/opt/aCC/include_std/rw/locimpl" instantiation of "<span class="underline">rw::</span>rw_facet_base *<span class="underline">rw::</span>rw_facet_maker&lt;_Facet&gt;::_C_maker_func(int, const char *, size_t) [with _Facet=boost::locale::calendar_facet]" at line 57 of "/usr/local/remote/packages/compiler_remote/ansicA.06.25_aCC.A.06.25/opt/aCC/include_std/rw/usefacet" instantiation of "const _Facet &amp;std::use_facet&lt;_Facet&gt;(const std::locale &amp;) [with _Facet=boost::locale::calendar_facet]" at line 26 of "libs/locale/src/shared/date_time.cpp" </p> </blockquote> </blockquote> <hr /> <p> Can anyone please help me with this. </p> <p> I am using hpux 11.31 ia64 machine. boost version : 1.55.0 aCC compiler version : 06.25 </p> saurabh.csebhu@… https://svn.boost.org/trac10/ticket/10779 https://svn.boost.org/trac10/ticket/10779 Report #10776: Make BOOST_MOVE_CONVERSION_AWARE_CATCH public Sun, 09 Nov 2014 18:22:36 GMT Sun, 09 Nov 2014 18:22:36 GMT <p> I'm wrapping a boost::container::vector and I see that I need to use the macro BOOST_MOVE_CONVERSION_AWARE_CATCH. </p> <p> Could it be made public? </p> viboes https://svn.boost.org/trac10/ticket/10776 https://svn.boost.org/trac10/ticket/10776 Report #10775: Add a boost::priority_queue class conforming to C++11 Sun, 09 Nov 2014 16:22:13 GMT Mon, 10 Nov 2014 08:29:46 GMT <p> Boost.Heap provides already a boost::heaps::priority_queue class. However it doesn't conforms to C++11. </p> <p> I suggest to add on in another namespace that conforms to C++11. </p> viboes https://svn.boost.org/trac10/ticket/10775 https://svn.boost.org/trac10/ticket/10775 Report #10774: Add a queue/priority container Sun, 09 Nov 2014 15:43:26 GMT Fri, 25 Dec 2015 14:58:08 GMT <p> Boost is missing queue/priority_queue conforming to C++11 using Boost.Move. </p> <p> See also <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10773" title="#10773: Feature Requests: pop_heap/push_heap (new)">#10773</a>. </p> viboes https://svn.boost.org/trac10/ticket/10774 https://svn.boost.org/trac10/ticket/10774 Report #10773: pop_heap/push_heap Sun, 09 Nov 2014 15:41:16 GMT Sun, 09 Nov 2014 15:41:16 GMT <p> It would be great to have these algorithms Boost.Move aware. </p> viboes https://svn.boost.org/trac10/ticket/10773 https://svn.boost.org/trac10/ticket/10773 Report #10772: boost::geometry::within() does not recognize empty boxes Sat, 08 Nov 2014 19:04:31 GMT Mon, 07 Sep 2015 12:54:36 GMT <p> If boost::geometry::within() is used to check whether an empty box (i.e. a point) is within another box, false is always returned. This is not the correct behavior because: </p> <ol><li>OGC defines: a.Within(b) ⇔ (a∩b=a) ∧ (I(a)∩E(b)=∅) which holds true. The intersection of an empty box <em>a</em> and a surrounding box <em>b</em> yields <em>a</em>. Since <em>a</em> has no interior, I(a)=∅, thus the second condition is also true. </li><li>Empty boxes should be treated as points. When using a point model instead of an empty box, the check returns the correct result as expected. </li></ol><p> See also the following complete minimal code (it includes also other geometry algorithms that are computed consistently for points and empty boxes): </p> <pre class="wiki">#include &lt;boost/geometry/geometries/point_xy.hpp&gt; #include &lt;boost/geometry/geometries/box.hpp&gt; #include &lt;boost/geometry/algorithms/convert.hpp&gt; #include &lt;boost/geometry/algorithms/within.hpp&gt; #include &lt;boost/geometry/algorithms/covered_by.hpp&gt; #include &lt;boost/geometry/algorithms/intersects.hpp&gt; #include &lt;boost/geometry/algorithms/disjoint.hpp&gt; #include &lt;boost/geometry/algorithms/distance.hpp&gt; // needed for within() -- is this intended? #include &lt;iostream&gt; namespace bg = boost::geometry; typedef bg::model::d2::point_xy&lt;float&gt; Point; typedef bg::model::box&lt;Point&gt; Box; int main() { Point point(3, 4); Box pointAsBox; bg::convert(point, pointAsBox); Box surrounding; surrounding.min_corner() = Point(2, 2); surrounding.max_corner() = Point(5, 5); std::cout &lt;&lt; " Point Box" &lt;&lt; std::endl; std::cout &lt;&lt; "within: " &lt;&lt; bg::within(point, surrounding) &lt;&lt; " " &lt;&lt; bg::within(pointAsBox, surrounding) &lt;&lt; "\n"; // 1 0 &lt;- std::cout &lt;&lt; "within (self): " &lt;&lt; bg::within(point, point) &lt;&lt; " " &lt;&lt; bg::within(pointAsBox, pointAsBox) &lt;&lt; "\n"; // 1 0 &lt;- std::cout &lt;&lt; "covered_by: " &lt;&lt; bg::covered_by(point, surrounding) &lt;&lt; " " &lt;&lt; bg::covered_by(pointAsBox, surrounding) &lt;&lt; "\n"; // 1 1 std::cout &lt;&lt; "intersects: " &lt;&lt; bg::intersects(point, surrounding) &lt;&lt; " " &lt;&lt; bg::intersects(pointAsBox, surrounding) &lt;&lt; "\n"; // 1 1 std::cout &lt;&lt; "disjoint: " &lt;&lt; bg::disjoint(point, surrounding) &lt;&lt; " " &lt;&lt; bg::disjoint(pointAsBox, surrounding) &lt;&lt; "\n"; // 0 0 std::cout &lt;&lt; std::endl; } </pre><p> The implementation looks as follows (boost/geometry/strategies/cartesian/box_in_box.hpp, line 32): </p> <pre class="wiki">struct box_within_range { template &lt;typename BoxContainedValue, typename BoxContainingValue&gt; static inline bool apply(BoxContainedValue const&amp; bed_min , BoxContainedValue const&amp; bed_max , BoxContainingValue const&amp; bing_min , BoxContainingValue const&amp; bing_max) { return bing_min &lt;= bed_min &amp;&amp; bed_max &lt;= bing_max // contained in containing &amp;&amp; bed_min &lt; bed_max; // interiors overlap } }; </pre><p> The problem is the second line, which uses &lt; and thus returns false if the coordinates are equal. I'm not sure what the intention is (despite the comment), and whether it is needed at all. </p> <p> The documentation about box model and concept doesn't state whether max_corner's coordinates must be component-wise greater or equal than min_corner's. If so, it seems like valid boxes are a precondition to within() and this line could be removed. </p> bromeon@… https://svn.boost.org/trac10/ticket/10772 https://svn.boost.org/trac10/ticket/10772 Report #10769: iterator_adaptor does not properly inherit "pointer" typedef from the base iterator Fri, 07 Nov 2014 20:03:37 GMT Fri, 07 Nov 2014 20:22:09 GMT <p> I'm trying to define a <code>Derived_Iterator</code> class using a <code>Base_Iterator</code> class and the glue class <code>iterator_adaptor&lt; Derived_Class, Base_Class, ...&gt;</code> (as base of <code>Derived_Iterator</code>). In my use case, neither pointers nor references are plain: </p> <pre class="wiki">Base_Iterator::pointer != Base_Iterator::value_type* Base_Iterator::reference != Base_Iterator::value_type&amp; </pre><p> I found 2 possibly related problems, which I think are bugs: </p> <ol><li>The typedef <code>iterator_adaptor&lt;&gt;::pointer</code> is incorrect. Specifically, it produces a plain pointer, when I expect it to produce <code>Base_Iterator::pointer</code>. </li></ol><ol start="2"><li>There is something wrong with <code>iterator_adaptor&lt;&gt;::operator-&gt;()</code>. I would expect <code>Derived_Iterator</code> to behave exactly like <code>Base_Iterator</code>. So, if I don't explicitly define <code>Derived_Iterator::operator-&gt;()</code>, I would expect the version inherited from <code>iterator_adaptor&lt;&gt;</code> to do something similar to: <pre class="wiki">Base_Iterator operator-&gt;() const { return this-&gt;base(); } </pre></li></ol><p> But this doesn't happen. If I put in this definition explicitly in <code>Derived_Iterator</code>, then the code works. </p> Matei David <matei@…> https://svn.boost.org/trac10/ticket/10769 https://svn.boost.org/trac10/ticket/10769 Report #10764: current_exception_diagnostic_information returns an empty string if what returns an empty string. Thu, 06 Nov 2014 17:13:14 GMT Thu, 06 Nov 2014 17:13:14 GMT <p> This happens when throwing standard exceptions such as std::runtime_error when an empty string passed to the constructor. </p> <p> This is a problem with Boost 1.55 and some earlier versions but the code in 1.57 looks the same to me. </p> jonathan.lilliemarck@… https://svn.boost.org/trac10/ticket/10764 https://svn.boost.org/trac10/ticket/10764 Report #10762: fixed_matrix &operator = (matrix m) wrong parameter Thu, 06 Nov 2014 12:39:28 GMT Fri, 08 May 2015 20:20:32 GMT <p> Software was not tested! Error in C:\Boost\include\boost-1_57\boost\numeric\ublas\matrix.hpp line 1387 fixed_matrix &amp;operator = (matrix m) {.. is wrong. Correct is: fixed_matrix &amp;operator = (fixed_matrix m) { </p> anonymous https://svn.boost.org/trac10/ticket/10762 https://svn.boost.org/trac10/ticket/10762 Report #10756: AddressSanitizer container overflow in deadline_timer Wed, 05 Nov 2014 23:46:44 GMT Tue, 16 Jun 2015 14:58:39 GMT <p> I am scheduling 3 ASIO deadline timers back-to-back, wrapping them in a single strand. There is a single thread that services io_service-&gt;run(). I see the following "container-overflow" violation: </p> <pre class="wiki">================================================================= ==16399==ERROR: AddressSanitizer: container-overflow on address 0x60c000017550 at pc 0x0001088e1b3a bp 0x00010ea96510 sp 0x00010ea95cd0 READ of size 8 at 0x60c000017550 thread T2 #0 0x1088e1b39 in __asan_memcpy (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x24b39) #1 0x1084a286a in boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt;::time_count() const (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10056186a) #2 0x1084a264e in boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt; &gt;::is_less(boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt; const&amp;, boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt; const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10056164e) #3 0x10808ccec in boost::date_time::base_time&lt;boost::posix_time::ptime, boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt; &gt; &gt;::operator&lt;(boost::posix_time::ptime const&amp;) const (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10014bcec) #4 0x10823e079 in boost::asio::time_traits&lt;boost::posix_time::ptime&gt;::less_than(boost::posix_time::ptime const&amp;, boost::posix_time::ptime const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fd079) #5 0x108297b9a in boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::down_heap(unsigned long) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100356b9a) #6 0x108296b02 in boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::remove_timer(boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::per_timer_data&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100355b02) #7 0x1083bc9ef in boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::get_ready_timers(boost::asio::detail::op_queue&lt;boost::asio::detail::task_io_service_operation&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10047b9ef) #8 0x1083ba430 in boost::asio::detail::timer_queue&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::get_ready_timers(boost::asio::detail::op_queue&lt;boost::asio::detail::task_io_service_operation&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100479430) #9 0x10960c74c in boost::asio::detail::timer_queue_set::get_ready_timers(boost::asio::detail::op_queue&lt;boost::asio::detail::task_io_service_operation&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x4374c) #10 0x10960c0cd in boost::asio::detail::kqueue_reactor::run(bool, boost::asio::detail::op_queue&lt;boost::asio::detail::task_io_service_operation&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x430cd) #11 0x10960b846 in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock&lt;boost::asio::detail::posix_mutex&gt;&amp;, boost::asio::detail::task_io_service_thread_info&amp;, boost::system::error_code const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x42846) #12 0x10960b3aa in boost::asio::detail::task_io_service::run(boost::system::error_code&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x423aa) #13 0x1095e2940 in boost::asio::io_service::run() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x19940) #14 0x1095d01f7 in eximius::Platform::ProcessorRun(unsigned int) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x71f7) #15 0x1095e81fe in void boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt;::operator()&lt;void (*)(unsigned int), boost::_bi::list0&gt;(boost::_bi::type&lt;void&gt;, void (*&amp;)(unsigned int), boost::_bi::list0&amp;, int) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1f1fe) #16 0x1095e817b in boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt;::operator()() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1f17b) #17 0x1095f5d7b in boost::detail::thread_data&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt; &gt;::run() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2cd7b) #18 0x10a477d04 in boost::(anonymous namespace)::thread_proxy(void*) (/opt/local/lib/libboost_thread-mt.dylib+0x2d04) #19 0x7fff93dbc2fb in _pthread_body (/usr/lib/system/libsystem_pthread.dylib+0x32fb) #20 0x7fff93dbc278 in _pthread_start (/usr/lib/system/libsystem_pthread.dylib+0x3278) #21 0x7fff93dba4b0 in thread_start (/usr/lib/system/libsystem_pthread.dylib+0x14b0) 0x60c000017550 is located 80 bytes inside of 128-byte region [0x60c000017500,0x60c000017580) allocated by thread T0 here: #0 0x1088ea2ab in wrap__Znwm (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x2d2ab) #1 0x108248c8a in std::__1::__split_buffer&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry&gt;&amp;&gt;::__split_buffer(unsigned long, unsigned long, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100307c8a) #2 0x108241d93 in std::__1::__split_buffer&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry&gt;&amp;&gt;::__split_buffer(unsigned long, unsigned long, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100300d93) #3 0x108241498 in void std::__1::vector&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry, std::__1::allocator&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry&gt; &gt;::__push_back_slow_path&lt;boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry const&gt;(boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::heap_entry const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100300498) #4 0x10823c621 in boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::enqueue_timer(boost::posix_time::ptime const&amp;, boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::per_timer_data&amp;, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fb621) #5 0x10823b51a in boost::asio::detail::timer_queue&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::enqueue_timer(boost::posix_time::ptime const&amp;, boost::asio::detail::timer_queue&lt;boost::asio::detail::forwarding_posix_time_traits&gt;::per_timer_data&amp;, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fa51a) #6 0x108238e17 in void boost::asio::detail::kqueue_reactor::schedule_timer&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;(boost::asio::detail::timer_queue&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;&amp;, boost::asio::time_traits&lt;boost::posix_time::ptime&gt;::time_type const&amp;, boost::asio::detail::timer_queue&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::per_timer_data&amp;, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f7e17) #7 0x1082375bc in void boost::asio::detail::deadline_timer_service&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::async_wait&lt;boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt; &gt;(boost::asio::detail::deadline_timer_service&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::implementation_type&amp;, boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt;&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f65bc) #8 0x108236536 in boost::asio::async_result&lt;boost::asio::handler_type&lt;boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt;, void (boost::system::error_code)&gt;::type&gt;::type boost::asio::deadline_timer_service&lt;boost::posix_time::ptime, boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::async_wait&lt;boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt; &gt;(boost::asio::detail::deadline_timer_service&lt;boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt;::implementation_type&amp;, boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt; const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f5536) #9 0x108205259 in boost::asio::async_result&lt;boost::asio::handler_type&lt;boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt;, void (boost::system::error_code)&gt;::type&gt;::type boost::asio::basic_deadline_timer&lt;boost::posix_time::ptime, boost::asio::time_traits&lt;boost::posix_time::ptime&gt;, boost::asio::deadline_timer_service&lt;boost::posix_time::ptime, boost::asio::time_traits&lt;boost::posix_time::ptime&gt; &gt; &gt;::async_wait&lt;boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt; &gt;(boost::asio::detail::wrapped_handler&lt;boost::asio::io_service::strand, boost::_bi::bind_t&lt;void, boost::_mfi::mf1&lt;void, eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;, boost::system::error_code const&amp;&gt;, boost::_bi::list2&lt;boost::_bi::value&lt;eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;*&gt;, boost::arg&lt;1&gt; (*)()&gt; &gt;, boost::asio::detail::is_continuation_if_running&gt; const&amp;) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002c4259) #10 0x1081f95d6 in eximius::EximiusTimerHandler&lt;boost::function&lt;void ()&gt; &gt;::StartTimer() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002b85d6) #11 0x108081a7c in int eximius::Platform::ScheduleTimer&lt;boost::function&lt;void ()&gt; &gt;(boost::posix_time::time_duration const&amp;, boost::function&lt;void ()&gt; const&amp;, bool, char const*, unsigned int, unsigned int) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100140a7c) #12 0x107fe3143 in eximius::ProcessControl::StartTimers() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1000a2143) #13 0x107f75593 in eximius::ProcessControl::StartApplication() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100034593) #14 0x1096bc66e in eximius::EximiusApplication::StartEximiusApplication() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0xf366e) #15 0x108585856 in main (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100644856) #16 0x7fff9077f5c8 in start (/usr/lib/system/libdyld.dylib+0x35c8) #17 0x0 (&lt;unknown module&gt;) Thread T2 created by T0 here: #0 0x1088e106f in wrap_pthread_create (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x2406f) #1 0x10a477c1b in boost::thread::start_thread_noexcept() (/opt/local/lib/libboost_thread-mt.dylib+0x2c1b) #2 0x1095f4d04 in boost::thread::start_thread() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2bd04) #3 0x1095f4c65 in boost::thread::thread&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt; &gt;(boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt;, boost::disable_if_c&lt;boost::thread_detail::is_convertible&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt;&amp;, boost::detail::thread_move_t&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt; &gt; &gt;::value, boost::thread::dummy*&gt;::type) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2bc65) #4 0x1095e307a in boost::thread::thread&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt; &gt;(boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt;, boost::disable_if_c&lt;boost::thread_detail::is_convertible&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt;&amp;, boost::detail::thread_move_t&lt;boost::_bi::bind_t&lt;void, void (*)(unsigned int), boost::_bi::list1&lt;boost::_bi::value&lt;unsigned int&gt; &gt; &gt; &gt; &gt;::value, boost::thread::dummy*&gt;::type) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1a07a) #5 0x1095da31f in eximius::Platform::Initialize() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1131f) #6 0x1085803a8 in main (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10063f3a8) #7 0x7fff9077f5c8 in start (/usr/lib/system/libdyld.dylib+0x35c8) #8 0x0 (&lt;unknown module&gt;) SUMMARY: AddressSanitizer: container-overflow ??:0 __asan_memcpy Shadow bytes around the buggy address: 0x1c1800002e50: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x1c1800002e60: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa 0x1c1800002e70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x1c1800002e80: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x1c1800002e90: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa =&gt;0x1c1800002ea0: 00 00 00 00 00 00 00 00 00 00[fc]fc fc fc fc fc 0x1c1800002eb0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x1c1800002ec0: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa 0x1c1800002ed0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x1c1800002ee0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x1c1800002ef0: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack partial redzone: f4 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac ASan internal: fe ==16399==ABORTING </pre><p> Somehow, the problem goes away when I schedule &lt; 3 timers. </p> harjotgill@… https://svn.boost.org/trac10/ticket/10756 https://svn.boost.org/trac10/ticket/10756 Report #10753: interprocess::winapi::c_heap_deleter::realloc_mem leaks memory Wed, 05 Nov 2014 15:44:31 GMT Wed, 05 Nov 2014 15:44:31 GMT <p> Hi, </p> <p> We believe that there is a memory leak in boost::interprocess::winapi::c_heap_deleter::realloc_mem </p> <p> boost/interprocess/detail/win32_api.hpp:1790-1797 </p> <pre class="wiki">void realloc_mem(std::size_t num_bytes) { void *buf = ::realloc(m_buf, num_bytes); if(!buf){ free(m_buf); m_buf = 0; } } </pre><p> should probably be </p> <pre class="wiki">void realloc_mem(std::size_t num_bytes) { void *buf = ::realloc(m_buf, num_bytes); if(!buf){ free(m_buf); m_buf = 0; } else { m_buf = buf; } } </pre> Tomasz Wilk <tomasz.wilk@…> https://svn.boost.org/trac10/ticket/10753 https://svn.boost.org/trac10/ticket/10753 Report #10750: bad interaction between ublas, float128 and std::complex Tue, 04 Nov 2014 23:15:58 GMT Tue, 04 Nov 2014 23:22:06 GMT <p> The following code fails to compile: </p> <pre class="wiki">#include &lt;boost/multiprecision/float128.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; using boost::multiprecision::float128; int main () { boost::numeric::ublas::matrix &lt;std::complex&lt;float128&gt;&gt; A(1,1); lu_factorize(A); } </pre><p> (on OSX 10.10 using g++-4.9 -fext-numeric-literals -lquadmath), I am getting a huge complaint about missing <code>operator&lt;</code> at <code>numeric/ublas/detail/matrix_assign.hpp:33:35</code>. Things work perfectly with a matrix of float128, or a matrix of std::complex&lt;double&gt;. And other operations work with std::complex&lt;float128&gt;. </p> <p> Is std::complex&lt;float128&gt; supposed to work? </p> vbeffara@… https://svn.boost.org/trac10/ticket/10750 https://svn.boost.org/trac10/ticket/10750 Report #10748: Add SHA sums to the boost/ files Tue, 04 Nov 2014 20:34:20 GMT Tue, 04 Nov 2014 20:38:07 GMT <p> Please add SHA sums to the files on <code>boost/</code> like you do for <code>boost-binaries/</code> on sourceforge (trac won't let me paste links) </p> Ivan Alejandro <ivanalejandro0@…> https://svn.boost.org/trac10/ticket/10748 https://svn.boost.org/trac10/ticket/10748 Report #10744: wrong error code when doing async_connect and the connection is refused Tue, 04 Nov 2014 08:56:02 GMT Sun, 09 Nov 2014 13:41:54 GMT <p> When executing the following example the error_code provided is not correctly recognized as connection_refused. </p> <p> This is because the error_code supplied is provided by <strong><a class="missing wiki">GetLastError</a></strong> and the error_code expected is provided by <strong>WSAGetLastError</strong>. </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&quot;boost/asio.hpp&quot;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="n">io_service</span> <span class="n">io_service</span><span class="p">;</span> <span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">socket</span><span class="o">::</span><span class="n">endpoint_type</span> <span class="n">endpoint</span><span class="p">(</span><span class="n">ip</span><span class="o">::</span><span class="n">address_v4</span><span class="o">::</span><span class="n">from_string</span><span class="p">(</span><span class="s">&quot;127.0.0.1&quot;</span><span class="p">),</span> <span class="mi">9999</span><span class="p">);</span> <span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="o">::</span><span class="n">socket</span> <span class="n">tcp_socket</span><span class="p">(</span><span class="n">io_service</span><span class="p">);</span> <span class="n">tcp_socket</span><span class="p">.</span><span class="n">async_connect</span><span class="p">(</span><span class="n">endpoint</span><span class="p">,</span> <span class="p">[](</span><span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">ec</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">!=</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">connection_refused</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Expected error code &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">error</span><span class="o">::</span><span class="n">connection_refused</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; but got &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">ec</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;got error code &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">ec</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">});</span> <span class="n">io_service</span><span class="p">.</span><span class="n">run</span><span class="p">();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div></div><p> It seems that that this behavior change to earlier boost version has something to-do with this commit: <a class="missing wiki">github.com/boostorg/asio/commit/0484963a55bf109353922e1d5fdc2a218995d9e7</a> </p> <p> On linux system this example works fine </p> Martin Bonetti <martin.bonetti@…> https://svn.boost.org/trac10/ticket/10744 https://svn.boost.org/trac10/ticket/10744 Report #10743: Support Boost build on Windows using Clang Tue, 04 Nov 2014 06:36:33 GMT Fri, 13 Feb 2015 19:36:38 GMT <p> It will be lovely if it will be possible to build boost library using Clang (clang-cl) on Windows using standard win dev tools (no MingW, VS only). </p> kreuzerkrieg@… https://svn.boost.org/trac10/ticket/10743 https://svn.boost.org/trac10/ticket/10743 Report #10733: [wave] Hooks not called for expanding specific predefined macros Sat, 01 Nov 2014 15:52:15 GMT Sat, 01 Nov 2014 15:52:15 GMT <p> Non of the preprocessor hook is called during the expansion of the following predefined macros: <code>__LINE__</code>, <code>__FILE__</code>, <code>__INCLUDE_LEVEL__</code>. </p> <p> This is because the expansion of these macros are handled with a specific code path which skips the hooks. </p> <p> Expected behavior: </p> <ul><li>expanding_object_like_macro hook is called before the expansion </li><li>expansion happens based on the return value from the hook </li><li>expanded_macro hook is called after the expansion </li></ul> Tamas Berghammer <berghammer.tamas@…> https://svn.boost.org/trac10/ticket/10733 https://svn.boost.org/trac10/ticket/10733 Report #10731: make_permissions is case-inconsistent and requires unnecessary conversions Fri, 31 Oct 2014 23:02:48 GMT Sun, 30 Apr 2017 17:21:15 GMT <p> There exist two notable issues with the internal function make_permissions in operations.cpp (Windows only): </p> <p> a) The usage of the macro BOOST_FILESYSTEM_STRICMP implies case-insensitive comparison, but for compilers different from _MSC_VER it actually calls the case-sensitive function std::strcmp. </p> <p> b) The code uses up to four code-conversions (wchar_t-&gt;char) to invoke the comparison function, all of the following form: </p> <pre class="wiki">BOOST_FILESYSTEM_STRICMP(p.extension().string().c_str(), ".exe") </pre><p> It seems that there exist a simple and consistent way to solve these problems: Replace the macro BOOST_FILESYSTEM_STRICMP by boost::algorithm::iequals and do not perform code conversion. Essentially the make_permissions code could be changed to the following form - assuming an additional inclusion of </p> <pre class="wiki">#include "boost/algorithm/string/predicate.hpp" </pre><p> and removal of the BOOST_FILESYSTEM_STRICMP macro definition (which is no-where else used): </p> <pre class="wiki"> perms make_permissions(const path&amp; p, DWORD attr) { perms prms = fs::owner_read | fs::group_read | fs::others_read; if ((attr &amp; FILE_ATTRIBUTE_READONLY) == 0) prms |= fs::owner_write | fs::group_write | fs::others_write; if (boost::algorithm::iequals(p.extension().c_str(), L".exe") || boost::algorithm::iequals(p.extension().c_str(), L".com") || boost::algorithm::iequals(p.extension().c_str(), L".bat") || boost::algorithm::iequals(p.extension().c_str(), L".cmd")) prms |= fs::owner_exe | fs::group_exe | fs::others_exe; return prms; } </pre><p> Given that boost::algorithm::iequals allows to provide a std::locale object as additional argument, one could improve that solution even more by providing the same locale as that from path_locale() within path.cpp. Unfortunately there is no access within operations.cpp to that function (which is within an unnamed namespace), so realizing this second improvement would require a larger surgery. </p> daniel.kruegler@… https://svn.boost.org/trac10/ticket/10731 https://svn.boost.org/trac10/ticket/10731 Report #10728: Error in example of boost::accumulators Fri, 31 Oct 2014 16:24:55 GMT Fri, 13 Feb 2015 18:36:39 GMT <p> The first example (Hello, World!) in </p> <p> <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/accumulators/user_s_guide.html">http://www.boost.org/doc/libs/1_56_0/doc/html/accumulators/user_s_guide.html</a> </p> <p> does not compile because of an error on line 22: </p> <pre class="wiki">std::cout &lt;&lt; "Moment: " &lt;&lt; accumulators::moment&lt;2&gt;(acc) &lt;&lt; std::endl; </pre><p> should be: </p> <pre class="wiki">std::cout &lt;&lt; "Moment: " &lt;&lt; moment&lt;2&gt;(acc) &lt;&lt; std::endl; </pre> anonymous https://svn.boost.org/trac10/ticket/10728 https://svn.boost.org/trac10/ticket/10728 Report #10722: msm gives compilation errors when using state machine constructors with arguments Thu, 30 Oct 2014 19:51:16 GMT Wed, 05 Nov 2014 08:07:20 GMT <p> This code compiles fine with boost 1.55.0 but fails on 1.56.0. Checked on MSVC2012 and gcc. </p> <pre class="wiki">#include &lt;boost/msm/back/state_machine.hpp&gt; // back-end #include &lt;boost/msm/back/tools.hpp&gt; #include &lt;boost/msm/front/state_machine_def.hpp&gt; // front-end #include &lt;boost/msm/front/functor_row.hpp&gt; #include &lt;boost/msm/front/euml/operator.hpp&gt; namespace msm = boost::msm; namespace mpl = boost::mpl; using namespace msm::front; struct Substate : public msm::front::state&lt;&gt; { }; struct State_ : public msm::front::state_machine_def&lt;State_&gt; { State_(int) {} State_() {} struct transition_table : mpl::vector&lt; // Start Event Next Action Guard // +------------+-------------+------------+-----------+------------+ Row &lt; Substate , none , none , none , none &gt; &gt; {}; typedef Substate initial_state; }; typedef msm::back::state_machine&lt;State_&gt; State; // machine itself struct TestFSM_ : public msm::front::state_machine_def&lt;TestFSM_&gt; { TestFSM_(int) {} TestFSM_() {} struct transition_table : mpl::vector&lt; // Start Event Next Action Guard // +------------+--------------+------------+-----------+-----------+ Row &lt; State , none , none , none , none &gt; &gt; {}; typedef State initial_state; }; typedef msm::back::state_machine&lt;TestFSM_&gt; TestFSM; void start() { TestFSM(msm::back::states_ &lt;&lt; State(10), 10); } </pre><p> Error output from MSVC2012 looks like this: </p> <pre class="wiki">1&gt; test.cpp 1&gt;c:\test\boost\boost\core\enable_if.hpp(36): error C2039: 'value' : is not a member of 'boost::is_convertible&lt;From,To&gt;' 1&gt; with 1&gt; [ 1&gt; From=boost::fusion::vector1&lt;boost::msm::back::state_machine&lt;State_&gt;&gt;, 1&gt; To=boost::msm::back::state_machine&lt;State_&gt; 1&gt; ] 1&gt; c:\test\boost\boost\type_traits\is_convertible.hpp(486) : see reference to class template instantiation 'boost::enable_if&lt;Cond,T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Cond=boost::is_convertible&lt;boost::fusion::vector1&lt;boost::msm::back::state_machine&lt;State_&gt;&gt;,boost::msm::back::state_machine&lt;State_&gt;&gt;, 1&gt; T=void 1&gt; ] 1&gt; c:\test\boost\boost\core\enable_if.hpp(59) : see reference to class template instantiation 'boost::is_convertible&lt;From,To&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; From=boost::fusion::vector1&lt;boost::msm::back::state_machine&lt;State_&gt;&gt;, 1&gt; To=boost::msm::back::state_machine&lt;State_&gt; 1&gt; ] 1&gt; c:\test\boost\boost\fusion\container\vector\convert.hpp(46) : see reference to class template instantiation 'boost::disable_if&lt;Cond,T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Cond=boost::is_convertible&lt;boost::fusion::vector1&lt;boost::msm::back::state_machine&lt;State_&gt;&gt;,boost::msm::back::state_machine&lt;State_&gt;&gt;, 1&gt; T=void 1&gt; ] 1&gt; c:\test\boost\boost\msm\back\state_machine.hpp(1564) : see reference to function template instantiation 'boost::fusion::vector1&lt;T0&gt; boost::fusion::as_vector&lt;boost::fusion::cons&lt;Car,Cdr&gt;&gt;(const Sequence &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; T0=boost::msm::back::state_machine&lt;State_&gt;, 1&gt; Car=boost::msm::back::state_machine&lt;State_&gt;, 1&gt; Cdr=boost::fusion::nil_, 1&gt; Sequence=boost::fusion::cons&lt;boost::msm::back::state_machine&lt;State_&gt;,boost::fusion::nil_&gt; 1&gt; ] 1&gt; c:\test\boost\boost\msm\back\state_machine.hpp(1655) : see reference to function template instantiation 'void boost::msm::back::state_machine&lt;A0&gt;::set_states&lt;Expr&gt;(const Expr &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; A0=TestFSM_, 1&gt; Expr=boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2&lt;const boost::msm::back::define_states_creation&lt;&gt; &amp;,boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term&lt;const boost::msm::back::state_machine&lt;State_&gt; &amp;&gt;,0&gt;&gt;&gt;,2&gt;&gt; 1&gt; ] 1&gt; c:\test\boost\boost\msm\back\state_machine.hpp(1655) : see reference to function template instantiation 'void boost::msm::back::state_machine&lt;A0&gt;::set_states&lt;Expr&gt;(const Expr &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; A0=TestFSM_, 1&gt; Expr=boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2&lt;const boost::msm::back::define_states_creation&lt;&gt; &amp;,boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term&lt;const boost::msm::back::state_machine&lt;State_&gt; &amp;&gt;,0&gt;&gt;&gt;,2&gt;&gt; 1&gt; ] 1&gt; c:\test\ffc\audioextractor\dataanalyzer\engines\test.cpp(47) : see reference to function template instantiation 'boost::msm::back::state_machine&lt;A0&gt;::state_machine&lt;boost::msm::msm_terminal&lt;Expr&gt;,int&gt;(const boost::msm::msm_terminal&lt;Expr&gt; &amp;,ARG0,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; A0=TestFSM_, 1&gt; Expr=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2&lt;const boost::msm::back::define_states_creation&lt;&gt; &amp;,boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term&lt;const boost::msm::back::state_machine&lt;State_&gt; &amp;&gt;,0&gt;&gt;&gt;,2&gt;, 1&gt; ARG0=int 1&gt; ] 1&gt; c:\test\ffc\audioextractor\dataanalyzer\engines\test.cpp(47) : see reference to function template instantiation 'boost::msm::back::state_machine&lt;A0&gt;::state_machine&lt;boost::msm::msm_terminal&lt;Expr&gt;,int&gt;(const boost::msm::msm_terminal&lt;Expr&gt; &amp;,ARG0,void *)' being compiled 1&gt; with 1&gt; [ 1&gt; A0=TestFSM_, 1&gt; Expr=boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::shift_left,boost::proto::argsns_::list2&lt;const boost::msm::back::define_states_creation&lt;&gt; &amp;,boost::msm::msm_terminal&lt;boost::proto::exprns_::basic_expr&lt;boost::proto::tagns_::tag::terminal,boost::proto::argsns_::term&lt;const boost::msm::back::state_machine&lt;State_&gt; &amp;&gt;,0&gt;&gt;&gt;,2&gt;, 1&gt; ARG0=int 1&gt; ] 1&gt;c:\test\boost\boost\core\enable_if.hpp(36): error C2065: 'value' : undeclared identifier 1&gt;c:\test\boost\boost\core\enable_if.hpp(36): error C2975: 'B' : invalid template argument for 'boost::enable_if_c', expected compile-time constant expression 1&gt; c:\test\boost\boost\core\enable_if.hpp(27) : see declaration of 'B' </pre> Marek Glos <marekglos@…> https://svn.boost.org/trac10/ticket/10722 https://svn.boost.org/trac10/ticket/10722 Report #10720: boost::interprocess Windows semaphore and mutex creation can fail due to naming convention Thu, 30 Oct 2014 13:14:34 GMT Thu, 30 Oct 2014 13:14:34 GMT <p> boost::interprocess names the mutexes and semaphores using the sync_id and sync_handles classes found in interprocess/sync/windows/sync_utils.hpp. The sync_id class uses winapi::query_performance_counter to obtain a value which is then used to create a supposedly unique identifier for the semaphore or mutex in sync_handles::fill_name. </p> <p> The problem is that when multiple mutexes and/or semaphores are created within such a short time frame that the value returned by winapi::query_performance_counter does not change, the creation fails with winapi::error_already_exists. </p> Ville Outamaa <ville.outamaa@…> https://svn.boost.org/trac10/ticket/10720 https://svn.boost.org/trac10/ticket/10720 Report #10716: Pool allocators fail to compile under g++4.7, 4.8 and 4.9 Thu, 30 Oct 2014 06:28:07 GMT Thu, 30 Oct 2014 06:28:07 GMT <p> Hi, </p> <p> Usage of either boost::pool_allocator or boost::fast_pool_allocator with std::allocate_shared can cause compile errors on the g++4.7, 4.8, 4.9. There is much more detailed information on the stack overflow question I made: <a class="ext-link" href="http://stackoverflow.com/questions/26396293/boost-pool-allocators-wont-compile-with-stdallocate-shared-in-g"><span class="icon">​</span>http://stackoverflow.com/questions/26396293/boost-pool-allocators-wont-compile-with-stdallocate-shared-in-g</a> </p> <p> Code exhibiting the error: </p> <pre class="wiki">#include "boost/pool/pool.hpp" #include "boost/pool/pool_alloc.hpp" #include &lt;memory&gt; int main(int argc, char** argv) { auto fails = std::allocate_shared&lt;int&gt;( boost::fast_pool_allocator&lt;int&gt;() ); auto works = std::allocate_shared&lt;int&gt;(boost::fast_pool_allocator&lt;int&gt;(), 5); } </pre><p> Simply put boost allocators are still specified using the c++98 style and this causes g++ to fail for the versions of g++ mentioned above. However it should be noted that g++ 5.0 does compile correctly and this implies that updating is not necessarily mandatory. I have made this ticket so that the appropriate people can make a determination about whether to fix this or not. Also note that changing to the c++11 allocator style seems to be straightforward. </p> Conrad Mercer <conrad.mercer@…> https://svn.boost.org/trac10/ticket/10716 https://svn.boost.org/trac10/ticket/10716 Report #10715: Race condition in codecvt() persists in VC++ Wed, 29 Oct 2014 15:51:13 GMT Mon, 27 Jun 2016 13:45:50 GMT <p> This is a restatement of Ticket <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/6320" title="#6320: Bugs: race condition in boost::filesystem::path leads to crash when used in ... (reopened)">#6320</a>, which is still causing me problems; specifically when path objects are used in a DLL with multithreading. Environment is VC++11, although I believe it is also applicable to VC++12. Both versions have documentation warnings against using static local variables in a multithreaded application. </p> <p> Demo code: A DLL containing the simple function: </p> <pre class="wiki">// exported function. extern "C" DLL_API void fnDll( void ) { boost::filesystem::path p("test_path"); return; } </pre><p> The main program creates threads to load the DLL and call this function: </p> <pre class="wiki">void thread_func() { boost::this_thread::sleep(boost::posix_time::milliseconds(100)); HINSTANCE hLib = LoadLibraryA("Dll.dll"); if (hLib != NULL) { // Resolve test function in DLL FARPROC f = GetProcAddress(hLib,"fnDll"); if (f) f(); // call it } } int main(int argc, _TCHAR* argv[]) { boost::thread_group tg; for(int i = 0; i &lt; 2; i++) tg.create_thread(thread_func); tg.join_all(); return 0; } </pre><p> Built and run for debug, this code fails when the BOOST_ASSERT: </p> <p> "codecvt_facet_ptr() facet hasn't been properly initialized" </p> <p> fires on line 888, in const path::codecvt_type&amp; path::codecvt() </p> <p> The user workaround is to put code in <a class="missing wiki">DllMain</a>'s DLL_PROCESS_ATTACH, as described in the earlier ticket, to force initialisation before multiple threads share the DLL. </p> <p> I attach the Visual Studio project used to test this. This DLL scenario is a simplification of a genuine situation: I found it when an Apache add-on started crashing its host. </p> willw@… https://svn.boost.org/trac10/ticket/10715 https://svn.boost.org/trac10/ticket/10715 Report #10710: IGMPv3 Tue, 28 Oct 2014 19:30:12 GMT Tue, 28 Oct 2014 19:30:12 GMT <p> Hi, </p> <p> any plans to include IGMPv3 multicasting (i.e. ability to specify source address in IGMP report)? This would be very useful for modern multicast applications </p> <p> regards michal </p> michal.vanco@… https://svn.boost.org/trac10/ticket/10710 https://svn.boost.org/trac10/ticket/10710 Report #10709: Graph bundled property support in subgraph Tue, 28 Oct 2014 17:46:08 GMT Tue, 28 Oct 2014 17:46:08 GMT <p> Here's a patch which adds support of graph bundled property access via operator[] in subgraph interface. </p> Alexey Chernov <4ernov@…> https://svn.boost.org/trac10/ticket/10709 https://svn.boost.org/trac10/ticket/10709 Report #10708: Property support in add_vertex() method for subgraph Tue, 28 Oct 2014 17:42:48 GMT Tue, 28 Oct 2014 17:47:02 GMT <p> Patch with added support of bundled properties in add_vertex() method of the subgraph to make it more unified with other graph concepts. </p> Alexey Chernov <4ernov@…> https://svn.boost.org/trac10/ticket/10708 https://svn.boost.org/trac10/ticket/10708 Report #10707: Subgraph copy constructor doesn't copy all the data for children subgraphs Tue, 28 Oct 2014 17:37:41 GMT Tue, 28 Oct 2014 17:47:35 GMT <p> Subgraph copy constructor doesn't copy all the data required for normal working in case of the subgraph object actually represents children subgraph. As a result, copied object is not equal to original one and usually can't be used any more. </p> <p> Here's the data fields that aren't copied: </p> <ol><li>m_graph (is copied only in case the subgraph object represents root subgraph). </li><li>m_local_vertex and m_local_edge containers (ok for root subgraph, data loss for children subgraphs). </li></ol><p> The patch with fix is attached. </p> 4ernov@… https://svn.boost.org/trac10/ticket/10707 https://svn.boost.org/trac10/ticket/10707 Report #10706: boost::spirit::basic_istream_iterator does not satisfy single pass iterator requirements Tue, 28 Oct 2014 15:13:58 GMT Tue, 28 Oct 2014 15:23:42 GMT <p> It is not possible, for example, to use boost::iterator_range with spirit::basic_istream_iterator </p> <pre class="wiki">clang++ -v clang version 3.6.0 (trunk 216817) Target: x86_64-apple-darwin14.0.0 Thread model: posix </pre><pre class="wiki">using namespace boost; size (iterator_range&lt;spirit::istream_iterator&gt; ()); </pre><pre class="wiki">In file included from /opt/local/include/boost/spirit/include/qi.hpp:16: In file included from /opt/local/include/boost/spirit/home/qi.hpp:14: In file included from /opt/local/include/boost/spirit/home/qi/action.hpp:14: In file included from /opt/local/include/boost/spirit/home/qi/action/action.hpp:14: In file included from /opt/local/include/boost/spirit/home/qi/meta_compiler.hpp:14: In file included from /opt/local/include/boost/spirit/home/support/meta_compiler.hpp:19: In file included from /opt/local/include/boost/proto/proto.hpp:16: In file included from /opt/local/include/boost/proto/functional.hpp:14: In file included from /opt/local/include/boost/proto/functional/range.hpp:17: In file included from /opt/local/include/boost/proto/functional/range/size.hpp:12: In file included from /opt/local/include/boost/range/size.hpp:21: In file included from /opt/local/include/boost/range/size_type.hpp:20: /opt/local/include/boost/range/concepts.hpp:158:26: error: no matching constructor for initialization of 'boost::spirit::basic_istream_iterator&lt;char, std::__1::char_traits&lt;char&gt; &gt;' Iterator i2(++i); ^ ~~~ /opt/local/include/boost/concept/usage.hpp:16:43: note: in instantiation of member function 'boost::range_detail::SinglePassIteratorConcept&lt;boost::spirit::basic_istream_iterator&lt;char, std::__1::char_traits&lt;char&gt; &gt; &gt;::~SinglePassIteratorConcept' requested here ~usage_requirements() { ((Model*)0)-&gt;~Model(); } ^ /opt/local/include/boost/concept/detail/general.hpp:38:42: note: in instantiation of member function 'boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;boost::spirit::basic_istream_iterator&lt;char, std::__1::char_traits&lt;char&gt; &gt; &gt; &gt;::~usage_requirements' requested here static void failed() { ((Model*)0)-&gt;~Model(); } ^ /opt/local/include/boost/range/concepts.hpp:156:13: note: in instantiation of member function 'boost::concepts::requirement&lt;boost::concepts::failed ************boost::concepts::usage_requirements&lt;boost::range_detail::SinglePassIteratorConcept&lt;boost::spirit::basic_istream_iterator&lt;char, std::__1::char_traits&lt;char&gt; &gt; &gt; &gt;::************&gt;::failed' requested here BOOST_CONCEPT_USAGE(SinglePassIteratorConcept) ^ /opt/local/include/boost/concept/usage.hpp:29:7: note: expanded from macro 'BOOST_CONCEPT_USAGE' BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements&lt;model&gt;)); \ ^ /opt/local/include/boost/concept/assert.hpp:43:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT' BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens) ^ /opt/local/include/boost/concept/detail/general.hpp:78:51: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN' &amp;::boost::concepts::requirement_&lt;ModelFnPtr&gt;::failed&gt; \ ^ /opt/local/include/boost/spirit/home/support/iterators/istream_iterator.hpp:56:18: note: candidate constructor not viable: no known conversion from 'boost::spirit::multi_pass&lt;std::__1::basic_istream&lt;char&gt;, boost::spirit::iterator_policies::default_policy&lt;boost::spirit::iterator_policies::ref_counted, boost::spirit::iterator_policies::no_check, boost::spirit::iterator_policies::istream, boost::spirit::iterator_policies::split_std_deque&gt; &gt;' to 'std::basic_istream&lt;char, char_traits&lt;char&gt; &gt; &amp;' for 1st argument explicit basic_istream_iterator(std::basic_istream&lt;Elem, Traits&gt;&amp; x) ^ /opt/local/include/boost/spirit/home/support/iterators/istream_iterator.hpp:59:9: note: candidate constructor not viable: no known conversion from 'boost::spirit::multi_pass&lt;std::__1::basic_istream&lt;char&gt;, boost::spirit::iterator_policies::default_policy&lt;boost::spirit::iterator_policies::ref_counted, boost::spirit::iterator_policies::no_check, boost::spirit::iterator_policies::istream, boost::spirit::iterator_policies::split_std_deque&gt; &gt;' to 'const boost::spirit::basic_istream_iterator&lt;char, std::__1::char_traits&lt;char&gt; &gt;' for 1st argument basic_istream_iterator(basic_istream_iterator const&amp; x) ^ /opt/local/include/boost/spirit/home/support/iterators/istream_iterator.hpp:53:9: note: candidate constructor not viable: requires 0 arguments, but 1 was provided basic_istream_iterator() ^ 1 error generated. </pre> Nikki Chumakov <nikkikom@…> https://svn.boost.org/trac10/ticket/10706 https://svn.boost.org/trac10/ticket/10706 Report #10704: [property_tree] Readablilty improvement ini_parser::write_ini result. Tue, 28 Oct 2014 12:20:50 GMT Sun, 20 May 2018 14:39:15 GMT <p> Output file of write_ini lacks readability. Attached patch adds spaces between keys and values and separates sections by newlines. </p> Eduard Eduardov <eduardov.eduard@…> https://svn.boost.org/trac10/ticket/10704 https://svn.boost.org/trac10/ticket/10704 Report #10702: tut1 test:"tut1.cpp", line 40: Error: noncopyable is not a member of boost w/ studio c++ Mon, 27 Oct 2014 23:20:38 GMT Mon, 27 Oct 2014 23:20:38 GMT <p> Problem: ptr_container/tut1 test fails with "line 40: Error: noncopyable is not a member of boost" w/ studio c++ and "tut1.cpp:41:1: error: expected class-name before '{' token " with g++-4.8.2. </p> <p> Solution: add #include &lt;boost/noncopyable.hpp&gt; into tut1.cpp. </p> angela.xie@… https://svn.boost.org/trac10/ticket/10702 https://svn.boost.org/trac10/ticket/10702 Report #10698: noexcept(true) for ~noncopyable? Sat, 25 Oct 2014 14:38:44 GMT Sat, 08 Jul 2017 20:06:27 GMT <p> Shouldn't ~noncopyable be noexcept? </p> <p> I'm seeing this error: </p> <pre class="wiki">class Cconnection : public Cclient, boost::noncopyable connection.h:5:7: error: looser throw specifier for ‘virtual Cconnection::~Cconnection()’ In file included from connection.h:3:0, from connection.cpp:2: client.h:10:10: error: overriding ‘virtual Cclient::~Cclient() noexcept (true)’ </pre> olafvdspek@… https://svn.boost.org/trac10/ticket/10698 https://svn.boost.org/trac10/ticket/10698 Report #10692: No "/lib" directory or precompiled library binaries [1.56.0] Fri, 24 Oct 2014 13:14:18 GMT Fri, 24 Oct 2014 14:59:16 GMT <p> The current release has no "lib" directory which should contain precompiled library binaries. The directory is missing in both Windows and Unix distributions. </p> <ul><li>The directory is mentioned in several steps on the getting started page (<a href="http://www.boost.org/doc/libs/1_56_0/more/getting_started/windows.html">http://www.boost.org/doc/libs/1_56_0/more/getting_started/windows.html</a>). </li></ul><ul><li>Without the binaries I'm unable to compile due to the missing "libboost_system-vc120-mt-gd-1_56.lib" file. </li></ul><p> Any help greatly appreciated. </p> Richard Livingston <r1ch4rdl@…> https://svn.boost.org/trac10/ticket/10692 https://svn.boost.org/trac10/ticket/10692 Report #10691: ip/multicast:runtime failure, error in "ip_multicast_runtime::test": 22, Invalid argument Fri, 24 Oct 2014 00:32:38 GMT Fri, 24 Oct 2014 00:32:38 GMT <p> Problem: asio/ip/multicast[_select] fail to execute with error message " multicast.cpp(329): error in "ip_multicast_runtime::test": 22, Invalid argument" if compile it with studio 12.4 c++ and g++-4.8.2 on solaris 11.2 </p> angela.xie@… https://svn.boost.org/trac10/ticket/10691 https://svn.boost.org/trac10/ticket/10691 Report #10690: Boost SSL protocols Thu, 23 Oct 2014 15:35:49 GMT Tue, 16 Aug 2016 13:47:14 GMT <p> Hello, </p> <p> I use Boost SSL socket. I want to disable the TLS security protocol so I use set_options like this: </p> <p> m_context.set_options(ssl::context::no_tlsv1); </p> <p> But it only disables TLSv1, not TLSv1.1 and TLSv1.2. I looked at the boost source code and I saw this : </p> <p> BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1 = SSL_OP_NO_TLSv1); </p> <p> Why SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 are not wrapped ? </p> <p> Thx </p> anonymous https://svn.boost.org/trac10/ticket/10690 https://svn.boost.org/trac10/ticket/10690 Report #10689: static_assert.hpp: unrecognized #pragma GCC system_header Thu, 23 Oct 2014 14:10:52 GMT Thu, 23 Oct 2014 14:10:52 GMT <p> I am using boost 1.55.0 within my code. Whenever boost's boost/static_assert.hpp is included the compiler complains about unrecognized pragma. The compiler in question is TI DSP for TMS3200C67x processor, invoked with the --gcc option. This option makes it to predefine the <span class="underline">GNUC</span> macro, hence, due to conditional preprocessing "#pragma GCC system_header" line is being subjected to compilation. This pragma is not supported by the TI compiler causing it to emit a warning. </p> <p> The issue will be resolved once the same solution as for <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7094"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7094</a> is applied in the static_asssert.hpp file. </p> Wojciech Migda <wojtek.golf@…> https://svn.boost.org/trac10/ticket/10689 https://svn.boost.org/trac10/ticket/10689 Report #10683: Boost.Iostreams: typos in the doc Tue, 21 Oct 2014 14:35:23 GMT Tue, 04 Nov 2014 09:13:27 GMT <p> <a href="http://www.boost.org/doc/libs/1_56_0/libs/iostreams/doc/tutorial/shell_comments_filters.html">http://www.boost.org/doc/libs/1_56_0/libs/iostreams/doc/tutorial/shell_comments_filters.html</a> reads </p> <p> "unix2dos_stdio_filter can be used in place of shell_comments_input_filter and shell_comments_output_filter" </p> <p> It should read (first id is changed): </p> <p> "shell_comments_stdio_filter can be used in place of shell_comments_input_filter and shell_comments_output_filter" </p> akim demaille <akim@…> https://svn.boost.org/trac10/ticket/10683 https://svn.boost.org/trac10/ticket/10683 Report #10675: support pruning/stopping bfs/dfs traversing Sun, 19 Oct 2014 02:09:26 GMT Sun, 19 Oct 2014 02:09:26 GMT <p> In some cases, BFS/DFS traversal is required only in the local neighborhood of a node (i.e. I would like to visit nodes up to a defined distance, and this distance may have an implementation-dependent meaning) or to only traverse certain portions of the graph (i.e. to skip certain edges/target nodes based on some property found during traversal). Currently, BFS/DFS do not allow to do this. One way would be to gain access to the underlying color map but the functions take the map by copy. Another (cleaner, IMHO) way, would be to allow the events to return true/false which could allow the BFS/DFS algorithm to skip the target node/edge or not. </p> phreakuencies@… https://svn.boost.org/trac10/ticket/10675 https://svn.boost.org/trac10/ticket/10675 Report #10674: Boost 1.56 freezes app on some systems with Windows 7 Sat, 18 Oct 2014 23:01:11 GMT Sat, 18 Oct 2014 23:26:12 GMT <p> I am the developer of qBittorrent. It uses libtorrent-rasterbar which in turn uses Boost (mostly Asio). I recently made a new release. I compiled against Boost 1.56. However I got some complaints from users that the GUI freezes for 5-20secs frequently. All these users are using Windows 7. However I am using Windows XP and I am unable to reproduce. To make the long story short, I provided different test builds based on Boost.Asio and we pinpointed the commit that introduced the freezing problem. </p> <p> Here is the relevant issue from our bug tracker: <strong>url removed</strong> Here is the offending commit: <strong>url removed</strong> </p> <p> If you need any more info, I'll try to provide it. </p> sledgehammer_999 <hammered999@…> https://svn.boost.org/trac10/ticket/10674 https://svn.boost.org/trac10/ticket/10674 Report #10670: stl_concept_covering.cpp:failed to compile w/ studio c++ Thu, 16 Oct 2014 20:02:09 GMT Thu, 16 Oct 2014 20:02:09 GMT <p> stl_concept_covering.cpp:failed to compile w/ studio c++ with "stl_concept_covering.cpp", line 603: Error: FT is not defined. "stl_concept_covering.cpp", line 604: Error: T is not defined. </p> angela.xie@… https://svn.boost.org/trac10/ticket/10670 https://svn.boost.org/trac10/ticket/10670 Report #10669: Assertion failed in broadcast with BOOST_MPI_HOMOGENEOUS defined Thu, 16 Oct 2014 16:34:54 GMT Thu, 16 Oct 2014 16:34:54 GMT <p> When running a program that does a very simple broadcast of a map&lt;int, int&gt; from the root proc (0) to another proc (1), I get this error: </p> <pre class="wiki">Assertion failed: (position+l&lt;=static_cast&lt;int&gt;(buffer_.size())), function load_impl, file /Users/sbateman/tmp/boost_mpi_test/boost_1_56_0/boost/mpi/detail/binary_buffer_iprimitive.hpp, line 110. </pre><p> This only happens when I compile Boost with BOOST_MPI_HOMOGENEOUS defined (i.e., uncommented) in boost/mpi/config.hpp. If I leave that line commented out, the program completes successfully. </p> <p> I've attached a source file (test.cpp) that reproduces this error. I tested this on a Mac system with OS X 10.9.5 and compiler version: </p> <pre class="wiki">Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn) Target: x86_64-apple-darwin13.4.0 </pre><p> and also on a Linux system with compiler version: </p> <pre class="wiki">gcc version 4.8.2 20131016 (Cray Inc.) (GCC) Target: x86_64-suse-linux </pre> sam.bateman@… https://svn.boost.org/trac10/ticket/10669 https://svn.boost.org/trac10/ticket/10669 Report #10667: VC++ 2013 compiler warning C4244: 'initializing' : conversion from 'double' to 'const coordinate_type', possible loss of data Thu, 16 Oct 2014 10:49:39 GMT Thu, 04 Jan 2018 14:02:29 GMT <p> I'm using Microsoft Visual Studio 12 (2013) to compile boost 1.56.0. I use compiler flag /W4. The following warnings (which we declared errors for our project) occur in geometry, regardless whether I'm compiling for x64 or x86: </p> <pre class="wiki">\boost_1_56_0\boost\geometry\algorithms\detail\sections\sectionalize.hpp(612): warning C4244: 'initializing' : conversion from 'double' to 'const coordinate_type', possible loss of data </pre><p> Please consider related Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8402" title="#8402: Support Requests: x64 compiler warning C4244: conversion from 'unsigned __int64' to ... (closed: fixed)">#8402</a>. </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/10667 https://svn.boost.org/trac10/ticket/10667 Report #10660: svg_mapper crash Wed, 15 Oct 2014 15:56:42 GMT Wed, 15 Oct 2014 15:56:42 GMT <p> When I slightly modify the example from the <a href="http://www.boost.org/doc/libs/1_56_0/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html">documentation</a>, the code crashes with an obscure (for me) exception deep in the callstack. </p> <p> Running this code: </p> <pre class="wiki">std::ostringstream svg; // Specify the basic type typedef boost::geometry::model::d2::point_xy&lt;int&gt; point_type; // Declare some geometries and set their values point_type a; boost::geometry::assign_values(a, -100, -100); // Declare a stream and an SVG mapper boost::geometry::svg_mapper&lt;point_type&gt; mapper(svg, 1000, 1000); // Add geometries such that all these geometries fit on the map mapper.add(a); // Draw the geometries on the SVG map, using a specific SVG style mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2", 5); // Destructor of map will be called - adding &lt;/svg&gt; // Destructor of stream will be called, closing the file </pre><p> ... throws this exception: </p> <pre class="wiki">Microsoft C++ exception: boost::numeric::negative_overflow at memory location 0x00000000001E9D60. </pre><p> ... at this call-stack: </p> <pre class="wiki">tcaddin.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 154 C++ tcaddin.dll!boost::numeric::def_overflow_handler::operator()(boost::numeric::range_check_result r) Line 164 C++ tcaddin.dll!boost::numeric::convdetail::generic_range_checker&lt;boost::numeric::conversion_traits&lt;int,double&gt;,boost::numeric::convdetail::LE_PrevLoT&lt;boost::numeric::conversion_traits&lt;int,double&gt; &gt;,boost::numeric::convdetail::GE_SuccHiT&lt;boost::numeric::conversion_traits&lt;int,double&gt; &gt;,boost::numeric::def_overflow_handler&gt;::validate_range(double s) Line 294 C++ tcaddin.dll!boost::numeric::convdetail::rounding_converter&lt;boost::numeric::conversion_traits&lt;int,double&gt;,boost::numeric::convdetail::generic_range_checker&lt;boost::numeric::conversion_traits&lt;int,double&gt;,boost::numeric::convdetail::LE_PrevLoT&lt;boost::numeric::conversion_traits&lt;int,double&gt; &gt;,boost::numeric::convdetail::GE_SuccHiT&lt;boost::numeric::conversion_traits&lt;int,double&gt; &gt;,boost::numeric::def_overflow_handler&gt;,boost::numeric::raw_converter&lt;boost::numeric::conversion_traits&lt;int,double&gt; &gt;,boost::numeric::Trunc&lt;double&gt; &gt;::convert(double s) Line 494 C++ tcaddin.dll!boost::numeric_cast&lt;int,double&gt;(double arg) Line 54 C++ tcaddin.dll!boost::geometry::strategy::transform::ublas_transformer&lt;double,2,2&gt;::apply&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; p1, boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &amp; p2) Line 115 C++ tcaddin.dll!boost::geometry::detail::transform::transform_point::apply&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt;,boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; p1, boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &amp; p2, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 58 C++ tcaddin.dll!boost::geometry::resolve_strategy::transform::apply&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt;,boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; geometry1, boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &amp; geometry2, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 358 C++ tcaddin.dll!boost::geometry::resolve_variant::transform&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &gt;::apply&lt;boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; geometry1, boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &amp; geometry2, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 391 C++ tcaddin.dll!boost::geometry::transform&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt;,boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; geometry1, boost::geometry::model::point&lt;int,2,boost::geometry::cs::cartesian&gt; &amp; geometry2, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 454 C++ tcaddin.dll!boost::geometry::dispatch::svg_map&lt;boost::geometry::point_tag,boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &gt;::apply&lt;boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt; &gt; &amp; stream, const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; style, int size, const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; point, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 87 C++ tcaddin.dll!boost::geometry::svg_map&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &gt;(std::basic_ostream&lt;char,std::char_traits&lt;char&gt; &gt; &amp; stream, const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; style, int size, const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; geometry, const boost::geometry::strategy::transform::map_transformer&lt;double,2,2,1,1&gt; &amp; strategy) Line 213 C++ tcaddin.dll!boost::geometry::svg_mapper&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt;,1&gt;::map&lt;boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &gt;(const boost::geometry::model::d2::point_xy&lt;int,boost::geometry::cs::cartesian&gt; &amp; geometry, const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; style, int size) Line 334 C++ [...] </pre> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/10660 https://svn.boost.org/trac10/ticket/10660 Report #10659: svg_mapper output is offset for int-based point type Wed, 15 Oct 2014 15:45:23 GMT Wed, 15 Oct 2014 15:50:39 GMT <p> Based on the example from the <a href="http://www.boost.org/doc/libs/1_56_0/libs/geometry/doc/html/geometry/reference/io/svg/svg_mapper.html">documentation</a> I find the following oddity: Simply change the following line </p> <pre class="wiki">typedef boost::geometry::model::d2::point_xy&lt;double&gt; point_type; </pre><p> into </p> <pre class="wiki">typedef boost::geometry::model::d2::point_xy&lt;int&gt; point_type; </pre><p> Nota bene: All values in the example code are integral numbers, anyway. Yet, the resulting output is different, see attached files. In case of int, the entire graphic is considerably offset to the north. </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/10659 https://svn.boost.org/trac10/ticket/10659 Report #10656: build static boost libraries with -fPIC Tue, 14 Oct 2014 20:27:00 GMT Fri, 24 Oct 2014 16:50:14 GMT <p> I am trying to build static boost libraries with -fPIC compliler option. I am using RHEL6 with GCCv4.4. I am using the following command "./bootstrap.sh CXXFLAGS=-fPIC". After this is use "./b2" Is this the proper procedure? Thanks, Raymond. </p> raymond_desantos@… https://svn.boost.org/trac10/ticket/10656 https://svn.boost.org/trac10/ticket/10656 Report #10644: BOOST_IPC_SHARED_DIR env variable to be used for get_shared_dir() Fri, 10 Oct 2014 17:02:02 GMT Wed, 07 Mar 2018 18:03:13 GMT <p> Hi, </p> <p> Will it be possible to have shared_dir not hardcoded? Currently it is determine by some tricks (some involve event log parsing on windows, which fails a lot). The only practical solution for us was to use BOOST_INTERPROCESS_SHARED_DIR_PATH define. </p> <p> boost/interprocess/detail/shared_dir_helpers.hpp </p> <p> inline void get_shared_dir(std::string &amp;shared_dir) { </p> <blockquote> <p> #if defined(BOOST_INTERPROCESS_SHARED_DIR_PATH) </p> <blockquote> <p> shared_dir = BOOST_INTERPROCESS_SHARED_DIR_PATH; </p> </blockquote> <p> #else </p> <blockquote> <p> get_shared_dir_root(shared_dir); #if defined(BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME) </p> <blockquote> <p> shared_dir += "/"; get_bootstamp(shared_dir, true); </p> </blockquote> <p> #endif </p> </blockquote> <p> #endif </p> </blockquote> <p> } </p> <p> That has limitations tough as it makes it very difficult to test software in isolation (it requires access to the same folder). Similarly it makes is difficult to run program of machines with different file structure. </p> <p> Can it be configurable by some environment variable ? </p> <hr /> <p> Ion Gaztañaga : </p> <p> This seems a good idea. I guess we won't support changing the value of the variable while the program is running, right? For performance reasons, I guess we could just cache the value the first time we access to the environment variable (or maybe in program startup). </p> <p> "BOOST_INTERPROCESS_SHARED_DIR_PATH" is too long for that environment variable name? </p> <hr /> <p> BOOST_IPC_SHARED_DIR is good name for env variable It should be read just at the start of the process (no need to change it during running of the program) </p> <p> thanks a lot! </p> qba.szymanski@… https://svn.boost.org/trac10/ticket/10644 https://svn.boost.org/trac10/ticket/10644 Report #10642: polygon_set_data<int> bug with small coordinates Thu, 09 Oct 2014 18:49:42 GMT Mon, 06 Apr 2015 21:16:10 GMT <p> The attached test program creates a small polygon with a hole and adds it to a polygon_set_data&lt;int&gt;. The internal representation of the polygon set is rather messed up, as you can confirm by calling .get() or .get_trapezoids(). </p> <p> This test program demonstrates the bug by comparing the area of the polygon to the area of a polygon set containing that single polygon. The area of the polygon is correctly computed as 32; the area of the polygon set is incorrectly computed as 30. </p> <p> Doubling all coordinates avoids the bug. </p> "Patrick LoPresti" <lopresti@…> https://svn.boost.org/trac10/ticket/10642 https://svn.boost.org/trac10/ticket/10642 Report #10633: mingw project was migrated to mingw-w64 6 mos to a year ago Tue, 07 Oct 2014 18:36:38 GMT Sun, 01 Feb 2015 22:06:37 GMT <p> <a href="http://www.boost.org/users/history/version_1_56_0.html">http://www.boost.org/users/history/version_1_56_0.html</a> under compilers tested, windows you have listed mingw. </p> <p> mingw is no longer maintained and has been migrated to mingw-w64. </p> <p> you might be confusing mingw-w64 with mingw which are different projects. it gives folks the wrong idea as to which compiler to use. </p> <p> the current state of mingw-w64 is that a number of cross compilers (auto builds, mostly for linux and darwin) are generated by the build system. the personal donsheng daily builds seem stable: </p> <p> sf.net mingw-w64 prohject, toolchains targeting win32 and win64, personal builds, dongsheng daily </p> <p> MSYS can be used for a build environment but it must be configured. I have a configuration for that, but it needs to be submitted to the project yet when it gets completed. </p> <p> interestingly enough, this bug tracking system rejects my posting of the compiler URLs as spam and says I should have completed the captcha, but no captcha was given. I am using firefox on win7x64. </p> <p> at best, "mingw" might be a misnomer. </p> jmichae3@… https://svn.boost.org/trac10/ticket/10633 https://svn.boost.org/trac10/ticket/10633 Report #10632: Problem with range transform with gcc-4.8 optimized Tue, 07 Oct 2014 15:52:45 GMT Tue, 07 Oct 2014 15:52:45 GMT <p> With gcc4.8, if the option -O is used, the operation " | transformed(arg1)" on a transformed range leads to unexpected results. </p> <p> E.g. if "initialVec" is a vector containing any values, the following line gives a null resultVec:<br /> auto resultVec = initialVec | transformed( arg1 * 2 ) | transformed( arg1 ); </p> <p> This problem is also present with clang (optimized) and visual studio 2013 (in release), but not in debug modes, and not with gcc-4.6. </p> <p> Note that an operation in the second transformed remove this problem: the following code is working as expected:<br /> auto resultVec = initialVec | transformed( arg1 * 2 ) | transformed( arg1 * 1 ); </p> <p> This problem has been reproduced with boost 1.49, 1.55 and 1.56. </p> Fabien Nendaz <fabien@…> https://svn.boost.org/trac10/ticket/10632 https://svn.boost.org/trac10/ticket/10632 Report #10630: iostreams/test/code_converter_test does not compile with Xcode 6 Tue, 07 Oct 2014 12:54:02 GMT Mon, 27 Oct 2014 14:17:19 GMT <p> Apparently the bundled std::codecvt template has changed in a way incompatible with code_converter_test. </p> <pre class="wiki">./b2 toolset=darwin variant=release address-model=32 -a -q architecture=x86 -sNO_BZIP2=1 libs/iostreams/test//code_converter_test ... darwin.compile.c++ bin.v2/libs/iostreams/test/code_converter_test.test/darwin-4.2.1/release/address-model-32/architecture-x86/code_converter_test.o In file included from libs/iostreams/test/code_converter_test.cpp:17: In file included from ./boost/iostreams/code_converter.hpp:35: ./boost/iostreams/detail/codecvt_helper.hpp:217:25: error: implicit instantiation of undefined template 'std::__1::codecvt&lt;wchar_t, char, boost::iostreams::tes\ t::null_padded_codecvt_state&gt;' struct codecvt_helper : std::codecvt&lt;Intern, Extern, State&gt; { ^ </pre><p> This same error occurs with debug and 64-bit builds. </p> <p> This is not a regression: the same failure occurs with Boost 1.55.0. </p> nat@… https://svn.boost.org/trac10/ticket/10630 https://svn.boost.org/trac10/ticket/10630 Report #10629: Interprocess Vector resize causes crash Tue, 07 Oct 2014 11:21:32 GMT Tue, 07 Oct 2014 11:21:32 GMT <p> Our existing code that has worked through many versions of Boost has failed in Boost 1.56.0. </p> <p> I've reduced our code down to a specific example that replicates the issue in the following development environment: </p> <blockquote> <p> (1) Windows 7 64-bit (2) VS2010 and VS2013 (generating X64 code) </p> </blockquote> <p> The example code produces a tree-like structure. Each node contains an interprocess vector that contains child nodes. The depth of the tree is 3 (parent, child, grandchild). The parent (root) node contains <strong>D</strong> child nodes, each child node contains <strong>D</strong> grandchild nodes, and the children of the grandchild nodes are left empty. The example program crashes when using a dimension, <strong>D</strong>, of 43, but is fine for 42 and less. </p> <p> The tree is constructed in a depth-first process so there will be some resizing of the vectors in the child and parent nodes after the grandchild nodes have been created and added to the structure. </p> <p> The crash generates the following error: </p> <p> <em>Assertion failed: ptr != 0, file D:\boost64\include\boost-1_56\boost/interprocess/allocators/allocator.hpp, line 268</em> </p> <p> The crash can be prevented by reserving the correct amount of space ahead of node insertion. </p> <p> Sample code is available: github.com/peter-durrant/sandbox/tree/master/boost_interprocess_vector_broken (CPP file attached) </p> peter.durrant@… https://svn.boost.org/trac10/ticket/10629 https://svn.boost.org/trac10/ticket/10629 Report #10627: Regression in xmldoc/ex_month_add.xml Tue, 07 Oct 2014 09:19:00 GMT Tue, 07 Oct 2014 09:19:00 GMT <p> xmldoc/ex_month_add.xml example is incomplete. </p> <pre class="wiki">error: 'add_month' was not declared in this scope add_month mf(1); ^ </pre><p> I think that this regression due to accidental removal of </p> <pre class="wiki"> typedef boost::date_time::month_functor&lt;date&gt; add_month; </pre><p> in this <a class="changeset" href="https://svn.boost.org/trac10/changeset/29259" title="tons of documentation updates for the 1.33 release ">[29259]</a> changeset </p> Nikita Kniazev <nok.raven@…> https://svn.boost.org/trac10/ticket/10627 https://svn.boost.org/trac10/ticket/10627 Report #10624: win_object_handle_service race condition on destroy Tue, 07 Oct 2014 04:38:51 GMT Tue, 07 Oct 2014 04:38:51 GMT <p> I caught a random crash in our code base that appears to be due to a race condition in win_object_handle_service. Reproduction steps are essentially just: </p> <p> boost::asio::windows::object_handle* handle = new boost::asio::windows::object_handle(service, hEvent);<br /> handle-&gt;async_wait(...);<br /> <a class="missing wiki">SetEvent</a>(hEvent);<br /> delete handle; </p> <p> The race condition occurs in win_object_handle_service::wait_callback. The last few lines of code in this method are: </p> <blockquote> <p> lock.unlock();<br /> impl-&gt;owner_-&gt;io_service_.post_deferred_completions(completed_ops); </p> </blockquote> <p> The problem is that while the delete of the handle waits on the same lock as the wait_callback, the call into impl-&gt;owner_-&gt;io_service_ happens outside the scope of that lock. Hence there is a race condition that can trigger under multi-threaded/heavy load scenarios where the delete may execute before the call to &gt;io_service_.post_deferred_completions happens </p> <blockquote> <p> lock.unlock();<br /> &lt;----- delete executes here<br /> impl-&gt;owner_-&gt;io_service_.post_deferred_completions(completed_ops); </p> </blockquote> <p> This leaves impl-&gt;owner_ pointing at deleted/unintialized memory, and hence the post_deferred_completions call randomly crashes. I can repro this 100% of the time by just adding a Sleep to emulate load: </p> <blockquote> <p> lock.unlock();<br /> Sleep(1000);<br /> impl-&gt;owner_-&gt;io_service_.post_deferred_completions(completed_ops); </p> </blockquote> Rowan Wyborn <rwyborn@…> https://svn.boost.org/trac10/ticket/10624 https://svn.boost.org/trac10/ticket/10624 Report #10616: tagged_ptr assumes zero leading bits Sun, 05 Oct 2014 16:32:01 GMT Sun, 11 Dec 2016 11:35:51 GMT <p> I've noticed that boost::lockfree::queue does not work on the OSv operating system, crashing when used. </p> <p> After some investigation, I discovered the problem: lockfree::queue uses tagged_ptr, and that, when compiled on x86_64, uses tagged_ptr_ptrcompression which assumes that pointers always start with 16 zero bits. </p> <p> The thing is - the x86_64 standard does *not* guarantee that pointers must start with all zero bits. It just guarantees that pointers are so-called "canonical", meaning that the first 16 (usually) bits are either all 0, or all 1. But they *can* be all 1-s, and indeed in OSv, malloc()ed memory has addresses starting with all 1s. By the way, in Linux, kernel-space memory (as opposed to user-space memory) also has such addresses. </p> <p> But tagged_ptr::extract_ptr() assumes that the leading bits of pointers are always zero - which happens to be true on Linux's user-space memory but is not generally guaranteed by x86_64 (and isn't true on OSv). </p> <p> I'm not sure what to suggest as a fix. One not-really-safe-but-will-probably-work-in-practice option is to choose to fill the pointer with 0 or 1 bits depending on the 47th bit. Another not-quite-foolproof option is to assume that in one program all pointers will start with the same prefix (all 0 or all 1), so calculate this prefix once at runtime and then use it every time. </p> nyh@… https://svn.boost.org/trac10/ticket/10616 https://svn.boost.org/trac10/ticket/10616 Report #10610: Add unwrap shared_future constructor Sun, 05 Oct 2014 10:17:57 GMT Sun, 05 Oct 2014 10:21:25 GMT <p> Following N4123, add unwrap shared_future constructor </p> <p> See also <a class="ext-link" href="https://github.com/cplusplus/concurrency_ts/issues/58"><span class="icon">​</span>https://github.com/cplusplus/concurrency_ts/issues/58</a> </p> <pre class="wiki"> shared_future(future&lt;shared_future&lt;R&gt;&gt;&amp;&amp; rhs) noexcept; Effects: Constructs a shared_future object from the shared state referred to by rhs. The shared_future becomes ready when one of the following occurs: Both the outer future and the inner shared_future are ready. The shared_future inherits the value or the exception from the inner shared_future. The outer future is ready but the inner shared_future is invalid. The shared_future gets an exception of type std::future_error, with an error code of std::future_errc::broken_promise. Postconditions: valid() returns the same value as rhs.valid() prior to the constructor invocation. valid() == true. rhs.valid() == false. </pre> viboes https://svn.boost.org/trac10/ticket/10610 https://svn.boost.org/trac10/ticket/10610 Report #10606: kqueue broken on FreeBSD Sun, 05 Oct 2014 03:38:55 GMT Sun, 05 Oct 2014 03:42:51 GMT <p> This ASIO commit 660e9fe30204e0ada0d1fd40c48015810d2647dc broke things pretty badly on FreeBSD. The "server3" example, for instance, doesn't ever correctly accept and handle a new connection. </p> elan@… https://svn.boost.org/trac10/ticket/10606 https://svn.boost.org/trac10/ticket/10606 Report #10593: boost::locale::generator::generate throws unhelpful error if iconv doesn't support UTF-16 Sat, 04 Oct 2014 01:53:09 GMT Sat, 04 Oct 2014 01:53:09 GMT <p> This actually happens on some older libc's. You end up with an exception complaining about iconv not supporting ANSI_X3.4-1968, when in fact the issue is a lack of support for UTF-16, which should be either ignorable or reported more accurately. Gah, I'm too tired to explain the issue in more detail right now; poke me and I'll expand later if necessary. </p> Rodger Combs <rodger.combs@…> https://svn.boost.org/trac10/ticket/10593 https://svn.boost.org/trac10/ticket/10593 Report #10591: boost::filesystem does not build on iOS 8 Sat, 04 Oct 2014 00:14:33 GMT Fri, 27 Jan 2017 18:09:40 GMT <p> boost::filesystem::detail::operations relies on AT_SYMLINK_NOFOLLOW macro to decide whenever to use fchmodat function or not. Since iOS8 AT_SYMLINK_NOFOLLOW is defined on iOS but fchmodat still not available which breaks this logic and lead to compilation error. </p> anonymous https://svn.boost.org/trac10/ticket/10591 https://svn.boost.org/trac10/ticket/10591 Report #10581: Conflict when using boost::interprocess objects when linking to 2 different boost versions Thu, 02 Oct 2014 07:27:54 GMT Fri, 24 Oct 2014 08:33:57 GMT <p> <strong>Introduction</strong>: Boost interprocess directory and file naming has changed after boost 1.54. Intreprocess communication does not work between version greater than 1.54 and lower than 1.54. Related bug report: <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/9767"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/9767</a> </p> <p> <strong>The Scenario</strong>: Compile a .dll that uses some shared memory object from the boost::interprocess library with version 1.55. (Think of this as an external 3rd party dll which you have no control over). Then make another project, using an older version of boost, lets say boost 1.51. In the new project, open a shared memory object, then call a function from the dll that also opens a shared memory object. This should have opened 2 shared memory objects, one with the 1.55 version and one with the 1.51 version. </p> <p> The problem is that the second memory object will always fail (even if you change the order). </p> <p> <strong>The Problem</strong>: Boost uses a singleton object to map the open interprocess memory objects. Because of the versions mismatch, the first shared memory object that is created, also creates the map (And with it the file naming convention). </p> <p> <strong>Solution</strong>: The singleton <strong>should</strong> just map the items, but use the functions according to the calling binary and compiled version of the caller. </p> <p> <strong>Workaround</strong>: I've just changed the names in the singleton object. I figured you can't have redundancy if it's incompatible, so lets have a separate memory mapping. In windows_intermodule_singleton.hpp changing the windows_semaphore_based_map named objects for the 1.55 version will keep the map separated. </p> Yochai Timmer https://svn.boost.org/trac10/ticket/10581 https://svn.boost.org/trac10/ticket/10581 Report #10577: ‘num_synchronizations’ declared in scope Thu, 02 Oct 2014 02:01:48 GMT Sun, 12 Oct 2014 13:53:53 GMT <p> In 1_54_0/boost/graph/distributed/detail/queue.ipp there is the following: </p> <p> template&lt;BOOST_DISTRIBUTED_QUEUE_PARMS&gt; bool BOOST_DISTRIBUTED_QUEUE_TYPE::do_synchronize() const { #ifdef PBGL_ACCOUNTING </p> <blockquote> <p> ++num_synchronizations; </p> </blockquote> <p> #endif </p> <p> .... </p> <p> } </p> <p> While editing a PBGL example to use Eager Dijkstra over Delta-Stepping, the following error was produced during compilation: </p> <p> In file included from /boost_1_54_0/boost/graph/distributed/queue.hpp:273:0, </p> <blockquote> <p> from /boost_1_54_0/boost/graph/distributed/breadth_first_search.hpp:20, from /boost_1_54_0/boost/graph/breadth_first_search.hpp:404, from /boost_1_54_0/boost/graph/dijkstra_shortest_paths.hpp:21, from /parallel-bgl-0.7.0/libs/graph_parallel/test/distributed_shortest_paths_test.cpp:15: </p> </blockquote> <p> /boost_1_54_0/boost/graph/distributed/detail/queue.ipp: In member function ‘virtual bool boost::graph::distributed::distributed_queue&lt;<a class="missing wiki">ProcessGroup</a>, <a class="missing wiki">OwnerMap</a>, Buffer, <a class="missing wiki">UnaryPredicate</a>&gt;::do_synchronize() const’: /boost_1_54_0/boost/graph/distributed/detail/queue.ipp:143:5: error: ‘num_synchronizations’ was not declared in this scope </p> <blockquote> <p> ++num_synchronizations; </p> </blockquote> <p> I couldn't locate num_synchronizations anywhere. I could undefine PBGL_ACCOUNTING or just comment out the num_sync increment field. </p> <p> I don't see this as having been fixed/removed in any other boost versions (checked 1_56_0). Not a serious problem clearly unless accurate accounting is wanted. </p> M. Harper Langston <harperlangston@…> https://svn.boost.org/trac10/ticket/10577 https://svn.boost.org/trac10/ticket/10577 Report #10572: Error: get_descriptors is not a member of boost::asio::detail::reactor_op_queue<int>. Wed, 01 Oct 2014 23:25:29 GMT Wed, 01 Oct 2014 23:25:29 GMT <p> Problem: asio tests(for example basic_datagram_socket test) failed with error message ".../boost/boost_1_56_0/boost/asio/detail/impl/dev_poll_reactor.ipp", line 116: Error: get_descriptors is not a member of boost::asio::detail::reactor_op_queue&lt;int&gt;." with studio 12.4 c++ on sparc/solaris 11.2 </p> <p> and ../boost/asio/detail/impl/dev_poll_reactor.ipp:116:24: error: 'class boost::asio::detail::reactor_op_queue&lt;int&gt;' has no member named 'get_descriptors' with g++4.8.2 on sparc/solaris 11.2. </p> anonymous https://svn.boost.org/trac10/ticket/10572 https://svn.boost.org/trac10/ticket/10572 Report #10571: type_index tests configuration issues for Oracle Studio c++ Wed, 01 Oct 2014 22:07:51 GMT Wed, 01 Oct 2014 22:07:51 GMT <p> Problems: 1.type_index library tests failed to compile with error message "../../../boost/type_index/stl_type_index.hpp", line 165: Error: abi is not defined." with studio 12.4 (c++) on Solaris 11.2. </p> <p> 2.nortti test flags are incorrect for studio c++. </p> <p> Solution for problem 1: in boost/type_index/stl_type_index.hpp 42:#ifdef <span class="underline">GNUC</span> 43 # include &lt;cxxabi.h&gt; <em> abi::<span class="underline">cxa_demangle 44 #endif </span></em></p> <p> replace line 42 with </p> <table class="wiki"> <tr>#if defined <span class="underline">GNUC</span> <td> (defined(<span class="underline">SUNPRO_CC) &amp;&amp; </span>SUNPRO_CC_COMPAT!=5) </td></tr></table> <p> 154:#if defined(_MSC_VER) 155: std::string ret = data_-&gt;name(); 156: std::string::size_type pos_beg = ret.find(cvr_saver_name); 157: if (pos_beg == std::string::npos) { 158: return ret; 159: } </p> <p> replace line 154 with </p> <table class="wiki"> <tr>#if defined(_MSC_VER) <td> (defined(<span class="underline">SUNPRO_CC) &amp;&amp; (</span>SUNPRO_CC_COMPAT==5)) </td></tr></table> <p> in boost/type_index/detail/compile_time_type_info.hpp 120: #elif defined(<span class="underline">PRETTY_FUNCTION</span>) \ </p> <table class="wiki"> <tr>121: <td> defined(<span class="underline">GNUC</span>) \ </td></tr><tr>122: <td> (defined(<span class="underline">MWERKS</span>) &amp;&amp; (<span class="underline">MWERKS</span> &gt;= 0x3000)) \ </td></tr><tr>123: <td> (defined(<span class="underline">ICC) &amp;&amp; (</span>ICC &gt;= 600)) \ </td></tr><tr>124: <td> defined(<span class="underline">ghs</span>) \ </td></tr><tr>125: <td> defined(<span class="underline">DMC</span>) </td></tr></table> <table class="wiki"> <tr>insert "<td> defined(<span class="underline">SUNPRO_CC) \" into between line 121, 122 </span></td></tr></table> <blockquote> <table class="wiki"> <tr><td> defined(<span class="underline">GNUC</span>) \ </td></tr><tr><td> defined(<span class="underline">SUNPRO_CC) \ </span></td></tr><tr><td> (defined(<span class="underline">MWERKS</span>) &amp;&amp; (<span class="underline">MWERKS</span> &gt;= 0x3000)) \ </td></tr></table> </blockquote> <p> solution for problem 2: add -features=no%rtti for nortti test </p> angela.xie@… https://svn.boost.org/trac10/ticket/10571 https://svn.boost.org/trac10/ticket/10571 Report #10568: It would be better to improve naming mechanism of the latest log file Tue, 30 Sep 2014 12:27:21 GMT Wed, 01 Oct 2014 06:23:08 GMT <p> Currently if some format is used for log file name, latest log file name is constructed with that format. For example, if we use a format which includes date and sequential number in the log file name, such log files are being generated: </p> <p> file_2014-09-26_00.log file_2014-09-26_01.log file_2014-09-26_02.log (this is the latest log file) </p> <p> It would be better to have such log files: </p> <p> file_2014-09-26_00.log file_2014-09-26_01.log file.log (this is the latest log file always) </p> <p> In this case, it would be easier to determine latest log file. </p> anih@… https://svn.boost.org/trac10/ticket/10568 https://svn.boost.org/trac10/ticket/10568 Report #10567: <boost/asio/spawn.hpp> is not inside <boost/asio.hpp> Tue, 30 Sep 2014 08:19:55 GMT Tue, 30 Sep 2014 08:19:55 GMT <p> According to the document, include &lt;boost/asio.hpp&gt; should implicitly include &lt;boost/asio/spawn.hpp&gt;, but actually it is missing in asio.hpp and has to be included explicitly. I am not sure whether this is intended or not. If it is intended, then the document needs to be updated. </p> rivercheng@… https://svn.boost.org/trac10/ticket/10567 https://svn.boost.org/trac10/ticket/10567 Report #10564: iostreams with custom character class Mon, 29 Sep 2014 18:52:57 GMT Mon, 29 Sep 2014 18:52:57 GMT <p> I am trying to use iostreams with custom character class with its own traits. </p> <p> Exactly: std::basic_istream&lt;Character, <a class="missing wiki">CharacterTraits</a>&gt; boost::iostreams::filtering_stream&lt;boost::iostreams::input_seekable, Character, CharacterTraits&gt; </p> <p> This gives me bunch of errors cannot assign std::char_traits&lt;Character&gt; to <a class="missing wiki">CharacterTraits</a>. </p> <p> I have figured out a few places, where the traits does not propagate correctly. </p> <p> I have attached patch files, for places, where I believe, character trait propagation is missing. </p> jur.zikmund@… https://svn.boost.org/trac10/ticket/10564 https://svn.boost.org/trac10/ticket/10564 Report #10561: Bugs in dual seekable mode Mon, 29 Sep 2014 14:16:45 GMT Mon, 06 Oct 2014 13:16:25 GMT <p> Currently there are no tests for dual seekable streams. So the first thing to do is to add some tests. See dual_seekable_test.cpp attached. These tests uncover the following bugs: </p> <ol><li>The functions test_seekable_in_chars and test_seekable_in_chunks in test/detail/verification.hpp use seekp in several places where seekg should be used. This has no effect when there is a single head but does not work when the stream is dual seekable. A new verification function test_dual_seekable was added and tested. See attached verification.hpp. </li><li>indirect_streambuf::seek_impl does not work for dual seeking. The problem is that both heads are modified for both input and output operations. Since the modification is the same (just resetting the pointers) everything works when there is a single head. This is a duplicate of <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7681"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7681</a>. Solved in the attached indirect_streambuf.hpp </li><li>The function shared_buffer() does not consider dual_seekable stream buffers as shared. Solved in the attached indirect_streambuf.hpp </li><li>The function init_put_area() does not consider the existing input position. This is a duplicate of <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/8572"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/8572</a>. Solved in the attached indirect_streambuf.hpp </li></ol><p> With the attached versions of verification.hpp and indirect_streambuf.hpp all previously existing tests passed. I recommend adding the new tests in dual_seekable_test.cpp. </p> jlodos@… https://svn.boost.org/trac10/ticket/10561 https://svn.boost.org/trac10/ticket/10561 Report #10560: [documentation] wrong path mentioned in getting started guide Mon, 29 Sep 2014 14:04:09 GMT Mon, 29 Sep 2014 14:04:09 GMT <p> In <a href="http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#install-boost-build">http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#install-boost-build</a> , it says "Go to the directory tools/build/v2/" </p> <p> But, there exists no "v2" directory inside the "build" directory. </p> <p> Kindly fix that. </p> Siddhant Saraf <siddhantsaraf@…> https://svn.boost.org/trac10/ticket/10560 https://svn.boost.org/trac10/ticket/10560 Report #10559: 1_56 tar file has directories with wrong permissions, will not install Sun, 28 Sep 2014 19:09:51 GMT Sun, 28 Sep 2014 19:09:51 GMT <p> Many of the untarred directories in the tar file have the incorrect following permissions: drwx------ </p> <p> where group and other permissions are absent, please fix with a recursive chmod to all found directories (find -type d -exec chmod -R a+rx {} \;) to have group and other permissions resulting in the following ls -l drwxr-xr-x </p> <p> Without that, boost will not install and has many permissions errors. Thanks. </p> geoffwattles@… https://svn.boost.org/trac10/ticket/10559 https://svn.boost.org/trac10/ticket/10559 Report #10551: Make futures returned by then()/when_all/when_any don't block. Sat, 27 Sep 2014 16:25:20 GMT Sat, 27 Sep 2014 16:26:27 GMT <p> Follows the Fundamental TS wording for ::then()/ when_all/when_any functions. </p> viboes https://svn.boost.org/trac10/ticket/10551 https://svn.boost.org/trac10/ticket/10551 Report #10550: Implicit unwrapping from then() calls Sat, 27 Sep 2014 16:00:45 GMT Sun, 28 Sep 2014 22:41:28 GMT <p> Follows the Fundamental TS wording for ::then() function. </p> viboes https://svn.boost.org/trac10/ticket/10550 https://svn.boost.org/trac10/ticket/10550 Report #10548: Spirit.Lex does not support scoped enum Sat, 27 Sep 2014 01:55:54 GMT Sat, 27 Sep 2014 02:20:38 GMT <p> Currently the class boost::spirit::lex::lexer store the variable next_token_id as a std::size_t, but the scoped enumeration types (c++11) are not implicitly convertible to integral types. This generetas a lot of errors, I have not a deep knowledge of Spirit.Lex source code, but probably it is necessary to change the code not only in the lexer class, but also in other points. Sorry, but I am not able to patch the code. I attach a very simple example which shows this issue. </p> mattia.penati@… https://svn.boost.org/trac10/ticket/10548 https://svn.boost.org/trac10/ticket/10548 Report #10547: [boost/date_time/gregorian/gregorian.hpp] Purify detected UMRs Fri, 26 Sep 2014 20:15:49 GMT Fri, 26 Sep 2014 20:15:49 GMT <p> Hello, </p> <p> We ran Purify on one of the boost tests: boost_1_56_0/libs/date_time/test/gregorian/testgreg_durations.cpp . </p> <p> The test succeded, but there were UMRs (Uninitialized memory reads)detected in </p> <p> short boost::date_time::wrapping_int2&lt;short, 1, 12 &gt;::add&lt;short&gt;(short) [... /boost_1_56_0/boost/date_time/wrapping_int.hpp:124] </p> <p> and in </p> <p> boost::date_time::month_functor&lt;boost::gregorian::date&gt;::get_offset(boost::gregorian::date const&amp;) const [.../boost_1_56_0/boost/date_time/adjust_functors.hpp:91] </p> <p> The compiler was gcc version 4.1.0 for Linux </p> Yevgeny Kalinsky <yevgeny_kalinsky@…> https://svn.boost.org/trac10/ticket/10547 https://svn.boost.org/trac10/ticket/10547 Report #10543: circular_buffer::rotate() incorrectly assumes that circular_buffer::pointer is a simple pointer type Fri, 26 Sep 2014 11:36:48 GMT Fri, 11 Dec 2015 13:28:07 GMT <p> Dear maintainer, </p> <p> I am trying to use a boost::circular_buffer inside a shared memory segment, along with Boost.Interprocess. This implies that the type of the stored pointer is an offset_ptr&lt;T&gt;, and not just a T *. </p> <p> In circular_buffer/base.hpp, the rotate method uses a const_cast from the member of a const iterator, assuming that "pointer" is indeed a simple pointer type. This however fails when it is instead a structure, such as boost::interprocess::offset_ptr&lt;T&gt;. </p> <p> The patch I am attaching below solves the issue for me, by allowing the right template specialization to kick in. I did not test it with different pointer types as I am a bit short on time, but by reading the code alone, it should work also with plain pointers. </p> Matteo Settenvini <matteo.settenvini@…> https://svn.boost.org/trac10/ticket/10543 https://svn.boost.org/trac10/ticket/10543 Report #10540: missing std::nullptr_t support in boost/type_traits/is_pointer.hpp Thu, 25 Sep 2014 13:50:55 GMT Thu, 25 Sep 2014 16:21:15 GMT <p> ...leads to a failures when inserting a nullptr into a boost::ptr_vector: </p> <pre class="wiki">$ cat test.cc #include "boost/ptr_container/nullable.hpp" #include "boost/ptr_container/ptr_vector.hpp" void f(boost::ptr_vector&lt;boost::nullable&lt;int&gt;&gt; &amp; v) { v.insert(v.begin(), nullptr); } $ g++ -std=c++11 -c test.cc In file included from .../boost_1_56_0/boost/ptr_container/nullable.hpp:21:0, from test.cc:1: .../boost_1_56_0/boost/mpl/eval_if.hpp: In instantiation of ‘struct boost::mpl::eval_if_c&lt;true, boost::range_const_iterator&lt;std::nullptr_t, void&gt;, boost::range_mutable_iterator&lt;std::nullptr_t, void&gt; &gt;’: .../boost_1_56_0/boost/range/iterator.hpp:69:17: required from ‘struct boost::range_iterator&lt;std::nullptr_t, void&gt;’ .../boost_1_56_0/boost/range/begin.hpp:106:61: required by substitution of ‘template&lt;class T&gt; typename boost::range_iterator&lt;const T&gt;::type boost::range_adl_barrier::begin(const T&amp;) [with T = std::nullptr_t]’ .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:421:43: required from ‘typename boost::disable_if&lt;boost::ptr_container_detail::is_pointer_or_integral&lt;Range&gt; &gt;::type boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::insert(boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::iterator, const Range&amp;) [with Range = std::nullptr_t; T = boost::nullable&lt;int&gt;; VoidPtrSeq = std::vector&lt;void*, std::allocator&lt;void*&gt; &gt;; CloneAllocator = boost::heap_clone_allocator; typename boost::disable_if&lt;boost::ptr_container_detail::is_pointer_or_integral&lt;Range&gt; &gt;::type = void; boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::iterator = boost::void_ptr_iterator&lt;__gnu_cxx::__normal_iterator&lt;void**, std::vector&lt;void*, std::allocator&lt;void*&gt; &gt; &gt;, int&gt;]’ test.cc:4:32: required from here .../boost_1_56_0/boost/mpl/eval_if.hpp:60:31: error: no type named ‘type’ in ‘boost::mpl::eval_if_c&lt;true, boost::range_const_iterator&lt;std::nullptr_t, void&gt;, boost::range_mutable_iterator&lt;std::nullptr_t, void&gt; &gt;::f_ {aka struct boost::range_const_iterator&lt;std::nullptr_t, void&gt;}’ typedef typename f_::type type; ^ In file included from .../boost_1_56_0/boost/ptr_container/ptr_vector.hpp:20:0, from test.cc:2: .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp: In instantiation of ‘typename boost::disable_if&lt;boost::ptr_container_detail::is_pointer_or_integral&lt;Range&gt; &gt;::type boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::insert(boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::iterator, const Range&amp;) [with Range = std::nullptr_t; T = boost::nullable&lt;int&gt;; VoidPtrSeq = std::vector&lt;void*, std::allocator&lt;void*&gt; &gt;; CloneAllocator = boost::heap_clone_allocator; typename boost::disable_if&lt;boost::ptr_container_detail::is_pointer_or_integral&lt;Range&gt; &gt;::type = void; boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::iterator = boost::void_ptr_iterator&lt;__gnu_cxx::__normal_iterator&lt;void**, std::vector&lt;void*, std::allocator&lt;void*&gt; &gt; &gt;, int&gt;]’: test.cc:4:32: required from here .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:421:43: error: no matching function for call to ‘begin(std::nullptr_t&amp;)’ insert( before, boost::begin(r), boost::end(r) ); ^ .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:421:43: note: candidates are: In file included from .../boost_1_56_0/boost/range/functions.hpp:18:0, from .../boost_1_56_0/boost/ptr_container/detail/reversible_ptr_container.hpp:29, from .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:20, from .../boost_1_56_0/boost/ptr_container/ptr_vector.hpp:20, from test.cc:2: .../boost_1_56_0/boost/range/begin.hpp:97:55: note: template&lt;class T&gt; typename boost::range_iterator&lt;C&gt;::type boost::range_adl_barrier::begin(T&amp;) inline BOOST_DEDUCED_TYPENAME range_iterator&lt;T&gt;::type begin( T&amp; r ) ^ .../boost_1_56_0/boost/range/begin.hpp:97:55: note: template argument deduction/substitution failed: .../boost_1_56_0/boost/range/begin.hpp:106:61: note: template&lt;class T&gt; typename boost::range_iterator&lt;const T&gt;::type boost::range_adl_barrier::begin(const T&amp;) inline BOOST_DEDUCED_TYPENAME range_iterator&lt;const T&gt;::type begin( const T&amp; r ) ^ .../boost_1_56_0/boost/range/begin.hpp:106:61: note: substitution of deduced template arguments resulted in errors seen above In file included from .../boost_1_56_0/boost/ptr_container/ptr_vector.hpp:20:0, from test.cc:2: .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:421:58: error: no matching function for call to ‘end(std::nullptr_t&amp;)’ insert( before, boost::begin(r), boost::end(r) ); ^ .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:421:58: note: candidates are: In file included from .../boost_1_56_0/boost/range/functions.hpp:19:0, from .../boost_1_56_0/boost/ptr_container/detail/reversible_ptr_container.hpp:29, from .../boost_1_56_0/boost/ptr_container/ptr_sequence_adapter.hpp:20, from .../boost_1_56_0/boost/ptr_container/ptr_vector.hpp:20, from test.cc:2: .../boost_1_56_0/boost/range/end.hpp:91:55: note: template&lt;class T&gt; typename boost::range_iterator&lt;C&gt;::type boost::range_adl_barrier::end(T&amp;) inline BOOST_DEDUCED_TYPENAME range_iterator&lt;T&gt;::type end( T&amp; r ) ^ .../boost_1_56_0/boost/range/end.hpp:91:55: note: template argument deduction/substitution failed: .../boost_1_56_0/boost/range/end.hpp:100:61: note: template&lt;class T&gt; typename boost::range_iterator&lt;const T&gt;::type boost::range_adl_barrier::end(const T&amp;) inline BOOST_DEDUCED_TYPENAME range_iterator&lt;const T&gt;::type end( const T&amp; r ) ^ .../boost_1_56_0/boost/range/end.hpp:100:61: note: template argument deduction/substitution failed: </pre><p> What would fix this is: </p> <pre class="wiki">--- boost/type_traits/is_pointer.hpp 2014-07-09 20:04:22.000000000 +0200 +++ boost/type_traits/is_pointer.hpp 2014-09-25 15:37:45.895757102 +0200 @@ -72,6 +72,10 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::boost::detail::is_pointer_impl&lt;T&gt;::value) +#if !defined( BOOST_NO_CXX11_NULLPTR ) +BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_pointer,::std::nullptr_t,true) +#endif + #if defined(__BORLANDC__) &amp;&amp; !defined(__COMO__) &amp;&amp; (__BORLANDC__ &lt; 0x600) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T&amp;,false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T&amp; const,false) </pre> Stephan Bergmann <sbergman@…> https://svn.boost.org/trac10/ticket/10540 https://svn.boost.org/trac10/ticket/10540 Report #10539: Type error in detail::socket_ops::host_to_network_short Thu, 25 Sep 2014 13:43:21 GMT Thu, 25 Sep 2014 13:43:21 GMT <p> Type of <strong>result</strong> local variable should be <strong>u_short_type</strong>. Causes compilation warning C4244 with MSVC ( "possible loss of data" ). </p> <pre class="wiki">u_short_type host_to_network_short(u_short_type value) { #if defined(BOOST_ASIO_WINDOWS_RUNTIME) u_long_type result; unsigned char* result_p = reinterpret_cast&lt;unsigned char*&gt;(&amp;result); result_p[0] = static_cast&lt;unsigned char&gt;((value &gt;&gt; 8) &amp; 0xFF); result_p[1] = static_cast&lt;unsigned char&gt;(value &amp; 0xFF); return result; #else // defined(BOOST_ASIO_WINDOWS_RUNTIME) return htons(value); #endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } </pre> Louis-Michel Veilleux <louismichel.veilleux@…> https://svn.boost.org/trac10/ticket/10539 https://svn.boost.org/trac10/ticket/10539 Report #10534: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS Wed, 24 Sep 2014 09:34:38 GMT Wed, 09 May 2018 08:27:22 GMT <p> With msvc-12.0 toolset (VS2013 Update 3): </p> <p> boost_1_56_0\boost/asio/detail/impl/socket_ops.ipp(1363): warning C4996: 'WSASocketA': Use WSASocketW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings </p> <p> which leads to build failure if 'treat warnings as errors' option is on. </p> Valentin Shtronda <valiko.ua@…> https://svn.boost.org/trac10/ticket/10534 https://svn.boost.org/trac10/ticket/10534 Report #10515: Range: doc: incorrect return type Thu, 18 Sep 2014 07:51:57 GMT Mon, 02 Feb 2015 01:22:17 GMT <p> This page: <a href="http://www.boost.org/doc/libs/1_56_0/libs/range/doc/html/range/reference/adaptors/reference/filtered.html">http://www.boost.org/doc/libs/1_56_0/libs/range/doc/html/range/reference/adaptors/reference/filtered.html</a> </p> <p> reads: </p> <pre class="wiki">Range Return Type: boost::filtered_range&lt;decltype(rng)&gt; </pre><p> But the code shows that it has two template parameters. </p> <pre class="wiki">namespace boost { namespace range_detail { template&lt; class P, class R &gt; struct filtered_range : </pre><p> Maybe other similar pages lack parameters, I don't know, but they all seem to have a single one documented. </p> akim demaille <akim@…> https://svn.boost.org/trac10/ticket/10515 https://svn.boost.org/trac10/ticket/10515 Report #10514: Cannot copy const sub_range to non-const Thu, 18 Sep 2014 04:25:48 GMT Mon, 02 Feb 2015 20:28:45 GMT <p> The following code does not compile with Visual Studio 2013 using Boost 1.56.0: </p> <div class="wiki-code"><div class="code"><pre><span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">vec_t</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">sub_range</span><span class="o">&lt;</span><span class="n">vec_t</span><span class="o">&gt;</span> <span class="n">range_t</span><span class="p">;</span> <span class="n">vec_t</span> <span class="nf">vec</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span> <span class="n">range_t</span> <span class="nf">r</span><span class="p">(</span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">vec</span><span class="p">.</span><span class="n">end</span><span class="p">());</span> <span class="k">const</span> <span class="n">range_t</span> <span class="o">&amp;</span> <span class="n">r_ref</span> <span class="o">=</span> <span class="n">r</span><span class="p">;</span> <span class="n">range_t</span> <span class="n">v</span> <span class="o">=</span> <span class="n">r_ref</span><span class="p">;</span> </pre></div></div><p> The following error results: </p> <pre class="wiki">boost/range/iterator_range_core.hpp(69) : error C2440: 'static_cast' : cannot convert from 'std::_Vector_const_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;' to 'std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;' No constructor could take the source type, or constructor overload resolution was ambiguous c:\build\ng-10.5-x64\API\inc\boost/range/sub_range.hpp(184) : see reference to function template instantiation 'IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_begin&lt;const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt;&gt;(const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt; &amp;)' being compiled with [ IteratorT=std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt; , ForwardRange=vec_t ] c:\build\ng-10.5-x64\API\inc\boost/range/sub_range.hpp(187) : see reference to function template instantiation 'IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_begin&lt;const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt;&gt;(const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt; &amp;)' being compiled with [ IteratorT=std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt; , ForwardRange=vec_t ] c:\build\ng-10.5-x64\API\inc\boost/range/sub_range.hpp(184) : while compiling class template member function 'boost::sub_range&lt;vec_t&gt;::sub_range(const boost::sub_range&lt;vec_t&gt; &amp;)' sub_range_test.cpp(11) : see reference to function template instantiation 'boost::sub_range&lt;vec_t&gt;::sub_range(const boost::sub_range&lt;vec_t&gt; &amp;)' being compiled sub_range_test.cpp(9) : see reference to class template instantiation 'boost::sub_range&lt;vec_t&gt;' being compiled boost/range/iterator_range_core.hpp(75) : error C2440: 'static_cast' : cannot convert from 'std::_Vector_const_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;' to 'std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt;' No constructor could take the source type, or constructor overload resolution was ambiguous c:\build\ng-10.5-x64\API\inc\boost/range/sub_range.hpp(186) : see reference to function template instantiation 'IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_end&lt;const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt;&gt;(const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt; &amp;)' being compiled with [ IteratorT=std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt; , ForwardRange=vec_t ] c:\build\ng-10.5-x64\API\inc\boost/range/sub_range.hpp(187) : see reference to function template instantiation 'IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_end&lt;const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt;&gt;(const boost::range_detail::sub_range_base&lt;ForwardRange,boost::random_access_traversal_tag&gt; &amp;)' being compiled with [ IteratorT=std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;int&gt;&gt;&gt; , ForwardRange=vec_t ] </pre><p> So it looks as though having a <code>const</code> <code>sub_range</code> implies that it uses <code>const_iterator</code>s, which doesn't seem appropriate. </p> <p> Code of this nature compiled using Boost 1.55.0. </p> Braden McDaniel <braden@…> https://svn.boost.org/trac10/ticket/10514 https://svn.boost.org/trac10/ticket/10514 Report #10513: Use operator | and |= for set addition if | and |= are called Wed, 17 Sep 2014 23:33:25 GMT Wed, 17 Sep 2014 23:33:25 GMT <p> As mentioned in the document (<a href="http://www.boost.org/doc/libs/1_56_0/libs/icl/doc/html/boost_icl/function_reference/addition.html">http://www.boost.org/doc/libs/1_56_0/libs/icl/doc/html/boost_icl/function_reference/addition.html</a>), a set union semantics is often attached operators |= and |. This is the case, for example, when using boost::dynamic_bitset, which does not provide operators += and + for set union semantics. </p> <p> However, the original implementation of operators |= and | still uses += and + for the underlying set container. This makes operators |= and | less useful. Furthermore, we can't use boost::dynamic_bitset for icl objects currently. I think this is an unnecessary limitation. </p> <p> To make the code more consistent with the statement above, a proper fix would be changing += and + into |= and | when users call the |= and | operators. </p> <p> The patch is on: <a class="ext-link" href="https://github.com/boostorg/icl/pull/4"><span class="icon">​</span>https://github.com/boostorg/icl/pull/4</a> </p> clan@… https://svn.boost.org/trac10/ticket/10513 https://svn.boost.org/trac10/ticket/10513 Report #10508: Hang occurs if tcp::socket.connect(endpt, errorcode) is called with reserved IP address Tue, 16 Sep 2014 16:16:59 GMT Tue, 16 Sep 2014 16:40:59 GMT <p> boost::asio::ip::tcp::socket.connect( <a class="missing wiki">EndPt</a>, ec) hangs in detail/impl/socket_opps.ipp:472 on the call </p> <p> template &lt;typename <a class="missing wiki">SockLenType</a>&gt; inline int call_connect(<a class="missing wiki">SockLenType</a> msghdr::*, </p> <blockquote> <p> socket_type s, const socket_addr_type* addr, std::size_t addrlen) </p> </blockquote> <p> { </p> <blockquote> <p> return ::connect(s, addr, (<a class="missing wiki">SockLenType</a>)addrlen); &lt;== HANGS </p> </blockquote> <p> } </p> <p> if the IP address is Valid but reserved. 127.0.0.1 &amp; any established private network subnet address work fine with either a connection or an errorcode return specifying the connection was refused. </p> Ron Hansen <thak@…> https://svn.boost.org/trac10/ticket/10508 https://svn.boost.org/trac10/ticket/10508 Report #10507: Tools: Wave missing Mon, 15 Sep 2014 16:48:17 GMT Wed, 29 Jul 2015 18:20:38 GMT <p> The documentation states that the Wave tool is distributed with boost but as of version 1.56 there is no tools/wave directory (referenced in Jamfile.v2) so that running the build tool in the tools/ directory fails: </p> <p> (from the tools directory) </p> <pre class="wiki">b2 --user-config=/var/tmp/portage/dev-libs/boost-1.56.0/work/boost_1_56_0-abi_x86_64.amd64/user-config.jam gentoorelease -j4 -q -d+2 -sICU_PATH=/usr --without-mpi --without-context --without-coroutine pch=off --boost-build=/usr/share/boost-build --prefix="/var/tmp/portage/dev-libs/boost-1.56.0/image/usr" --layout=system threading=multi link=shared Performing configuration checks - has_icu builds : yes (cached) error: Unable to find file or target named error: 'wave/build//wave' error: referred to from project at error: '../tools' error: could not resolve project reference 'wave/build' </pre> tiagogehring@… https://svn.boost.org/trac10/ticket/10507 https://svn.boost.org/trac10/ticket/10507 Report #10505: Use gcc/clang built-in endianity macros (too) Mon, 15 Sep 2014 10:11:45 GMT Wed, 04 Oct 2017 03:35:24 GMT <p> Endian detection in <code>boost/predef/other/endian.h</code> does consider the gcc/clang built-in <code>__BYTE_ORDER__</code> macros and consequently fails to detect endianity of some (usually mobile) platforms. </p> <p> E.g. on Android I get <code>_BYTE_ORDER</code> defined to <code>_LITTLE_ENDIAN</code>, but <code>_LITTLE_ENDIAN</code> is <strong>not</strong> defined, leading to all three conditions (<code>_BYTE_ORDER == _BIG_ENDIAN</code>, <code>_BYTE_ORDER == _LITTLE_ENDIAN</code> and <code>_BYTE_ORDER == _PDP_ENDIAN</code> being satisfied and yielding conflicting definitions. </p> <p> The <code>__BYTE_ORDER__</code> is provided by gcc and clang compilers themselves and therefore should always be there no matter how broken the rest of standard library is. What I am not sure is whether they should be used in preference to any other method or as a fallback (in which case definedness of the <code>_BIG_ENDIAN</code>, <code>_LITTLE_ENDIAN</code> etc. macros also has to be tested before trying to use them) </p> Jan Hudec <bulb@…> https://svn.boost.org/trac10/ticket/10505 https://svn.boost.org/trac10/ticket/10505 Report #10497: Cannot assign filter_range to any_range (gcc only) Fri, 12 Sep 2014 11:51:56 GMT Mon, 02 Feb 2015 01:41:12 GMT <p> When trying to assign a filter_range to a suitable any_range, the attached source code fails to compile under g++ (v4.8.3), but does compile under clang++ (v3.4). </p> <p> From the error messages I get, it seems that the error triggers when trying to use the default constructor of filter_range with Predicate = lambda and an Iterator = non-default-constructible iterator. </p> Alex Puchades <alex94puchades+dev@…> https://svn.boost.org/trac10/ticket/10497 https://svn.boost.org/trac10/ticket/10497 Report #10496: 100% cpu usage when reading serial port on MacOSX Thu, 11 Sep 2014 21:32:48 GMT Sat, 07 Apr 2018 14:36:50 GMT <p> Simple test program is attached. All it does is setup a serial port and start waiting for data. It prints the first data it receives, and quits. It is using 100% cpu (according to activity monitor). </p> <p> I've tried with the following serial ports: silab usb adapter, prolific usb adapter, and pty with master attached to socat. </p> <p> The profiler puts most of the time in <code></code><code>kevent</code><code></code> called from <code></code><code>boost::asio::detail::kqueue_reactor::run(bool, boost::asio::detail::op_queue&lt;boost::asio::detail::task_io_service_operation&gt;&amp;)</code><code></code> </p> Christopher Moore <crmoore@…> https://svn.boost.org/trac10/ticket/10496 https://svn.boost.org/trac10/ticket/10496 Report #10493: Since 1.56, any_range with non-reference references can cause UB Thu, 11 Sep 2014 14:04:19 GMT Thu, 08 Mar 2018 08:44:24 GMT <p> This must be related to <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/10360" title="#10360: Bugs: Since 1.56, any_range use static cast of reference instead of implicit ... (assigned)">#10360</a>. This is a regression since 1.55. </p> <p> When using any_range&lt;T, category, T, ptrdiff_t&gt;, mutable dereference() method returns mutable_reference_type_generator&lt;T&gt;::type, which becomes T&amp;. So dereference() returns a dangling reference to an on-the-fly computed value. </p> <p> See attached test case, which works with 1.55, and fails with -fsanitize=address on Clang 3.5 with 1.56. </p> <pre class="wiki">#include &lt;boost/range/any_range.hpp&gt; #include &lt;boost/range/adaptor/transformed.hpp&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; typedef boost::any_range&lt; std::string, boost::forward_traversal_tag, std::string, std::ptrdiff_t &gt; range_t; std::string f(std::string a) { return a + "!"; } int main() { std::vector&lt;std::string&gt; v = {"a", "b"}; range_t r = v | boost::adaptors::transformed(f); for (auto&amp;&amp; a : r) std::cout &lt;&lt; a &lt;&lt; std::endl; return 0; } </pre> nofitserov@… https://svn.boost.org/trac10/ticket/10493 https://svn.boost.org/trac10/ticket/10493 Report #10492: current_function.hpp Should make use of __FUNCTION__ when compiling with Visual Studio Thu, 11 Sep 2014 12:33:52 GMT Sun, 12 Oct 2014 13:55:02 GMT <p> I would like to use <code>current_function.hpp</code> together with Visual Studio 2013 but <code>BOOST_CURRENT_FUNCTION</code> becomes defined as "(unknown)". </p> anonymous https://svn.boost.org/trac10/ticket/10492 https://svn.boost.org/trac10/ticket/10492 Report #10490: boost::geometry::difference produces a "possible loss of data" warning in MSVC Thu, 11 Sep 2014 01:24:28 GMT Thu, 11 Sep 2014 01:24:28 GMT <p> Using the boost::geometry::difference function causes MSVC to emit the warning: </p> <pre class="wiki">c:\boost\include\boost-1_56\boost\geometry\algorithms\detail\sections\sectionalize.hpp(612): warning C4244: 'initializing' : conversion from 'double' to 'const coordinate_type', possible loss of data </pre><p> (full compiler output is attached) </p> <p> This is reproducible using the sample from the <a href="http://www.boost.org/doc/libs/1_56_0/libs/geometry/doc/html/geometry/reference/algorithms/difference.html">docs</a>. </p> <p> Versions of boost prior to 1.56 do not exhibit the problem. </p> <p> This was reproduced using Visual Studio 2010 and 2013. </p> anonymous https://svn.boost.org/trac10/ticket/10490 https://svn.boost.org/trac10/ticket/10490 Report #10485: heap-use-after-free using C++11 range loop Tue, 09 Sep 2014 16:14:17 GMT Sun, 26 Oct 2014 15:35:40 GMT <p> Repro code: </p> <pre class="wiki">#include &lt;stdio.h&gt; #include &lt;boost/filesystem.hpp&gt; int main() { boost::filesystem::path dir("/"); for (char c : dir.filename().string()) printf("%c\n", c); } </pre><p> I know if I want to fix it I should store dir.filename().string() in a variable (and it works), but in this case it will either crash application or print garbage. Here's what Clang Address Sanitizer prints: </p> <pre class="wiki">================================================================= ==12324==ERROR: AddressSanitizer: heap-use-after-free on address 0x60300000ef50 at pc 0x48448a bp 0x7fff08f73990 sp 0x7fff08f73988 READ of size 8 at 0x60300000ef50 thread T0 #0 0x484489 in std::string::size() const /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:716 #1 0x484489 in ~path /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:636 #2 0x484489 in main /run/media/constantine/Space/Boost_1.54.0_Bug_Repro_09.07.2014/main.cpp:6 #3 0x7f0679cd0d64 in __libc_start_main (/lib64/libc.so.6+0x21d64) #4 0x483f1c in _start (/run/media/constantine/Space/Boost_1.54.0_Bug_Repro_09.07.2014/Debug/app+0x483f1c) 0x60300000ef50 is located 0 bytes inside of 26-byte region [0x60300000ef50,0x60300000ef6a) freed by thread T0 here: #0 0x46e7b9 in operator delete(void*) (/run/media/constantine/Space/Boost_1.54.0_Bug_Repro_09.07.2014/Debug/app+0x46e7b9) #1 0x4843f2 in std::string::_M_rep() const /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:249 #2 0x4843f2 in ~basic_string /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:539 #3 0x4843f2 in ~basic_string /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:539 #4 0x4843f2 in ~path /usr/include/boost/filesystem/path.hpp:55 #5 0x4843f2 in main /run/media/constantine/Space/Boost_1.54.0_Bug_Repro_09.07.2014/main.cpp:6 #6 0x7f0679cd0d64 in __libc_start_main (/lib64/libc.so.6+0x21d64) previously allocated by thread T0 here: #0 0x46e4b9 in operator new(unsigned long) (/run/media/constantine/Space/Boost_1.54.0_Bug_Repro_09.07.2014/Debug/app+0x46e4b9) #1 0x7f067a3411d8 (/lib64/libstdc++.so.6+0xbe1d8) #2 0x9 SUMMARY: AddressSanitizer: heap-use-after-free /usr/bin/../lib/gcc/x86_64-redhat-linux/4.8.3/../../../../include/c++/4.8.3/bits/basic_string.h:716 std::string::size() const Shadow bytes around the buggy address: 0x0c067fff9d90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9da0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9db0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9dc0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9dd0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa =&gt;0x0c067fff9de0: fa fa fa fa fa fa fa fa fa fa[fd]fd fd fd fa fa 0x0c067fff9df0: 00 00 00 02 fa fa 00 00 00 03 fa fa 00 00 00 02 0x0c067fff9e00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9e10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9e20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c067fff9e30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack partial redzone: f4 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 ASan internal: fe ==12324==ABORTING </pre> iamvfx@… https://svn.boost.org/trac10/ticket/10485 https://svn.boost.org/trac10/ticket/10485 Report #10483: boost::is_sorted docs incorrectly describe predicate Tue, 09 Sep 2014 13:13:34 GMT Mon, 02 Feb 2015 01:20:47 GMT <p> From the documentation </p> <blockquote> <p> For the non-predicate version the return value is true if and only if for each adjacent elements [x,y] the expression x &lt; y is true </p> </blockquote> <p> and similarly for the predicate version. This isn't the case however. </p> <p> From the standard [alg.sorting] </p> <blockquote> <p> A sequence is sorted with respect to a comparator comp if for any iterator i pointing to the sequence and any non-negative integer n such that i + n is a valid iterator pointing to an element of the sequence, comp(*(i + n), *i) == false. </p> </blockquote> <p> So the docs should say </p> <blockquote> <p> the expression y &lt; x is false </p> </blockquote> <p> I get the following with g++'s underlying is_sorted(): </p> <pre class="wiki"> std::vector&lt;int&gt; v{1, 1}; std::cout &lt;&lt; boost::is_sorted(v) &lt;&lt; std::endl; // prints 1 </pre><p> Reference for is_sorted at cplusplus.com [sorry not allowed to post a link] backs this up. </p> charlie@… https://svn.boost.org/trac10/ticket/10483 https://svn.boost.org/trac10/ticket/10483 Report #10473: [Trac] Default assignee for GIL tickets Sat, 06 Sep 2014 13:59:42 GMT Sat, 06 Sep 2014 13:59:42 GMT <p> I think the default assignee for GIL tickets is Hailin Jin, but maintenance has been handed over to Christian Henning. </p> anonymous https://svn.boost.org/trac10/ticket/10473 https://svn.boost.org/trac10/ticket/10473 Report #10471: Boost.Geometry fails to compile when OS X AssertMacros.h are included Sat, 06 Sep 2014 01:16:16 GMT Tue, 14 Oct 2014 21:59:51 GMT <p> The infamous <a class="missing wiki">AssertMacros</a>.h header (see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2115" title="#2115: Bugs: Avoid bad Apple macros (closed: fixed)">#2115</a>) defines a macro called "check", which causes a compilation failure in &lt;boost/geometry/geometries/concepts/check.hpp&gt;. The header is automatically included by certain Apple frameworks, so it's a bit unavoidable. </p> <p> Per the resolution to <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2115" title="#2115: Bugs: Avoid bad Apple macros (closed: fixed)">#2115</a>, instances of the word "check" should be replaced by something else to avoid this issue. (Damn you, Apple...) </p> <p> Testcase program: </p> <pre class="wiki">#include &lt;AssertMacros.h&gt; #include &lt;boost/geometry.hpp&gt; </pre><p> Compile with "c++ test.cpp". Compile errors: </p> <pre class="wiki">In file included from test.cpp:2: In file included from /opt/local/include/boost/geometry.hpp:17: In file included from /opt/local/include/boost/geometry/geometry.hpp:43: In file included from /opt/local/include/boost/geometry/strategies/strategies.hpp:31: In file included from /opt/local/include/boost/geometry/strategies/intersection.hpp:15: In file included from /opt/local/include/boost/geometry/policies/relate/intersection_points.hpp:19: In file included from /opt/local/include/boost/geometry/algorithms/detail/assign_indexed_point.hpp:20: /opt/local/include/boost/geometry/geometries/concepts/check.hpp:217:1: error: expected unqualified-id { ^ In file included from test.cpp:2: In file included from /opt/local/include/boost/geometry.hpp:17: In file included from /opt/local/include/boost/geometry/geometry.hpp:43: In file included from /opt/local/include/boost/geometry/strategies/strategies.hpp:31: In file included from /opt/local/include/boost/geometry/strategies/intersection.hpp:15: In file included from /opt/local/include/boost/geometry/policies/relate/intersection_points.hpp:19: In file included from /opt/local/include/boost/geometry/algorithms/detail/assign_indexed_point.hpp:21: In file included from /opt/local/include/boost/geometry/algorithms/detail/assign_values.hpp:29: /opt/local/include/boost/geometry/algorithms/append.hpp:217:9: error: no template named 'check' in namespace 'boost::geometry::concept'; did you mean 'dispatch::check'? concept::check&lt;Geometry&gt;(); ^~~~~~~~~~~~~~ dispatch::check /opt/local/include/boost/geometry/geometries/concepts/check.hpp:68:8: note: 'dispatch::check' declared here struct check : not_implemented&lt;GeometryTag&gt; ^ ... more errors about missing concept::check ... </pre> Robert Xiao <nneonneo@…> https://svn.boost.org/trac10/ticket/10471 https://svn.boost.org/trac10/ticket/10471 Report #10462: throw exception inherits two std::exception Thu, 04 Sep 2014 18:53:33 GMT Wed, 10 Sep 2014 06:41:28 GMT <pre class="wiki">// example class my_exception: public std::exception { }; try { boost::throw_exception(my_exception()); } catch( my_exception &amp; e) {... } </pre><p> Inheritance of e </p> <pre class="wiki"> -&gt; ... clone_impl&lt;boost::exception_detail::error_info_injector&lt;my_exception&gt; &gt; -&gt; -&gt; my_exception -&gt; -&gt; -&gt; std::exception ... -&gt; std::exception </pre> gilles.guerre-chaley@… https://svn.boost.org/trac10/ticket/10462 https://svn.boost.org/trac10/ticket/10462 Report #10458: boost::parameter::aux::default_: assignment operator could not be generated Thu, 04 Sep 2014 16:05:49 GMT Thu, 04 Sep 2014 16:05:49 GMT <p> boost/parameter/aux_/default.hpp: warning C4512: </p> <blockquote> <p> 'boost::parameter::aux::default_' : assignment operator could not be generated </p> </blockquote> <blockquote> <p> This is generated with MSVC12 warning level 4. Compiling with treat warnings as error is problematic. </p> </blockquote> r.korthaus@… https://svn.boost.org/trac10/ticket/10458 https://svn.boost.org/trac10/ticket/10458 Report #10457: 'boost::locale::date_time_duration' : assignment operator could not be generated Thu, 04 Sep 2014 16:00:39 GMT Thu, 04 Sep 2014 16:00:39 GMT <p> boost/locale/date_time.hpp: warning C4512: 'boost::locale::date_time_duration' : assignment operator could not be generated </p> <p> This is generated with MSVC12 warning level 4. Compiling with treat warnings as error is problematic. </p> <p> The fix is simple, just add a deleted assignment operator: </p> <pre class="wiki"> /// Get ending point /// date_time const &amp;end() const { return e_; } #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1800)) // prevent warning C4512: assignment operator could not be generated BOOST_DELETED_FUNCTION(date_time_duration&amp; operator=(date_time_duration const&amp;)) #endif private: date_time const &amp;s_; date_time const &amp;e_; </pre> r.korthaus@… https://svn.boost.org/trac10/ticket/10457 https://svn.boost.org/trac10/ticket/10457 Report #10454: windows_file_codecvt::do_length doesn't use BOOST_CODECVT_DO_LENGTH_CONST Thu, 04 Sep 2014 10:19:53 GMT Mon, 09 Jan 2017 16:59:38 GMT <p> In Visual Studio the first parameter of <code>std::codecvt::do_length</code> is defined as a const reference whereas in the derived class <code>windows_file_codecvt</code> the first parameter of <code>do_length</code> it is defined as non-const reference. This leads to improper overloading of the method. </p> <p> See also: <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/10354" title="#10354: Bugs: inconsistent declaration of do_length in ... (reopened)">#10354</a> </p> m.kosch@… https://svn.boost.org/trac10/ticket/10454 https://svn.boost.org/trac10/ticket/10454 Report #10452: std::vector does not work with rolling_mean Wed, 03 Sep 2014 18:57:30 GMT Wed, 03 Sep 2014 18:57:30 GMT <p> See <a class="ext-link" href="https://stackoverflow.com/questions/25641378/boostaccumulator-stdvector-does-not-work-with-rolling-mean"><span class="icon">​</span>https://stackoverflow.com/questions/25641378/boostaccumulator-stdvector-does-not-work-with-rolling-mean</a> </p> Eric Niebler https://svn.boost.org/trac10/ticket/10452 https://svn.boost.org/trac10/ticket/10452 Report #10450: Undefined behavior in boost::filesystem::detail::directory_iterator_construct Wed, 03 Sep 2014 14:16:11 GMT Thu, 05 Apr 2018 21:10:19 GMT <p> boost/libs/filesystem/src/operations.cpp:2178:28: runtime error: reference binding to null pointer of type 'struct error_code' </p> <p> The problem is this line: it.increment(*ec); </p> <p> ec is 0 when directory_iterator_construct is called from operations.hpp:793 </p> <pre class="wiki">explicit directory_iterator(const path&amp; p) : m_imp(new detail::dir_itr_imp) { detail::directory_iterator_construct(*this, p, 0); } </pre><pre class="wiki">[...undefined behavior sanitiser noise...] #3 0x00005555566e623c in boost::filesystem::detail::directory_iterator_construct (it=..., p=..., ec=ec@entry=0x0) at functional/boost/libs/filesystem/src/operations.cpp:2178 #4 0x00005555566b3cfe in directory_iterator (p=..., this=0x7fffffffd7e0) at functional/boost/boost/filesystem/operations.hpp:793 #5 recursive_directory_iterator (opt=boost::filesystem::none, dir_path=..., this=0x7fffffffd760) at functional/boost/boost/filesystem/operations.hpp:1037 [...my code...] </pre> egrindha@… https://svn.boost.org/trac10/ticket/10450 https://svn.boost.org/trac10/ticket/10450 Report #10449: directed_graph copy constructor Wed, 03 Sep 2014 13:48:12 GMT Wed, 24 Feb 2016 10:05:39 GMT <p> The copy constructor of directed_graph is broken. </p> <p> This is virtually identical to ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4197" title="#4197: Bugs: undirected_graph copy constructor (closed: fixed)">#4197</a>: </p> <p> Steps to reproduce: </p> <p> #include &lt;boost/graph/directed_graph.hpp&gt; typedef boost::directed_graph&lt;&gt; Graph; Graph g; Graph h( g ); </p> philip.pfaffe@… https://svn.boost.org/trac10/ticket/10449 https://svn.boost.org/trac10/ticket/10449 Report #10448: MSVC bug with default argument passing - a workaround is required Wed, 03 Sep 2014 12:50:26 GMT Wed, 10 Sep 2014 12:30:30 GMT <p> MSVC 2010-2013 for x64 may pass default values incorrectly. </p> <p> I met this bug with such innocent code: </p> <pre class="wiki">std::wcout &lt;&lt; boost::filesystem::path(L"ABC"); </pre><p> and got hieroglyphs around ABC instead of quotation marks. </p> <p> To workaround the bug: just add <strong>(Char)</strong> prior to default values in the declaration of boost::io::detail::quote (boost/io/detail/quoted_manip.hpp) </p> <pre class="wiki"> // manipulator for const std::basic_string&amp; template &lt;class Char, class Traits, class Alloc&gt; detail::quoted_proxy&lt;std::basic_string&lt;Char, Traits, Alloc&gt; const &amp;, Char&gt; quoted(const std::basic_string&lt;Char, Traits, Alloc&gt;&amp; s, Char escape=(Char)'\\', Char delim=(Char)'\"'); // manipulator for non-const std::basic_string&amp; template &lt;class Char, class Traits, class Alloc&gt; detail::quoted_proxy&lt;std::basic_string&lt;Char, Traits, Alloc&gt; &amp;, Char&gt; quoted(std::basic_string&lt;Char, Traits, Alloc&gt;&amp; s, Char escape=(Char)'\\', Char delim=(Char)'\"'); // manipulator for const C-string* template &lt;class Char&gt; detail::quoted_proxy&lt;const Char*, Char&gt; quoted(const Char* s, Char escape=(Char)'\\', Char delim=(Char)'\"'); </pre><p> I did not scan other sources with similar problem; could you please check them yourselves? </p> <p> P.S. GODDAMN! Your tracker disallows me to tell you the detailed description of the MSVC bug on its tracker. It treats the URL as spam. Please combine the URL from these pieces: </p> <p> <code>connect.microsoft.com /VisualStudio /feedbackdetail /view / 962812</code> </p> merkin@… https://svn.boost.org/trac10/ticket/10448 https://svn.boost.org/trac10/ticket/10448 Report #10447: io_service destructor hangs if serial_port read is queued, even if not running Wed, 03 Sep 2014 12:33:31 GMT Mon, 08 Aug 2016 23:06:46 GMT <p> The following program does not terminate. </p> <pre class="wiki">#include &lt;boost/asio.hpp&gt; int main() { auto* ios = new boost::asio::io_service; auto* port = new boost::asio::serial_port(*ios); port-&gt;open("COM6"); char c; boost::asio::async_read(*port, boost::asio::buffer(&amp;c, 1), [](boost::system::error_code, int) {}); delete ios; } </pre><p> Despite the fact that the io_service is not running, its destructor hangs if there is a pending async_read from a serial_port. If that read completes (by receiving one byte), the program terminates. </p> Martinho Fernandes <martinho.fernandes@…> https://svn.boost.org/trac10/ticket/10447 https://svn.boost.org/trac10/ticket/10447 Report #10444: MPI archive failure Tue, 02 Sep 2014 16:33:09 GMT Tue, 02 Sep 2014 16:33:09 GMT <p> Loading a serialized archive from MPI results in crashes/asserts. </p> <p> Compiler: MSVC 11.0 update 4 </p> <p> Platform: Windows, x64 </p> <p> Other notes: BOOST_MPI_HOMOGENEOUS is enabled </p> <p> When I load a boost::mpi archive (that was either sent over MPI or even packed within the same process), I end up with a crash (assert in debug versions). I think I've traced the problem to packed_oarchive.hpp. </p> <p> When saving, the compiler chooses the templated "save_override" function for archive::version_type. When loading, it chooses the specialized "load_override" for archive::version_type. I think this is because of missing "const" on the argument "t" for the versions of save_override specialized for archive::class_id_type &amp; archive::version_type (since archive::version_type is actually const, the compiler can't use the non-const overload &amp; defaults to the templated function) </p> <p> The root issue is that it saves 4 bytes for archive::version_type, but loads only 1. All future operations on the archive are thus mis-aligned (bad sizes are loaded for containers, etc.). I always use the homogeneous optimization, so I'm not sure if it is limited to this case. </p> <p> The same application code worked fine in 1.54.0. The new save_override/load_override functions for archive::version_type &amp; archive::class_id_type were introduced somewhere between 1.54.0 &amp; 1.56.0. (I did have to manually apply a fix to 1.54.0 for the zero-length loads in binary_buffer_imprimitive.hpp, but that issue has been resolved). </p> brian.ventre@… https://svn.boost.org/trac10/ticket/10444 https://svn.boost.org/trac10/ticket/10444 Report #10440: boyer_moore.hpp fails on Linux w/ gcc-4.7.2, OK with Mac clang Tue, 02 Sep 2014 03:51:37 GMT Tue, 02 Sep 2014 14:07:46 GMT <p> I have a simple find-string-in-file program that uses boyer_moore matching. On Mac, it compiles and works OK. (Not sure if Mac is really using gcc; that's the command name, but "gcc -v" says "Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)" </p> <p> At any rate, the same code, with a freshly-compiled Boost-1.56.0 on Debian 7, gcc-4.7.2, fails to compile: </p> <pre class="wiki">g++ -g -I. -I/usr/local/include -c -o find.o find.cc In file included from /usr/local/include/boost/range/iterator.hpp:24:0, from /usr/local/include/boost/range/begin.hpp:24, from /usr/local/include/boost/algorithm/searching/boyer_moore.hpp:18, from find.cc:5: /usr/local/include/boost/mpl/eval_if.hpp: In instantiation of ‘struct boost::mpl::eval_if_c&lt;false, boost::range_const_iterator&lt;const unsigned char*, void&gt;, boost::range_mutable_iterator&lt;const unsigned char*, void&gt; &gt;’: /usr/local/include/boost/range/iterator.hpp:69:17: required from ‘struct boost::range_iterator&lt;const unsigned char*, void&gt;’ /usr/local/include/boost/algorithm/searching/boyer_moore.hpp:243:5: required by substitution of ‘template&lt;class PatternRange, class CorpusRange&gt; typename boost::range_iterator&lt;CorpusRange&gt;::type boost::algorithm::boyer_moore_search(CorpusRange&amp;, const PatternRange&amp;) [with PatternRange = const unsigned char*; CorpusRange = const unsigned char*]’ find.cc:26:106: required from here /usr/local/include/boost/mpl/eval_if.hpp:60:31: error: no type named ‘type’ in ‘boost::mpl::eval_if_c&lt;false, boost::range_const_iterator&lt;const unsigned char*, void&gt;, boost::range_mutable_iterator&lt;const unsigned char*, void&gt; &gt;::f_ {aka struct boost::range_mutable_iterator&lt;const unsigned char*, void&gt;}’ make: *** [find.o] Error 1 </pre><p> (On Mac also, I compiled a fresh copy of Boost-1.56.0 using the native compiler.) </p> boost@… https://svn.boost.org/trac10/ticket/10440 https://svn.boost.org/trac10/ticket/10440 Report #10432: 32-bit offset_ptr crashes on 64-bit platform Sun, 31 Aug 2014 13:13:20 GMT Thu, 18 Sep 2014 03:12:12 GMT <p> There seem to be problems with handling offset_ptrs with 32-bit offsets on a 64-bit platform. The attached code sample tries to create a file mapping with managed_external_buffer using 32-bit offset_ptrs. The program crashes sometimes when trying to initialize the mapping (see the attached valgrind log for one of such crashes). The offset_ptr is declared as follows: </p> <pre class="wiki">typedef boost::interprocess::offset_ptr&lt; void, std::ptrdiff_t, std::int32_t &gt; void_pointer; </pre><p> My theory is that there are incorrect offset conversions somewhere in Boost.Interprocess which sometimes result in incorrect pointers and a subsequent crash. This may not happen on every run of the program because the mapping address of the file region can change between runs. </p> <p> One of the problems with 32-bit offset_ptrs is that its implementation performs implicit casts of the offset to std::size_t (see calls to offset_ptr_to_raw_pointer and offset_ptr_to_offset), which makes incorrect result if the offset type is unsigned and smaller than std::size_t. I didn't find any restrictions on the offset type in the docs or the code, and by default the offset type is unsigned. IMO, the code should be corrected to perform sign extension of the offset or restrict the offset type to be signed integers. This should be documented as well. </p> <p> However, even if my program uses a signed offset type, it still crashes, so there have to be other issues elsewhere. </p> <p> I tested this on Kubuntu 14.04 x86_64. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/10432 https://svn.boost.org/trac10/ticket/10432 Report #10430: joined_range generates invalid range with recent gcc versions with optimization enabled Sat, 30 Aug 2014 19:40:42 GMT Mon, 01 Sep 2014 11:54:18 GMT <p> This came up in tracking down unit-test failures when trying to build a project with newer compiler versions with C++11 enabled. The unit-test in question was compiled with multiple compiler versions: </p> <ul><li>gcc 4.3.4 (without C++11 enabled): working at all optimization levels </li><li>gcc 4.7.2 (with C++11 enabled): works without optimizations, failed with -O1 or higher </li><li>gcc 4.8.4 (with C++11 enabled): works without optimizations, failed with -O1 or higher </li><li>clang 3.5.0 (recent build, with C++11 enabled): works at all optimization levels </li></ul><p> The failure was tracked down to a use of boost::range::joined_range (Boost 1.55.0), effectively declared as: </p> <pre class="wiki">boost::range::joined_range&lt;boost::iterator_range&lt;std::vector&lt;char&gt;::iterator, boost::iterator_range&lt;const char*&gt;&gt; </pre><p> In this form, the joined_range created from two valid ranges winds up "somewhere else" when the higher optimization level. I've attached a test case that demonstrates the problem. Compiled with: </p> <pre class="wiki">g++ -std=c++11 -o join_bug join_bug.cpp </pre><p> works (printing out the expected ASCII values of the joined ranges). Compiled with: </p> <pre class="wiki">g++ -O1 -std=c++11 -o join_bug join_bug.cpp </pre><p> fails (printing out zero's in my test, though the correct number of them). This test was run with the same compiler versions as above, on both Boost 1.54.0 and Boost 1.55.0, as well as gcc 4.8.2 and clang 3.4 (both for Ubuntu 14.04), with a slightly modified non-C++11 version for the gcc 4.3.4 compiler, all with the same successes/failures. </p> <p> The problem goes away in all tests if the joined_range is declared like so (changing from std::vector&lt;char&gt;::iterator to std::vector&lt;char&gt;::const_iterator): </p> <pre class="wiki">boost::range::joined_range&lt;boost::iterator_range&lt;std::vector&lt;char&gt;::const_iterator, boost::iterator_range&lt;const char*&gt;&gt; </pre><p> I realize this might be a gcc bug, rather than a Boost bug, but I haven't seen this reported elsewhere and would like to get the behaviour tracked since I'm only seeing problems in relation to joined_range... </p> Oliver Seiler <oseiler@…> https://svn.boost.org/trac10/ticket/10430 https://svn.boost.org/trac10/ticket/10430 Report #10424: future/shared_future::then() in case of continuation return an invalid future Sat, 30 Aug 2014 08:50:59 GMT Sun, 28 Sep 2014 22:40:41 GMT <p> Add this behavior to future/shared_future::then() </p> <ul><li>In case of implicit unwrapping, the validity of the <code>future</code> returned from <code>then</code> cannot be established until after the completion of the functor passed into <code>then</code>. In such case, the resulting <code>future</code> becomes ready with an exception of type <code>future_error</code>, with an error code of <code>future_errc::broken_promise</code>. </li></ul> viboes https://svn.boost.org/trac10/ticket/10424 https://svn.boost.org/trac10/ticket/10424 Report #10423: Unnecessary configuring of toolsets Sat, 30 Aug 2014 00:59:35 GMT Sat, 30 Aug 2014 00:59:35 GMT <p> The toolsets in user-config.jam and site-config.jam ( I will call them the 'global config jam files' ) are configured when a "using xxx ;" is encountered in these files, each time b2 is invoked. This occurs despite the fact that the toolset with which b2 is invoked may not be a particular toolset which is being configured in the global config jam files . </p> <p> This is extremely wasteful and unnecessarily time consuming. The global config jam files should be treated differently than the chain of jam files being invoked whenever b2 is run in some directory. Only the toolset(s) in the global config files which are needed for a particular b2 invocation should be configured when encountered there. </p> <p> It is very possible that the end-user has a 'using xxx ;' statement in one of the global config jam files which will only work when the appropriate toolset is actually being invoked, otherwise will fail. One example of this is if toolset A depends on a particular version of toolset B. If the end-user has switched to a different version of toolset B, and invoked b2 with that different version of toolset B, then b2 at the very least will issue error(s) when toolset A is configured. This is an actual situation in the relationship of clang to gcc, since a clang built with a particular version of gcc will depend on that particular versions headers/RTL. </p> <p> Forcing the end-user to comment out that toolset configuration statement until it is ready to be actually used would be tedious for the end-user and Boost Build unfriendly. </p> <p> Please consider changing Boost Build so that toolsets in the global config jam files are not configured until it can be determined that they actually need to be used. </p> Edward Diener https://svn.boost.org/trac10/ticket/10423 https://svn.boost.org/trac10/ticket/10423 Report #10422: Counting Iterator return-type causes lifetime issues Fri, 29 Aug 2014 17:18:40 GMT Tue, 30 Sep 2014 15:33:22 GMT <p> The counting_iterator upon integers has a dereference member function which is a reference to an integral value held in the iterator. Since an iterator may be destroyed, the reference can be invalid. </p> <p> An example where this occurs was provided by a user of Boost.Range. The application used counting_range with reversed and transformed adaptors. The result was garbage since the reversed dereference member function does *boost::prior(this-&gt;base()); Hence it returns a reference to a temporary iterator that results from the "prior" function. </p> Neil Groves https://svn.boost.org/trac10/ticket/10422 https://svn.boost.org/trac10/ticket/10422 Report #10407: MSC Warning disable: Use pop instead push Wed, 27 Aug 2014 06:27:03 GMT Thu, 16 Oct 2014 06:44:51 GMT <p> In file endian/detail/disable_warnings_pop.hpp: </p> <pre class="wiki">#pragma warning(push) </pre><blockquote> <p> should be changed to </p> </blockquote> <pre class="wiki">#pragma warning(pop) </pre><p> This "pop" is related with "push" done in "disable_warnings.hpp" </p> anonymous https://svn.boost.org/trac10/ticket/10407 https://svn.boost.org/trac10/ticket/10407 Report #10397: compilation error with mfc-iteratior-support: ambiguous symbol Mon, 25 Aug 2014 08:19:11 GMT Sat, 30 Aug 2014 14:33:50 GMT <p> Hi, </p> <p> moving parts of range_const_iterator to the namespace range_detail in file boost/range/const_iterator.hpp leads to ambiguity in /range/detail/mfc.hpp line 747: </p> <p> (MSVC 11 on Windows Server 2008 R2/x64) </p> <p> 25&gt;..\src\libs\boost\boost\boost/range/mfc.hpp(747): error C2872: 'range_const_iterator' : ambiguous symbol 25&gt; could be '..\src\libs\boost\boost\boost/range/const_iterator.hpp(67) : boost::range_const_iterator' 25&gt; or '..\src\libs\boost\boost\boost/range/const_iterator.hpp(40) : boost::range_detail::range_const_iterator' 25&gt; ..\src\libs\boost\boost\boost/range/detail/microsoft.hpp(135) : see reference to class template instantiation 'boost::range_detail_microsoft::customization&lt;Tag&gt;::meta&lt;X&gt;' being compiled 25&gt; with 25&gt; [ 25&gt; Tag=CEbsValueArray::mfc_range_base_type, 25&gt; X=CTypedPtrArray&lt;CObArray,<a class="missing wiki">EbsValue</a> *&gt; 25&gt; ] 25&gt; ..\src\libs\boost\boost\boost/range/begin.hpp(111) : see reference to class template instantiation 'boost::range_detail_microsoft::const_iterator_of&lt;T&gt;' being compiled 25&gt; with 25&gt; [ 25&gt; T=CTypedPtrArray&lt;CObArray,<a class="missing wiki">EbsValue</a> *&gt; 25&gt; ] ... </p> <p> The problem can be resolved by changing the name of </p> <p> boost::range_detail::range_const_iterator </p> <p> to </p> <p> boost::range_detail::range_const_iterator_helper </p> <p> I expect other begin/end adapters to run into the same problem. </p> <p> Tobias </p> Tobias Loew https://svn.boost.org/trac10/ticket/10397 https://svn.boost.org/trac10/ticket/10397 Report #10395: boost::prim_minimum_spanning_tree returning incorrect result Sun, 24 Aug 2014 19:06:58 GMT Sun, 24 Aug 2014 19:23:51 GMT <p> Prim MST is returning incorrect results for the attached graph. </p> <p> The correct result for this particular graph is 261159288. Boost Kruskal and other third party MST solvers do work. </p> cristiano.sousa126@… https://svn.boost.org/trac10/ticket/10395 https://svn.boost.org/trac10/ticket/10395 Report #10393: Add begin/end specialization for optional<T> type Fri, 22 Aug 2014 12:26:04 GMT Mon, 13 Apr 2015 17:00:38 GMT <p> optional&lt;T&gt; could be used in many places as if it was just T, but, since C++ does not apply two levels of constructions one could not use this natural looking construct for optional containers: </p> <p> if (opt_container) { </p> <blockquote> <p> for (auto&amp; element : opt_container) { </p> <blockquote> <p> ... </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> Simple specialization of begin()/end() functions could solve this problem: </p> <p> namespace std { </p> <p> template&lt;class T&gt; inline auto begin(const boost::optional&lt;T&gt;&amp; opt) -&gt; decltype(opt.get().begin()) { </p> <blockquote> <p> return opt.get().begin(); </p> </blockquote> <p> } </p> <p> template&lt;class T&gt; inline auto begin(boost::optional&lt;T&gt;&amp; opt) -&gt; decltype(opt.get().begin()) { </p> <blockquote> <p> return opt.get().begin(); </p> </blockquote> <p> } </p> <p> template&lt;class T&gt; inline auto end(const boost::optional&lt;T&gt;&amp; opt) -&gt; decltype(opt.get().end()) { </p> <blockquote> <p> return opt.get().end(); </p> </blockquote> <p> } </p> <p> template&lt;class T&gt; inline auto end(boost::optional&lt;T&gt;&amp; opt) -&gt; decltype(opt.get().end()) { </p> <blockquote> <p> return opt.get().end(); </p> </blockquote> <p> } </p> <p> } </p> khimru@… https://svn.boost.org/trac10/ticket/10393 https://svn.boost.org/trac10/ticket/10393 Report #10384: Building boost 1.48.0 on Solaris with stlport4.6.2, File system is not building Wed, 20 Aug 2014 10:50:25 GMT Wed, 20 Aug 2014 10:50:25 GMT <p> Hi Team, </p> <p> I am trying to build boost on solaris with STLport-4.6.2. I am able to build few libraries but failed to build filesystem, wave and graph. I am pasting the errors here. Please let me know if there is any work around or patch available for it. </p> <hr /> <p> File system Errors </p> <hr /> <p> sun.compile.c++ bin.v2/libs/filesystem/build/sun/release/address-model-32/link-static/stdlib-stlport-4.6.2/threading-multi/v3/src/path.o "./boost/filesystem/v3/path.hpp", line 161: Error: iterator_traits is not a member of std. "libs/filesystem/v3/src/path.cpp", line 270: Where: While instantiating "boost::filesystem3::path::path&lt;const char*&gt;(const char*, const char*)". "libs/filesystem/v3/src/path.cpp", line 270: Where: Instantiated from non-template code. "./boost/filesystem/v3/path.hpp", line 161: Error: "," expected instead of "&lt;". "libs/filesystem/v3/src/path.cpp", line 270: Where: While instantiating "boost::filesystem3::path::path&lt;const char*&gt;(const char*, const char*)". "libs/filesystem/v3/src/path.cpp", line 270: Where: Instantiated from non-template code. "./boost/filesystem/v3/path.hpp", line 161: Error: Illegal value for template parameter. "libs/filesystem/v3/src/path.cpp", line 270: Where: While instantiating "boost::filesystem3::path::path&lt;const char*&gt;(const char*, const char*)". "libs/filesystem/v3/src/path.cpp", line 270: Where: Instantiated from non-template code. "./boost/filesystem/v3/path.hpp", line 161: Error: Unexpected type name "std::basic_string&lt;int&gt;::value_type" encountered. "libs/filesystem/v3/src/path.cpp", line 270: Where: While instantiating "boost::filesystem3::path::path&lt;const char*&gt;(const char*, const char*)". "libs/filesystem/v3/src/path.cpp", line 270: Where: Instantiated from non-template code. "./boost/filesystem/v3/path.hpp", line 162: Error: The function "s" must have a prototype. "libs/filesystem/v3/src/path.cpp", line 270: Where: While instantiating "boost::filesystem3::path::path&lt;const char*&gt;(const char*, const char*)". "libs/filesystem/v3/src/path.cpp", line 270: Where: Instantiated from non-template code. "libs/filesystem/v3/src/path.cpp", line 797: Error: Could not find a match for std::use_facet&lt;std::Facet&gt;(std::locale) needed in static boost::filesystem3 ::path::wchar_t_codecvt_facet(). "libs/filesystem/v3/src/path.cpp", line 806: Error: Could not find a match for std::use_facet&lt;std::Facet&gt;(std::locale) needed in static boost::filesystem3 ::path::imbue(const std::locale&amp;). 7 Error(s) detected. </p> <hr /> <p> Wave Errors </p> <hr /> <p> ...failed sun.compile.c++ bin.v2/libs/wave/build/sun/release/address-model-32/link-static/stdlib-stlport-4.6.2/threading-multi/instantiate_predef_macros.o ... sun.compile.c++ bin.v2/libs/wave/build/sun/release/address-model-32/link-static/stdlib-stlport-4.6.2/threading-multi/instantiate_re2c_lexer.o "./boost/wave/util/flex_string.hpp", line 124: Error: Templates can only declare classes or functions. "./boost/wave/util/flex_string.hpp", line 126: Error: "," expected instead of "!=". "./boost/wave/util/flex_string.hpp", line 126: Error: A declaration was expected instead of "--". "./boost/wave/util/flex_string.hpp", line 126: Error: Multiple declaration for n. "./boost/wave/util/flex_string.hpp", line 126: Error: Use ";" to terminate declarations. "./boost/wave/util/flex_string.hpp", line 126: Error: A declaration was expected instead of "++". "./boost/wave/util/flex_string.hpp", line 126: Error: Use ";" to terminate declarations. "./boost/wave/util/flex_string.hpp", line 126: Error: A declaration was expected instead of "++". "./boost/wave/util/flex_string.hpp", line 126: Error: "," expected instead of ")". "./boost/wave/util/flex_string.hpp", line 130: Error: A declaration was expected instead of "return". "./boost/wave/util/flex_string.hpp", line 2605: Error: A declaration was expected instead of "}". "./boost/wave/util/flex_string.hpp", line 2606: Error: A declaration was expected instead of "}". "./boost/wave/token_ids.hpp", line 359: Error: flex_string is not a member of boost::wave::util. "./boost/wave/token_ids.hpp", line 359: Error: A declaration does not specify a tag or an identifier. "./boost/wave/token_ids.hpp", line 359: Error: Use ";" to terminate declarations. "./boost/wave/token_ids.hpp", line 359: Error: A declaration was expected instead of "&lt;". "./boost/wave/token_ids.hpp", line 359: Error: A declaration does not specify a tag or an identifier. "./boost/wave/token_ids.hpp", line 359: Error: Use ";" to terminate declarations. "./boost/wave/token_ids.hpp", line 359: Error: A declaration was expected instead of ",". "./boost/wave/token_ids.hpp", line 359: Warning: declarator required in declaration. "./boost/wave/token_ids.hpp", line 359: Error: Use ";" to terminate declarations. "./boost/wave/token_ids.hpp", line 359: Error: A declaration was expected instead of ",". "./boost/wave/token_ids.hpp", line 359: Warning: declarator required in declaration. "./boost/wave/token_ids.hpp", line 359: Error: Use ";" to terminate declarations. "./boost/wave/token_ids.hpp", line 359: Error: A declaration was expected instead of ",". "./boost/wave/token_ids.hpp", line 359: Error: <a class="missing wiki">CowString</a> is not a member of boost::wave::util. "./boost/wave/token_ids.hpp", line 359: Error: A declaration does not specify a tag or an identifier. Compilation aborted, too many Error messages. </p> <blockquote> <p> "CC" -xO4 -mt -erroff=%none -m32 -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_USE_LIB=1 -DNDEBUG -D_STLP_USE_DYNAMIC_LIB=1 -I"." -I"/sw/source/mer_misc_libs/ST </p> </blockquote> <p> Lport-4.6.2" -c -o "bin.v2/libs/wave/build/sun/release/address-model-32/link-static/stdlib-stlport-4.6.2/threading-multi/instantiate_re2c_lexer.o" "libs/w ave/src/instantiate_re2c_lexer.cpp" </p> <p> Please let me know in case, there is already resolution present. Command used to build is: </p> <hr /> <blockquote> <p> bjam --without-python toolset=sun stdlib=stlport-4.6.2 address-model=32 stage --d2 </p> </blockquote> <p> user_config has below input: </p> <hr /> <p> using stlport : 4.6.2 : /sw/source/mer_misc_libs/STLport-4.6.2 : /sw/source/mer_misc_libs/STLport-4.6.2/lib ; </p> harshaltan@… https://svn.boost.org/trac10/ticket/10384 https://svn.boost.org/trac10/ticket/10384 Report #10382: 1.56.0 Graph adjacency_list has compile errors on g++ 4.6.4 Wed, 20 Aug 2014 05:11:53 GMT Sat, 18 Oct 2014 13:11:21 GMT <p> The following code will generate compile errors on g++ 4.6.4 but works on g++ 4.7 and 4.8. The problem looks to be in detail/adjacency_list.hpp:319-21 where the = default; specification is unable to generate a valid implementation so the move operators become implicitly deleted. </p> <pre class="wiki">#include "boost/graph/adjacency_list.hpp" int main(int argc, char** argv) { using boost::adjacency_list; using boost::vecS; using boost::directedS; typedef adjacency_list&lt;vecS, vecS, directedS, boost::default_color_type&gt; Graph; std::vector&lt; std::pair&lt;int, int&gt; &gt; testVec; auto graph = Graph( begin(testVec), end(testVec), testVec.size()); return 0; } </pre> Conrad Mercer <conrad.mercer@…> https://svn.boost.org/trac10/ticket/10382 https://svn.boost.org/trac10/ticket/10382 Report #10380: filesystem directory iterator throws on increment Tue, 19 Aug 2014 14:41:56 GMT Wed, 20 Aug 2014 05:56:31 GMT <p> The following code throws an exception: </p> <p> std::for_each( recursive_directory_iterator(path_to_root_dir), recursive_directory_iterator(), </p> <blockquote> <p> []( const directory_entry&amp; de ) { </p> <blockquote> <p> remove_all( de.path() ); </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> ); </p> </blockquote> <p> if path_to_root_dir contains only a single sub-directory. This happens in the increment operator of the iterator at line 791 (boost/filesystem/operations.hpp: m_stack.push(directory_iterator(m_stack.top()-&gt;path())); </p> <p> The sub-directory is successfully deleted. The exception is thrown after the deletion when the iterator is incremented </p> Richard <richard.j@…> https://svn.boost.org/trac10/ticket/10380 https://svn.boost.org/trac10/ticket/10380 Report #10376: VS2013: new compiler warnings since v1.56.0 Tue, 19 Aug 2014 07:02:38 GMT Mon, 13 Oct 2014 20:07:48 GMT <p> There are two new level 3 compiler warnings in asio, when compiling with Visual Studio 2013 x64. </p> <p> 1&gt;D:\source\VS2013\libsrc\boost_1_56_0\boost/asio/detail/impl/socket_ops.ipp(1968): warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data </p> <p> 1&gt;D:\source\VS2013\libsrc\boost_1_56_0\boost/asio/detail/impl/socket_ops.ipp(2172): warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data </p> lex21@… https://svn.boost.org/trac10/ticket/10376 https://svn.boost.org/trac10/ticket/10376 Report #10374: Build error on cross compiling for QNX 6.6.0 x86 Tue, 19 Aug 2014 06:05:42 GMT Fri, 26 Sep 2014 21:37:18 GMT <p> Hello, I'm trying to build Boost for QNX. When cross compiling Boost 1.56 for QNX 6.6.0 x86 target, errors occured. I found similar issue(<a class="ext-link" href="http://svn.boost.org/trac/boost/ticket/9811"><span class="icon">​</span>http://svn.boost.org/trac/boost/ticket/9811</a>) and its state is fixed in 1.56 but errors of that issue and more errors still exist. Is this issue still exist or something I did is wrong? I'm working on Ubuntu 12.04 32bit x86 with QNX 6.6.0 SDP installed and for QNX 6.6.0 x86. </p> <p> QNX uses Dinkum standard libraries(libcpp). If I compile with option cxxflags=-Vgcc_ntox86_gpp for using gnu standard libraries(libstdc++) then it compiled successfully but that's not a solution for me because other libraries are provided built with QNX's default Dinkum libraries. </p> <p> bootstrap and b2 log file attached. </p> <p> Thanks. </p> hkjin81@… https://svn.boost.org/trac10/ticket/10374 https://svn.boost.org/trac10/ticket/10374 Report #10371: advise() missing from iostreams mapped_file API Mon, 18 Aug 2014 18:52:00 GMT Mon, 18 Aug 2014 18:52:00 GMT <p> The memory mapped API in interprocess (<a href="http://www.boost.org/doc/libs/1_56_0/boost/interprocess/mapped_region.hpp">http://www.boost.org/doc/libs/1_56_0/boost/interprocess/mapped_region.hpp</a>) provides advise() while the memory mapped API in iostreams (<a href="http://www.boost.org/doc/libs/1_56_0/libs/iostreams/doc/classes/mapped_file.html">http://www.boost.org/doc/libs/1_56_0/libs/iostreams/doc/classes/mapped_file.html</a>) does not. </p> <p> The iostreams API is easier to use (allows creating and sizing during construction), but is missing the key feature that would allow kernel optimization of random access versus serial. </p> shao.lo@… https://svn.boost.org/trac10/ticket/10371 https://svn.boost.org/trac10/ticket/10371 Report #10370: Iterating over ptr_map type is largely broken in 1.56 Mon, 18 Aug 2014 12:51:47 GMT Tue, 19 Aug 2014 20:42:13 GMT <p> Iteration over map fails on most types, except for value. Not sure which version this failure began, but definitely present in 1.56 </p> <p> The following simple snippet will fail: </p> <blockquote> <p> typedef boost::ptr_map&lt;int, int&gt; test_map_type; test_map_type test_map; </p> </blockquote> <blockquote> <p> BOOST_FOREACH(test_map_type::const_reference r, test_vector ) { </p> </blockquote> <blockquote> <p> } </p> </blockquote> <p> Will also fail with reference, iterator, const_iterator. boost::tie also fails. Can iterate by value, but this does not help with my application since the mapped type will be an abstract type (so no clone allocator for mapped type) </p> scottbgoldblatt@… https://svn.boost.org/trac10/ticket/10370 https://svn.boost.org/trac10/ticket/10370 Report #10368: Boost.Ref: undocumented breaking change: void cref(const T&&) = delete Mon, 18 Aug 2014 08:39:29 GMT Sat, 30 Aug 2014 17:44:11 GMT <p> Boost 1.56.0 adds 'template &lt;class T&gt; void cref(T const&amp;&amp;) = delete' which is an undocumented addition and breaks code like: </p> <p> std::find_if(..., ..., boost::cref( some_predicate(...) ) ); </p> Geurt Vos <geurt.vos@…> https://svn.boost.org/trac10/ticket/10368 https://svn.boost.org/trac10/ticket/10368 Report #10367: kqueue on OSX broke support for read-only file descriptors Sun, 17 Aug 2014 23:57:16 GMT Fri, 22 Aug 2014 13:58:27 GMT <p> Prior 1.56, we were successfully using <code>boost::asio::posix::stream_descriptor</code> with libpcap (file descriptor retrieved via <code>pcap_get_selectable_fd</code>). </p> <p> My understanding, that change https_github.com_boostorg_asio_commit_660e9fe30204e0ada0d1fd40c48015810d2647dc (replace _ with /) required all file-descriptors to be both readable and writeable (e.g., register_descriptor always registers EVFILT_READ and EVFILT_WRITE events). </p> <p> In the case of libpcap, the file descriptor only works in one direction (read) and attempt to register EVFILT_WRITE event results in <code>assign: Invalid argument</code> error. </p> alexander.afanasyev@… https://svn.boost.org/trac10/ticket/10367 https://svn.boost.org/trac10/ticket/10367 Report #10364: Release 1.56 broke random::uniform_real_distribution Sat, 16 Aug 2014 17:59:53 GMT Wed, 17 Feb 2016 14:40:18 GMT <p> Multiprecision random uniform_real_distribution&lt;mpf_float_50&gt; stopped working correctly with 1.56. It worked fine with 1.55, and the attached code is one of the examples that Boost documentation shows for this class. </p> <p> I have this problem manifesting on Mac OS X 10.9.4 under all the compilers I got: native clang from Xcode-5.1.1, clang++-mp-3.4 (macports clang v3.4.2), g++ v4.8.3. </p> <p> Attaching the complete source file that demonstrates the problem (35 lines of code), and the compiler output (748 lines of text). </p> mouse008@… https://svn.boost.org/trac10/ticket/10364 https://svn.boost.org/trac10/ticket/10364 Report #10362: Invalid directory in Boost Build getting started Sat, 16 Aug 2014 02:08:47 GMT Sat, 16 Aug 2014 02:08:47 GMT <p> <a href="http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#install-boost-build">http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#install-boost-build</a> </p> <p> Says to go to the path </p> <p> tools/build/v2/ </p> <p> But tools/build/ does not contain a directory /v2/ </p> david stone <david@…> https://svn.boost.org/trac10/ticket/10362 https://svn.boost.org/trac10/ticket/10362 Report #10361: Dead link for Boost Build in getting started guide Sat, 16 Aug 2014 02:05:20 GMT Sat, 16 Aug 2014 02:05:20 GMT <p> <a href="http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary">http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html#prepare-to-use-a-boost-library-binary</a> </p> <p> Links to </p> <p> <a href="http://www.boost.org/doc/libs/1_56_0/tools/build/index.html">http://www.boost.org/doc/libs/1_56_0/tools/build/index.html</a> </p> <p> Which does not exist </p> david stone https://svn.boost.org/trac10/ticket/10361 https://svn.boost.org/trac10/ticket/10361 Report #10360: Since 1.56, any_range use static cast of reference instead of implicit conversion Fri, 15 Aug 2014 13:54:28 GMT Fri, 19 Dec 2014 12:47:57 GMT <p> Since 1.56, when dereferencing, any_range tries to use static cast of reference instead of implicit conversion like in 1.55. </p> <p> Here is an example that works with 1.55 but fails to compile with 1.56. </p> <pre class="wiki">#include &lt;boost/range/any_range.hpp&gt; #include &lt;memory&gt; #include &lt;vector&gt; struct A {}; int main() { std::vector&lt;std::shared_ptr&lt;A&gt; &gt; v; boost::any_range&lt;std::shared_ptr&lt;const A&gt;, boost::forward_traversal_tag, std::shared_ptr&lt;const A&gt;, std::ptrdiff_t&gt; r(v); } </pre> vdavid@… https://svn.boost.org/trac10/ticket/10360 https://svn.boost.org/trac10/ticket/10360 Report #10356: Massive Warnings Wall whenu using signal2 call operator - VS2013U3 Thu, 14 Aug 2014 14:39:29 GMT Thu, 28 Apr 2016 18:02:13 GMT <pre class="wiki"> #include &lt;boost/signals2.hpp&gt; void foo() { boost::signals2::signal&lt;void()&gt; signal; signal(); } </pre><p> On VS2013 Update3 I get this output on compilation: </p> <pre class="wiki"> 1&gt;------ Build started: Project: test_distributed_value, Configuration: Debug x64 ------ 1&gt; main.cpp 1&gt;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory(348): warning C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' 1&gt; C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory(333) : see declaration of 'std::_Uninitialized_copy0' 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(192) : see reference to function template instantiation '_FwdIt std::uninitialized_copy&lt;I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(_InIt,_InIt,_FwdIt)' being compiled 1&gt; with 1&gt; [ 1&gt; _FwdIt=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; , _InIt=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(179) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_rai&lt;I,false&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,const boost::integral_constant&lt;bool,false&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(179) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_rai&lt;I,false&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,const boost::integral_constant&lt;bool,false&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(205) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;I&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,std::random_access_iterator_tag)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(205) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;I&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,std::random_access_iterator_tag)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(289) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(289) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(282) : while compiling class template member function 'boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::move_to_new_buffer(unsigned __int64,const boost::false_type &amp;)' 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/auto_buffer.hpp(304) : see reference to function template instantiation 'boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::move_to_new_buffer(unsigned __int64,const boost::false_type &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/slot_call_iterator.hpp(40) : see reference to class template instantiation 'boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; C:\Users\jlamotte\Documents\sdk\boost\boost\include\boost-1_56\boost/signals2/detail/slot_call_iterator.hpp(44) : see reference to class template instantiation 'boost::signals2::detail::slot_call_iterator_cache&lt;ResultType,Function&gt;' being compiled ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== Build Summary ------------- 00:01.496 - Success - Debug x64 - test_distributed_value.vcxproj Total build time: 00:01.496 ========== Build: 1 succeeded or up-to-date, 0 failed, 2 skipped, Completed at 14/08/2014 16:08:05 ========== </pre> mjklaim@… https://svn.boost.org/trac10/ticket/10356 https://svn.boost.org/trac10/ticket/10356 Report #10354: inconsistent declaration of do_length in boost/detail/utf8_codecvt_facet.hpp due to missing BOOST_WORKAROUND Wed, 13 Aug 2014 21:16:29 GMT Fri, 05 Sep 2014 13:57:36 GMT <p> First, the output when trying to build boost in AIX using xlC </p> <blockquote> <p> xlC_r -c -DBOOST_ALL_NO_LIB=1 -DNDEBUG -qcpluscmt -O3 -qstrict -q64 -qfuncsect -qeh -qrtti -I"." -o "bin.v2/libs/filesystem/build/vacpp-11/release/... utf8_codecvt_facet.o" "libs/filesystem/src/utf8_codecvt_facet.cpp" </p> </blockquote> <blockquote> <p> "./boost/detail/utf8_codecvt_facet.ipp", line 173.5: 1540-0400 (S) "boost::archive::detail::utf8_codecvt_facet::do_length(const std::mbstate_t &amp;, const char *, const char *, std::size_t) const" has a conflicting declaration. "./boost/detail/utf8_codecvt_facet.hpp", line 174.17: 1540-0424 (I) "do_length" is declared on line 174 of "./boost/detail/utf8_codecvt_facet.hpp". </p> </blockquote> <p> The problem is that there is a mismatch in the declaration of the function between </p> <ul><li>boost/detail/utf8_codecvt_facet.hpp </li><li>boost/detail/utf8_codecvt_facet.ipp </li></ul><div class="wiki-code"><div class="code"><pre> <span class="c1">// boost/detail/utf8_codecvt_facet.hpp </span> <span class="k">virtual</span> <span class="kt">int</span> <span class="n">do_length</span><span class="p">(</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="kt">mbstate_t</span> <span class="o">&amp;</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">from</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">from_end</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">max_limit</span> <span class="p">)</span> <span class="k">const</span> </pre></div></div><div class="wiki-code"><div class="code"><pre> <span class="c1">// boost/detail/utf8_codecvt_facet.ipp </span> <span class="kt">int</span> <span class="n">utf8_codecvt_facet</span><span class="o">::</span><span class="n">do_length</span><span class="p">(</span> <span class="n">BOOST_CODECVT_DO_LENGTH_CONST</span> <span class="n">std</span><span class="o">::</span><span class="kt">mbstate_t</span> <span class="o">&amp;</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">from</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">from_end</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">max_limit</span> <span class="p">)</span> <span class="k">const</span> <span class="cp">#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))</span> <span class="k">throw</span><span class="p">()</span> <span class="cp">#endif</span> </pre></div></div><p> The solution is to add BOOST_CODECVT_DO_LENGTH_CONST and the BOOST_WORKAROUND macro in boost/detail/utf8_codecvt_facet.hpp </p> <p> Also, unless BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, BOOST_WORKAROUND will always evaluate to 1 for any version of xlC, adding a throw() declaration. </p> <p> Maybe it should be replaced with </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#if BOOST_WORKAROUND(__IBMCPP__, &lt;=600)</span> </pre></div></div><p> Last, I've filed this in filesystem component following what was done for <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7660"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7660</a> since there is no specific entry for boost/detail in the component list. It fits as well in serialization, program_options, etc. </p> Juan Alday <alday.boost.trac@…> https://svn.boost.org/trac10/ticket/10354 https://svn.boost.org/trac10/ticket/10354 Report #10353: Interprocess: rbtree_best_fit ABI change from 1.53 to 1.55 Wed, 13 Aug 2014 20:40:23 GMT Fri, 22 Aug 2014 17:46:20 GMT <p> I have an issue that seems to be identical to the issue discussed in this thread on the Boost List: <a class="ext-link" href="http://lists.boost.org/boost-users/2014/01/81159.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2014/01/81159.php</a> </p> <p> Basically, it seems the size of the Imultiset member in header_t of rbtree_best_fit.hpp has changed between Boost 1.53 and Boost 1.55. As mentioned in the thread from the Boost List: </p> <blockquote class="citation"> <blockquote class="citation"> <p> boost::interprocess::rbtree_best_fit&lt;boost::interprocess::null_mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt; </p> <p> has size = 56 member m_header.m_imultiset has size 32 </p> <p> In code compiled with boost 1.55: </p> <p> the same type has size = 72 member m_header.m_imultiset has size 48 </p> </blockquote> <p> Wow, that's too big. I think this is related with MSVC Empty Base Implementation behaviour. I refactored those classes to avoid redundant simple forwarding functions using inheritance and that broke this for MSVC compilers. I should add some checks for 32 and 64 bit compilers to guarantee the minimum size (16 bytes in 32 bit and 32 bytes in 64 bit). </p> </blockquote> Terence.Darwen@… https://svn.boost.org/trac10/ticket/10353 https://svn.boost.org/trac10/ticket/10353 Report #10350: asio build broken for /dev/poll in 1.56 Wed, 13 Aug 2014 13:53:43 GMT Wed, 13 Aug 2014 13:53:43 GMT <p> Commit c06aa74f08a46dda05493f61d2b85cb7818e6f96 (see ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9528" title="#9528: Bugs: reactor_op_queue::get_descriptors O(N^2) (closed: fixed)">#9528</a>) breaks build on SunOS (possibly any /dev/poll system), because it removes get_descriptors, but leaves calls to it in include/boost/asio/detail/impl/dev_poll_reactor.ipp. </p> filip@… https://svn.boost.org/trac10/ticket/10350 https://svn.boost.org/trac10/ticket/10350 Report #10347: Boost.ProgramOptions without RTTI Tue, 12 Aug 2014 12:19:22 GMT Wed, 04 Mar 2015 05:54:06 GMT <p> Program options utilizes typeid in value semantic. This is a patch for compiling it without RTTI on. </p> Minmin Gong <gongminmin@…> https://svn.boost.org/trac10/ticket/10347 https://svn.boost.org/trac10/ticket/10347 Report #10344: Provide [b,e) constructor for string_ref Mon, 11 Aug 2014 21:16:16 GMT Mon, 11 Aug 2014 21:16:16 GMT <p> It would be nice to be able to construct a string_ref from a begin/end pointer pair. I suppose I could use string_ref(begin, end-begin) but it just feels a little wonky to have to compute the length all the time. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/10344 https://svn.boost.org/trac10/ticket/10344 Report #10337: weak_ptr & shared_ptr causes double "delete" -> crash Sun, 10 Aug 2014 15:57:00 GMT Sun, 10 Aug 2014 16:41:19 GMT <p> I am not sure why this happens (VS2005 - VS2013) and specifically on windows (code compiles and runs fine on linux)... </p> <p> The following is the boost code that is responsible: </p> <blockquote> <p> void sp_counted_impl_p&lt;T&gt;::release() <em> nothrow { </em></p> <blockquote> <p> if( BOOST_INTERLOCKED_DECREMENT( &amp;use_count_ ) == 0 ) { </p> <blockquote> <p> dispose(); weak_release(); </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> void sp_counted_impl_p&lt;T&gt;::weak_release() <em> nothrow { </em></p> <blockquote> <p> if( BOOST_INTERLOCKED_DECREMENT( &amp;weak_count_ ) == 0 ) { </p> <blockquote> <p> destroy(); </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> Look what MUST happen, when "use_count = 1" and "weak_count = 1".. It causes a double release which crashes the application. That was a real pain in the ass to track down and unfortunately I have nothing to specifically trigger this issue either. Just look at the code and it should be obvious that this is a race condition. </p> thesaint1987@… https://svn.boost.org/trac10/ticket/10337 https://svn.boost.org/trac10/ticket/10337 Report #10336: compilation error in iterator_range and unordered_map Sun, 10 Aug 2014 08:07:32 GMT Sat, 31 Jan 2015 14:52:10 GMT <p> I get a compilation error with vc10, iterator_range and a (const) unordered_map (the beta candidate 2 was still ok I think): </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&quot;stdafx.h&quot;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/iterator_range.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/unordered_map.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">_tmain</span><span class="p">(</span><span class="kt">int</span> <span class="cm">/*argc*/</span><span class="p">,</span> <span class="n">_TCHAR</span><span class="o">*</span> <span class="cm">/*argv*/</span><span class="p">[])</span> <span class="p">{</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">unordered_map</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">Container</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">Container</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">ContainerIterator</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">iterator_range</span><span class="o">&lt;</span><span class="n">ContainerIterator</span><span class="o">&gt;</span> <span class="n">ContainerIteratorRange</span><span class="p">;</span> <span class="k">const</span> <span class="n">Container</span> <span class="n">cnt</span><span class="p">;</span> <span class="n">ContainerIteratorRange</span> <span class="n">rng</span><span class="p">(</span><span class="n">cnt</span><span class="p">.</span><span class="n">cbegin</span><span class="p">(),</span> <span class="n">cnt</span><span class="p">.</span><span class="n">cend</span><span class="p">());</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> This gives C2248: </p> <p> 'boost::unordered::iterator_detail::c_iterator&lt;Node,<a class="missing wiki">ConstNodePointer</a>&gt;::iterator' </p> <p> cannot access private typedef declared in class </p> <p> etc. </p> <p> Eric: Niebler: </p> <p> Well, this is unfortunate. It's broken also on msvc-12 and clang trunk, but strangely not on gcc. I thought it might be due to this change in Boost.Range: </p> <p> github.com/boostorg/range/commit/264017e2a9bdbfcc24517ce05f8ef96df0a8c45b </p> <p> But reverting that doesn't have any effect. It works on Boost 1.55, so this is definitely a regression. </p> <p> Can you please file a bug? Neil, can you take a look? </p> <p> A possible fix: github.com/boostorg/range/pull/19 </p> gast128@… https://svn.boost.org/trac10/ticket/10336 https://svn.boost.org/trac10/ticket/10336 Report #10333: iostreams generates many warnings with gcc 4.8 Sat, 09 Aug 2014 23:07:13 GMT Sat, 09 Aug 2014 23:07:13 GMT <p> See attached log for an example </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/10333 https://svn.boost.org/trac10/ticket/10333 Report #10332: »indexed« range adaptor's source-breaking change not mentioned in release notes Sat, 09 Aug 2014 20:45:26 GMT Mon, 01 Sep 2014 11:54:45 GMT <p> The »indexed« range adaptor has changed in v1.56.0 in source-breaking ways. I get the change and that it was necessary for range-based for loops, but this means that you now have to <code>#if BOOST_VERSION &lt; …</code> around it. See <a class="ext-link" href="http://boost.codepad.org/VE1QSmSz"><span class="icon">​</span>this example</a> (distilled from actual code). </p> <p> Why the ticket? Because the change hasn't been mentioned at all in the <a href="http://www.boost.org/users/history/version_1_56_0.html">release notes</a>. </p> Moritz Bunkus <moritz@…> https://svn.boost.org/trac10/ticket/10332 https://svn.boost.org/trac10/ticket/10332 Report #10330: Boost 1.56 bootstrap.bat failed for intel-win32 Sat, 09 Aug 2014 08:24:14 GMT Thu, 28 Aug 2014 08:07:19 GMT <p> New boost.1.56.0 bootstrap.bat fails on Windows with old toolset and with new intel-win32 toolset I used # unzip boost_1_56_0.zip # ./bootstrap.bat intel-win32 Building Boost.Build engine </p> <p> Failed to build Boost.Build engine. Please consult bootstrap.log for furter diagnostics. </p> <p> You can try to obtain a prebuilt binary from . . . </p> <p> Also, you can file an issue at <a class="ext-link" href="http://svn.boost.org"><span class="icon">​</span>http://svn.boost.org</a> Please attach bootstrap.log in that case. </p> <p> From attached bootstrap.log: . . . boost_1_56_0\tools\build\src\engine&gt;.\bootstrap\jam0 -f build.jam --toolset=intel-win32 "--toolset-root= " -win32 clean Invalid option: -w </p> <p> usage: .\bootstrap\jam0 [ options ] targets... </p> <p> For boost v1.55.0 I used tar.gz archive and ./bootstrap.bat --with-toolset=intel-win but for 1.56.0 it doesn't work. According to recommendation for Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10136" title="#10136: Bugs: Boost 1.55 bootstrap.bat broken for TDM GCC (MingWx64) (closed: invalid)">#10136</a> I use *.zip on Windows, but bootstrap.bat doesn't work for intel-win32 </p> Elmira Semenova <elmira.a.semenova@…> https://svn.boost.org/trac10/ticket/10330 https://svn.boost.org/trac10/ticket/10330 Report #10329: Examples declare unused variable 'sefl' Fri, 08 Aug 2014 13:42:41 GMT Fri, 08 Aug 2014 13:42:41 GMT <p> C++11 example: </p> <p> <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp">http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp</a> </p> <p> declares a variable 'self' as shared_from_this() but never uses it. Inside the lambda, shared_from_this() is used directly. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/10329 https://svn.boost.org/trac10/ticket/10329 Report #10325: Win32: including file_lock.hpp results in compilation error Fri, 08 Aug 2014 07:02:19 GMT Sun, 07 Sep 2014 21:00:29 GMT <p> Today I switched from Boost 1.55.0 to 1.56.0 and now get the following error just for including file_lock.hpp: </p> <p> <strong>error: invalid conversion from 'boost::interprocess::winapi::farproc_t {aka int (<span class="underline">attribute</span>((<span class="underline">stdcall</span>)) *)()}' to 'void*' [-fpermissive]</strong> </p> <pre class="wiki">In file included from d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\errors.hpp:37:0, from d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\exceptions.hpp:20, from d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\sync\file_lock.hpp:20, from src\init.cpp:38: d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\detail\win32_api.hpp: In instantiation of 'static void* boost::interprocess::winapi::function_address_holder&lt;Dummy&gt;::get(unsigned int) [with int Dummy = 0]': d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\detail\win32_api.hpp:1614:20: required from here d:\mingw\mingw32\i686-w64-mingw32\include\boost\interprocess\detail\win32_api.hpp:1541:31: error: invalid conversion from 'boost::interprocess::winapi::farproc_t {aka int (__attribute__((__stdcall__)) *)()}' to 'void*' [-fpermissive] return FunctionAddresses[id]; ^ </pre><p> Used compiler: gcc version 4.8.1 (rev5, Built by MinGW-W64 project) </p> <p> OS: Win8.1 x64 </p> <p> IDE: Qt Creator 3.1.2 (Qt 5.3.1) </p> <p> I verified that the project compiles fine, if the file_lock stuff is commented out. I'm going to watch this thread, so I don't supply my email address. </p> anonymous https://svn.boost.org/trac10/ticket/10325 https://svn.boost.org/trac10/ticket/10325 Report #10322: documentation for erase method of multisets is wrong Fri, 08 Aug 2014 00:21:52 GMT Sun, 01 Mar 2015 04:31:47 GMT <p> This is a documentation bug. </p> <p> The page <a href="http://www.boost.org/doc/libs/1_56_0/doc/html/boost/intrusive/multiset.html#idp34712280-bb">here</a> states that <code>erase(const_reference value)</code> "erases the element pointed to by <code>pos</code>". First of all, this is a typo because <code>pos</code> is not an argument. One would assume that the element to be erased is the one referenced by <code>value</code>. </p> <p> It turns out that this is wrong: this overload erases not just one element (the given one), but in fact, <strong>all</strong> elements of the multiset with key equivalent to the given one (according to the container's internal comparator method). This is immediately apparent by looking at the definition of <code>erase(const_reference value)</code> inside <code>bstree.hpp</code>. </p> <p> Most likely this affects the documentation for the other multiset variants as well (avl, etc). </p> Matei David <matei@…> https://svn.boost.org/trac10/ticket/10322 https://svn.boost.org/trac10/ticket/10322 Report #10316: Thread: add subscription operator if the value provide it. Wed, 06 Aug 2014 08:51:17 GMT Mon, 29 Sep 2014 08:19:58 GMT <p> I would like to be able to do </p> <pre class="wiki"> typedef boost::synchronized_value&lt; boost::container::flat_map&lt;int, int&gt; &gt; ValueIndex; ValueIndex index; index[0] = 1; </pre><p> and would expect that last line to be equivalent to </p> <pre class="wiki"> auto locked_index = index.synchronize(); (*locked_index)[0] = 1; </pre><p> </p> <p> I'm not totally sure it's possible to do but it would help. </p> mjklaim@… https://svn.boost.org/trac10/ticket/10316 https://svn.boost.org/trac10/ticket/10316 Report #10314: Update 59fd3b6 on May 17 to cray.jam breaks cray build Tue, 05 Aug 2014 16:49:11 GMT Tue, 31 Mar 2015 14:49:05 GMT <p> Download the 1.56 boost beta. </p> <p> do: ./bootstrap.sh </p> <blockquote> <p> ./b2 --with-serialization --with-system --with-filesystem --with-date_time --with-program_options --with-test -d2 toolset=cray stage </p> </blockquote> <p> Get lots of errors like ... </p> <blockquote> <p> CC -c -O2 -march=bdver1 -mfpmath=sse -mfma4 -mavx -funroll-all-loops -mprefer-avx128 -fprefetch-loop-arrays --param prefetch-latency=300 -minline-all-stringops -ffast-math -fno-finite-math-only -dynamic -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -o "bin.v2/libs/date_time/build/cray/release/threading-multi/gregorian/greg_month.o" "libs/date_time/src/gregorian/greg_month.cpp" </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-march=bdver1" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-mfpmath=sse" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-mfma4" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-mavx" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-mprefer-avx128" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "--param" is an invalid command-line option. </p> </blockquote> <p> CC-2115 crayc++: ERROR in command line </p> <blockquote> <p> "-minline-all-stringops" is an invalid command-line option. </p> </blockquote> <p> ...failed cray.compile.c++ bin.v2/libs/date_time/build/cray/release/threading-multi/gregorian/greg_month.o... cray.compile.c++ bin.v2/libs/date_time/build/cray/release/threading-multi/gregorian/greg_weekday.o </p> Richard Dale <rsd@…> https://svn.boost.org/trac10/ticket/10314 https://svn.boost.org/trac10/ticket/10314 Report #10313: Dynamic bitset destruction asserts with small size Tue, 05 Aug 2014 15:14:07 GMT Tue, 05 Aug 2014 15:14:07 GMT <p> I created a dynamic bitset and resized it to 2. When the bitset is destructed it asserts when m_check_invariants returns false. A size of 8 was observed to not exhibit this behavior. </p> <p> This was also observed in the 1.56 beta </p> Andrew Sasak <andrew.sasak@…> https://svn.boost.org/trac10/ticket/10313 https://svn.boost.org/trac10/ticket/10313 Report #10312: uBLAS have missing accessors in some expressions Tue, 05 Aug 2014 08:03:52 GMT Tue, 05 Aug 2014 08:03:52 GMT <p> For example, these lines are missing from the class <code>matrix_binary_scalar1</code>: </p> <pre class="wiki"> public: // around line 2925 in `matrix_expression.hpp` // Expression accessors BOOST_UBLAS_INLINE const expression1_closure_type &amp;expression1 () const { return e1_; } BOOST_UBLAS_INLINE const expression2_closure_type &amp;expression2 () const { return e2_; } </pre><p> Without these lines is impossible to access to the expression template built by "d*matrix&lt;...&gt;". where d is a scalar. Other similar classes also miss this, in my opinion all this feature should be in based class. </p> <p> This is most likely an oversight </p> correaa@… https://svn.boost.org/trac10/ticket/10312 https://svn.boost.org/trac10/ticket/10312 Report #10310: serialization/smart_cast.hpp uses dynamic_cast and breaks non-RTTI builds Mon, 04 Aug 2014 14:30:03 GMT Wed, 06 Aug 2014 08:17:42 GMT <p> When serializing through a pointer to a polymorphic base class, dynamic cast is invoked in line 204, thus making it impossible to serialize via base pointer without RTTI. </p> Mika Fischer <mika.fischer@…> https://svn.boost.org/trac10/ticket/10310 https://svn.boost.org/trac10/ticket/10310 Report #10305: Abstract namespace endpoint bug in boost::asio Sat, 02 Aug 2014 20:38:16 GMT Sat, 02 Aug 2014 20:38:38 GMT <p> strlen calculated erraounusly, as abstract namespace paths begin with 0. </p> <p> see boost/asio/local/detail/impl/endpoint.ipp:44 </p> <p> init(path, strlen(path)); </p> <p> Could be replaced with: </p> <p> init(path, strlen(path + 1) + 1); </p> <p> Affects more similar lines in file. </p> roland.waltersson@… https://svn.boost.org/trac10/ticket/10305 https://svn.boost.org/trac10/ticket/10305 Report #10304: 1.56 rc1 ASIO doesn't compile with mingw32 Sat, 02 Aug 2014 18:03:04 GMT Sat, 02 Aug 2014 18:03:04 GMT <p> This is from the most recent mingw, the one with GCC 4.8. Yes I agree mingw is broken :( </p> <pre class="wiki">In file included from ./boost/asio/detail/win_object_handle_service.hpp:180:0, from ./boost/asio/windows/object_handle_service.hpp:25, from ./boost/asio/windows/basic_object_handle.hpp:27, from ./boost/asio.hpp:108, from ./boost/afio/afio.hpp:24, from libs\afio\test\test_functions.hpp:32: ./boost/asio/detail/impl/win_object_handle_service.ipp: In member function 'void boost::asio::detail::win_object_handle_service::move_construct(boost::asio::detail::win_object_handle_service::implementation_type&amp;, boost::asio::detail::win_object_handle_service::implementation_type&amp;)': ./boost/asio/detail/impl/win_object_handle_service.ipp:106:5: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE); ^ ./boost/asio/detail/impl/win_object_handle_service.ipp: In member function 'void boost::asio::detail::win_object_handle_service::move_assign(boost::asio::detail::win_object_handle_service::implementation_type&amp;, boost::asio::detail::win_object_handle_service&amp;, boost::asio::detail::win_object_handle_service::implementation_type&amp;)': ./boost/asio/detail/impl/win_object_handle_service.ipp:158:5: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE); ^ ./boost/asio/detail/impl/win_object_handle_service.ipp: In member function 'void boost::asio::detail::win_object_handle_service::destroy(boost::asio::detail::win_object_handle_service::implementation_type&amp;)': ./boost/asio/detail/impl/win_object_handle_service.ipp:200:7: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); ^ ./boost/asio/detail/impl/win_object_handle_service.ipp: In member function 'boost::system::error_code boost::asio::detail::win_object_handle_service::close(boost::asio::detail::win_object_handle_service::implementation_type&amp;, boost::system::error_code&amp;)': ./boost/asio/detail/impl/win_object_handle_service.ipp:251:7: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); ^ ./boost/asio/detail/impl/win_object_handle_service.ipp: In member function 'boost::system::error_code boost::asio::detail::win_object_handle_service::cancel(boost::asio::detail::win_object_handle_service::implementation_type&amp;, boost::system::error_code&amp;)': ./boost/asio/detail/impl/win_object_handle_service.ipp:302:7: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE); ^ ./boost/asio/detail/impl/win_object_handle_service.ipp: In static member function 'static void boost::asio::detail::win_object_handle_service::wait_callback(PVOID, BOOLEAN)': ./boost/asio/detail/impl/win_object_handle_service.ipp:402:5: error: '::UnregisterWaitEx' has not been declared ::UnregisterWaitEx(impl-&gt;wait_handle_, NULL); ^ </pre> Niall Douglas https://svn.boost.org/trac10/ticket/10304 https://svn.boost.org/trac10/ticket/10304 Report #10301: Add shared_queue_front and shared_queue_back Sat, 02 Aug 2014 15:20:52 GMT Sat, 02 Aug 2014 15:41:52 GMT <p> Based on <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3533.html#Managed"><span class="icon">​</span>http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3533.html#Managed</a> add shared_queue_front and shared_queue_back. </p> viboes https://svn.boost.org/trac10/ticket/10301 https://svn.boost.org/trac10/ticket/10301 Report #10299: Add queue iterators Sat, 02 Aug 2014 15:10:58 GMT Sat, 02 Aug 2014 15:11:12 GMT <p> As for <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3533.html#streaming_iterators"><span class="icon">​</span>http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3533.html#streaming_iterators</a> add queue iterators. </p> viboes https://svn.boost.org/trac10/ticket/10299 https://svn.boost.org/trac10/ticket/10299 Report #10285: local_time is not monotonic Fri, 01 Aug 2014 08:03:44 GMT Sat, 06 Jan 2018 15:43:11 GMT <p> The following snippet seems to generate non monotonic local_date. </p> <p> I'm using boost 1.55 on linux. </p> <p> #include &lt;boost/date_time/local_time/local_time.hpp&gt; #include &lt;boost/ptr_container/ptr_vector.hpp&gt; </p> <p> int main() { </p> <blockquote> <p> const boost::local_time::time_zone_ptr theTimeZone( </p> <blockquote> <p> new boost::local_time::posix_time_zone( </p> <blockquote> <p> "CET+01CEST+01,M3.5.0/02:00,M10.5.0/03:00") </p> </blockquote> </blockquote> <p> ); </p> </blockquote> <blockquote> <p> boost::local_time::local_date_time myOldValue( </p> <blockquote> <p> boost::local_time::local_microsec_clock::local_time(theTimeZone)); </p> </blockquote> </blockquote> <blockquote> <p> for (size_t i = 0; ; ++i) { </p> <blockquote> <p> const boost::local_time::local_date_time myLocalTime = </p> <blockquote> <p> boost::local_time::local_microsec_clock::local_time(theTimeZone); </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <p> if (myLocalTime &lt; myOldValue) { </p> <blockquote> <p> std::cout &lt;&lt; myOldValue &lt;&lt; std::endl; std::cout &lt;&lt; myLocalTime &lt;&lt; std::endl; std::cout &lt;&lt; boost::local_time::local_microsec_clock::local_time(theTimeZone) &lt;&lt; std::endl; std::cout &lt;&lt; "====================" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> myOldValue = myLocalTime; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> As you can see the program is not supposed to print anything ever, however this is what I'm getting: </p> <p> 2014-Jul-31 00:24:56.005625 CEST 2014-Jul-31 00:24:55.005631 CEST &lt;== 1 second back 2014-Jul-31 00:24:56.005946 CEST ==================== 2014-Jul-31 00:24:58.005625 CEST 2014-Jul-31 00:24:57.005629 CEST &lt;== 1 second back 2014-Jul-31 00:24:58.005824 CEST ==================== 2014-Jul-31 00:25:02.005624 CEST 2014-Jul-31 00:25:01.005628 CEST &lt;== 1 second back 2014-Jul-31 00:25:02.005838 CEST ==================== 2014-Jul-31 00:25:04.005625 CEST 2014-Jul-31 00:25:03.005630 CEST &lt;== 1 second back 2014-Jul-31 00:25:04.005826 CEST ==================== 2014-Jul-31 00:25:06.005624 CEST 2014-Jul-31 00:25:05.005633 CEST &lt;== 1 second back 2014-Jul-31 00:25:06.005853 CEST ==================== 2014-Jul-31 00:25:07.005625 CEST 2014-Jul-31 00:25:06.005631 CEST &lt;== 1 second back 2014-Jul-31 00:25:07.005846 CEST ==================== 2014-Jul-31 00:25:12.005625 CEST 2014-Jul-31 00:25:11.005631 CEST &lt;== 1 second back 2014-Jul-31 00:25:12.005822 CEST ==================== </p> <p> as you can see when the local_date is near 0.005631 second fraction it goes back of one second and then forward again on the following call. </p> Gaetano Mendola <mendola@…> https://svn.boost.org/trac10/ticket/10285 https://svn.boost.org/trac10/ticket/10285 Report #10283: Cross-compiling on MacOSX for linux using clang fails to build static libs correctly. Thu, 31 Jul 2014 16:26:04 GMT Thu, 31 Jul 2014 16:26:04 GMT <p> The logic in gcc.jam that dynamically determines the paths to ranlib and ar needs to duplicated in clang-linux.jam and clang-darwin.jam. The current implementation uses the darwin versions of ranlib and ar which doesn't work correctly for linux-elf static libs. </p> bayoubengal@… https://svn.boost.org/trac10/ticket/10283 https://svn.boost.org/trac10/ticket/10283 Report #10282: Compilation error in py_nonblocking.cpp Thu, 31 Jul 2014 09:43:27 GMT Fri, 14 Aug 2015 10:37:10 GMT <p> I'm getting the following compilation error on the git master branch on the mpi/src/python/py_nonblocking.cpp when using tip-of-trunk clang and libc++ under <a class="missing wiki">MacOs</a> 10.9.4 when compiling in c++11/c++1y modes: </p> <p> libs/mpi/src/python/py_nonblocking.cpp:166:14: error: no viable conversion from 'optional&lt;(anonymous namespace)::py_call_output_iterator&lt;boost::mpi::status, std::__1::__wrap_iter&lt;boost::mpi::python::request_with_value *&gt; &gt; &gt;' to 'bool' </p> <blockquote> <p> return test_all(requests.begin(), requests.end(), </p> </blockquote> <blockquote> <blockquote> <p> <sup><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del>~ </sup></p> </blockquote> </blockquote> <p> 1 error generated. </p> <p> Compilation used: </p> <p> "clang++" -x c++ -Wl,-flat_namespace -stdlib=libc++ -nostdinc++ -std=c++1y -I/Users/gnzlbg/src/env/include/libcxx -O3 -O3 -finline-functions -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1 -DNDEBUG -I"." -I"/Users/gnzlbg/src/env/include" -I"/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/include/python2.7" -c -o "/Users/gnzlbg/src/env/boost_build/boost/bin.v2/libs/mpi/build/clang-darwin-4.2.1/release/threading-multi/python/py_nonblocking.o" "libs/mpi/src/python/py_nonblocking.cpp" </p> <p> A patch is attached </p> gonzalobg88@… https://svn.boost.org/trac10/ticket/10282 https://svn.boost.org/trac10/ticket/10282 Report #10281: including intrusive/list.hpp breaks compilation using managed_shared_memory Wed, 30 Jul 2014 21:57:30 GMT Thu, 31 Jul 2014 21:32:38 GMT <p> The following small program fails to compile: </p> <pre class="wiki"> #include &lt;boost/intrusive/list.hpp&gt; // comment out this to make error go away #include &lt;boost/interprocess/managed_shared_memory.hpp&gt; using namespace boost::interprocess; managed_shared_memory msm; void test() { msm = boost::interprocess::managed_shared_memory(open_or_create, "test", 100); } </pre><p> /code/git/boost/boost/intrusive/pointer_traits.hpp:173:74: error: static_cast from type ‘boost::intrusive::pointer_traits&lt;boost::interprocess::offset_ptr&lt;const void, long int, long unsigned int, 0ul&gt; &gt;::element_type* {aka const void*}’ to type ‘boost::intrusive::pointer_traits&lt;boost::interprocess::offset_ptr&lt;boost::intrusive::bhtraits&lt;boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;::block_ctrl, boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;, (boost::intrusive::link_mode_type)0u, boost::intrusive::default_tag, 3u&gt;, long int, long unsigned int, 0ul&gt; &gt;::element_type* {aka boost::intrusive::bhtraits&lt;boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;::block_ctrl, boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;, (boost::intrusive::link_mode_type)0u, boost::intrusive::default_tag, 3u&gt;*}’ casts away qualifiers </p> <p> cc --version gcc (<a class="missing wiki">Ubuntu/Linaro</a> 4.7.2-2ubuntu1) 4.7.2 </p> stone@… https://svn.boost.org/trac10/ticket/10281 https://svn.boost.org/trac10/ticket/10281 Report #10277: reference_wrapper & implicit conversion to parent types Wed, 30 Jul 2014 03:02:00 GMT Sat, 02 Aug 2014 14:58:51 GMT <p> I propose a change to reference_wrapper which enables implicit conversion to references and reference_wrappers of base types. </p> <p> One motivation for this is an unconventional use of reference_wrapper: </p> <p> Many common library functions in code have a non-trivial set of arguments, some of which being non-const references. When reading code that uses these functions, it is often difficult to tell what side-effects a library function has from call to call. Having a coding policy that mutable references must be reference_wrappers and having calling code use ref() enables readers of the callsites to clearly identify which arguments have the possibility of having side-effects. </p> <p> However, this is currently not possible without creating a custom implementation of reference_wrapper. </p> <p> I have attached a proposed modification to the boost 1.55.0 implementation, as well as a simple file testing the extended capability. </p> Christopher <kemsleyc@…> https://svn.boost.org/trac10/ticket/10277 https://svn.boost.org/trac10/ticket/10277 Report #10276: For clang toolset Boost 1.56 needs to always specify -Wno-c99-extensions Wed, 30 Jul 2014 00:57:38 GMT Wed, 30 Jul 2014 00:57:38 GMT <p> See mailing list for discussion, but essentially 1.56 Preprocessor turns on variadic macro support for clang which spews many megabytes of warnings on clang versions 3.2, 3.3, and 3.4. This is unacceptable for a 1.56 release, it would be embarrassing. </p> <p> Adding the above warning suppression makes the problem go away. </p> <p> Niall </p> Niall Douglas https://svn.boost.org/trac10/ticket/10276 https://svn.boost.org/trac10/ticket/10276 Report #10275: darwin.jam fails to detect installed SDK on MacOS 10.9 with XCode 5.1 installed Wed, 30 Jul 2014 00:07:25 GMT Mon, 23 May 2016 14:23:22 GMT <p> On MacOS 10.9 / XCode 5.1, the SDKs are installed to a new location instead of "/Developer/": </p> <p> <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ </p> <p> as a result the boost's darwin.jam fails to locate the available SDKs. The following command line will output errors: </p> <p> ./b2 macosx-version-min=10.7 </p> <p> errors: </p> <p> tools/build/src/build/feature.jam:493: in validate-value-string from module feature error: "10.7" is not a known value of feature &lt;macosx-version-min&gt; error: legal values: ... The workaround is create a soft link to new SDK location and everything works fine: </p> <p> cd / sudo ln -s <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ Developer </p> <p> FYI: The XCode5 installs iOS sdks under: </p> <p> <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/ </p> <p> so darwin.jam should search both /Developer/ and these new SDK locations for installed SDKs. </p> <p> </p> randy du <randydu@…> https://svn.boost.org/trac10/ticket/10275 https://svn.boost.org/trac10/ticket/10275 Report #10272: property_tree commit 8af8b6b breaks VS2013 64-bit build Tue, 29 Jul 2014 14:11:54 GMT Sat, 22 Jul 2017 19:14:00 GMT <p> I was attempting to build the <a class="missing wiki">PointCloudLibrary</a> using the 1.56.0_beta1 binary from <a class="missing wiki">SourceForge</a>; however, I encountered the following compilation errors when doing so: </p> <pre class="wiki">C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(38): error C2825: 'Str': must be a class or namespace when followed by '::' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(201) : see reference to class template instantiation 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' being compiled C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(38): error C2039: 'value_type' : is not a member of '`global namespace'' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(38): error C2146: syntax error : missing ';' before identifier 'Ch' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(38): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(40): error C2061: syntax error : identifier 'Ch' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(49): error C2146: syntax error : missing ';' before identifier 'indent_char' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(49): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(50): error C2825: 'Str': must be a class or namespace when followed by '::' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(50): error C2039: 'size_type' : is not a member of '`global namespace'' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(50): error C2146: syntax error : missing ';' before identifier 'indent_count' (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\boost-1_56_0_b1\boost/property_tree/detail/xml_parser_writer_settings.hpp(50): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp) C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(201): error C2661: 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;::xml_writer_settings' : no overloaded function takes 2 arguments C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(203): error C2664: 'void boost::property_tree::xml_parser::write_xml&lt;boost::property_tree::ptree&gt;(const std::string &amp;,const Ptree &amp;,const std::locale &amp;,const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;)' : cannot convert argument 4 from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;' with [ Ptree=boost::property_tree::ptree , Key=std::string ] and [ Key=std::string ] Reason: cannot convert from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt;' with [ Key=std::string ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(221): error C2661: 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;::xml_writer_settings' : no overloaded function takes 2 arguments C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(227): error C2664: 'void boost::property_tree::xml_parser::write_xml&lt;boost::property_tree::ptree&gt;(const std::string &amp;,const Ptree &amp;,const std::locale &amp;,const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;)' : cannot convert argument 4 from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;' with [ Ptree=boost::property_tree::ptree , Key=std::string ] and [ Key=std::string ] Reason: cannot convert from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt;' with [ Key=std::string ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(282): error C2661: 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;::xml_writer_settings' : no overloaded function takes 2 arguments C:\Users\Will\Source\pcl.git\io\src\lzf_image_io.cpp(287): error C2664: 'void boost::property_tree::xml_parser::write_xml&lt;boost::property_tree::ptree&gt;(const std::string &amp;,const Ptree &amp;,const std::locale &amp;,const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;)' : cannot convert argument 4 from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt; &amp;' with [ Ptree=boost::property_tree::ptree , Key=std::string ] and [ Key=std::string ] Reason: cannot convert from 'boost::property_tree::xml_parser::xml_writer_settings&lt;char&gt;' to 'const boost::property_tree::xml_parser::xml_writer_settings&lt;Key&gt;' with [ Key=std::string ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called </pre><p> Reverting the <code>property_tree</code> module back to commit <code>85f8d8866ccfa98e4a667343529adb411bd67d08</code> corrected the build problem I was having. </p> <p> Thanks, Will </p> mevatron@… https://svn.boost.org/trac10/ticket/10272 https://svn.boost.org/trac10/ticket/10272 Report #10271: It is not possible to build BOOST ptr_container without RTTI except the compiler option BOOST_DISABLE_ASSERT is used. Tue, 29 Jul 2014 11:54:36 GMT Tue, 29 Jul 2014 11:54:36 GMT <p> The BOOST_DISABLE_ASSERT define is necessary to build without RTTI ,because there is bug inside the boost_ptr_container (reversible_ptr_container.hpp, clone_allocator.hpp). The implementation uses the typeid(..) function inside a BOOST_ASSERT. Unfortunately it does not care about the RTTI setting (enabled or not). I had this problem in a debug build. </p> Christoph Perick <christoph.perick@…> https://svn.boost.org/trac10/ticket/10271 https://svn.boost.org/trac10/ticket/10271 Report #10269: Move the library to its own namespace Tue, 29 Jul 2014 07:44:11 GMT Tue, 29 Jul 2014 07:44:11 GMT <p> Boost.Range defines most of its symbols in the boost:: namespace. This introduces conflicts with other Boost libraries, for example: </p> <p> <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/249985/focus=249986"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/249985/focus=249986</a> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2014/07/215581.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2014/07/215581.php</a> </p> <p> Another drawback is that in user's code unqualified function calls with range arguments use boost:: namespace for symbol lookup, which may introduce unexpected results. </p> <p> I propose to move all Boost.Range symbols to a dedicated namespace (e.g. boost::ranges). For backward compatibility the library can import all public interfaces except operators to the boost:: namespace. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/10269 https://svn.boost.org/trac10/ticket/10269 Report #10265: [asio] AIX 6.1 bug with missing symbol in asio tests Mon, 28 Jul 2014 15:56:38 GMT Mon, 28 Jul 2014 15:56:38 GMT <p> The symbol test_main was left undefined for every single one of the asio tests. As a result I would get the following error over and over: </p> <p> ld: 0711-317 ERROR: Undefined symbol: .test_main(int, char<strong>) </strong></p> <p> The weird thing is that the tests did not appear to be using this symbol at all, yet it was still preserved. To compensate I added an empty definition of test_main. This allowed all of the tests in the suite to run. Most of the tests passed except for two, but for unrelated issues that I still need to look at. </p> <p> It is possible that the semantics of the AIX linker and the way that GCC interacts with the linker are causing extra symbols to be preserved. There might need to be in the future more work that needs to be done for either, but for now I think this is a good solution. </p> <p> Please look at the Pull Request created for further details: <a class="ext-link" href="https://github.com/boostorg/asio/pull/6"><span class="icon">​</span>https://github.com/boostorg/asio/pull/6</a> </p> Axel Ismirlian <axel.ismirlian@…> https://svn.boost.org/trac10/ticket/10265 https://svn.boost.org/trac10/ticket/10265 Report #10264: [smart_ptr] AIX 6.1 bug with sched_yield() function out of scope Mon, 28 Jul 2014 15:56:20 GMT Mon, 28 Jul 2014 15:56:20 GMT <p> The error that pops up in some of the lambda tests is the following: </p> <p> ../libs/lambda/test/algorithm_test.cpp:37:48: error: reference to 'var' is ambiguous </p> <blockquote> <p> protect((_1 = var(sum), ++var(sum))))); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/sys/thread.h:37:0, </p> <blockquote> <p> from /usr/include/sys/ptrace.h:28, from /usr/include/sys/proc.h:42, from /usr/include/sys/pri.h:43, from /usr/include/sys/sched.h:38, from /usr/include/sched.h:51, from ../boost/smart_ptr/detail/yield_k.hpp:101, from ../boost/smart_ptr/detail/spinlock_sync.hpp:18, from ../boost/smart_ptr/detail/spinlock.hpp:50, from ../boost/smart_ptr/detail/spinlock_pool.hpp:25, from ../boost/smart_ptr/shared_ptr.hpp:34, from ../boost/shared_ptr.hpp:17, from ../boost/test/utils/callback.hpp:21, from ../boost/test/execution_monitor.hpp:38, from ../boost/test/impl/execution_monitor.ipp:30, from ../boost/test/minimal.hpp:37, from ../libs/lambda/test/algorithm_test.cpp:14: </p> </blockquote> <p> /usr/include/sys/var.h:59:8: note: candidates are: struct var </p> <blockquote> <p> struct var { </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from ../boost/lambda/core.hpp:53:0, </p> <blockquote> <p> from ../boost/lambda/lambda.hpp:14, from ../libs/lambda/test/algorithm_test.cpp:16: </p> </blockquote> <p> ../boost/lambda/detail/lambda_functor_base.hpp:66:19: note: template&lt;class T&gt; boost::lambda::lambda_functor&lt;T&gt; boost::lambda::var(const boost::lambda::lambda_functor&lt;T&gt;&amp;) </p> <blockquote> <p> lambda_functor&lt;T&gt; var(const lambda_functor&lt;T&gt;&amp; t) { return t; } </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> ../boost/lambda/detail/lambda_functor_base.hpp:60:38: note: template&lt;class T&gt; boost::lambda::lambda_functor&lt;boost::lambda::identity&lt;T&amp;&gt; &gt; boost::lambda::var(T&amp;) </p> <blockquote> <p> inline lambda_functor&lt;identity&lt;T&amp;&gt; &gt; var(T&amp; t) { return identity&lt;T&amp;&gt;(t); } </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In ../boost/lambda/detail/lambda_functor_base.hpp there is variable called var that conflicts with an AIX system variable. Defining var and later undefining it frees that variable name. However, the fix I propose is in the smart_ptr function. </p> <p> Please look at the Pull Request created for further details: <a class="ext-link" href="https://github.com/boostorg/smart_ptr/pull/7"><span class="icon">​</span>https://github.com/boostorg/smart_ptr/pull/7</a> </p> Axel Ismirlian <axel.ismirlian@…> https://svn.boost.org/trac10/ticket/10264 https://svn.boost.org/trac10/ticket/10264 Report #10258: b2 fails to find gcc if bootstrapped with clang Mon, 28 Jul 2014 10:18:12 GMT Tue, 23 Jan 2018 01:01:12 GMT <p> The system showing the problem is Ubuntu 14.04 LTS on ARMv7a. x86 or x64 may not have the same problem. This is in Boost 1.56 beta. </p> <p> What my CI was always doing for bootstrap is this: </p> <p> ./bootstrap.sh --with-toolset=clang </p> <p> Unfortunately, this breaks: </p> <p> ./b2 toolset=gcc ... </p> <p> iff you bootstrapped with clang! It appears to set the gcc executable path to an empty string with obvious consequences. </p> <p> ./b2 toolset=clang works fine though, as does bootstrapping with gcc whereupon both gcc and clang toolsets work fine. </p> Niall Douglas https://svn.boost.org/trac10/ticket/10258 https://svn.boost.org/trac10/ticket/10258 Report #10248: Understanding generated files / targets. Sun, 27 Jul 2014 18:41:49 GMT Fri, 27 Feb 2015 01:38:18 GMT <p> Attached is a .zip file containing a detailed Jamroot attempting to understand how generated files and dependency analysis work. There are a few points that are not clear to me, so I hope someone can take a look and see of any of these behaviors are actually bugs. </p> anonymous https://svn.boost.org/trac10/ticket/10248 https://svn.boost.org/trac10/ticket/10248 Report #10244: Erroneous conversion from double to boost::rational<int> Fri, 25 Jul 2014 12:58:54 GMT Fri, 25 Jul 2014 12:58:54 GMT <p> The documentation discusses in detail why conversion from double is not supported, but the following code works fine: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/rational.hpp&gt; int main() { double d = 31.82; boost::rational&lt;int&gt; r = d; std::cout &lt;&lt; r &lt;&lt; std::endl; } </pre><p> With the following result "31/1". It just discards the fractional part. A double is implicitly converted to int and then the implicit constructor from int is used. </p> <p> Such conversion is really confusing. Make it explicitly declared as deleted. </p> akrzemi1 https://svn.boost.org/trac10/ticket/10244 https://svn.boost.org/trac10/ticket/10244 Report #10241: Please relax template constraints of boost::math::binomial_coefficient Thu, 24 Jul 2014 15:46:22 GMT Thu, 24 Jul 2014 15:46:22 GMT <p> boost::math::binomial_coefficient may up to now only be used with floating point types. See also ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3100" title="#3100: Bugs: boost::math::binomial_coefficient causes Aborted (core dumped) (closed: wontfix)">#3100</a>. </p> <p> This constraint has two problems: </p> <p> It yields in inaccurate calculations, i. e. </p> <pre class="wiki">static_cast&lt;long long unsigned&gt;(boost::math::binomial_coefficient&lt;double&gt;(60, 30)); </pre><p> is 118264581564861408 but should be 118264581564861424. (long long unsigned and double are both 8 byte on my machine.) </p> <p> And it does not make sense for very large or arbitrary-precision integer types: boost::math::binomial_coefficient&lt;boost::multiprecision::cpp_int&gt; would work great if you let it do so. </p> <p> At the moment it is not possible just to release integer types as template argument, you have to add an extra implementation, i. e. this one with unsigned k and n as input: </p> <pre class="wiki">Inttype result = 1; k = std::min(k, n-k); for (unsigned i = 1; i &lt; k+1; ++i) { result *= Inttype(n-k+i); result /= Inttype(i); } </pre> der-storch-85@… https://svn.boost.org/trac10/ticket/10241 https://svn.boost.org/trac10/ticket/10241 Report #10240: Start tags in XML files are not checked Thu, 24 Jul 2014 14:25:36 GMT Tue, 13 Jan 2015 09:10:37 GMT <p> The exception boost::archive::xml_archive_exception::xml_archive_tag_mismatch is only thrown when end tag is wrong, start tag may be anything. </p> <p> See attached example: </p> <pre class="wiki">&lt;seriobject class_id="0" tracking_level="0" version="0"&gt; &lt;mem&gt;12&lt;/mem&gt; &lt;/seriobject&gt; </pre><p> is desired, </p> <pre class="wiki">&lt;mem&gt;12&lt;/faulty&gt; </pre><p> is wrong and noticed as invalid, but </p> <pre class="wiki">&lt;faulty&gt;12&lt;/mem&gt; </pre><p> is valid, should be invalid, too. </p> <p> Furthermore, in this special example, if you change the end tag of the root node (here: seriobject) to something else, there is also an exception missing. </p> staehr@… https://svn.boost.org/trac10/ticket/10240 https://svn.boost.org/trac10/ticket/10240 Report #10235: a strange problem for deadline_timer Wed, 23 Jul 2014 16:15:22 GMT Wed, 23 Jul 2014 16:15:22 GMT <p> os:cent os 6.4 32bit. boost:1.55.0 </p> <p> I have these codes for tcp async_connect: session-&gt;tcp_socket().async_connect(ep, m_strand.wrap(boost::bind( </p> <blockquote> <p> &amp;ifstiotcp::_connected, this, session, boost::asio::placeholders::error))); </p> </blockquote> <p> timer.expires_from_now(boost::posix_time::seconds(5), ec); timer.async_wait(m_strand.wrap(boost::bind(&amp;ifstiotcp::_connect_timeout, this, session, boost::asio::placeholders::error))); </p> <p> and, in _connected function to cancel timer: timer.cancel(ec); </p> <p> and, in _connected_timeout function: if (boost::asio::error::operation_aborted != ec) { </p> <blockquote> <p> <em> timeout in here </em></p> </blockquote> <p> } </p> <p> now, a strange problem as follows: 1) when run to _connected function and cancel deadline_timer success; 2) after 5 seconds, run the 'timeout in here'; 3) anyone has the same problem? </p> cchehewo <china.ygw@…> https://svn.boost.org/trac10/ticket/10235 https://svn.boost.org/trac10/ticket/10235 Report #10233: create_directories causes invalid read Wed, 23 Jul 2014 13:48:27 GMT Fri, 01 Dec 2017 07:07:32 GMT <p> The following code, when run under Valgrind, will report two instances of invalid reads during program close (after main). </p> <p> Tested on Ubuntu Linux x64 12.04 (kernel 3.8.0) with gcc 4.6.3. </p> <pre class="wiki">#include &lt;stdlib.h&gt; #include &lt;boost/filesystem.hpp&gt; int main() { system("rm -rf /tmp/test"); // make sure directory doesn't already exist boost::filesystem::create_directories("/tmp/test"); return 0; } </pre> Itay C <itay.chamiel@…> https://svn.boost.org/trac10/ticket/10233 https://svn.boost.org/trac10/ticket/10233 Report #10227: Missing HAVE_SONAME causes SONAME to be omitted in qcc.jam Wed, 23 Jul 2014 03:19:45 GMT Wed, 23 Jul 2014 03:19:45 GMT <p> In the "actions link.dll bind LIBRARIES" section of qcc.jam (lines 233-238), the link command includes the following arguments: </p> <pre class="wiki">$(HAVE_SONAME)-Wl,-h$(SPACE)-Wl,$(&lt;[1]:D=) </pre><p> But, "HAVE_SONAME" is never defined in qcc.jam. Resulting in SONAME not getting added to the shared object. Subsequently, boost libraries that link against each other (thread) hardcode the relative path to the dependent library. </p> <p> Adding 'HAVE_SONAME = "" ;' or removeing "$(HAVE_SONAME)" from qcc.jam fixes the issue. </p> <p> Tested on Windows using the cross-compiler and on QNX in a virtual machine. </p> <p> Note: I stumbled upon several postings on the mailing list that hint at this happening but all seem to have gone unresolved. </p> amourdezombi@… https://svn.boost.org/trac10/ticket/10227 https://svn.boost.org/trac10/ticket/10227 Report #10226: [interprocess] undocumented : size_type Wed, 23 Jul 2014 03:19:08 GMT Wed, 23 Jul 2014 03:19:08 GMT <p> In <code>basic_managed_mapped_file</code> class page, <code>size_type</code> is undocumented. </p> <p> <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/basic_managed_mapped_file.html">http://www.boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/basic_managed_mapped_file.html</a> </p> <p> I think should add follow: </p> <pre class="wiki">typedef implementation-defined size_type; </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/10226 https://svn.boost.org/trac10/ticket/10226 Report #10225: Boost iostreams should use BOOST_TRY/CATCH instead of std try/catch. Tue, 22 Jul 2014 11:38:29 GMT Tue, 22 Jul 2014 11:38:29 GMT <p> In order to reduce code size (this is very significant for embedded systems), Boost iostreams should support BOOST_EXCEPTION_DISABLE and BOOST_NO_RTTI configuration macros. </p> Denys Yurchenko <magnetrom@…> https://svn.boost.org/trac10/ticket/10225 https://svn.boost.org/trac10/ticket/10225 Report #10224: [property map] compilation error : make_function_property_map Tue, 22 Jul 2014 11:02:02 GMT Tue, 22 Jul 2014 11:02:02 GMT <p> <code>make_function_property_map()</code> function can not apply function pointer. </p> <pre class="wiki">#include &lt;boost/property_map/function_property_map.hpp&gt; int get_prop(double) { return 1; } struct get_prop_functor { typedef int result_type; result_type operator()(double) const { return 1; } }; int main() { const auto p1 = boost::make_function_property_map&lt;double&gt;(get_prop); // compilation error const auto p2 = boost::make_function_property_map&lt;double&gt;(get_prop_functor()); // OK } </pre><p> error message (with gcc 4.8) </p> <pre class="wiki">/Users/hogehoge/language/cpp/main.cpp: In function 'int main()': /Users/hogehoge/language/cpp/main.cpp:14:71: error: no matching function for call to 'make_function_property_map(int (&amp;)(double))' const auto p1 = boost::make_function_property_map&lt;double&gt;(get_prop); // compilation error ^ /Users/hogehoge/language/cpp/main.cpp:14:71: note: candidates are: In file included from /Users/hogehoge/language/cpp/main.cpp:1:0: /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp:54:1: note: template&lt;class Key, class Func&gt; boost::function_property_map&lt;Func, Key&gt; boost::make_function_property_map(const Func&amp;) make_function_property_map(const Func&amp; f) { ^ /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp:54:1: note: template argument deduction/substitution failed: /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp: In substitution of 'template&lt;class Key, class Func&gt; boost::function_property_map&lt;Func, Key&gt; boost::make_function_property_map(const Func&amp;) [with Key = double; Func = int(double)]': /Users/hogehoge/language/cpp/main.cpp:14:71: required from here /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp:54:1: error: function returning a function /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp:60:1: note: template&lt;class Key, class Ret, class Func&gt; boost::function_property_map&lt;Func, Key, Ret&gt; boost::make_function_property_map(const Func&amp;) make_function_property_map(const Func&amp; f) { ^ /Users/hogehoge/repository/GitHub/boost-develop/boost/property_map/function_property_map.hpp:60:1: note: template argument deduction/substitution failed: /Users/hogehoge/language/cpp/main.cpp:14:71: note: couldn't deduce template parameter 'Ret' const auto p1 = boost::make_function_property_map&lt;double&gt;(get_prop); // compilation error </pre><p> I think should remove <code>const &amp;</code> from parameter. </p> <p> before: </p> <pre class="wiki">template&lt;typename Key, typename Func&gt; function_property_map&lt;Func, Key&gt; make_function_property_map(const Func&amp; f) { return function_property_map&lt;Func, Key&gt;(f); } template&lt;typename Key, typename Ret, typename Func&gt; function_property_map&lt;Func, Key, Ret&gt; make_function_property_map(const Func&amp; f) { return function_property_map&lt;Func, Key, Ret&gt;(f); } </pre><p> after: </p> <pre class="wiki">template&lt;typename Key, typename Func&gt; function_property_map&lt;Func, Key&gt; make_function_property_map(Func f) { return function_property_map&lt;Func, Key&gt;(f); } template&lt;typename Key, typename Ret, typename Func&gt; function_property_map&lt;Func, Key, Ret&gt; make_function_property_map(Func f) { return function_property_map&lt;Func, Key, Ret&gt;(f); } </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/10224 https://svn.boost.org/trac10/ticket/10224 Report #10223: Destructor of boost::mpi::environment should not throw exception Tue, 22 Jul 2014 01:41:31 GMT Tue, 22 Jul 2014 01:41:31 GMT <p> The destructor of boost::mpi::environment uses the BOOST_MPI_CHECK_RESULT macro to invoke MPI_Finalize. </p> <p> BOOST_MPI_CHECK_RESULT(MPI_Finalize, ()); </p> <p> If MPI_Finalize does not return MPI_SUCCESS, the macro will throw boost::mpi::exception. However, it is not a good idea for a destructor to throw. </p> <p> I suggest the destructor just call MPI_Finalize() without using the MACRO </p> anonymous https://svn.boost.org/trac10/ticket/10223 https://svn.boost.org/trac10/ticket/10223 Report #10222: root map not correctly computed by strong_components Mon, 21 Jul 2014 19:52:23 GMT Wed, 23 Jul 2014 11:16:22 GMT <p> I think in boost::graph strong_components does not compute the root map as claimed in the documentation, i.e., that it maps each vertex to the root of the corresponding scc. </p> <p> For a counter-example consider the following graph (attached as a MWE): </p> <blockquote> <p> a &lt;-&gt; b &lt;-&gt; c </p> </blockquote> <p> Suppose the algorithm starts with node a. The protocol of the algorithm is as follows, the first column being the discovery time, the second being the content of the root map, and * indicating uninitialized values: </p> <p> 1) a -&gt; (0, a), b -&gt; (*, *), c -&gt; (*, *) <em> discovered a </em></p> <p> 2) a -&gt; (0, a), b -&gt; (1, b), c -&gt; (*, *) <em> discovered b </em></p> <p> 3) a -&gt; (0, a), b -&gt; (1, b), c -&gt; (2, c) <em> discovered c </em></p> <p> 4) a -&gt; (0, a), b -&gt; (1, b), c -&gt; (1, b) <em> finished c </em></p> <p> 5) a -&gt; (0, a), b -&gt; (0, b), c -&gt; (1, b) <em> finished b </em></p> <p> 6) a -&gt; (0, a), b -&gt; (0, a), c -&gt; (1, b) <em> finished a </em></p> <p> The value of the root map for c is 1, correct would be 0. </p> <p> The output of the example is as follows:<br /> The example graph:<br /> a --&gt; b <br /> b --&gt; a c <br /> c --&gt; b <br /> <br /> Vertex a is in component 0 and has root 0<br /> Vertex b is in component 0 and has root 0<br /> Vertex c is in component 0 and has root 1<br /> </p> Alex <alxlaus@…> https://svn.boost.org/trac10/ticket/10222 https://svn.boost.org/trac10/ticket/10222 Report #10214: robust interprocess mutex enhancments proposal Fri, 18 Jul 2014 07:37:36 GMT Fri, 18 Jul 2014 07:37:36 GMT <p> As we discus with <strong>Ion Gaztanaga</strong>, I post here my proposal for future enhancements of <strong>robust interprocess mutex</strong>. </p> <p> there is code posted on : codereview.stackexchange.com with question : questions/57083/portable-c-boostiterprocessmutex-an-another-try </p> <p> I'll follow also <strong>Niall Douglas</strong> considerations about use timestamp. </p> <p> Ladislav. </p> lsopko@… https://svn.boost.org/trac10/ticket/10214 https://svn.boost.org/trac10/ticket/10214 Report #10213: Reproducible crash with Boost Asio and io_service::post Fri, 18 Jul 2014 00:31:30 GMT Thu, 21 Sep 2017 11:18:54 GMT <p> On OSX, running the following code repeatedly results in an occasional crash with the stack trace following. Unfortunately, I can't find a workaround nor a fix since I don't actually understand why it is crashing... </p> <div class="wiki-code"><div class="code"><pre> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="p">;</span> <span class="n">io_service</span> <span class="n">service</span><span class="p">;</span> <span class="n">io_service</span><span class="o">::</span><span class="n">work</span> <span class="n">work</span><span class="p">(</span><span class="n">service</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="kr">thread</span> <span class="kr">thread</span><span class="p">{[</span><span class="o">&amp;</span><span class="p">](){</span> <span class="n">service</span><span class="p">.</span><span class="n">reset</span><span class="p">();</span> <span class="n">service</span><span class="p">.</span><span class="n">run</span><span class="p">();</span> <span class="p">}</span> <span class="p">};</span> <span class="n">service</span><span class="p">.</span><span class="n">post</span><span class="p">([</span><span class="o">&amp;</span><span class="n">service</span><span class="p">](){</span><span class="n">service</span><span class="p">.</span><span class="n">stop</span><span class="p">();});</span> <span class="kr">thread</span><span class="p">.</span><span class="n">join</span><span class="p">();</span> </pre></div></div><pre class="wiki">Error: signal 11: 0 KimiTestApp 0x0000000105534a02 _Z7handleri + 34 1 libsystem_platform.dylib 0x00007fff97a075aa _sigtramp + 26 2 KimiTestApp 0x00000001054f154d _ZN5boost6detail12shared_countD2Ev + 45 3 libsystem_pthread.dylib 0x00007fff9665691e _pthread_cond_signal + 612 4 KimiTestApp 0x0000000105642c43 _ZN5boost4asio6detail11posix_event17signal_and_unlockINS1_11scoped_lockINS1_11posix_mutexEEEEEvRT_ + 115 5 KimiTestApp 0x0000000105642ab4 _ZN5boost4asio6detail15task_io_service31wake_one_idle_thread_and_unlockERNS1_11scoped_lockINS1_11posix_mutexEEE + 100 6 KimiTestApp 0x000000010564293f _ZN5boost4asio6detail15task_io_service26wake_one_thread_and_unlockERNS1_11scoped_lockINS1_11posix_mutexEEE + 47 7 KimiTestApp 0x000000010564247e _ZN5boost4asio6detail15task_io_service25post_immediate_completionEPNS1_25task_io_service_operationEb + 206 8 KimiTestApp 0x000000010564002e _ZN5boost4asio6detail15task_io_service4postIZN42GlobalTestModule_TestNoOpDieImmediate_Test8TestBodyEvE3$_0EEvRT_ + 190 9 KimiTestApp 0x000000010563ff24 _ZN5boost4asio10io_service4postIZN42GlobalTestModule_TestNoOpDieImmediate_Test8TestBodyEvE3$_0EENS0_12async_resultINS0_12handler_typeIT_FvvEE4typeEE4typeEOS7_ + 68 10 KimiTestApp 0x000000010563fded _ZN42GlobalTestModule_TestNoOpDieImmediate_Test8TestBodyEv + 125 </pre> boost-bugs@… https://svn.boost.org/trac10/ticket/10213 https://svn.boost.org/trac10/ticket/10213 Report #10212: Don't protect calls to SSL_accept by a static mutex Thu, 17 Jul 2014 15:11:27 GMT Mon, 07 Mar 2016 12:05:53 GMT <p> Since this commit: commit ad1c1008321e9b14779816ae19dfaa261c2de293 Author: Christopher Kohlhoff &lt;chris@…&gt; Date: Fri Mar 18 00:25:54 2011 +0000 </p> <blockquote> <p> New SSL implementation. </p> </blockquote> <blockquote> <p> [SVN <a class="changeset" href="https://svn.boost.org/trac10/changeset/70096" title="New SSL implementation. ">r70096</a>] </p> </blockquote> <p> calls to SSL_connect are not protected by ssl_mutex_, but calls to SSL_accept are wrapped by a lock. </p> <p> I have a http/websocket server application which is extremelly slow in processing requests over a secured connection (about 700 RPS). Under peak load (3K RPS) all threads are waiting for the mutex (for example, 10 threads which are calling to io_service::run()). </p> <p> For every instance of io_service I use a single ssl_context. </p> <p> I'm uploading a patch I use to solve this problem. I have tested it under load for 5-6 months and I have no problems with using SSL_accept without this mutex so I propose the patch. </p> Sergei Nikishin <nordsturm@…> https://svn.boost.org/trac10/ticket/10212 https://svn.boost.org/trac10/ticket/10212 Report #10207: graph/kamada_kawai: fix matrix size of 3-dimensional linear solver Wed, 16 Jul 2014 17:19:09 GMT Wed, 16 Jul 2014 17:19:09 GMT <p> The input matrix for the template instantiation of the 3 dimensional linear solver is of the wrong size. The attached patch fixes this. </p> totto@… https://svn.boost.org/trac10/ticket/10207 https://svn.boost.org/trac10/ticket/10207 Report #10206: graph/kamada_kawai: remove calculation of unused debug variable E Wed, 16 Jul 2014 17:10:19 GMT Tue, 09 Aug 2016 09:10:46 GMT <p> The debugging output, which was removed in &lt;<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6239"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6239</a>&gt;, printed the variable E. </p> <p> The calculation of of this variable E remained in the code. The attached patch removes this. </p> totto@… https://svn.boost.org/trac10/ticket/10206 https://svn.boost.org/trac10/ticket/10206 Report #10205: FileSystem runtime error: locale::facet::_S_create_c_locale name not valid Wed, 16 Jul 2014 11:59:58 GMT Wed, 29 Oct 2014 15:18:26 GMT <p> Ok this is still broken (see Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5928" title="#5928: Bugs: FileSystem runtime error: locale::facet::_S_create_c_locale name not valid (closed: fixed)">#5928</a>). On Solaris 10 (sparc) compile this... </p> <p> #include &lt;iostream&gt; #include &lt;boost/filesystem.hpp&gt; </p> <p> int main (void) { </p> <blockquote> <p> std::cout &lt;&lt; boost::filesystem::unique_path("/some/random/path/%%%%%%%").c_str() &lt;&lt; std::endl; return 0; </p> </blockquote> <p> } </p> <p> linking against system and filesystem </p> <p> I had compiled boost_1_55_0 from the site and built just filesystem and system (because program_options fails to compile with gcc 4.9.0 but thats a separate issue). I created the above example in stage/lib folder and ran.. </p> <p> g++ test.cpp -I../../ -L. -lboost_filesystem -lboost_system </p> <p> Below are the results... </p> <p> bash-3.2$ locale LANG=en_GB.UTF-8 LC_CTYPE=en_GB.ISO8859-1 LC_NUMERIC=en_GB.ISO8859-1 LC_TIME=en_GB.ISO8859-1 LC_COLLATE=en_GB.ISO8859-1 LC_MONETARY=en_GB.ISO8859-1 LC_MESSAGES=C LC_ALL= -bash-3.2$ LC_ALL=en_GB.UTF-8 LD_LIBRARY_PATH=. ./a.out terminate called after throwing an instance of 'std::runtime_error' </p> <blockquote> <p> what(): locale::facet::_S_create_c_locale name not valid </p> </blockquote> <p> Abort (core dumped) -bash-3.2$ LD_LIBRARY_PATH=. ./a.out terminate called after throwing an instance of 'std::runtime_error' </p> <blockquote> <p> what(): locale::facet::_S_create_c_locale name not valid </p> </blockquote> <p> Abort (core dumped) -bash-3.2$ LC_ALL=en_GB.ISO8859-1 LD_LIBRARY_PATH=. ./a.out terminate called after throwing an instance of 'std::runtime_error' </p> <blockquote> <p> what(): locale::facet::_S_create_c_locale name not valid </p> </blockquote> <p> Abort (core dumped) -bash-3.2$ LC_ALL=C LD_LIBRARY_PATH=. ./a.out /some/random/path/7fff459 </p> <p> This is utterly crippling and renders boost filesystem useless on Solaris 10. </p> sleary@… https://svn.boost.org/trac10/ticket/10205 https://svn.boost.org/trac10/ticket/10205 Report #10199: When requested mpi threading level cannot be provided, some sort of error should be reported Tue, 15 Jul 2014 18:17:53 GMT Tue, 15 Jul 2014 18:17:53 GMT <p> When mpi::environment requests a threading level with one of the constructors: </p> <pre class="wiki">explicit environment(threading::level, bool = true); environment(int &amp;, char **&amp;, threading::level, bool = true); </pre><p> there is no guarantee that the requested threading level is actually available. Boost::mpi receives the actual threading level provided, but ignores it. </p> <p> Instead, I suggest that an exception should be thrown when the provided level of threading support is less than requested. This would, for example, catch the common scenario where the MPI library was only compiled for single-threaded programs. </p> ClaytonGDavis@… https://svn.boost.org/trac10/ticket/10199 https://svn.boost.org/trac10/ticket/10199 Report #10198: current_exception_diagnostic_information() returns empty string if verbose is false Tue, 15 Jul 2014 07:16:11 GMT Tue, 15 Jul 2014 07:16:11 GMT Eugene Ryabtsev <eugene.ryabtsev@…> https://svn.boost.org/trac10/ticket/10198 https://svn.boost.org/trac10/ticket/10198 Report #10195: Silent Failure for boost::geometry::intersection() Mon, 14 Jul 2014 19:08:42 GMT Mon, 14 Jul 2014 19:08:42 GMT <p> I am performing intersections between polygons, with points represented using 64-bit integer coordinates. If I use signed ints (int64_t), the intersection operations are correct. If I use unsigned ints (uint64_t), the returned intersection polygon collection is simply one of the two polygons I originally handed in. </p> <p> The underlying intersection algorithm must require signed information, but this fact is not communicated to users. As a result, the output of unsigned int operations can appear nonsensical. Added documentation is appreciated. Adding an actual exception when attempting to do unsigned-int-based intersections would be even better. </p> anonymous https://svn.boost.org/trac10/ticket/10195 https://svn.boost.org/trac10/ticket/10195 Report #10194: basic_xml_grammar<wchar_t> parses class_id failed Mon, 14 Jul 2014 16:02:00 GMT Fri, 05 Dec 2014 04:19:17 GMT <p> I found this issue when I used xml wserialization to save config in polymorphic case. After debugging, I found basic_xml_grammar&lt;wchar_t&gt; failed to parse "class_id" under some conditions. There are some info for this issue: </p> <ol><li>Compile with NDEBUG, without NDEBUG no this issue. </li><li>basic_xml_grammar&lt;char&gt; works fine. </li><li>Compile with GCC (when compile with VS2010, no this issue) </li></ol><p> Detail of GCC: gcc -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=<a class="ext-link" href="http://bugzilla.redhat.com/bugzilla"><span class="icon">​</span>http://bugzilla.redhat.com/bugzilla</a> --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-<span class="underline">cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) </span></p> <p> I trimmed the test code: </p> <p> #include &lt;boost/archive/impl/basic_xml_grammar.hpp&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; </p> <p> using namespace boost::archive; </p> <p> int main() { </p> <blockquote> <p> std::wifstream ifs("./dashboard.xml"); </p> </blockquote> <blockquote> <p> if (ifs) { </p> <blockquote> <p> basic_xml_grammar&lt;wchar_t&gt; xmlGrammer; xmlGrammer.parse_start_tag(ifs); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> std::wcout &lt;&lt; "rv.class_id=" &lt;&lt; xmlGrammer.rv.class_id &lt;&lt; std::endl; </p> </blockquote> <p> } else { </p> <blockquote> <p> std::cout &lt;&lt; "File doesn't exist." &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> and the dashboard.xml is very simple with only one line: &lt;item class_id="4" class_name="<a class="missing wiki">ComponentDataChart</a>" tracking_level="1" version="4" object_id="_3"&gt; </p> Andrew Xu <xulei.js@…> https://svn.boost.org/trac10/ticket/10194 https://svn.boost.org/trac10/ticket/10194 Report #10188: Loses floating point precision on round trip Thu, 10 Jul 2014 13:54:12 GMT Fri, 23 Jan 2015 12:25:23 GMT <p> ptrees stream_translator uses a precision of std::numeric_limits&lt;F&gt;::digits10 + 1 when converting floating point values. This is not always enough, and a more correct value would be digits10+2 or max_digits10 (c++11 only). See <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/9177" title="#9177: Bugs: Improved serialization of floating point values (reopened)">ticket:9177</a> for a similar issue. </p> <p> The attached test produces the following output pre-patch: </p> <pre class="wiki">in : -1.8312345000098765e-08 out: -1.8312345000098762e-08 Wrong </pre><p> and after patch: </p> <pre class="wiki">in : -1.8312345000098765e-08 out: -1.8312345000098765e-08 Right </pre> Magne OEstlyngen <magne+boost@…> https://svn.boost.org/trac10/ticket/10188 https://svn.boost.org/trac10/ticket/10188 Report #10181: Typo in Boost Pool Docs Mon, 07 Jul 2014 09:01:21 GMT Mon, 07 Jul 2014 09:03:16 GMT <p> <a href="http://www.boost.org/doc/libs/1_55_0/libs/pool/doc/html/boost_pool/pool/interfaces.html">http://www.boost.org/doc/libs/1_55_0/libs/pool/doc/html/boost_pool/pool/interfaces.html</a> </p> <p> "An ordered pool maintains it's free list" </p> <p> should be </p> <p> "An ordered pool maintains its free list" </p> Q309185@… https://svn.boost.org/trac10/ticket/10181 https://svn.boost.org/trac10/ticket/10181 Report #10180: shared_memory_object assertion when used with boost unit test Mon, 07 Jul 2014 05:00:56 GMT Wed, 30 Jul 2014 15:02:21 GMT <p> I am running with Visual Studio 2010, and boost 1.55. When I run a simple unit test with shared_memory_object, I get an assertion on shutdown. The test itself creates a shared memory object, maps it to memory, and writes to it; it then opens a shared memory object of the same name and reads from it. This works fine. </p> <p> On exit, the fini_atomic_func functor in intermodule_singleton_common is run to clean up. This does the following: </p> <pre class="wiki"> ref_count_ptr *rcount = intermodule_singleton_helpers::thread_safe_global_map_dependant &lt;ThreadSafeGlobalMap&gt;::find(m_map, typeid(C).name()); //The object must exist BOOST_ASSERT(rcount); </pre><p> The assertion fails. In the debugger I can see that typeid(C).name() has returned a rubbish string, and therefore no map entry is found. When that same code is executed in init_atomic_func, typeid(C).name() returns "struct boost::interprocess::ipcdetail::windows_bootstamp" as expected. Following the relevant memory address in the debugger, I see that the typeid string is erased in the unit test's framework::shutdown() function. This is done deliberately to eliminate fake memory leak reports from the typeid strings. See boost\test\impl\framework.ipp. </p> <p> Unfortunately the interprocess cleanup is done via a handler registered with std::atexit, which guarantees it will be after framework has run shutdown. I don't see any options on either side (boost unit test or boost interprocess) which would allow the order to be fixed up. </p> <p> Simplest code to reproduce: </p> <pre class="wiki">#include &lt;boost/test/unit_test.hpp&gt; #include &lt;boost/interprocess/shared_memory_object.hpp&gt; namespace IP = boost::interprocess; BOOST_AUTO_TEST_SUITE( TestSharedMemory ) BOOST_AUTO_TEST_CASE( CauseAssertionFailure ) { IP::shared_memory_object lShared( IP::open_only, "test_string", IP::read_only ); BOOST_REQUIRE( lShared.get_name() != 0 ); } BOOST_AUTO_TEST_SUITE_END() </pre> andrew.lang@… https://svn.boost.org/trac10/ticket/10180 https://svn.boost.org/trac10/ticket/10180 Report #10175: Integrating build asio as a library into the boost build system Thu, 03 Jul 2014 00:08:11 GMT Thu, 03 Jul 2014 00:08:11 GMT <p> It would be nice if the boost build system had an option "--with-asio" to build asio as a shared library. </p> <p> Yes, it's possible to build it manually, but it would be better to be able to build it like the rest of the boost libraries. </p> <p> In fact, there's at least one scenario where proper behavior isn't acheived unless it's built as a shared library. See <a class="new ticket" href="https://svn.boost.org/trac10/ticket/10174" title="#10174: Bugs: call_stack not working when building asio as shared module on windows (new)">#10174</a>. </p> Wade Berrier <wberrier@…> https://svn.boost.org/trac10/ticket/10175 https://svn.boost.org/trac10/ticket/10175 Report #10174: call_stack not working when building asio as shared module on windows Wed, 02 Jul 2014 23:57:38 GMT Tue, 02 Feb 2016 00:46:27 GMT <p> The call_stack is not working when building asio as shared module on windows. </p> <p> Also, the call_stack doesn't work on windows when using asio as header only and loading a dll at runtime (ie: <a class="missing wiki">LoadLibrary</a>) which is also using asio as header only. </p> <p> See and run the attached test case that demonstrates the problem in the following scenario: </p> <ul><li>MSVC 2010 Express SP1 32bit (I'm guessing it's an issue on other compilers as well, but this is what I was using) </li><li>build asio as a shared library according to instructions for "separate compilation" [ 1 ] </li><li>build and run the test case, where all cases should say "PASS" </li></ul><p> Now, I know the documentation says that .dispatch() *may* execute the handler right away (see discussion[ 2 ] on mailing list), so it's officially not a bug. </p> <p> BUT, I noticed that "strand.running_in_this_thread()" worked. That's what clued me in that call_stack was working as expected for running_in_this_thread(), but not for dispatch(). </p> <p> It appears that the issue is with static storage for boost::asio::detail::callstack::top_ . </p> <p> It appears that two copies of this static storage item are being referenced: one from the .exe file, and one from the .dll (both of which include the asio headers). </p> <p> It looks like the reason "running_in_this_thread()" works is because it calls callstack&lt;&gt;::contains() from an .ipp file, which is included in the .dll so it references top_ from the .dll. </p> <p> In the case of using asio as header only, not running any asio code from a .dll, the issue is non-existent. There is no confusion as to which top_ variable to use. </p> <p> See the attached patch to asio/detail/impl/strand_service.hpp that fixes strand.dispatch() by calling "running_in_this_thread()". That forces the reference of top_ from the .dll instead of the reference from the .exe that's linked against the asio dll or another .dll that includes asio headers. </p> <p> Possible fixes for this: </p> <ol><li>put the definition of top_ in an .ipp file to include in the boost asio .dll so there's only one symbol for it. </li><li>put all usages of call_stack in .ipp files (similar to the attached patch) so there's no confusion about the symbol (ugly and error prone, since it would have to be done for all use cases) </li></ol><p> It should be noted that in order for call_stack to work across a dll boundary (ie: sharing io_service or strand between a .exe and .dll), asio *must* be built as a shared library. </p> <p> Also, note that this only happens on Windows. Doing the equivalent with .so files works in Linux (maybe by chance? not sure...). </p> <p> Not having this fix makes .dispatch() pretty much useless when using asio on windows with .dlls. </p> wberrier@… https://svn.boost.org/trac10/ticket/10174 https://svn.boost.org/trac10/ticket/10174 Report #10170: adding keys to context without file Wed, 02 Jul 2014 07:31:48 GMT Wed, 02 Jul 2014 07:31:48 GMT <p> The boost::asio::ssl::context class should have a way to add keys, without a file name. Because sometimes it is necessary to use keys that are already loaded into the program and are stored in a variable ( for example: char *). </p> anonymous https://svn.boost.org/trac10/ticket/10170 https://svn.boost.org/trac10/ticket/10170 Report #10167: Wide char tests fail with input stream error on QNX Tue, 01 Jul 2014 20:54:52 GMT Wed, 02 Jul 2014 17:05:21 GMT <p> All of the warchive tests have been failing with "input stream error" on QNX 6.5.0 (x86) since forever (<a class="ext-link" href="http://lists.boost.org/boost-testing/2010/10/6697.php"><span class="icon">​</span>http://lists.boost.org/boost-testing/2010/10/6697.php</a>). </p> <p> I finally got around to debugging the issue. test_complex_text_warchive successsfully loads the file signature ("22 serialization::archive"), then the stream indicates failure when the library attempts to read library_version_type from the stream. </p> <p> Text of archive: </p> <pre class="wiki">22 serialization::archive 11 5.77390790e-01 2.92427921e+00 3.10149615851192895e+00 5.51821574551270633e+00 </pre><p> Hex dump of archive: </p> <pre class="wiki">0000000 32 00 00 00 32 00 00 00 20 00 00 00 73 00 00 00 2...2.......s... 0000010 65 00 00 00 72 00 00 00 69 00 00 00 61 00 00 00 e...r...i...a... 0000020 6c 00 00 00 69 00 00 00 7a 00 00 00 61 00 00 00 l...i...z...a... 0000030 74 00 00 00 69 00 00 00 6f 00 00 00 6e 00 00 00 t...i...o...n... 0000040 3a 00 00 00 3a 00 00 00 61 00 00 00 72 00 00 00 :...:...a...r... 0000050 63 00 00 00 68 00 00 00 69 00 00 00 76 00 00 00 c...h...i...v... 0000060 65 00 00 00 20 00 00 00 31 00 00 00 31 00 00 00 e.......1...1... 0000070 20 00 00 00 35 00 00 00 2e 00 00 00 37 00 00 00 ....5.......7... 0000080 37 00 00 00 33 00 00 00 39 00 00 00 30 00 00 00 7...3...9...0... 0000090 37 00 00 00 39 00 00 00 30 00 00 00 65 00 00 00 7...9...0...e... 00000A0 2d 00 00 00 30 00 00 00 31 00 00 00 20 00 00 00 -...0...1....... 00000B0 32 00 00 00 2e 00 00 00 39 00 00 00 32 00 00 00 2.......9...2... 00000C0 34 00 00 00 32 00 00 00 37 00 00 00 39 00 00 00 4...2...7...9... 00000D0 32 00 00 00 31 00 00 00 65 00 00 00 2b 00 00 00 2...1...e...+... 00000E0 30 00 00 00 30 00 00 00 20 00 00 00 33 00 00 00 0...0.......3... 00000F0 2e 00 00 00 31 00 00 00 30 00 00 00 31 00 00 00 ....1...0...1... 0000100 34 00 00 00 39 00 00 00 36 00 00 00 31 00 00 00 4...9...6...1... 0000110 35 00 00 00 38 00 00 00 35 00 00 00 31 00 00 00 5...8...5...1... 0000120 31 00 00 00 39 00 00 00 32 00 00 00 38 00 00 00 1...9...2...8... 0000130 39 00 00 00 35 00 00 00 65 00 00 00 2b 00 00 00 9...5...e...+... 0000140 30 00 00 00 30 00 00 00 20 00 00 00 35 00 00 00 0...0.......5... 0000150 2e 00 00 00 35 00 00 00 31 00 00 00 38 00 00 00 ....5...1...8... 0000160 32 00 00 00 31 00 00 00 35 00 00 00 37 00 00 00 2...1...5...7... 0000170 34 00 00 00 35 00 00 00 35 00 00 00 31 00 00 00 4...5...5...1... 0000180 32 00 00 00 37 00 00 00 30 00 00 00 36 00 00 00 2...7...0...6... 0000190 33 00 00 00 33 00 00 00 65 00 00 00 2b 00 00 00 3...3...e...+... 00001A0 30 00 00 00 30 00 00 00 0a 00 00 00 0...0....... 00001AC </pre><p> Stack trace from the failure point (#2): </p> <pre class="wiki">#0 __cxa_throw (obj=0x809de30, tinfo=0x8074888, dest=0x80713ba &lt;boost::archive::archive_exception::~archive_exception()&gt;) at ../../../../../libstdc++-v3/libsupc++/unwind-cxx.h:234 #1 0x0805bb05 in boost::serialization::throw_exception&lt;boost::archive::archive_exception&gt; (e=@0x8047238) at ../../../boost/serialization/throw_exception.hpp:36 #2 0x0806756e in boost::archive::basic_text_iprimitive&lt;std::basic_istream&lt;wchar_t, std::char_traits&lt;wchar_t&gt; &gt; &gt;::load&lt;boost::archive::library_version_type&gt; (this=0x8047704, t=@0x8047406) at ../../../boost/archive/basic_text_iprimitive.hpp:86 #3 0x080674f3 in boost::archive::text_wiarchive_impl&lt;boost::archive::text_wiarchive&gt;::load&lt;boost::archive::library_version_type&gt; (this=0x80476f0, t=@0x8047406) at ../../../boost/archive/text_wiarchive.hpp:67 #4 0x080674bb in boost::archive::load_access::load_primitive&lt;boost::archive::text_wiarchive, boost::archive::library_version_type&gt; (ar=@0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/iserializer.hpp:103 #5 0x0806747d in boost::archive::detail::load_non_pointer_type&lt;boost::archive::text_wiarchive&gt;::load_primitive::invoke&lt;boost::archive::library_version_type&gt; (ar=@0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/iserializer.hpp:385 #6 0x08067417 in boost::archive::detail::load_non_pointer_type&lt;boost::archive::text_wiarchive&gt;::invoke&lt;boost::archive::library_version_type&gt; (ar=@0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/iserializer.hpp:462 #7 0x0806732a in boost::archive::load&lt;boost::archive::text_wiarchive, boost::archive::library_version_type&gt; (ar=@0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/iserializer.hpp:618 #8 0x0806722a in boost::archive::detail::common_iarchive&lt;boost::archive::text_wiarchive&gt;::load_override&lt;boost::archive::library_version_type&gt; (this=0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/common_iarchive.hpp:66 #9 0x08067134 in boost::archive::basic_text_iarchive&lt;boost::archive::text_wiarchive&gt;::load_override&lt;boost::archive::library_version_type&gt; (this=0x80476f0, t=@0x8047406) at ../../../boost/archive/basic_text_iarchive.hpp:71 #10 0x08067034 in boost::archive::text_wiarchive_impl&lt;boost::archive::text_wiarchive&gt;::load_override&lt;boost::archive::library_version_type&gt; (this=0x80476f0, t=@0x8047406) at ../../../boost/archive/text_wiarchive.hpp:95 #11 0x08066dbe in boost::archive::detail::interface_iarchive&lt;boost::archive::text_wiarchive&gt;::operator&gt;&gt;&lt;boost::archive::library_version_type&gt; (this=0x80476f0, t=@0x8047406) at ../../../boost/archive/detail/interface_iarchive.hpp:60 #12 0x08066945 in boost::archive::basic_text_iarchive&lt;boost::archive::text_wiarchive&gt;::init (this=0x80476f0) at ../../../boost/archive/impl/basic_text_iarchive.ipp:60 #13 0x080665e7 in boost::archive::text_wiarchive_impl&lt;boost::archive::text_wiarchive&gt;::text_wiarchive_impl (this=0x80476f0, is=@0x80475e0, flags=0) at ../../../boost/archive/impl/text_wiarchive_impl.ipp:112 #14 0x0804f341 in boost::archive::text_wiarchive::text_wiarchive (this=0x80476f0, is=@0x80475e0, flags=0) at ../../../boost/archive/text_wiarchive.hpp:123 #15 0x0804d3a5 in test_main () at test_complex.cpp:64 #16 0x0804d03d in main (argc=1, argv=0x8047840) at test_tools.hpp:203 </pre><p> This was done with code from the develop branch earlier today:<br /> Boost commit 31c60438c5a27ae6d956d01db76e7d84a01b8b2b<br /> Serialization commit d9121537826a4e4e9a378c43818bd9b7d5f3a9bd </p> <p> I noticed that the code that reads the signature string manually skips the space between the length and the actual string. If I remove the space after the signature from the file, it successfully loads library_version_type but then fails when trying to read the first float. So it appears as if the problem has something to do with the spaces between values. </p> <p> Suggestions? </p> Niklas Angare <li51ckf02@…> https://svn.boost.org/trac10/ticket/10167 https://svn.boost.org/trac10/ticket/10167 Report #10163: Boost.Signal2 performs too many locks in a multi-threaded environment where the life cycle of the source and target are the duration of the program Mon, 30 Jun 2014 19:31:50 GMT Mon, 30 Jun 2014 19:31:50 GMT <p> Boost.Signal2 requires that the receiver be a shared_ptr, or a weak_ptr. </p> <p> If the life cycle of the receiver is the length of the program (ie, created rather than new'ed as a global object), there is no need to reference count the pointer. On Linux/X86_64, the act of making it a shared pointer (to protect it from going away underneath us) causes an atomic increment and decrement of the reference counter, which causes high CPU utilization in the atomic lock/unlock when performing lots of signals in parallel across multiple threads. </p> <p> It would be nice to have a non-shared_ptr interface to eliminate the refrence count bottle neck, as the management of the pointer is higher overhead than actually doing the signal, in many cases. </p> <p> This was found with a program that has multiple threads signalling very small objects at a very high rate, and looking at the underlying system with both gprof and pprof. In our test case, 48% of the gprof time was spent in the atomic lock/unlock/test code. </p> <p> Because of the proprietary nature of our code, I can't attach a sample. </p> Dave Gotwisner <dgotwisn@…> https://svn.boost.org/trac10/ticket/10163 https://svn.boost.org/trac10/ticket/10163 Report #10162: ASIO's spawn should accept a stack allocator parameter Mon, 30 Jun 2014 17:46:23 GMT Fri, 07 Jul 2017 09:46:42 GMT <p> It is possible to pass coroutine attributes to "spawn", but not stack allocators. </p> <p> Stack allocators are for the moment the only way to have valgrind-aware stacks. Without it, it is nearly impossible to use valgrind as soon as you have a coroutine. So it is quite critical. </p> vdavid@… https://svn.boost.org/trac10/ticket/10162 https://svn.boost.org/trac10/ticket/10162 Report #10152: Bimap documentation lacks information on iterator invalidation Wed, 25 Jun 2014 22:53:02 GMT Wed, 25 Jun 2014 22:53:02 GMT <p> Bimap in its documentation doesn't mention when iterators are invalidated (if at all). Or at least it doesn't say it explicitly enough. </p> <p> While it seems that it should and could since it is implemented in terms of <a class="missing wiki">MultiIndex</a> while <a class="missing wiki">MultiIndex</a> does specify that. </p> <p> See also thread "[Bimap] Iterator invalidation" on gmane.comp.lib.boost.user. </p> abadura@… https://svn.boost.org/trac10/ticket/10152 https://svn.boost.org/trac10/ticket/10152 Report #10150: Regression testing can fail if you've modified files Wed, 25 Jun 2014 17:00:03 GMT Fri, 27 Jun 2014 13:21:31 GMT <p> regression.py fails if you have local changes to files that are modified by a new commit, at least if they're under tools_bb. I had a patch_boost that had modified tools_bb/src/tools/testing.jam on the previous run when this occured. </p> <p> Here's the output: </p> <pre class="wiki"># Getting Boost.Build v2... # Executing GIT command: /extra/boost_regression/ARM/tools_bb&gt; git remote "set-branches" "--add" "origin" "develop" # Executing GIT command: /extra/boost_regression/ARM/tools_bb&gt; git pull "--recurse-submodules" error: Your local changes to the following files would be overwritten by merge: src/tools/testing.jam Please, commit your changes or stash them before you can merge. Aborting Updating 59fd3b6..708ceaf </pre><p> Here's what git status showed: </p> <pre class="wiki">On branch develop Your branch is behind 'origin/develop' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Changes not staged for commit: (use "git add &lt;file&gt;..." to update what will be committed) (use "git checkout -- &lt;file&gt;..." to discard changes in working directory) modified: src/tools/testing.jam Untracked files: (use "git add &lt;file&gt;..." to include in what will be committed) src/tools/testing.jam.rej no changes added to commit (use "git add" and/or "git commit -a") </pre> Niklas Angare <li51ckf02@…> https://svn.boost.org/trac10/ticket/10150 https://svn.boost.org/trac10/ticket/10150 Report #10149: boost::optional<T> can be constructed from a typed in place factory of the wrong type Wed, 25 Jun 2014 16:54:48 GMT Tue, 15 Mar 2016 12:29:59 GMT <p> For example: </p> <p> boost::optional&lt;char&gt; oa = boost::in_place&lt;double&gt;(0); <em> type-checks but results in runtime undefined behavior, placement new of double in a buffer of size char. </em></p> aastolfi@… https://svn.boost.org/trac10/ticket/10149 https://svn.boost.org/trac10/ticket/10149 Report #10146: Trac detects my bug entry as spam, but there is no 'following' to respond to. Wed, 25 Jun 2014 14:17:50 GMT Wed, 25 Jun 2014 14:17:50 GMT <p> Tried submitting another bug report now where Trac detects my input as spam, telling: </p> <pre class="wiki">Captcha Error Submission rejected as potential spam (Content contained 1 blacklisted patterns) Trac thinks your submission might be Spam. To prove otherwise please provide a response to the following. </pre><p> I won't care if I would be able to "provide a response to the following", but there is nothing shown where I could enter something. </p> <p> Thank you! </p> Michael Haubenwallner <michael.haubenwallner@…> https://svn.boost.org/trac10/ticket/10146 https://svn.boost.org/trac10/ticket/10146 Report #10145: Win2k8R2 specific: boost::filesystem::is_directory() returns false for a directory under C:\Windows\System32 Wed, 25 Jun 2014 11:51:11 GMT Wed, 25 Jun 2014 17:46:53 GMT <p> 'filesystem::is_directory()' returns false for a directory with whole bunch of sibling directories. Run the following commands to create 2000 sub-directories: </p> <p> C:\&gt;mkdir temp_dir C:\&gt;cd temp_dir C:\&gt;for /L %i in (1, 1, 2000) do mkdir test_dir_%i C:\&gt;mkdir test_dir </p> <p> Now try to execute the following statements under a debugger: 'is_directory()' always returns false. </p> <p> boost::filesystem::path directory("C:<br />temp_dir<br />test_dir"); bool isDir = boost::filesystem::is_directory(directory); </p> Martin Ghazaryan <martin.ghazaryan@…> https://svn.boost.org/trac10/ticket/10145 https://svn.boost.org/trac10/ticket/10145 Report #10142: Range lib type_erased.cpp needs /bigobj option for mcvc and intel-win Mon, 23 Jun 2014 11:37:00 GMT Mon, 25 Aug 2014 21:12:23 GMT <p> Build of range lib on debug mode fails with msvc and icl on type_erased.cpp file. /bigobj option should be added to Jamfile.v2 </p> <p> # ../../../bjam --toolset=intel address-model=364 . . . file ..\..\..\bin.v2\libs\range\test\type_erased.test\msvc-12.0\debug\address-model-64\link-static\threading-multi\adaptor_test\type_erased.obj.rsp "adaptor_test\type_erased.cpp" -Fo"..\..\..\bin.v2\libs\range\test\type_erased.test\msvc-12.0\debug\address-model-64\link-static\threading-multi\adaptor_test\type_erased.obj" -TP /Z7 /Od /Ob0 /W3 /GR /MDd /Zc:forScope /Zc:wchar_t /favor:blend /wd4675 /EHs -c -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_NO_AUTO_LINK=1 "-I..\..\.." compile-c-c++ ..\..\..\bin.v2\libs\range\test\type_erased.test\msvc-12.0\debug\address-model-64\link-static\threading-multi\adaptor_test\type_erased.obj </p> <blockquote> <p> call "C:\Program Files (x86)\microsoft visual studio 12.0\vc\vcvarsall.bat" x86_amd64 &gt;nul </p> </blockquote> <p> cl /Zm800 -nologo @"..\..\..\bin.v2\libs\range\test\type_erased.test\msvc-12.0\debug\address-model-64\link-static\threading-multi\adaptor_test\type_erased.obj.rsp" </p> <p> type_erased.cpp C:\Users\. . .\boost_1_55_0\libs\range\test\adaptor_test\type_erased.cpp : fatal error C1128: number of sections exceeded object file format limit : compile with /bigobj </p> <p> On Intel Windows 13.1, 14,0, 15.0: # ../../../bjam --toolset=intel address-model=64 . . . type_erased.cpp ..\..\..\bin.v2\libs\range\test\type_erased.test\intel-win\debug\link-static\threading-multi\adaptor_test\type_erased.obj": catastrophic error: too many segments in object file </p> <p> compilation aborted for adaptor_test/type_erased.cpp (code 4) </p> Elmira Semenova <elmira.a.semenova@…> https://svn.boost.org/trac10/ticket/10142 https://svn.boost.org/trac10/ticket/10142 Report #10129: boost::arg and boost::is_placeholder not documented Wed, 18 Jun 2014 07:14:22 GMT Wed, 18 Jun 2014 07:14:22 GMT <p> Boost.Bind default placeholders (anonymous namespace)<code>::_1</code>, (anonymous namespace)<code>::_2</code> etc. can be not used either by directly creating objects of type <code>boost::arg&lt;1&gt;</code>, <code>boost::arg&lt;2&gt;</code> etc. or by resorting to user-defined placeholders properly labelled as such via <code>boost::_is_placeholder</code>. This comes handy when <code>BOOST_BIND_NO_PLACEHOLDERS</code> is set and in general when the <code>_1</code> syntax is not welcome for whatever reason. </p> <p> The problem is that both <code>boost::arg&lt;N&gt;</code> and <code>boost::is_placeholder</code> are not documented, i.e. they officially do not exist. This, in particular, renders Boost.Bind effectively unusable when <code>BOOST_BIND_NO_PLACEHOLDERS</code> is in effect. </p> <p> This is a request that these constructs be documented. More info on the subject on </p> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2014/03/212333.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2014/03/212333.php</a> </p> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/10129 https://svn.boost.org/trac10/ticket/10129 Report #10127: coordinate_matrix sort() fails on to std::swap Mon, 16 Jun 2014 08:56:57 GMT Wed, 26 Nov 2014 15:16:35 GMT <p> Orginally posted here: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/24228772/c11-compatibility-of-sparse-matrix-implementations"><span class="icon">​</span>http://stackoverflow.com/questions/24228772/c11-compatibility-of-sparse-matrix-implementations</a> </p> <p> The following program does not compile with gcc 4.8 or clang 3.4 when --std=c++11 is set: </p> <pre class="wiki">#include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/matrix_sparse.hpp&gt; using namespace boost::numeric::ublas; int main(int argc, char** argv) { coordinate_matrix&lt;int&gt; m1(100, 100, 100); for (int i = 0; i &lt; 100; i++) m1.insert_element(i,i,i); compressed_matrix&lt;int&gt; m2(m1, 100); } </pre><p> We can solve the issue by providing a swap() routine: </p> <pre class="wiki">#include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/numeric/ublas/matrix_sparse.hpp&gt; using namespace boost::numeric::ublas; namespace std { template&lt;class M&gt; inline void swap (boost::numeric::ublas::index_triple&lt;M&gt; i1, boost::numeric::ublas::index_triple&lt;M&gt; i2) { i1.swap (i2); } } int main(int argc, char** argv) { coordinate_matrix&lt;int&gt; m1(100, 100, 100); for (int i = 0; i &lt; 100; i++) m1.insert_element(i,i,i); compressed_matrix&lt;int&gt; m2(m1, 100); } </pre><p> I am not an expert C++ template programmer, so I am unable to decide what is the cause here, but the C++ reference on std::sort explicitly mentions a swap() method. </p> anonymous https://svn.boost.org/trac10/ticket/10127 https://svn.boost.org/trac10/ticket/10127 Report #10122: Recent Python versions trigger compiler error on AIX when compiling modules/regex.c: conflicting types for 'fgetpos64' Fri, 13 Jun 2014 13:08:43 GMT Fri, 13 Jun 2014 13:08:43 GMT <p> Since bugs.python.org/issue11184, recent Python releases (like Python-2.7.6) now have proper large-file support for AIX, defining _LARGE_FILES in &lt;pyconfig.h&gt;, exposed to the user via &lt;Python.h&gt;. </p> <p> Now, bootstrapping boost.build for AIX using such a Python release causes the compiler errors shown in attached files when compiling modules/regex.c. </p> <p> The problem with modules/regex.c is: </p> <ul><li><code>modules/regex.c</code> first includes <code>"../mem.h"</code> </li><li><code>mem.h</code> includes <code>&lt;stdlib.h&gt;</code> includes <code>&lt;standards.h&gt;</code> </li></ul><p> Due to nothing relevant being defined yet, <code>&lt;standards.h&gt;</code> defines <code>_LARGE_FILE_API</code> </p> <ul><li><code>stdlib.h</code> includes <code>&lt;sys/types.h&gt;</code> </li><li><code>sys/types.h</code> does {<code>typedef long fpos_t;</code>}, because <code>_LARGE_FILES</code> is not defined </li></ul><p> If <code>_LARGE_FILES</code> were defined before, <code>sys/types.h</code> would have done {<code>typedef long long fpos_t;</code>} here. </p> <ul><li><code>sys/types.h</code> does {<code>typedef long long fpos64_t;</code>} due to <code>_LARGE_FILE_API</code> being defined </li><li><code>modules/regex.c</code> includes <code>"../native.h"</code> includes <code>"function.h"</code> includes <code>"frames.h"</code> includes <code>"lists.h"</code> includes <code>&lt;Python.h&gt;</code> includes [<code>&lt;pyconfig.h&gt;</code>, <code>&lt;stdio.h&gt;</code>] </li><li><code>pyconfig.h</code> defines <code>_LARGE_FILES</code> </li><li><code>stdio.h</code> does not redefine the <code>fpos_t</code> things </li><li><code>stdio.h</code> does {<code>#define fgetpos fgetpos64</code>} due to <code>_LARGE_FILES</code> being defined now </li><li><code>stdio.h</code> declares {<code>extern int fgetpos(FILE*,fpos_t);</code>}, but remember <code>fgetpos</code> is defined to <code>fgetpos64</code> </li><li><code>stdio.h</code> declares {<code>extern int fgetpos64(FILE*,fpos64_t);</code>} due to <code>_LARGE_FILE_API</code> being defined </li></ul><p> This problem is the same for the other functions the compilers yell about. </p> <p> Also, the same errors occur with current git master. </p> <p> For the fix: It is important to have all the ABI specific precompiler macros being defined before including any system header. Actually, the first thing <code>"jam.h"</code> does is to include <code>&lt;Python.h&gt;</code>. But with <code>modules/regex.c</code> first including <code>"../mem.h"</code> including <code>&lt;stdlib.h&gt;</code>, this rule is not followed. So the fix here is: </p> <pre class="wiki">--- a/src/engine/mem.h +++ b/src/engine/mem.h @@ -8,6 +8,8 @@ #ifndef BJAM_MEM_H #define BJAM_MEM_H +#include "jam.h" + #ifdef OPT_BOEHM_GC /* Use Boehm GC memory allocator. */ </pre><p> While the fix for this very problem is quite simple, it doesn't look like if <code>&lt;Python.h&gt;</code> being included first everywhere else in build.git/src/engine is on purpose actually... </p> <p> Thank you! </p> Michael Haubenwallner <michael.haubenwallner@…> https://svn.boost.org/trac10/ticket/10122 https://svn.boost.org/trac10/ticket/10122 Report #10118: boost::interprocess windows_intermodule_singleton crashes when mixing compilers Thu, 12 Jun 2014 12:04:12 GMT Thu, 12 Jun 2014 12:04:12 GMT <p> windows_semaphore_based_map uses an std::map to communicate between modules. However, the ABI of std::map is different between (for example) VS2008 and VS2012, which means that if a DLL compiled with VS2012 is linked with an application compiled with VS2008, the second module to use the intermodule singleton will crash. </p> <p> This is essentially the same problem as <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/9262" title="#9262: Bugs: windows_intermodule_singleton breaks when calling a Debug dll from a ... (reopened)">#9262</a>, but with different compiler versions instead of different build types. </p> <p> A simple workaround is to comment out </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME</span> </pre></div></div><p> in <code>interprocess/detail/workaround.hpp</code>. </p> emil.styrke@… https://svn.boost.org/trac10/ticket/10118 https://svn.boost.org/trac10/ticket/10118 Report #10117: corrupt installer boost_1_55_0-msvc-12.0-64.exe downloaded from sourceforge : 1.55.0-build2 Thu, 12 Jun 2014 06:35:39 GMT Thu, 12 Jun 2014 06:35:39 GMT <p> installer boost_1_55_0-msvc-12.0-64.exe downloaded from sourceforge : 1.55.0-build2 is corrupt </p> kilian.singer@… https://svn.boost.org/trac10/ticket/10117 https://svn.boost.org/trac10/ticket/10117 Report #10115: Documentation for Boost MPI gather() Wed, 11 Jun 2014 15:32:27 GMT Wed, 11 Jun 2014 15:32:27 GMT <p> This is the current documentation for gather() [taken from github.com/boostorg/mpi/blob/master/include/boost/mpi/collectives.hpp]: </p> <pre class="wiki">/** * @brief Gather the values stored at every process into a vector at * the root process. * * @c gather is a collective algorithm that collects the values * stored at each process into a vector of values at the @p root * process. This vector is indexed by the process number that the * value came from. The type @c T of the values may be any type that * is serializable or has an associated MPI data type. * * When the type @c T has an associated MPI data type, this routine * invokes @c MPI_Gather to gather the values. * * @param comm The communicator over which the gather will occur. * * @param in_value The value to be transmitted by each process. For * gathering arrays of values, @c in_values points to storage for * @c n*comm.size() values. * * @param out_values A vector or pointer to storage that will be * populated with the values from each process, indexed by the * process ID number. If it is a vector, it will be resized * accordingly. For non-root processes, this parameter may be * omitted. If it is still provided, however, it will be unchanged. * * @param root The process ID number that will collect the * values. This value must be the same on all processes. */ </pre><p> Surely the sentence "@c in_values points to storage for @c n*comm.size() values" is wrong. in_values only needs to hold n values. However, out_values should have storage for n*comm.size() values on the root process. </p> Max Gerlach <gerlach@…> https://svn.boost.org/trac10/ticket/10115 https://svn.boost.org/trac10/ticket/10115 Report #10113: [1.55] no lock-free synchronization on Solaris 10 sparcv9 (sp_counted_base.hpp) Wed, 11 Jun 2014 11:53:58 GMT Sat, 19 Nov 2016 15:49:26 GMT <p> I wonder, why lock-free synchronization is not in use on solaris 10 (sparcv9). </p> <p> E.g. check with <a href="http://www.boost.org/doc/libs/1_53_0/doc/html/lockfree/examples.html">http://www.boost.org/doc/libs/1_53_0/doc/html/lockfree/examples.html</a> </p> <p> When i build boost 1.55 with gcc-4.7.2, then i get for </p> <blockquote class="citation"> <p> ./b2 </p> </blockquote> <p> [...] </p> <ul><li>lockfree boost::atomic_flag : no </li></ul><p> But there seems to be some support for cas32 (e.g.) in ./include/boost/smart_ptr/detail/... </p> <p> But in ./include/boost/smart_ptr/detail/sp_counted_base.hpp there is in the sequence of #if...#elif...#else...#endif is: </p> <pre class="wiki">[...] #elif defined( __GNUC__ ) &amp;&amp; ( defined( __mips__ ) || defined( _mips ) ) &amp;&amp; !defined(__PATHSCALE__) # include &lt;boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp&gt; #elif defined( BOOST_SP_HAS_SYNC ) # include &lt;boost/smart_ptr/detail/sp_counted_base_sync.hpp&gt; #elif defined(__GNUC__) &amp;&amp; ( defined( __sparcv9 ) || ( defined( __sparcv8 ) &amp;&amp; ( __GNUC__ * 100 + __GNUC_MINOR__ &gt;= 402 ) ) ) # include &lt;boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp&gt; [...] </pre><p> I.e. BOOST_SP_HAS_SYNC is preferred. </p> <p> Is this correct? </p> <ul><li>many thanks! </li></ul><p> best regards, </p> <p> Frank </p> anonymous https://svn.boost.org/trac10/ticket/10113 https://svn.boost.org/trac10/ticket/10113 Report #10112: improved shared_ptr visualizer and weak_ptr Wed, 11 Jun 2014 10:39:45 GMT Fri, 13 Feb 2015 18:36:55 GMT <p> I was trying out the boost::shared_ptr visualizer for Visual Studio 2010, here <a class="ext-link" href="https://svn.boost.org/svn/boost/sandbox/boost_docs/subprojects/DebuggerVisualizers/shared_ptr.vis.txt"><span class="icon">​</span>https://svn.boost.org/svn/boost/sandbox/boost_docs/subprojects/DebuggerVisualizers/shared_ptr.vis.txt</a> </p> <p> It's ok, but it doesn't show very much. The typical display is: </p> <p> shared_ptr {...} count = ... </p> <p> While experimenting with the visualizer, I made several observations: </p> <p> 1) If you view a pointer rather than a dereferenced pointer, you see both the address (which is useful) and more content in the referenced object (which is very useful) </p> <p> 2) Our normal use of shared_ptr is as a pointer. The usage count is not normally something we want to know about. By removing the text formatting, and only showing the pointer in the preview, we see far more content in the referenced object (even more useful) </p> <p> 3) The children are displayed in alphabetic order. It's most useful to be able to see and expand "ptr" in the children. Renaming "count" to "use_count" puts "ptr" at the top, where it belongs. </p> <p> 4) weak_ptr can be visualized the same way. </p> <p> An example boost::shared_ptr is now previewed as: </p> <p> 0x18467058 {parent_bond_=0x184546e0 {type_={...} polymeric_=false annotations_={...} ...} mol_=0x18448768 {m_=0x1246c5ac {impl_={...} annotations_={...} } impl_={...} proxy_atom_creator_={...} ...} graphic_properties_=0x00000000 } </p> <pre class="wiki">;------------------------------------------------------------------------------ ; boost::shared_ptr ;------------------------------------------------------------------------------ boost::shared_ptr&lt;*&gt;{ preview ( ($T1 *)$c.px ) children ( #( ptr: (($T1 *)$c.px) , use_count: $c.pn.pi_-&gt;use_count_ , weak_count: $c.pn.pi_-&gt;weak_count_ ) ) } ;------------------------------------------------------------------------------ ; boost::weak_ptr ;------------------------------------------------------------------------------ boost::weak_ptr&lt;*&gt;{ preview ( ($T1 *)$c.px ) children ( #( ptr: (($T1 *)$c.px) , use_count: $c.pn.pi_-&gt;use_count_ , weak_count: $c.pn.pi_-&gt;weak_count_ ) ) } </pre> murray read at ccdc https://svn.boost.org/trac10/ticket/10112 https://svn.boost.org/trac10/ticket/10112 Report #10110: boost::random::negative_binomial_distribution unnecessary restriction to IntType for parameter k Tue, 10 Jun 2014 20:23:13 GMT Wed, 11 Mar 2015 08:28:41 GMT <p> Hi. </p> <p> In the implementation of boost::random::negative_binomial_distribution there is an unnecessary restriction to <a class="missing wiki">IntType</a> for parameter k. </p> <p> A double parameter k will be casted to integer resulting in a different distribution than desired. If one compiles with -Wconversion a warning is given: warning: conversion to ‘int’ from ‘double’ may alter its value [-Wconversion] see attached example_file. This can lead to unwanted realization of a negative binomial distribution for non integer parameters k. </p> <p> Further there are no assertion checks on the parameters in instantiating a boost::random::negative_binomial_distribution object. These assertions are checked during the sampling process via boost::random::gamma_distribution. There (and in general for negative binomial distribution) the parameter k must be strictly greater than zero and not as mentioned in the documentation "Requires: k &gt;=0". </p> <p> This can easily be extended by changing <a class="missing wiki">IntType</a> to <a class="missing wiki">RealType</a> in 5 occurrences regarding the parameter k. </p> <p> Thank you, Max </p> <p> P.S.: I compiled the example file with: g++ -Wconversion -o negbin_test -std=c++11 negbin_test.cpp </p> Maximilian Kleinert <kleinert.max@…> https://svn.boost.org/trac10/ticket/10110 https://svn.boost.org/trac10/ticket/10110 Report #10106: boost shared_ptr.hpp runtime error. Mon, 09 Jun 2014 05:13:13 GMT Sat, 02 Aug 2014 17:14:03 GMT <p> I have code that previously ran perfectly on a mac 10.6.8 and currently runs on a ubuntu but when I try to run it on a newly installed 10.6.8 machine, I am getting this runtime error. I'm sure this is with the installation but any help is greatly appreciated. </p> <p> Assertion failed: (px != 0), function operator*, file /usr/local/boost_1_44_0/boost/smart_ptr/shared_ptr.hpp, line 412. Abort trap" </p> <p> With Boost 1.44.0 and icu4c 4.3.4. and Code::Blocks compiler. Running on Mac OS X 10.6.8. </p> <p> We have tried updating to the latest versions of both libraries, however still no dice. However, with Boost 1.55, the runtime error cites a different line (don't quite remember what line number, but it was in the 500s). </p> <p> The program we are trying to run has ran on Boost 1.38 and I've found a couple solutions including one that says there may be a discrepancy between which version of boost the linker and includer are using. However, there's only one version of boost on my computer. The compiler and linker are both set to the directories mentioned when I installed Boost. Could it be that somewhere else, one of those is still looking for Boost 1.38? If so, where? </p> <p> I've also found that it could be due to a pointer being improperly initialized, but I am reluctant to go down that road since it used to work (and still works on previous versions of boost on ubuntu) and since it would require me to rewrite quite a bit of code. </p> <p> Any thoughts as to how to fix the problem? </p> <p> Thanks </p> Spinach <spinach@…> https://svn.boost.org/trac10/ticket/10106 https://svn.boost.org/trac10/ticket/10106 Report #10105: graphml attribute type mapping for types not in specification Sat, 07 Jun 2014 16:53:56 GMT Sat, 07 Jun 2014 16:53:56 GMT <p> At the moment, <code>write_graphml</code> tries to convert non-standard attribute value types (that are not in specification) which it got from <code>dynamic_properties</code>, to standard ones. A type is converted to a simple form, say <code>unsigned int</code> to <code>int</code>, etc, by a predefined mapping in <code>write_graphml</code>: <code>value_types</code> and <code>type_names</code>. The conversion only affects graph metainformation (<code>&lt;graphml&gt;</code>'s <code>&lt;key&gt;</code> elements): conversion of an attribute value to a string is done by dynamic properties in <code>dynamic_property-&gt;get_string()</code> (that is, the value is actually never converted by the writing function). </p> <p> On the other hand, <code>read_graphml</code> tries to use type info from <code>&lt;key&gt;</code> elements and converts a string to the specified type and then passes it to dynamic property map as a <code>boost::any</code> instance. If a property map is passed to dynamic_properties that has non-standard value_type (not in <code>boost::mutate_graph_impl::value_types</code> list), but still "supported", like <code>unsigned int</code>, the <code>read_graphml</code> first checks if value types match and then, because they are not, unconditionally <code>any_cast</code>'s to <code>std::string</code>, which fails with <code>bad_any_cast</code> being thrown. </p> <p> This is unfortunate - a user has a promise that some attribute types are supported during writing, but then she can't read it back to the same property map. </p> <p> On the contrary, <code>read_graphvis</code> doesn't try to convert an attribute value before passing it to <code>dynamic_property_map</code>, due to the fact that graphvis files contain no type information :). In its turn, a <code>dynamic_property_map</code> converts passed <code>std::string</code> to its value type successfully. </p> <p> Maybe a better strategy is: </p> <p> 1) in <code>write_graphml</code>, write attribute types as currently done. </p> <p> 2) in <code>read_graphml</code>, disregard attribute type information and convert string representations to values in a <code>dynamic_property_map</code>. A more sophisticated and maybe type-safe alternative is to use a more complicated logic and check <code>dynamic_property_map-&gt;value()</code> for every possible matching value type in <code>write_graphml::value_types</code> for a given type name from <code>write_graphml::type_names</code>. </p> Sergey Mitsyn <svm at jinr.ru> https://svn.boost.org/trac10/ticket/10105 https://svn.boost.org/trac10/ticket/10105 Report #10103: setprecision(0) does displays too many digits of a float128 Sat, 07 Jun 2014 12:38:29 GMT Wed, 14 Oct 2015 14:40:49 GMT <p> setprecision(0) is not honored for float128. Compare the display of a double and a float128 (default and fixed): </p> <pre class="wiki">0.1 0.123400000000000000000000000000000006 0 0.123400000000000000000000000000000006 </pre><p> This is produced with </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/multiprecision/float128.hpp&gt; int main() { double x = 0.1234; boost::multiprecision::float128 y = 0.1234Q; std::cout &lt;&lt; std::setprecision(0) &lt;&lt; x &lt;&lt; " " &lt;&lt; y &lt;&lt; "\n"; std::cout &lt;&lt; std::fixed &lt;&lt; x &lt;&lt; " " &lt;&lt; y &lt;&lt; "\n"; } </pre> Charles Karney <charles@…> https://svn.boost.org/trac10/ticket/10103 https://svn.boost.org/trac10/ticket/10103 Report #10102: dynamic_properties inconsistent usage of lexical_cast and stringstream Sat, 07 Jun 2014 11:09:13 GMT Sat, 07 Jun 2014 11:09:13 GMT <p> Hello, </p> <p> The <code>boost::dynamic_properties</code> is inconsistent with usage of <code>boost::lexical_cast</code> and <code>std::stringstream</code>. In file boost\property_map\dynamic_property_map.hpp, the function </p> <pre class="wiki">template&lt;typename Value&gt; inline Value read_value(const std::string&amp; value) </pre><p> uses <code>boost::lexical_cast</code>, while </p> <pre class="wiki">std::string dynamic_property_map_adaptor::get_string(const any&amp; key) </pre><p> uses <code>std::stringstream</code>. </p> <p> It is a problem, for example, if used together with a BGL's <code>boost::write_graphvis_dp</code> and <code>boost::read_graphvis</code> if <code>NaN</code> attribute values are written and read. With <code>std::stringstream</code> on my machine (Windows 7 + MSVC 12), NaN's are written as <code>"1.#QNAN"</code>, and lexical_cast produces and consumes <code>nan</code> and <code>NAN</code> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>. In such case <code>boost::bad_lexical_cast</code> is thrown whenever read_graphvis is called for graphviz file containing <code>NaN</code>s. </p> <p> Modifying <code>dynamic_property_map_adaptor::get_string</code> to use boost::lexical_cast seems to fix the issue with graph reading/writing. Though I'm not trying to use such files as an input for graphviz. </p> <p> Speaking about graphviz, docs seem not to define any restrictions on attribute values, and I haven't looked at the source code. Quick googling gave me [http:/_/comments.gmane.org/gmane.comp.video.graphviz/7062], which is not related to this case, but it is stated there that graphviz uses <code>atof()</code>, which is locale-dependent and feels messy. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> see boost/lexical_cast.hpp, function </p> <pre class="wiki">template &lt;class CharT, class T&gt; bool parse_inf_nan(const CharT* begin, const CharT* end, T&amp; value) </pre> Sergey Mitsyn <svm at jinr.ru> https://svn.boost.org/trac10/ticket/10102 https://svn.boost.org/trac10/ticket/10102 Report #10101: Failed to build Boost.Build engine Sat, 07 Jun 2014 03:33:42 GMT Sun, 06 Jul 2014 09:58:02 GMT <p> I tried to run bootstrap.bat to build boost, but got the following information: </p> <p> Failed to bootstrap the build engine Please consult bootstrap.log for furter diagnostics. </p> wu_tj@… https://svn.boost.org/trac10/ticket/10101 https://svn.boost.org/trac10/ticket/10101 Report #10096: Symlink needs to check SEARCH as well as LOCATE Thu, 05 Jun 2014 18:46:56 GMT Fri, 06 Jun 2014 22:46:41 GMT <p> AMDG </p> <p> On 06/02/2014 02:31 PM, Kcarr wrote: </p> <blockquote class="citation"> <p> I have found the cause of my problem but I am unsure of what it was added. In 1.54 in the virtual-target.jam file in the rule actualize-location (target) there was an added check at the beginning for scanner-target. </p> <blockquote> <p> if $(self.action) &amp;&amp;* ! $(is-scanner-target)* </p> </blockquote> <p> This new code causes LOCATE var to never be set. &lt;snip&gt; </p> <p> &lt;snip&gt; This seems to be a bug in the new build with using LOCATE in the symlink.jam file when it shouldnt be used and instead SEARCH var should be used. </p> </blockquote> <p> Symlink code needs to be update in ln rule to look in SEARCH as well as LOCATE </p> anoynamous https://svn.boost.org/trac10/ticket/10096 https://svn.boost.org/trac10/ticket/10096 Report #10094: xpressive requires update for range metafunction update Wed, 04 Jun 2014 19:54:06 GMT Wed, 04 Jun 2014 19:54:06 GMT <p> Boost.Range has been updated to make the range_iterator meta-functions work more easily with type hierarchies by adding an Enabler template parameter. </p> <p> Since Xpressive is forward declaring the range meta-functions with one parameter this causes compilation errors. </p> <p> Would you please update Xpressive to either avoid the forward declaration, or to match the updated signature? </p> Neil Groves https://svn.boost.org/trac10/ticket/10094 https://svn.boost.org/trac10/ticket/10094 Report #10090: [graph] missing documentation : member functions for bundled property in adjacency_list Wed, 04 Jun 2014 09:14:49 GMT Wed, 04 Jun 2014 09:14:49 GMT <p> In Bundled property's documentation, <code>operator[ ]</code> is documented. <a href="http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/bundles.html">http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/bundles.html</a> </p> <pre class="wiki">Map map; // load the map Map::vertex_descriptor v = *vertices(map).first; map[v].name = "Troy"; map[v].population = 49170; map[v].zipcodes.push_back(12180); </pre><p> But, In <code>adjacency_list</code> documentation is not. <a href="http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/adjacency_list.html">http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/adjacency_list.html</a> </p> <p> Should add follow member functions reference: </p> <pre class="wiki">// boost/graph/adjacency_list.hpp vertex_bundled&amp; operator[](vertex_descriptor v) { return get(vertex_bundle, *this)[v]; } const vertex_bundled&amp; operator[](vertex_descriptor v) const { return get(vertex_bundle, *this)[v]; } edge_bundled&amp; operator[](edge_descriptor e) { return get(edge_bundle, *this)[e]; } const edge_bundled&amp; operator[](edge_descriptor e) const { return get(edge_bundle, *this)[e]; } graph_bundled&amp; operator[](graph_bundle_t) { return get_property(*this); } graph_bundled const&amp; operator[](graph_bundle_t) const { return get_property(*this); } </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/10090 https://svn.boost.org/trac10/ticket/10090 Report #10089: constexpr support in units Tue, 03 Jun 2014 09:47:40 GMT Wed, 10 Jan 2018 20:39:45 GMT <p> There is currently no support for using units and quantities within constexpr functions. Annotating the constructors and operators with BOOST_CONSTEXPR where possible should be enough to allow this. </p> <p> I can provide a partial patch that enables constexpr support for the parts of the library that I'm using. Should I use trac or send a pull-request? The later is preferable for me. </p> gonzalobg88@… https://svn.boost.org/trac10/ticket/10089 https://svn.boost.org/trac10/ticket/10089 Report #10088: Null Pointer Deference in engine.ipp Tue, 03 Jun 2014 06:22:15 GMT Tue, 03 Jun 2014 06:22:15 GMT <p> <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/boost/asio/ssl/detail/impl/engine.ipp"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk/boost/asio/ssl/detail/impl/engine.ipp</a> </p> <p> In below code, ssl_ is checked to be non NUll (which is already done in costructor), which means it can be NULL, but passed to SSL_get_shutdown without NULL check. If it is passed to this function as NULL, it will crash. As ssl_ is already checked in constructor and there is no NULL check in other functions also, checking to not NULL in 214 is always true and hence can be avoided. Please apply the patch. </p> <pre class="wiki">212 // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the 213 // underlying transport is passed through. 214 if (ssl_ &amp;&amp; ssl_-&gt;version == SSL2_VERSION) 215 return ec; 216 217 // Otherwise, the peer should have negotiated a proper shutdown. 218 if ((::SSL_get_shutdown(ssl_) &amp; SSL_RECEIVED_SHUTDOWN) == 0) </pre> g.gupta@… https://svn.boost.org/trac10/ticket/10088 https://svn.boost.org/trac10/ticket/10088 Report #10086: Backwards compatibility to 1.42 adjacency list serialisation is broken Mon, 02 Jun 2014 13:55:55 GMT Mon, 02 Jun 2014 13:55:55 GMT <p> I have an archive created with boost serialization of an adjacency list which was created with boost 1.42. When switching to Boost 1.55, the adjacency list cannot be deserialised from the archive anymore. </p> <p> I identified commit <a class="changeset" href="https://svn.boost.org/trac10/changeset/77549" title="Changed property lookup code to simplify graph implementations (remove ...">[77549]</a> which probably broke the serialisation: It appears that the vertex and edges are not wrapped in a 'property' anymore, but stored directly in the adjacency list. Additionaly, in <a class="changeset" href="https://svn.boost.org/trac10/changeset/77615" title="Added graph property to serialization, and made default graph property ...">[77615]</a> a new member "graph_property" was added to the serialisation code. </p> <p> Unfortunately, the serialisation version number of adjacency list was not incremented and the code in 'boost/graph/adj_list_serialize.hpp' was not changed accordingly. </p> <p> Furthermore in 'boost/pending/property_serialize.hpp', the serialisation order of 'value' and 'base' was switched, again without changing the class serialisation version number. </p> <p> I was able to load the old archive by making following changes: </p> <p> <strong> adj_list_serialize.hpp </strong> </p> <pre class="wiki">template&lt;class Archive, class OEL, class VL, class D, class VP, class EP, class GP, class EL&gt; inline void load( Archive &amp; ar, boost::adjacency_list&lt;OEL,VL,D,VP,EP,GP,EL&gt; &amp;graph, const unsigned int /* file_version */ ){ typedef adjacency_list&lt;OEL,VL,D,VP,EP,GP,EL&gt; Graph; typedef typename graph_traits&lt;Graph&gt;::vertex_descriptor Vertex; typedef typename graph_traits&lt;Graph&gt;::edge_descriptor Edge; unsigned int V; ar &gt;&gt; BOOST_SERIALIZATION_NVP(V); unsigned int E; ar &gt;&gt; BOOST_SERIALIZATION_NVP(E); std::vector&lt;Vertex&gt; verts(V); int i = 0; while(V-- &gt; 0){ // &gt;&gt;&gt;&gt;&gt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH if( ar.get_library_version() &lt;= 7 /* not sure about the 7, could be a greater version */){ Vertex v = add_vertex(graph); boost::property&lt;boost::vertex_bundle_t, VP&gt; vertexAsProperty; ar &gt;&gt; vertexAsProperty; graph[v] = vertexAsProperty.m_value; verts[i++] = v; } else // &lt;&lt;&lt;&lt;&lt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH { Vertex v = add_vertex(graph); verts[i++] = v; ar &gt;&gt; serialization::make_nvp("vertex_property", get(vertex_all_t(), graph, v) ); } } while(E-- &gt; 0){ // &gt;&gt;&gt;&gt;&gt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH if( ar.get_library_version() &lt;= 7 /* not sure about the 7, could be a greater version */){ int u; int v; ar &gt;&gt; BOOST_SERIALIZATION_NVP(u); ar &gt;&gt; BOOST_SERIALIZATION_NVP(v); Edge e; bool inserted; boost::tie(e,inserted) = add_edge(verts[u], verts[v], graph); boost::property&lt;boost::edge_bundle_t, EP&gt; edgeAsProperty; ar &gt;&gt; edgeAsProperty; graph[e] = edgeAsProperty.m_value; } else // &lt;&lt;&lt;&lt;&lt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH { int u; int v; ar &gt;&gt; BOOST_SERIALIZATION_NVP(u); ar &gt;&gt; BOOST_SERIALIZATION_NVP(v); Edge e; bool inserted; boost::tie(e,inserted) = add_edge(verts[u], verts[v], graph); ar &gt;&gt; serialization::make_nvp("edge_property", get(edge_all_t(), graph, e) ); } } // &gt;&gt;&gt;&gt;&gt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH if(are_Adjacency_list_and_boost_property_in_old_format(ar) == false) ar &gt;&gt; serialization::make_nvp("graph_property", get_property(graph, graph_all_t()) ); // &lt;&lt;&lt;&lt;&lt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH } </pre><p> <strong> property_serialize.hpp </strong> </p> <pre class="wiki">template&lt;class Archive, class Tag, class T, class Base&gt; void serialize(Archive&amp; ar, property&lt;Tag, T, Base&gt;&amp; prop, const unsigned int /*version*/) { // &gt;&gt;&gt;&gt;&gt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH if( ar.get_library_version() &lt;= 7 /* not sure about the 7, could be a greater version */){ ar &amp; serialization::make_nvp( "property_base" , prop.m_base); ar &amp; serialization::make_nvp( "property_value" , prop.m_value ); } else // &lt;&lt;&lt;&lt;&lt; BOOST_ADJ_LIST_1_42_SERIALIZATION_PATCH { ar &amp; serialization::make_nvp( "property_value" , prop.m_value ); ar &amp; serialization::make_nvp( "property_base" , prop.m_base ); } } </pre> oluedecke@… https://svn.boost.org/trac10/ticket/10086 https://svn.boost.org/trac10/ticket/10086 Report #10083: signals2 fails to compile under Intel Parallel Composer XE Fri, 30 May 2014 20:59:20 GMT Mon, 09 Jun 2014 02:28:20 GMT <p> I'm trying to compile the following file: </p> <pre class="wiki">class Order {}; class Foo { signal&lt;void(Order*)&gt; beforeOrder; void test(Order* o) { beforeOrder(o); } }; int main(int argc, char* argv[]) { Order o; Foo foo; return 0; } </pre><p> Here's the compiler output I'm getting: </p> <pre class="wiki">1&gt;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory(348): warning C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' 1&gt; C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory(333) : see declaration of 'std::_Uninitialized_copy0' 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(192) : see reference to function template instantiation '_FwdIt std::uninitialized_copy&lt;I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(_InIt,_InIt,_FwdIt)' being compiled 1&gt; with 1&gt; [ 1&gt; _FwdIt=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; , _InIt=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(179) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_rai&lt;I,false&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,const boost::integral_constant&lt;bool,false&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(179) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_rai&lt;I,false&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,const boost::integral_constant&lt;bool,false&gt; &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(205) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;I&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,std::random_access_iterator_tag)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(205) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;I&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *,std::random_access_iterator_tag)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(289) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(289) : see reference to function template instantiation 'void boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::copy_impl&lt;boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;*&gt;(I,I,boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; , I=boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; * 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(282) : while compiling class template member function 'boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::move_to_new_buffer(unsigned __int64,const boost::false_type &amp;)' 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/auto_buffer.hpp(304) : see reference to function template instantiation 'boost::variant&lt;boost::shared_ptr&lt;void&gt;,boost::signals2::detail::foreign_void_shared_ptr,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt; *boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;::move_to_new_buffer(unsigned __int64,const boost::false_type &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/slot_call_iterator.hpp(40) : see reference to class template instantiation 'boost::signals2::detail::auto_buffer&lt;boost::signals2::detail::void_shared_ptr_variant,boost::signals2::detail::store_n_objects&lt;10&gt;,boost::signals2::detail::default_grow_policy,std::allocator&lt;_Ty&gt;&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; _Ty=boost::signals2::detail::void_shared_ptr_variant 1&gt; ] 1&gt; c:\boost\boost/signals2/detail/slot_call_iterator.hpp(44) : see reference to class template instantiation 'boost::signals2::detail::slot_call_iterator_cache&lt;ResultType,Function&gt;' being compiled </pre> anonymous https://svn.boost.org/trac10/ticket/10083 https://svn.boost.org/trac10/ticket/10083 Report #10079: libboost_python DSO should link to libpython Thu, 29 May 2014 18:11:00 GMT Thu, 29 May 2014 18:11:00 GMT <p> Shared libraries for Boost.Python are not linked to Python shared libraries. libs/python/build/Jamfile.v2 contains the following explanation why that's so: </p> <pre class="wiki"> # On *nix we never link libboost_python to libpython. When # extending Python, all Python symbols are provided by the # Python interpreter executable. When embedding Python, the # client executable is expected to explicitly link to # /python//python (the target representing libpython) itself. </pre><p> I especially wonder about the "executable is expected to explicitly link" bit. Where does this expectation come from? On Linux it is generally business of the library to care about its own dependencies. Python is probably something of a borderline case in this, as a Boost.Python client presumably knows they will interface with Python eventually. Still, it is possible to create a Boost.Python client without mentioning any of Python per se. Thus linking in libboost_python should be all that's necessary. </p> <p> The obvious patch is as follows: </p> <pre class="wiki">diff -up boost_1_55_0/libs/python/build/Jamfile.v2\~ boost_1_55_0/libs/python/build/Jamfile.v2 --- boost_1_55_0/libs/python/build/Jamfile.v2~ 2010-07-13 00:29:41.000000000 +0200 +++ boost_1_55_0/libs/python/build/Jamfile.v2 2014-05-29 19:16:31.238412843 +0200 @@ -122,7 +122,7 @@ rule lib_boost_python ( is-py3 ? ) # python_for_extensions is a target defined by Boost.Build to # provide the Python include paths, and on Windows, the Python # import library, as usage requirements. - [ cond [ python.configured ] : &lt;library&gt;/python//python_for_extensions ] + [ cond [ python.configured ] : &lt;library&gt;/python//python ] # we prevent building when there is no python available # as it's not possible anyway, and to cause dependents to </pre><p> However tools/build/v2/tools/python.jam says: </p> <pre class="wiki"> # On *nix, we do not want to link either Boost.Python or Python extensions # to libpython, because the Python interpreter itself provides all those # symbols. If we linked to libpython, we would get duplicate symbols. So # declare two targets -- one for building extensions and another for # embedding. </pre><p> Do you know any details about the duplicate symbol issue? I track this code down to a commit from Mon Dec 6 14:03:25 2004 by Vladimir Prus, but the commit message doesn't explain anything. </p> <p> On Linux at least, there's no problem bringing in a dynamic library "several times". Even with static libraries it's not clear to me how the duplication would occur. But possibly I'm missing something obvious. I can however make the above patch sensitive to OS if you think the issue is real on other systems. </p> pmachata@… https://svn.boost.org/trac10/ticket/10079 https://svn.boost.org/trac10/ticket/10079 Report #10078: Incomplete API with respect to file related dates (cration, modification, access) Thu, 29 May 2014 09:38:36 GMT Thu, 29 May 2014 12:27:29 GMT <p> The following features are missing: </p> <ul><li>read file's creation date </li><li>read file's last access date </li><li>read file's creation date with a precision higher than seconds </li><li>read file's last access date with a precision higher than seconds </li><li>read file's last access date with a precision higher than seconds </li><li>allow to detect capabilities of the underlying filesystem (e.g. support for creation and last access date that are not supported by all systems, or finding out date precision supported by the current filesystem) </li></ul><p> Possible implementation notes: </p> <ul><li>How to get high precision file date on Linux </li></ul><p> <a class="ext-link" href="http://stackoverflow.com/questions/13382695/how-to-get-last-modification-time-of-a-file-with-epoch-time-format-precision-mi"><span class="icon">​</span>http://stackoverflow.com/questions/13382695/how-to-get-last-modification-time-of-a-file-with-epoch-time-format-precision-mi</a> </p> <ul><li>How to get high precision file date on Windows </li></ul><p> <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/aa364946.aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/aa364946.aspx</a> </p> <p> Example of current use of this feature in existing applications: </p> <p> ls --full-time </p> David Lastovicka <david@…> https://svn.boost.org/trac10/ticket/10078 https://svn.boost.org/trac10/ticket/10078 Report #10075: boost::make_filter_iterator(...) calls Predicate(Predicate &) instead of copy constructor Wed, 28 May 2014 12:48:58 GMT Wed, 28 May 2014 12:48:58 GMT <p> Wrong parameter type is used. </p> jaak+boost@… https://svn.boost.org/trac10/ticket/10075 https://svn.boost.org/trac10/ticket/10075 Report #10074: Linker Error in Debug mode VS2010, chrono lib Tue, 27 May 2014 10:41:25 GMT Tue, 27 May 2014 10:41:25 GMT <p> When the current release of boost 1.55 for MSVC 32 bit is installed, my project includes chrono and compiles fine in release mode. In debug mode, haveing set the same directories for the libraries, the linker stopps with the following error: </p> <p> 1&gt;LINK : fatal error LNK1104: Datei "libboost_chrono-vc100-mt-sgd-1_52.lib" kann nicht geöffnet werden. </p> <p> (sorry for the german, but it means that the file cannot be opened.) And acutally it is not there, because it should be version 1_55 and not 1_52. I have not installed a previous version before. I'm linking static. </p> <p> best regards, </p> <p> Thomas </p> thomas.schreiber.privat@… https://svn.boost.org/trac10/ticket/10074 https://svn.boost.org/trac10/ticket/10074 Report #10072: filtering_stream::size() is not const Tue, 27 May 2014 08:32:14 GMT Sat, 21 Jan 2017 16:39:57 GMT <p> According to the documentation at <a href="http://www.boost.org/doc/libs/1_55_0/libs/iostreams/doc/classes/filtering_stream.html">http://www.boost.org/doc/libs/1_55_0/libs/iostreams/doc/classes/filtering_stream.html</a>, filtering_stream::size() should be const, but it is declared non-const. The implementation does not change the class (it calls the const metzhod chain_-&gt;size()). Therefore I believe that the non-constness is an oversight. Please make size() const to match the documentation. </p> Georg Baum <Georg.Baum@…> https://svn.boost.org/trac10/ticket/10072 https://svn.boost.org/trac10/ticket/10072 Report #10071: [container] flat_map::insert() is ambiguous if used with initializer lists Mon, 26 May 2014 09:43:42 GMT Sat, 09 Jan 2016 18:35:02 GMT <p> boost::container::flat_map&lt; unsigned int, unsigned int &gt; foo; foo.insert( { 1u, 1u } ); </p> <p> Doesn't fly, since it can either convert to std::pair&lt;&gt; or boost::container_detail::pair&lt;&gt;. </p> Sebastian Karlsson <sebastian@…> https://svn.boost.org/trac10/ticket/10071 https://svn.boost.org/trac10/ticket/10071 Report #10065: wait_any return with -1 Wed, 21 May 2014 13:20:42 GMT Wed, 21 May 2014 13:20:42 GMT <p> I have a small example, where every process send his rank to rank 0. The process with rank 0, should receive with <em>irecv</em> every message and wait for it with <em>wait_any</em>. But the <em>wait_any</em> function returns with -1. I have seen two other tickets, which are marked as fixed/ solved. I think they are not solved. If they are solve the documentation should be changed, because if I make the same example with MPI_Waitany, the result is completely different. </p> <pre class="wiki">#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;unistd.h&gt; #include &lt;boost/mpi.hpp&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;boost/serialization/string.hpp&gt; #define MAXPROC 16 /* Max number of procsses */ int main(int argc, char* argv[]) { int i, np, me, index; const int tag = 42; /* Tag value for communication */ const int root = 0; /* Root process in broadcast */ boost::mpi::status status; /* Status object for non-blocing receive */ boost::mpi::request recv_req[MAXPROC]; /* Request objects for non-blocking receive */ int myname[5]; /* Local host name string */ int hostname[5]; /* Received host names */ int namelen; boost::mpi::environment env; /* Initialize MPI */ boost::mpi::communicator world; /* Initialize MPI */ np = world.size(); /* Get nr of processes */ me = world.rank(); /* Get own identifier */ if (me == 0) { /* Process 0 does this */ std::cout &lt;&lt;"Process " &lt;&lt; me &lt;&lt; " broadcasting to all processes\n"; boost::mpi::broadcast(world, me, 0); std::cout &lt;&lt;"Process " &lt;&lt; me&lt;&lt; " receiving from all other processes\n"; for (i=1; i&lt;np; i++) { recv_req[i] = world.irecv(i,i,hostname[i]); } for (i=1; i&lt;np; i++) { status = wait_any(recv_req,recv_req +5 ).first; std::cout&lt;&lt;"Received a message from process "&lt;&lt; status.source() &lt;&lt; " tag " &lt;&lt; status.tag() &lt;&lt; std::endl; } std::cout &lt;&lt;"Ready\n"; } else { int y; boost::mpi::broadcast(world, y, 0); sleep(me%3+1); MPI_Send (myname, namelen, MPI_CHAR, 0, tag, world); } world.barrier(); ~world; return 0; } </pre> florian <boost_error_wait88@…> https://svn.boost.org/trac10/ticket/10065 https://svn.boost.org/trac10/ticket/10065 Report #10064: generate_uniform_real may go into infinite loop Wed, 21 May 2014 12:24:03 GMT Thu, 07 Aug 2014 23:43:39 GMT <p> See uniform_real_distribution.hpp: </p> <p> template&lt;class Engine, class T&gt; T generate_uniform_real( </p> <blockquote> <p> Engine&amp; eng, T min_value, T max_value, boost::mpl::true_ /<strong> is_integral&lt;Engine::result_type&gt; */) </strong></p> </blockquote> <p> { </p> <blockquote> <p> for(;;) { </p> <blockquote> <p> typedef T result_type; typedef typename Engine::result_type base_result; result_type numerator = static_cast&lt;T&gt;(subtract&lt;base_result&gt;()(eng(), (eng.min)())); result_type divisor = static_cast&lt;T&gt;(subtract&lt;base_result&gt;()((eng.max)(), (eng.min)())) + 1; BOOST_ASSERT(divisor &gt; 0); BOOST_ASSERT(numerator &gt;= 0 &amp;&amp; numerator &lt;= divisor); T result = numerator / divisor * (max_value - min_value) + min_value; if(result &lt; max_value) return result; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> Please add a "BOOST_ASSERT(max_value &gt; min_value);". </p> <p> If one declares something like </p> <blockquote> <p> boost::random::mt19937 mt; boost::random::uniform_real_distribution&lt;double&gt; dist(0.0, 0.0); </p> </blockquote> <p> dist(mt) makes generate_uniform_real go into an infinite loop. </p> <p> Thank you and best regards. </p> Markus Faerber <mf@…> https://svn.boost.org/trac10/ticket/10064 https://svn.boost.org/trac10/ticket/10064 Report #10063: Option should exist to include ublas entirely from headers without linking to serialization Wed, 21 May 2014 05:38:31 GMT Wed, 21 May 2014 05:38:31 GMT <p> If you include certain ublas files which you wish to include as headers only without linking to prebuilt libs, you get link errors wanting to link to prebuild serialization library. </p> <p> This problem occurred for example when I included the following in my application: </p> <pre class="wiki">#include &lt;boost/numeric/ublas/fwd.hpp&gt; #include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/vector_sparse.hpp&gt; #include &lt;boost/numeric/ublas/matrix.hpp&gt; #include &lt;boost/numeric/ublas/matrix_sparse.hpp&gt; #include &lt;boost/numeric/ublas/storage_sparse.hpp&gt; #include &lt;boost/numeric/ublas/banded.hpp&gt; #include &lt;boost/numeric/ublas/triangular.hpp&gt; #include &lt;boost/numeric/ublas/blas.hpp&gt; #include &lt;boost/numeric/ublas/lu.hpp&gt; </pre><p> The attached patch introduces an option BOOST_UBLAS_DISABLE_SERIALIZATION which (if defined using a #define) excludes the serialization code. </p> <p> The serialization code is unwanted on my platform for ublas objects, as the platform is obscure and difficult to build the serialization library for it. </p> Andrew Medlin <andrew@…> https://svn.boost.org/trac10/ticket/10063 https://svn.boost.org/trac10/ticket/10063 Report #10055: visit_current_states can't be called for const object Fri, 16 May 2014 06:31:52 GMT Fri, 16 May 2014 06:31:52 GMT <p> Is there any reason the back::state_machine::visit_current_states() method is not const? I've added const to it and to back::state_machine::visitor_fct_helper::execute() and it didn't break compilation. </p> <p> Regards, Marcin Pytel </p> mkp https://svn.boost.org/trac10/ticket/10055 https://svn.boost.org/trac10/ticket/10055 Report #10053: 1.55 boost/crc warning clang -Wshadow Thu, 15 May 2014 08:58:58 GMT Sun, 18 May 2014 18:39:24 GMT <p> On 1.55 I observed this warning with clang -Wshadow </p> <p> boost/crc.hpp:758:20: Declaration shadows a static data member of 'crc_basic&lt;Bits&gt;' </p> adrien.courdavault@… https://svn.boost.org/trac10/ticket/10053 https://svn.boost.org/trac10/ticket/10053 Report #10052: Runtime check of IEEE-754 rounding modes support Thu, 15 May 2014 04:04:02 GMT Thu, 15 May 2014 04:04:02 GMT <p> Interval Arithmetic Library has only compile time check of IEEE-754 rounding modes support. Unfortunately it is insufficient for instance when a program is running under Valgrind. </p> <p> It is quite simple and inexpensive to add some runtime check like the one used in CGAL ([www.cgal.org]) <em>CGAL::Interval_nt::Test_runtime_rounding_modes</em>. </p> andrey.a.davydov@… https://svn.boost.org/trac10/ticket/10052 https://svn.boost.org/trac10/ticket/10052 Report #10050: libboost-all-dev available on ARMv7 Tue, 13 May 2014 19:31:15 GMT Sun, 18 May 2014 18:39:50 GMT <p> We are working on a project that requires the use of your package libboost-all-dev, however it is only available for i386 and amd64 architectures. I need it for an ARMv7 architecture 32bit. </p> spider.kiehtan@… https://svn.boost.org/trac10/ticket/10050 https://svn.boost.org/trac10/ticket/10050 Report #10047: Using Boost:Interprocess on Android Mon, 12 May 2014 15:46:39 GMT Fri, 16 Mar 2018 01:47:33 GMT <p> It is not a bug, but it might safe some time to others using boost:interprocess library on Android. </p> <p> This library usually uses a temporary directory to store the data that is being shared among processes. The directory path used for this can be found on os_file_functions.hpp-:get_temporary_path. </p> <p> The thing is that if you do not modify this file and add ´/sdcard´ to the possible paths that your process can use, then you cannot share information among android Apps due to the permission restrictions that exist for processes on android storing data outside their sandbox. </p> <p> It will be a good feature to have boost compile with this option on. Or provide a static method to add my own Temporary Path. </p> <p> Note: I am not completely sure if something exists to solve this problem. </p> <p> Regards, </p> anonymous https://svn.boost.org/trac10/ticket/10047 https://svn.boost.org/trac10/ticket/10047 Report #10045: boost::numeric::symmetric_matrix serialization code missing Mon, 12 May 2014 13:36:47 GMT Sun, 02 Apr 2017 10:57:36 GMT <p> boost::numeric::matrix&lt;&gt; and boost::numeric::vector&lt;&gt; have serialization implemented. boost::numeric::symmetric_matrix&lt;&gt; does not implement serialization: </p> <p> /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: error: ‘class boost::numeric::ublas::symmetric_matrix&lt;double&gt;’ has no member named ‘serialize’ </p> <blockquote> <p> t.serialize(ar, file_version); <sup> </sup></p> </blockquote> maxim.yegorushkin@… https://svn.boost.org/trac10/ticket/10045 https://svn.boost.org/trac10/ticket/10045 Report #10044: ublas serialization causes no end of warnings Mon, 12 May 2014 13:29:50 GMT Sun, 18 May 2014 18:40:21 GMT <p> boost/numeric/ublas/storage.hpp:276 causes <code>gcc-4.8.2 -Wall -Wextra</code> spit no end of warnings because of the unused <code>version</code> function argument: </p> <p> /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/storage.hpp: In instantiation of ‘void boost::numeric::ublas::unbounded_array&lt;T, ALLOC&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = double; ALLOC = std::allocator&lt;double&gt;]’: /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:192:5: required from ‘void boost::archive::detail::iserializer&lt;Archive, T&gt;::load_object_data(boost::archive::detail::basic_iarchive&amp;, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:120:1: required from ‘class boost::archive::detail::iserializer&lt;boost::archive::binary_iarchive, boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:387:13: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::load_standard::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:439:28: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:592:24: required from ‘void boost::archive::load(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_iarchive.hpp:66:40: required from ‘void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_iarchive.hpp:70:7: required from ‘void boost::archive::basic_binary_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_iarchive_impl.hpp:50:9: required from ‘void boost::archive::binary_iarchive_impl&lt;Archive, Elem, Tr&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&gt;&gt;(T&amp;) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/nvp.hpp:87:9: required from ‘void boost::serialization::nvp&lt;T&gt;::load(Archivex&amp;, unsigned int) [with Archivex = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:101:9: required from ‘static void boost::serialization::access::member_load(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/split_member.hpp:54:52: required from ‘static void boost::serialization::detail::member_loader&lt;Archive, T&gt;::invoke(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/split_member.hpp:69:38: required from ‘void boost::serialization::split_member(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/nvp.hpp:89:5: required from ‘void boost::serialization::nvp&lt;T&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:377:13: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::load_only::invoke(Archive&amp;, const T&amp;) [with T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:439:28: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:592:24: required from ‘void boost::archive::load(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_iarchive; T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_iarchive.hpp:66:40: required from ‘void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_iarchive.hpp:70:7: required from ‘void boost::archive::basic_binary_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_iarchive_impl.hpp:50:9: required from ‘void boost::archive::binary_iarchive_impl&lt;Archive, Elem, Tr&gt;::load_override(T&amp;, int) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&gt;&gt;(T&amp;) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:67:32: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&amp;(T&amp;) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/matrix.hpp:1087:16: required from ‘void boost::numeric::ublas::matrix&lt;T, L, A&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = double; L = boost::numeric::ublas::basic_row_major&lt;&gt;; A = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:192:5: required from ‘void boost::archive::detail::iserializer&lt;Archive, T&gt;::load_object_data(boost::archive::detail::basic_iarchive&amp;, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:120:1: required from ‘class boost::archive::detail::iserializer&lt;boost::archive::binary_iarchive, boost::numeric::ublas::matrix&lt;double&gt; &gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:387:13: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::load_standard::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:439:28: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:592:24: required from ‘void boost::archive::load(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_iarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_iarchive.hpp:66:40: required from ‘void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_iarchive.hpp:70:7: required from ‘void boost::archive::basic_binary_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_iarchive_impl.hpp:50:9: required from ‘void boost::archive::binary_iarchive_impl&lt;Archive, Elem, Tr&gt;::load_override(T&amp;, int) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&gt;&gt;(T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:67:32: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&amp;(T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_iarchive]’ /home/max/otsquant/src/c++/data_access/data_access.cc:217:12: required from ‘void {anonymous}::FactorModel::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_iarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:192:5: required from ‘void boost::archive::detail::iserializer&lt;Archive, T&gt;::load_object_data(boost::archive::detail::basic_iarchive&amp;, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:120:1: required from ‘class boost::archive::detail::iserializer&lt;boost::archive::binary_iarchive, {anonymous}::FactorModel&gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:387:13: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::load_standard::invoke(Archive&amp;, const T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:439:28: required from ‘static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/iserializer.hpp:592:24: required from ‘void boost::archive::load(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_iarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_iarchive.hpp:66:40: required from ‘void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_iarchive.hpp:70:7: required from ‘void boost::archive::basic_binary_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_iarchive_impl.hpp:50:9: required from ‘void boost::archive::binary_iarchive_impl&lt;Archive, Elem, Tr&gt;::load_override(T&amp;, int) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&gt;&gt;(T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_iarchive]’ /home/max/otsquant/src/c++/data_access/cache_file.h:102:28: required from ‘bool ot::data_access::CacheFile::try_loading(T*) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /home/max/otsquant/src/c++/data_access/data_access.cc:783:43: required from here /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/storage.hpp:276:14: warning: unused parameter ‘version’ [-Wunused-parameter] </p> <blockquote> <p> void serialize(Archive &amp; ar, const unsigned int version) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/storage.hpp: In instantiation of ‘void boost::numeric::ublas::unbounded_array&lt;T, ALLOC&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = double; ALLOC = std::allocator&lt;double&gt;]’: /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:152:5: required from ‘void boost::archive::detail::oserializer&lt;Archive, T&gt;::save_object_data(boost::archive::detail::basic_oarchive&amp;, const void*) const [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:101:1: required from ‘class boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:253:13: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::save_standard::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:308:28: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:525:24: required from ‘void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_oarchive; T = const boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_oarchive.hpp:69:40: required from ‘void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = const boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_oarchive.hpp:75:7: required from ‘void boost::archive::basic_binary_oarchive&lt;Archive&gt;::save_override(const T&amp;, int) [with T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_oarchive_impl.hpp:51:9: required from ‘void boost::archive::binary_oarchive_impl&lt;Archive, Elem, Tr&gt;::save_override(T&amp;, int) [with T = const boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:63:9: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = const boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/nvp.hpp:79:9: required from ‘void boost::serialization::nvp&lt;T&gt;::save(Archivex&amp;, unsigned int) const [with Archivex = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:93:9: required from ‘static void boost::serialization::access::member_save(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/split_member.hpp:43:52: required from ‘static void boost::serialization::detail::member_saver&lt;Archive, T&gt;::invoke(Archive&amp;, const T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/split_member.hpp:69:38: required from ‘void boost::serialization::split_member(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/nvp.hpp:89:5: required from ‘void boost::serialization::nvp&lt;T&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:245:13: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::save_only::invoke(Archive&amp;, const T&amp;) [with T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:308:28: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, const T&amp;) [with T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:525:24: required from ‘void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_oarchive; T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_oarchive.hpp:69:40: required from ‘void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_oarchive.hpp:75:7: required from ‘void boost::archive::basic_binary_oarchive&lt;Archive&gt;::save_override(const T&amp;, int) [with T = boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_oarchive_impl.hpp:51:9: required from ‘void boost::archive::binary_oarchive_impl&lt;Archive, Elem, Tr&gt;::save_override(T&amp;, int) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:63:9: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:71:35: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&amp;(T&amp;) [with T = const boost::serialization::nvp&lt;boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt; &gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/matrix.hpp:1087:16: required from ‘void boost::numeric::ublas::matrix&lt;T, L, A&gt;::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = double; L = boost::numeric::ublas::basic_row_major&lt;&gt;; A = boost::numeric::ublas::unbounded_array&lt;double, std::allocator&lt;double&gt; &gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:152:5: required from ‘void boost::archive::detail::oserializer&lt;Archive, T&gt;::save_object_data(boost::archive::detail::basic_oarchive&amp;, const void*) const [with Archive = boost::archive::binary_oarchive; T = boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:101:1: required from ‘class boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, boost::numeric::ublas::matrix&lt;double&gt; &gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:253:13: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::save_standard::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:308:28: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, const T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:525:24: required from ‘void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_oarchive; T = const boost::numeric::ublas::matrix&lt;double&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_oarchive.hpp:69:40: required from ‘void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = const boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_oarchive.hpp:75:7: required from ‘void boost::archive::basic_binary_oarchive&lt;Archive&gt;::save_override(const T&amp;, int) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_oarchive_impl.hpp:51:9: required from ‘void boost::archive::binary_oarchive_impl&lt;Archive, Elem, Tr&gt;::save_override(T&amp;, int) [with T = const boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:63:9: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = const boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:71:35: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&amp;(T&amp;) [with T = boost::numeric::ublas::matrix&lt;double&gt;; Archive = boost::archive::binary_oarchive]’ /home/max/otsquant/src/c++/data_access/data_access.cc:217:12: required from ‘void {anonymous}::FactorModel::serialize(Archive&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/access.hpp:118:9: required from ‘static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:69:69: required from ‘void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/serialization/serialization.hpp:128:27: required from ‘void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::binary_oarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:152:5: required from ‘void boost::archive::detail::oserializer&lt;Archive, T&gt;::save_object_data(boost::archive::detail::basic_oarchive&amp;, const void*) const [with Archive = boost::archive::binary_oarchive; T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:101:1: required from ‘class boost::archive::detail::oserializer&lt;boost::archive::binary_oarchive, {anonymous}::FactorModel&gt;’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:253:13: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::save_standard::invoke(Archive&amp;, const T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:308:28: required from ‘static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, const T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/oserializer.hpp:525:24: required from ‘void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::binary_oarchive; T = const {anonymous}::<a class="missing wiki">FactorModel</a>]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/common_oarchive.hpp:69:40: required from ‘void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = const {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/basic_binary_oarchive.hpp:75:7: required from ‘void boost::archive::basic_binary_oarchive&lt;Archive&gt;::save_override(const T&amp;, int) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/binary_oarchive_impl.hpp:51:9: required from ‘void boost::archive::binary_oarchive_impl&lt;Archive, Elem, Tr&gt;::save_override(T&amp;, int) [with T = const {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive; Elem = char; Tr = std::char_traits&lt;char&gt;]’ /usr/local/ots/4/boost-1.55.0/include/boost/archive/detail/interface_oarchive.hpp:63:9: required from ‘Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = const {anonymous}::<a class="missing wiki">FactorModel</a>; Archive = boost::archive::binary_oarchive]’ /home/max/otsquant/src/c++/data_access/cache_file.h:116:32: required from ‘void ot::data_access::CacheFile::save(const T&amp;) [with T = {anonymous}::<a class="missing wiki">FactorModel</a>]’ /home/max/otsquant/src/c++/data_access/data_access.cc:790:35: required from here /usr/local/ots/4/boost-1.55.0/include/boost/numeric/ublas/storage.hpp:276:14: warning: unused parameter ‘version’ [-Wunused-parameter] </p> maxim.yegorushkin@… https://svn.boost.org/trac10/ticket/10044 https://svn.boost.org/trac10/ticket/10044 Report #10042: anonymous enum problem (gcc4.4.7) in asio/completion_condition.hpp Sun, 11 May 2014 21:11:49 GMT Sun, 11 May 2014 21:11:49 GMT <p> A similar problem (anonymous enum) as described in </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6362"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6362</a> </p> <p> is in asio/completion_condition.hpp (git master). </p> <p> This prevents code using asio::spawn to compile when using gcc4.4.7, e.g., asio/example/cpp03/spawn/echo_server.cpp </p> <pre class="wiki">asio&gt; git diff diff --git a/include/boost/asio/completion_condition.hpp b/include/boost/asio/completion_condition.hpp index bdc041c..372e224 100644 --- a/include/boost/asio/completion_condition.hpp +++ b/include/boost/asio/completion_condition.hpp @@ -26,7 +26,7 @@ namespace asio { namespace detail { // The default maximum number of bytes to transfer in a single operation. -enum { default_max_transfer_size = 65536 }; +enum _dummy_max_transfer_size_type_ { default_max_transfer_size = 65536 }; // Adapt result of old-style completion conditions (which had a bool result // where true indicated that the operation was complete). </pre> hcab14@… https://svn.boost.org/trac10/ticket/10042 https://svn.boost.org/trac10/ticket/10042 Report #10039: library_status fails invalid bin directory structure Sun, 11 May 2014 12:13:19 GMT Sat, 26 Aug 2017 15:50:44 GMT <p> When I run tools/regression/src/library_test_all.sh on Boost 1.55, it fails to generate proper reports for many libraries. The library_status.html generated for those libraries has a header but no results table. The error message from library_status is the following: </p> <pre class="wiki">**** exception(205): std::string: invalid bin directory structure ******** errors detected; see standard output for details ******** </pre><p> One directory where it fails is bin.v2\libs\asio\test\generic_basic_endpoint.test\qcc-arm_4.4.2_0x\debug\debug-symbols-off\target-os-qnxnto\threading-multi. It contains the files generic_basic_endpoint, generic_basic_endpoint.test and test_log.xml as well as the directory generic which contains the files basic_endpoint.o and test_log.xml. </p> <p> The testing script was started as follows: C:\Arbete\boost\boost_1_55_0&gt;tools\regression\src\library_test_all.sh toolset=qcc-arm_4.4.2_0x testing.launcher=z:\boost-kompilering\remote-test.bat target-os=qnxnto debug-symbols=off -l240 -j8 2&gt;&amp;1 </p> <p> I've verified that the problem remains on the current git develop branch (commit 195baf8a), running on Ubuntu. Full output and command line in the attached text file. </p> <p> Googling for the error message turns up results from august last year with no solution. </p> Niklas Angare <li51ckf02@…> https://svn.boost.org/trac10/ticket/10039 https://svn.boost.org/trac10/ticket/10039 Report #10037: process_jam_log can't open output file when using library_test_all.sh Sat, 10 May 2014 17:01:03 GMT Sat, 10 May 2014 17:01:03 GMT <p> When I run tools/regression/src/library_test_all.sh on Boost 1.55, it fails to generate proper reports for many libraries. process_jam_log outputs messages like this: </p> <pre class="wiki">*****Warning - can't open output file: c:/Arbete\boost\boost_1_55_0\../../bin.v2/libs/atomic/test/native_api.test/qcc-arm_4.4.2_0x/debug/link-static/target-os-qnxnto/threading-multi\test_log.xml </pre><p> The "../../" shouldn't be there as it escapes BOOST_ROOT. The problem seems to be that paths in bjam.log are relative to sub-directories of BOOST_ROOT/libs. The function parse_skipped_msg_aux() appears to handle the case where paths are relative to immediate sub-directories of BOOST_ROOT, such as BOOST_ROOT/status. The attached patch extends it to handle arbitrarily deep sub-directories. </p> Niklas Angare <li51ckf02@…> https://svn.boost.org/trac10/ticket/10037 https://svn.boost.org/trac10/ticket/10037 Report #10034: Change win_iocp_handle_service to still return bytes_transferred if ReadFile fails with ERROR_MORE_DATA Sat, 10 May 2014 09:17:51 GMT Sat, 10 May 2014 09:17:51 GMT <p> See ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8722" title="#8722: Bugs: The boost::asio::windows::stream_handle::read_some method may ... (closed: fixed)">#8722</a> for details. </p> chris_kohlhoff https://svn.boost.org/trac10/ticket/10034 https://svn.boost.org/trac10/ticket/10034 Report #10027: Allow template parameters with types rather than hardcode typename in BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE (and friends) Thu, 08 May 2014 23:40:27 GMT Thu, 08 May 2014 23:40:27 GMT <p> Right now, the macro <code>BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE</code> creates </p> <pre class="wiki">template&lt;typename A, typename B&gt; struct MyStruct { ... }; </pre><p> from </p> <pre class="wiki">BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( (A)(B), MyStruct, (A, foo) (B, bar) ) </pre><p> But I want to put the class <code>template&lt;int DIM&gt; class Vector</code> into a Boost Fusion Struct. So the struct should allow template parameters that are not typenames. I would like to be able to write the following: </p> <pre class="wiki">BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( (int DIM)(typename B), MyStruct, (Vector&lt;DIM&gt;, foo) (B, bar) ) // the above becomes // template&lt;int DIM, typename B&gt; // struct MyStruct { ... }; MyStruct&lt;3, double&gt; struct; </pre><p> This does not currently work. The following is a working (but cumbersome) workaround (using C++11): </p> <pre class="wiki">BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE( (DIM)(B), MyStructImpl, (Vector&lt;DIM::value&gt;, foo) (B, bar) ) template&lt;int DIM&gt; using MyStruct = MyStructImpl&lt;boost::mpl::int_&lt;DIM&gt;&gt;; MyStruct&lt;3, double&gt; struct; </pre><p> Maybe for backwards compatibility my proposed version of <code>BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE</code> where template parameters are declared as <code>(int DIM)(typename B)</code> should be named <code>BOOST_FUSION_DEFINE_FLEXIBLE_TPL_STRUCT_INLINE</code>. </p> Jonas Lippuner <jonas@…> https://svn.boost.org/trac10/ticket/10027 https://svn.boost.org/trac10/ticket/10027 Report #10026: Building Boost with #define BOOST_SP_ENABLE_DEBUG_HOOKS generates compile error C2665 in Visual C++ 2012 Thu, 08 May 2014 22:19:02 GMT Fri, 13 Feb 2015 18:50:07 GMT <p> I ran the following command from a Visual C++ command window. </p> <p> b2 toolset=msvc-11.0 address-model=32 variant=debug link=static threading=multi runtime-link=shared --build-type=complete define=BOOST_SP_ENABLE_DEBUG_HOOKS </p> <p> I am trying to compile the Boost Libraries with the debug hooks in. Is this a Visual C++ 2012 compiler issue as I also had problems with compilation on Visual C++ 2010. Any ideas? Thanks. I have tried this compilation on both Windows 7 and Windows 8.1. </p> <p> compile-c-c++ bin.v2\libs\thread\build\msvc-11.0\release\address-model-32\link-static\threading-multi\win32\thread.obj thread.cpp .\boost/smart_ptr/detail/sp_counted_impl.hpp(69) : error C2665: 'boost::sp_scalar_constructor_hook' : none of the 2 overloads could convert all the argument types </p> <blockquote> <p> .\boost/smart_ptr/detail/sp_counted_impl.hpp(45): could be 'void boost::sp_scalar_constructor_hook(void *,size_t,void *)' while trying to match the argument list '(const boost::exception_detail::clone_base *, unsigned int, boost::detail::sp_counted_impl_p&lt;X&gt; *const )' with [ </p> <blockquote> <p> X=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/smart_ptr/detail/sp_counted_impl.hpp(66) : while compiling class template member function 'boost::detail::sp_counted_impl_p&lt;X&gt;::sp_counted_impl_p(X *)' with [ </p> <blockquote> <p> X=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/smart_ptr/detail/shared_count.hpp(130) : see reference to function template instantiation 'boost::detail::sp_counted_impl_p&lt;X&gt;::sp_counted_impl_p(X *)' being compiled with [ </p> <blockquote> <p> X=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/smart_ptr/detail/shared_count.hpp(130) : see reference to class template instantiation 'boost::detail::sp_counted_impl_p&lt;X&gt;' being compiled with [ </p> <blockquote> <p> X=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/smart_ptr/shared_ptr.hpp(276) : see reference to function template instantiation 'boost::detail::shared_count::shared_count&lt;Y&gt;(Y *)' being compiled with [ </p> <blockquote> <p> Y=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/smart_ptr/shared_ptr.hpp(354) : see reference to function template instantiation 'void boost::detail::sp_pointer_construct&lt;const boost::exception_detail::clone_base,Y&gt;(boost::shared_ptr&lt;T&gt; *,Y *,boost::detail::shared_count &amp;)' being compiled with [ </p> <blockquote> <p> Y=const boost::exception_detail::clone_base, T=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/exception/detail/exception_ptr.hpp(313) : see reference to function template instantiation 'boost::shared_ptr&lt;T&gt;::shared_ptr&lt;const boost::exception_detail::clone_base&gt;(Y *)' being compiled with [ </p> <blockquote> <p> T=const boost::exception_detail::clone_base, Y=const boost::exception_detail::clone_base </p> </blockquote> <p> ] .\boost/exception/detail/exception_ptr.hpp(313) : see reference to function template instantiation 'boost::shared_ptr&lt;T&gt;::shared_ptr&lt;const boost::exception_detail::clone_base&gt;(Y *)' being compiled with [ </p> <blockquote> <p> T=const boost::exception_detail::clone_base, Y=const boost::exception_detail::clone_base </p> </blockquote> <p> ] </p> </blockquote> Clifford.Jackson@… https://svn.boost.org/trac10/ticket/10026 https://svn.boost.org/trac10/ticket/10026 Report #10024: allocator memory leak Thu, 08 May 2014 16:26:18 GMT Sun, 18 May 2014 18:42:27 GMT <p> hi~ boost allocaltor memory leak bug. </p> <p> stl + boost allocator </p> <p> check crtdbg.h </p> <p> sample code. </p> <pre class="wiki">#include "stdafx.h" #include &lt;string&gt; #include &lt;vector&gt; #include &lt;boost/pool/pool_alloc.hpp&gt; #include &lt;crtdbg.h&gt; int main() { _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); typedef std::vector&lt;int, boost::pool_allocator&lt;int&gt;&gt; Ints; Ints i; i.push_back(10); return 0; } </pre><p> that code memory leak. not call free. </p> anonymous https://svn.boost.org/trac10/ticket/10024 https://svn.boost.org/trac10/ticket/10024 Report #10022: json_parser_write inconditionally converts CP1252 to escaped unicode Thu, 08 May 2014 12:29:46 GMT Thu, 08 May 2014 12:40:16 GMT <p> See function 'create_escapes' in property_tree/detail/json_parser_write.hpp. I supply a property_tree containing UTF-8 encoded values, encoded in a custom way from data in different code pages. I want JSON with real UTF-8 encoding, which the JSON standard just allows (as far as I googled). So here the encoding of 'special' characters to "\uXXXX" should be turned off. </p> <p> All values the Ch has are directly translated to a unicode number, but when Ch=char this only works correct when the char data is in code page 1252. </p> <p> Currently the option to encode the characters nor the used code page are parameters here. </p> <p> I needed to locally adapt the code like in <a class="ext-link" href="http://stackoverflow.com/questions/10260688/boostproperty-treejson-parser-and-two-byte-wide-characters"><span class="icon">​</span>http://stackoverflow.com/questions/10260688/boostproperty-treejson-parser-and-two-byte-wide-characters</a> </p> anonymous https://svn.boost.org/trac10/ticket/10022 https://svn.boost.org/trac10/ticket/10022 Report #10016: SO_UPDATE_CONNECT_CONTEXT: Undeclared identifier Tue, 06 May 2014 23:33:33 GMT Wed, 04 Jun 2014 20:59:36 GMT <pre class="wiki">boost log defaults to _WIN32_WINNT 0x0500 in src/windows_version.hpp asio now uses SO_UPDATE_CONNECT_CONTEXT in detail/impl/socket_ops.ipp which is not defined before 0x0501 change #define _WIN32_WINNT 0x0500 // _WIN32_WINNT_WIN2K to #define _WIN32_WINNT 0x0501 // _WIN32_WINNT_WINXP in src/windows_version.hpp to fix this compile error </pre> Joseph Southwell <joseph@…> https://svn.boost.org/trac10/ticket/10016 https://svn.boost.org/trac10/ticket/10016 Report #10014: date_from_tm incorrectly documented as part of posix_time Tue, 06 May 2014 20:31:21 GMT Mon, 23 Feb 2015 04:28:05 GMT <p> On this page: <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/posix_time.html#date_time.posix_time.time_duration">http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/posix_time.html#date_time.posix_time.time_duration</a> </p> <p> date_from_tm is documented as part of the posix_time namespace, which is it not. Instead, ptime_from_tm (which calls date_from_tm from the Gregorian namespace) should be documented in its place. </p> Edward Brey <edward@…> https://svn.boost.org/trac10/ticket/10014 https://svn.boost.org/trac10/ticket/10014 Report #10009: Boost Asio should provide also thread-safe sockets Tue, 06 May 2014 14:51:27 GMT Thu, 01 Dec 2016 09:09:52 GMT <p> The feature I'm requesting is strictly related to the well-known problem reported in ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8538" title="#8538: Bugs: asio: race condition for epoll &amp; kpoll (closed: invalid)">#8538</a>, but I'm not reporting it as a bug since the documentation explicitly states that the Asio's sockets are <em>not</em> thread-safe <em>by design</em>: the user <em>must</em> use strands at top level to ensure a correct behavior in a multi-threaded environment. If I've correctly understood, the rationale for such design is that in a single threaded environment, one should pay no cost for synchronization. I disagree with this design decision for several reasons. </p> <h2 class="section" id="Themulti-threadedenvironmentsaremoreimportant">The multi-threaded environments are more important</h2> <p> I believe that the environments where asio is seriously (heavily) used are multi-threaded (there is an asio-based thread pool): this means that the optimization is made for the simpler cases (where the cost for a not-contended lock acquisition is negligible); IMHO this is wrong. This adds an additional (significative) overhead to users which have necessarily to: </p> <ol><li>use strands (through strand::wrap() as suggested in the docs) <em>or</em> </li><li>use mutexes (or other lock types) and carry always a reference to them with the relative socket <em>or</em> </li><li>wrap asio's socket with a custom class that internally uses locking. </li></ol><h2 class="section" id="strand::wrapisnotalwaysthatuseful">strand::wrap() is not always that useful</h2> <p> I believe that the solution officially recommended to "solve the problem" (wrapping the callbacks with strand::wrap()) is theoretically a bad idea since it causes the serialization (which is <em>almost</em> like what a mutex does) of the callbacks invocation: this is <em>deeply</em> wrong because it is an anti-pattern: the fundamental principle of synchronization is that ONLY the data has to be "locked", NOT the code. Using strand::wrap() ( ~= locking the CODE ) could lead to serious performance bottlenecks if the callbacks' code is not <em>carefully</em> written (one could unconsciously do a heavy computation (or sync I/O) through several levels of function calls). So, within this model, writing an efficient code will mean to be careful and to necessarily re-schedule all non-trivial tasks: that is not so easy sometimes.<br /> What if, for example, one wants to close 100 sockets in a callback? Using strand::wrap() would mean to use a common strand for all the 100 sockets (= to serialize all the callbacks for these sockets): this is an <em>unacceptable</em> cost to pay. Instead, using a strand for each socket and rescheduling a close() request using strand::post() is much better but would mean always carrying back a reference of the relative strand for each socket: this is same problem of the alternative 2: no one would be happy to do this.<br /> It seems that the most attractive alternative is the third one. </p> <h2 class="section" id="Thenon-thread-safesocketsarenotsomethingonewouldexpectfromAsio">The non-thread-safe sockets are not something one would expect from Asio</h2> <p> I'm pretty sure that I'm not the only one who, before reading <em>carefully</em> the documentation, was expecting that the sockets were <em>of course</em> thread-safe: we are dealing with a high-level library for asynchronous I/O. The situation is analogue to C++11's atomics: they, by default, use FULL barriers because this way is simpler to use them; advanced users (that really know what they're doing) instead, could always specify the exact type of barrier they need. I think Asio is roughly at the same level of abstraction of standard C++ libraries (if not at higher one), so I think it should follow the same philosophy. </p> <h2 class="section" id="SynchronizationisalreadyusedinAsiosinternals">Synchronization is already used in Asio's internals</h2> <p> Even if the official docs declare the asio's sockets as non-thread-safe, actually <em>there are</em> synchronization mechanisms in asio's reactors (epoll and kqueue) which allow the sockets to <em>almost work</em> in a multi-threaded environment except when destructive operations like close() are used. In these cases, the subtle race described in <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8538" title="#8538: Bugs: asio: race condition for epoll &amp; kpoll (closed: invalid)">#8538</a> appears since the mutex protecting the access to the descriptor_data node <em>has to be</em> released before "freeing it" because the mutex itself is a member of the (same) node. That mutex makes me suspect that <em>maybe</em> an attempt has been made to solve the synchronization problem at the reactor level but it failed since the socket's lifetime is bigger than the descriptor_data node which has to die when the descriptor is closed. Since the reactors has no access to the upper level socket services (such thing will break the isolation of the abstraction layers), the only solution seems to use a top-level synchronization mechanism. </p> <h2 class="section" id="WhatismypurposetoimproveAsio">What is my purpose to improve Asio</h2> <p> I purpose a simple patch (the attached file) that adds a lock contended only among the async and the destructive operations at the top-level classes (the *_socket_service classes). I think this solution is a good compromise because all the code it adds is under an #ifdef: who wants to work easily with asio's sockets has simply to specify it at compile-time; the others could still pay the "zero" cost in single-threaded applications. Even if I'd prefer the define to work in the opposite way, I'm purposing this change because has a minor impact, conserves the old behavior unless specified and so, I hope it has a greater chance to be accepted. </p> <h2 class="section" id="Justafinalremark">Just a final remark</h2> <p> I'd just like to say that, even if it probably doesn't emerge from my comments, I'm an Asio's fan: overall, it is really a great boost-style library and I use it intensively. That's the reason why I'm spending some much energies trying to improve it. </p> Vladislav Valtchev <vladi32@…> https://svn.boost.org/trac10/ticket/10009 https://svn.boost.org/trac10/ticket/10009 Report #10005: erf_inv_initializer crashes under valgrind Sun, 04 May 2014 00:08:46 GMT Tue, 31 Oct 2017 15:44:57 GMT <p> It was reported before on the mailing list: <a class="ext-link" href="http://lists.boost.org/boost-users/2012/08/75711.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2012/08/75711.php</a> and I assume it's because valgrind doesn't support long doubles: <a class="ext-link" href="https://bugs.kde.org/show_bug.cgi?id=197915"><span class="icon">​</span>https://bugs.kde.org/show_bug.cgi?id=197915</a> </p> <p> Somehow erfc_inv is called in this place and the argument is then found to be 0: </p> <div class="wiki-code"><div class="code"><pre> <span class="c1">// Some compilers choke on constants that would underflow, even in code that isn&#39;t instantiated</span> <span class="c1">// so try and filter these cases out in the preprocessor:</span> <span class="cp">#if LDBL_MAX_10_EXP &gt;= 800</span> <span class="k">if</span><span class="p">(</span><span class="k">static_cast</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">(</span><span class="n">BOOST_MATH_BIG_CONSTANT</span><span class="p">(</span><span class="n">T</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mf">1e-800</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="n">boost</span><span class="o">::</span><span class="n">math</span><span class="o">::</span><span class="n">erfc_inv</span><span class="p">(</span><span class="k">static_cast</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span><span class="p">(</span><span class="n">BOOST_MATH_BIG_CONSTANT</span><span class="p">(</span><span class="n">T</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mf">1e-800</span><span class="p">)),</span> <span class="n">Policy</span><span class="p">());</span> </pre></div></div><p> So an exception is thrown during initialization. While it may not be a bug, valgrind is extremely useful and it would be nice to have a workaround. </p> <p> I don't understand why erf_inv and erfc_inv are called with these arguments in <code>erf_inv_initializer&lt;&gt;::init::do_init()</code>, so I'm not sure what workaround is safe. </p> <p> Here is a full traceback: </p> <pre class="wiki">#0 0x00000036fb435c39 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #1 0x00000036fb437348 in __GI_abort () at abort.c:89 #2 0x00000036ff860f85 in __gnu_cxx::__verbose_terminate_handler () at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95 #3 0x00000036ff85eee6 in __cxxabiv1::__terminate (handler=&lt;optimized out&gt;) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:38 #4 0x00000036ff85ef13 in std::terminate () at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48 #5 0x00000036ff85f13f in __cxxabiv1::__cxa_throw (obj=0x526e490, tinfo=&lt;optimized out&gt;, dest=&lt;optimized out&gt;) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:84 #6 0x0000000004cb1541 in boost::throw_exception&lt;std::overflow_error&gt; (e=...) at /usr/include/boost/throw_exception.hpp:67 #7 0x0000000004cb7f28 in boost::math::policies::detail::raise_error&lt;std::overflow_error, long double&gt; ( function=0x4d2d338 "boost::math::erfc_inv&lt;%1%&gt;(%1%, %1%)", message=0x4d1bf8e "Overflow Error") at /usr/include/boost/math/policies/error_handling.hpp:95 #8 0x0000000004cb7f98 in boost::math::policies::detail::raise_overflow_error&lt;long double&gt; (function=&lt;optimized out&gt;, message=&lt;optimized out&gt;) at /usr/include/boost/math/policies/error_handling.hpp:211 #9 0x0000000004cdf17e in raise_overflow_error&lt;long double, boost::math::policies::policy&lt;boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt; &gt; (message=0x0, function=&lt;optimized out&gt;) at /usr/include/boost/math/policies/error_handling.hpp:515 #10 boost::math::erfc_inv&lt;long double, boost::math::policies::policy&lt;boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt; &gt; (z=0, z@entry=0, pol=...) at /usr/include/boost/math/special_functions/detail/erf_inv.hpp:383 #11 0x0000000004cdfaae in boost::math::detail::erf_inv_initializer&lt;long double, boost::math::policies::policy&lt;boost::math::policies::promote_float&lt;false&gt;, boost::math::policies::promote_double&lt;false&gt;, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy&gt; &gt;::init::do_init () at /usr/include/boost/math/special_functions/detail/erf_inv.hpp:347 #12 0x0000000004cda34b in init (this=&lt;optimized out&gt;) at /usr/include/boost/math/special_functions/detail/erf_inv.hpp:332 #13 __static_initialization_and_destruction_0 ( __initialize_p=__initialize_p@entry=1, __priority=__priority@entry=65535) at /usr/include/boost/math/special_functions/detail/erf_inv.hpp:367 #14 0x0000000004cda463 in _GLOBAL__sub_I_fit.cpp(void) () at ../../fityk/fit.cpp:643 #15 0x00000036fb00f2ea in call_init (l=&lt;optimized out&gt;, argc=argc@entry=1, argv=argv@entry=0xffefffc48, env=env@entry=0xffefffc58) at dl-init.c:82 #16 0x00000036fb00f3d3 in call_init (env=&lt;optimized out&gt;, argv=&lt;optimized out&gt;, argc=&lt;optimized out&gt;, l=&lt;optimized out&gt;) at dl-init.c:34 #17 _dl_init (main_map=0x36fb221168, argc=1, argv=0xffefffc48, env=0xffefffc58) at dl-init.c:130 #18 0x00000036fb00122a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2 </pre> Marcin Wojdyr <wojdyr@…> https://svn.boost.org/trac10/ticket/10005 https://svn.boost.org/trac10/ticket/10005 Report #10002: No swap for mapped_vector::reference Fri, 02 May 2014 16:19:21 GMT Fri, 02 May 2014 16:19:21 GMT <p> Hi. </p> <p> When compiling the following code </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/numeric/ublas/lu.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/numeric/ublas/matrix.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/numeric/ublas/vector_sparse.hpp&gt;</span><span class="cp"></span> <span class="kt">void</span> <span class="nf">f</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">ublas</span><span class="o">::</span><span class="n">matrix</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">m</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">ublas</span><span class="o">::</span><span class="n">permutation_matrix</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">long</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">pm</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">ublas</span><span class="o">::</span><span class="n">mapped_vector</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">v</span><span class="p">)</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">ublas</span><span class="o">::</span><span class="n">lu_substitute</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">pm</span><span class="p">,</span> <span class="n">v</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> with gcc 4.7 on linux, I get a compile error which at its core has </p> <p> /usr/include/boost/numeric/ublas/lu.hpp:71:17: error: no matching function for call to ‘swap(boost::numeric::ublas::mapped_vector&lt;double&gt;::reference, boost::numeric::ublas::mapped_vector&lt;double&gt;::reference)’ </p> <p> Shouldn't this be an allowed use of the classes involved? </p> Christian Adaker <christian.adaker@…> https://svn.boost.org/trac10/ticket/10002 https://svn.boost.org/trac10/ticket/10002 Report #9991: WConversion issue in json_parser_write.hpp Fri, 02 May 2014 06:21:11 GMT Wed, 10 Feb 2016 13:04:37 GMT <p> File Name: 1_54_0/boost/property_tree/detail/json_parser_write.hpp </p> <p> There is a severe problem with the -Wconversion issue in the json_parser_write.hpp </p> <p> Problematic code: </p> <blockquote> <p> else </p> <blockquote> <p> { </p> <blockquote> <p> const char *hexdigits = "0123456789ABCDEF"; typedef typename make_unsigned&lt;Ch&gt;::type UCh; unsigned long u = (std::min)(static_cast&lt;unsigned long&gt;( </p> <blockquote> <p> static_cast&lt;UCh&gt;(*b)), </p> </blockquote> <p> 0xFFFFul); </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> <strong> int d1 = u / 4096; u -= d1 * 4096; </strong></p> <blockquote> <p> int d2 = u / 256; u -= d2 * 256; int d3 = u / 16; u -= d3 * 16; int d4 = u;<strong> </strong></p> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <blockquote> <p> result += Ch('<br />'); result += Ch('u'); result += Ch(hexdigits[d1]); result += Ch(hexdigits[d2]); result += Ch(hexdigits[d3]); result += Ch(hexdigits[d4]); </p> </blockquote> </blockquote> <p> } </p> </blockquote> </blockquote> <p> Either we need to do explicit static cast to suppress the Conversion Warning. When we turn on the -Wconversion as well as -Werror both together, which is good practice for production ready code. compiler Just dont allow this to compile. </p> <p> the above need to be fixed. </p> abhi.california@… https://svn.boost.org/trac10/ticket/9991 https://svn.boost.org/trac10/ticket/9991 Report #9984: range iterator failing to model forward_iterator Thu, 01 May 2014 12:06:31 GMT Fri, 19 Sep 2014 04:11:26 GMT <p> The following code snippet passes successfully with GCC 4.9, but Clang 3.5 (installed from <a class="missing wiki">MacPorts</a>) fails to accept std::next. </p> <p> The symptoms are somewhat alike <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9431" title="#9431: Bugs: Problem compiling zip_iterator with clang and C++11 (new)">#9431</a>, but I have no idea if it's the same issue. According to the code of irange, I guess the problem is rather with Boost.Iterator. </p> <pre class="wiki">$ cat bar.cc #include &lt;boost/range/irange.hpp&gt; int main() { auto range = boost::irange&lt;int&gt;(0, 10); auto i = std::begin(range); auto j = std::next(i); std::cerr &lt;&lt; *j &lt;&lt; std::endl; } $ clang++-mp-3.5 -std=c++11 -I /opt/local/include bar.cc bar.cc:7:12: error: no matching function for call to 'next' auto j = std::next(i); ^~~~~~~~~ /opt/local/libexec/llvm-3.5/bin/../include/c++/v1/iterator:514:25: note: candidate template ignored: disabled by 'enable_if' [with _ForwardIter = boost::range_detail::integer_iterator&lt;int&gt;] typename enable_if&lt;__is_forward_iterator&lt;_ForwardIter&gt;::value&gt;::type* = 0) ^ 1 error generated. $ g++-mp-4.9 -std=c++11 -I /opt/local/include bar.cc </pre> Akim Demaille <akim.demaille@…> https://svn.boost.org/trac10/ticket/9984 https://svn.boost.org/trac10/ticket/9984 Report #9971: Use constexpr for boost::mpl::c_str::value when possible. Thu, 01 May 2014 11:23:47 GMT Thu, 01 May 2014 11:23:47 GMT <p> Right now boost::mpl::c_str::value is a static const member variable. I think it is a decent idea to add the constexpr keyword here. </p> <p> I have a patch for this issue. Here is an example why it is useful: </p> <pre class="wiki">#include&lt;boost/mpl/string.hpp&gt; int main() { using H = boost::mpl::string&lt;'h'&gt;; static_assert(boost::mpl::c_str&lt;H&gt;::value[0] == 'h', ""); } </pre><p> Without my patch, compiler will complain we could not use c_str::value in constant expression. With my patch, compiler will accept this code. </p> <p> Tested in clang++ 3.4, CentOS 6.3, but I think GCC should works as well. </p> ytj000@… https://svn.boost.org/trac10/ticket/9971 https://svn.boost.org/trac10/ticket/9971 Report #9969: When interior ring of polygon touches exterior Wed, 30 Apr 2014 21:38:20 GMT Wed, 30 Apr 2014 21:38:20 GMT <p> For boost::geometry::intersects and boost::geometry::intersection when a polygon's interior ring touches the exterior ring both functions throw <code>boost::geometry::overlay_invalid_input_exception</code>. Example geom: POLYGON ((-89.58781362007169 48.00097751710655, -89.58781362007169 48.00065167807103, -89.5881394591072 48.00065167807103, -89.58846529814272 48.000 65167807103, -89.58846529814272 48.00032583903552, -89.5881394591072 48.00032583903552, -89.5881394591072 48, -89.58651026392963 48, -89.58651026392 963 48.00032583903552, -89.5861844248941 48.00032583903552, -89.5861844248941 48.00065167807103, -89.58683610296514 48.00065167807103, -89.586836102 96514 48.00097751710655, -89.58781362007169 48.00097751710655), (-89.58781362007169 48.00065167807103, -89.58781362007169 48.00032583903552, -89.587 16194200065 48.00032583903552, -89.58716194200065 48.00065167807103, -89.58781362007169 48.00065167807103)) </p> <p> Throws when intersecting with box,ring,polygon,multi_polygon other geometries untested </p> ajoseph4@… https://svn.boost.org/trac10/ticket/9969 https://svn.boost.org/trac10/ticket/9969 Report #9968: [filesystem] Streams don't handle unicode file name on Windows Wed, 30 Apr 2014 20:56:08 GMT Mon, 25 Sep 2017 02:28:15 GMT <p> I want to read / write a file with a unicode file name using boost filesystem, boost locale on Windows (mingw). </p> <p> This is my code: </p> <p> #include &lt;boost/locale.hpp&gt; #define BOOST_NO_CXX11_SCOPED_ENUMS #include &lt;boost/filesystem.hpp&gt; #include &lt;boost/filesystem/fstream.hpp&gt; namespace fs = boost::filesystem; </p> <p> #include &lt;string&gt; #include &lt;iostream&gt; </p> <p> int main() { </p> <blockquote> <p> std::locale::global(boost::locale::generator().generate("")); fs::path::imbue(std::locale()); </p> </blockquote> <blockquote> <p> fs::path file("äöü.txt"); if (!fs::exists(file)) { </p> <blockquote> <p> std::cout &lt;&lt; "File does not exist" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> fs::ofstream(file, std::ios_base::app) &lt;&lt; "Test" &lt;&lt; std::endl; </p> </blockquote> <p> } </p> <p> The fs::exists really checks for a file with the name äöü.txt. But the written file has the name äöü.txt. </p> <p> Reading gives the same problem. Using fs::wofstream doesn't help either, since this just handles wide input. </p> <p> So it seems the behaviour of fs::ofstream is off. </p> mike@… https://svn.boost.org/trac10/ticket/9968 https://svn.boost.org/trac10/ticket/9968 Report #9966: exponential_distribution returns negative zero Wed, 30 Apr 2014 10:23:40 GMT Fri, 27 Feb 2015 23:13:00 GMT <p> The code below produces this output: </p> <p> 1.72296<br /> -0<br /> 0.295209<br /> 0.210905<br /> 0.930678<br /> </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;fstream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/random.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">random</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">ifstream</span> <span class="n">mtfile</span><span class="p">;</span> <span class="n">mtfile</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="s">&quot;mt.dat&quot;</span><span class="p">);</span> <span class="c1">//see attached file</span> <span class="n">mt19937</span> <span class="n">mt</span><span class="p">;</span> <span class="n">mtfile</span> <span class="o">&gt;&gt;</span> <span class="n">mt</span><span class="p">;</span> <span class="n">mtfile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">exponential_distribution</span><span class="o">&lt;</span><span class="kt">float</span><span class="o">&gt;</span><span class="p">(</span><span class="mf">1.f</span><span class="p">)(</span><span class="n">mt</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> mazzamuto@… https://svn.boost.org/trac10/ticket/9966 https://svn.boost.org/trac10/ticket/9966 Report #9959: boost::date_time::date addition/subtraction assignment operators Mon, 28 Apr 2014 15:11:22 GMT Mon, 28 Apr 2014 15:11:22 GMT <p> Is there a reason why the += and -= operators of boost::date_time::date return a copy instead of a reference to the current object? Usually I would always expect a reference to be returned for any implementation of these operators. </p> <p> Thank you for your answers. </p> s.swiercy@… https://svn.boost.org/trac10/ticket/9959 https://svn.boost.org/trac10/ticket/9959 Report #9958: issue with modularized contrib/boost.jam Sun, 27 Apr 2014 20:30:53 GMT Sun, 27 Apr 2014 20:30:53 GMT <p> The contrib/boost.jam module does not seem to work properly for /boost<em>headers library in the 'develop' branch of the modularized git repository. The rest of the targets seem to work properly. </em></p> <p> Please find a small example attached that does not work properly (relative to the pre-modularized boost versions). </p> tabsoftwareconsulting@… https://svn.boost.org/trac10/ticket/9958 https://svn.boost.org/trac10/ticket/9958 Report #9954: [ublas] fixed_vector<> broken for msvc-12.0 Fri, 25 Apr 2014 20:35:08 GMT Fri, 23 Jan 2015 00:59:09 GMT <p> fixed_vector&lt;&gt; is broken on msvc-12.0 due to the use of constexpr. This heyword is not suported by this compiler. </p> <p> BOOST_UBLAS_CPP_GE_2011 macro is used to enable/disable the whole class (wrongly on msvc-12.0) instead of enabling only some parts of the code as it's done in other libraries. </p> <p> Another thing is that fixed_vector&lt;&gt; is only available on some compilers which allows the users to write non-portable code. </p> <p> Variadic templates may be emulated with Boost.Preprocessor, e.g. see how emplace_back() is implemented in boost::container::vector&lt;&gt; : </p> <p> <a class="ext-link" href="https://github.com/boostorg/container/blob/develop/include/boost/container/vector.hpp"><span class="icon">​</span>https://github.com/boostorg/container/blob/develop/include/boost/container/vector.hpp</a> lines 1309-1380. </p> <p> constexpr may be conditionally used e.g. by one of macros defined in Boost.Config: </p> <p> <a href="http://www.boost.org/doc/libs/1_55_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">http://www.boost.org/doc/libs/1_55_0/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers</a> </p> awulkiew https://svn.boost.org/trac10/ticket/9954 https://svn.boost.org/trac10/ticket/9954 Report #9953: lazy_enable_if is not sfinae friendly Fri, 25 Apr 2014 10:53:02 GMT Sat, 08 Jul 2017 20:37:35 GMT <p> The following code fails to compile, even though boost::result_of itself is sfinae friendly. </p> <pre class="wiki">template &lt; typename T &gt; typename boost::lazy_enable_if_c&lt; boost::is_class&lt;T&gt;::value, boost::result_of&lt;T(int)&gt; &gt;::type test(int){} template &lt; typename &gt; void test(...) {} struct A{}; // boost::result_of&lt;A(int)&gt; is a valid type that doesn't have a member called "type" int main(int argc, const char * argv[]) { test&lt;A&gt;(0); // test&lt;A&gt;(int) meant to be a substitution failure return 0; } </pre><p> I'm not sure if this is a bug/flaw, or a lack of feature, or maybe this kind of use is deliberately disallowed for some reason, but it could be very useful if <code>lazy_enable_if_c&lt;bool B, typename T&gt;</code> etc support uses when <code>typename T::type</code> itself may cause a substitution failure. </p> <p> Proposing to change implementation of <code>lazy_enable_if_c</code> and <code>lazy_disable_if_c</code> to: </p> <pre class="wiki">template &lt;bool B, class T&gt; struct lazy_enable_if_c : T {}; // inherits from T template &lt;class T&gt; struct lazy_enable_if_c&lt;false, T&gt; {}; template &lt;bool B, class T = void&gt; struct disable_if_c : T {}; // inherits from T template &lt;class T&gt; struct disable_if_c&lt;true, T&gt; {}; </pre> hui.li@… https://svn.boost.org/trac10/ticket/9953 https://svn.boost.org/trac10/ticket/9953 Report #9945: Regression test using random number generator incorrectly Wed, 23 Apr 2014 18:35:05 GMT Thu, 26 Jun 2014 21:48:37 GMT <p> libs/utility/operators_test.cpp loops 1000 times, running a variety of tests on seemingly random values. However, since the randomizer (boost::minstd_rand) is instantiated inside the loop, it is re-seeded for each loop, meaning it runs the test 1000x with the exact same values each time. </p> <p> The randomizer must be instantiated outside the loop. </p> chris.cooper@… https://svn.boost.org/trac10/ticket/9945 https://svn.boost.org/trac10/ticket/9945 Report #9944: Regression test relies on undefined compiler behavior Wed, 23 Apr 2014 18:24:48 GMT Thu, 26 Jun 2014 21:54:56 GMT <p> libs/utility/numeric_traits_test.cpp generates values complement_traits&lt;Number&gt;::min using a clever recursive template, but that template relies on left-shifting a negative value, and according to the C++11 standard that’s a no-no (“the behavior is undefined”) which means it’s not a constant expression, which means it can’t be calculated at compile time, which means the BOOST_STATIC_ASSERT in line 332 won’t compile, saying “static_assert expression is not an integral constant expression” (I’m using clang++). </p> <p> The only use for the clever templates, as the comment in the file says, is for "platforms without &lt;limits&gt; support" so my proposed fix is: </p> <p> #ifndef BOOST_NO_LIMITS template &lt;class Number&gt; struct complement_traits { </p> <blockquote> <p> BOOST_STATIC_CONSTANT(Number, min = std::numeric_limits&lt;Number&gt;::min()); BOOST_STATIC_CONSTANT(Number, max = std::numeric_limits&lt;Number&gt;::max()); </p> </blockquote> <p> }; #else [SNIP] All of the other template definitions for complement_traits, complement_traits_aux, etc. #endif </p> chris.cooper@… https://svn.boost.org/trac10/ticket/9944 https://svn.boost.org/trac10/ticket/9944 Report #9943: Possible error in MSM state machine docs Wed, 23 Apr 2014 17:47:38 GMT Mon, 26 May 2014 21:50:04 GMT <p> <a href="http://www.boost.org/doc/libs/1_55_0/libs/msm/doc/HTML/ch01.html">http://www.boost.org/doc/libs/1_55_0/libs/msm/doc/HTML/ch01.html</a> </p> <p> typedef player p; <em> makes transition table cleaner </em></p> <blockquote> <p> struct transition_table : mpl::vector11&lt; <em> Start Event Target Action </em> +---------+------------+-----------+---------------------------+ </p> <blockquote> <p> row&lt; Stopped , play , Playing , &amp;p::start_playback &gt;, </p> </blockquote> </blockquote> <p> The word "Start" should probably be "State". </p> Fred Weed <fweed@…> https://svn.boost.org/trac10/ticket/9943 https://svn.boost.org/trac10/ticket/9943 Report #9939: Patch to add "no exceptions" support to dynamic_bitset Tue, 22 Apr 2014 22:09:13 GMT Thu, 21 Aug 2014 14:47:23 GMT <p> This patch adds support for compiling with exceptions disabled by using BOOST_TRY/BOOST_CATCH etc. </p> Boleslaw Ciesielski <bolek@…> https://svn.boost.org/trac10/ticket/9939 https://svn.boost.org/trac10/ticket/9939 Report #9935: Support edge multiplicity in brandes_betweenness_centrality Tue, 22 Apr 2014 09:26:18 GMT Fri, 25 Apr 2014 09:13:44 GMT <p> There are several possible variations to the Brandes algorithm for the calculation of the betweenness centrality. Several of them were compiled by Brandes himself on his paper <a class="ext-link" href="http://www.inf.uni-konstanz.de/algo/publications/b-vspbc-08.pdf"><span class="icon">​</span>On variants of shortest-path betweenness centrality and their generic computation</a>. </p> <p> I need to compute one of these variations, in particular the one which considers edge multiplicities, understood as an edge property representing the frequency or the amount of times a relationship happens. This variation introduces a quite small change in the algorithm, as explained in the section 3.8, algorithm 11 of the referenced paper. </p> <p> I was thinking of introducing this functionality in the graph library. I roughly know where and what should be added or modified (namely <code>&lt;boost/graph/betweenness_centrality.hpp&gt;</code> and <code>&lt;boost/graph/distributed/betweenness_centrality.hpp&gt;</code>), although I have never made modifications to any Boost library, so I would probably need some advice. Basically, I consider three options: </p> <ul><li>Adding a third version of the algorithm, parallel to the Dijkstra and the unweighted version (which would not consider weights). </li><li>Add two versions of the algorithm, one based on the Dijsktra version (considering weights) and another based on the unweighted version. </li><li>Modify both existing implementations of the algorithm, adding an optional map holding the edge multiplicity with a constant value of one by default. </li></ul><p> However, I don't know if there is interest in adding this kind of feature to the library, or if it is too specific to be considered useful. Another option would be to expose some interface to be able to inject your own variation of the algorithm from your application, but that would be way more complex to develop, use and document, and probably there would always be uncovered cases. </p> <p> Just for the record, there is actually a way to make computation with the current implementation, if the edge multiplicities are integers (which is not always true), simply replacing each edge with a number of parallel edges equal to its multiplicity (if the current implementation works for multigraphs, which I think is the case). However, this obviously increases (potentially a lot) the time and space complexity of the already CPU-intensive betweenness calculation. </p> Javier Dehesa <javidcf@…> https://svn.boost.org/trac10/ticket/9935 https://svn.boost.org/trac10/ticket/9935 Report #9934: Intersection of convex hulls leads to self intersecting polygon Tue, 22 Apr 2014 07:56:45 GMT Tue, 22 Apr 2014 10:59:33 GMT <p> This might be a duplicate of <a class="new ticket" href="https://svn.boost.org/trac10/ticket/8419" title="#8419: Bugs: boost::geometry::intersection still broken with integer coordinates (new)">#8419</a>, <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/9081" title="#9081: Bugs: boost geometry booleans create self-intersecting polygons from ... (reopened)">#9081</a>, or <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9909" title="#9909: Bugs: boost::geometry::intersection on two polygons returns incorrect result ... (new)">#9909</a>. </p> <p> Please see here: <a class="ext-link" href="http://stackoverflow.com/questions/23157391/taking-intersections-of-convex-hulls-in-boostgeometry"><span class="icon">​</span>http://stackoverflow.com/questions/23157391/taking-intersections-of-convex-hulls-in-boostgeometry</a> </p> <p> I ran into the same problems with using double coordinates instead of integer ones and thought switching to integer ones would be a sufficient workaround. </p> anonymous https://svn.boost.org/trac10/ticket/9934 https://svn.boost.org/trac10/ticket/9934 Report #9926: Invalid limition for Sun compilers in foreach.hpp Fri, 18 Apr 2014 19:59:58 GMT Fri, 18 Apr 2014 19:59:58 GMT <pre class="wiki">File boost/foreach.hpp defines the macro BOOST_FOREACH_NO_CONST_RVALUE_DETECTION for various compiler versions, including for __SUNPRO_CC, &gt;= 0x5100 (at line 63) This restriction does not seem to be needed for compilers currently supported. Please remove this line, thus allowing the macro BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION to be defined. </pre> Stephen Clamage <stephen.clamage@…> https://svn.boost.org/trac10/ticket/9926 https://svn.boost.org/trac10/ticket/9926 Report #9925: operators_test.cpp test_left_shiftable is failing due to invalid parameters Fri, 18 Apr 2014 18:28:38 GMT Thu, 26 Jun 2014 21:59:15 GMT <p> In libs/utility/operators_test.cpp, test_left_shiftable is checking whether one random value shifted by a second random value, is the same whether called directly or via the Wrapper2&lt;&gt; and Wrapper1&lt;&gt; template classes. </p> <p> However, according to C++ ISO specification (INCITS/ISO/IEC 14882-2011\[2012\]), section 5.8.2 (which I don't have, but is referenced at http: / / msdn.microsoft.com/en-us/library/336xbhcz.aspx), left-shifting a signed value has undefined behavior (which is much more unpleasant than implementation-defined behavior) if the result doesn't fit in an unsigned value of the same size. </p> <p> With the clang compiler that comes with Xcode 5.1 ("Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)"), the results of such left-shifts are seemingly random - this code: </p> <pre class="wiki">long b1 = 48271; int s = 1291394886; std::cout &lt;&lt; (b1 &lt;&lt; s) &lt;&lt; std::endl; std::cout &lt;&lt; (b1 &lt;&lt; s)&lt;&lt; std::endl; std::cout &lt;&lt; (b1 &lt;&lt; s)&lt;&lt; std::endl; </pre><p> prints three different numbers. </p> chris.cooper@… https://svn.boost.org/trac10/ticket/9925 https://svn.boost.org/trac10/ticket/9925 Report #9919: xml_parser::read_xml() and write_xml() are limited to std::string keys Fri, 18 Apr 2014 02:37:50 GMT Fri, 18 Apr 2014 02:37:50 GMT <p> boost::property_tree::xml_parser and json_parser are hardcoded to work only with keys of std::string type. </p> <p> The following code will fail to compile: </p> <p> boost::property_tree::basic_ptree&lt;boost::container::string, boost::container::string&gt; pt; std::string filename("123.xml"); boost::property_tree:xml_parser::read_xml(filename, pt); </p> <p> I have prepared a patch 8af8b6bf3b65fa59792d849b526678f176d87132 that removes this limitation and added a pull request on github </p> sanderb@… https://svn.boost.org/trac10/ticket/9919 https://svn.boost.org/trac10/ticket/9919 Report #9912: shared_ptr SEGV in Android debug builds Tue, 15 Apr 2014 18:26:50 GMT Mon, 21 Apr 2014 17:01:49 GMT <p> Hi, </p> <p> I get a SEGV in the shared_ptr ref counting code on Android debug builds. Release builds do not have this problem. </p> <p> Instructions: </p> <ol><li>Install ndk (I used r9d 64-bit mac) </li><li>Ensure ndk-build is on your path </li><li>Download the attached sample program </li><li>Run build.sh </li><li>Install the executable on an Android device (I used a Nexus 7). </li></ol><p> As provided, you should get a SEGV in the sp_counted_base code. </p> <p> There are two ways to fix this: </p> <ol><li>Remove APP_OPTIM=debug from build.sh </li><li>Enable # LOCAL_CPPFLAGS := -DBOOST_SP_USE_PTHREADS in Android.mk </li></ol><p> Notes: </p> <p> Android debug builds disable the -mthumb option and instead use -marm. Ultimately this affects spinlock.hpp </p> <pre class="wiki">#elif defined(__GNUC__) &amp;&amp; defined( __arm__ ) &amp;&amp; !defined( __thumb__ ) # include &lt;boost/smart_ptr/detail/spinlock_gcc_arm.hpp&gt; //code omitted #elif defined(BOOST_HAS_PTHREADS) # include &lt;boost/smart_ptr/detail/spinlock_pt.hpp&gt; </pre><p> So release builds use spinlock_pt.hpp and debug builds use spinlock_gcc_arm.hpp </p> ian@… https://svn.boost.org/trac10/ticket/9912 https://svn.boost.org/trac10/ticket/9912 Report #9909: boost::geometry::intersection on two polygons returns incorrect result in one case Tue, 15 Apr 2014 14:03:32 GMT Tue, 15 Apr 2014 14:04:59 GMT <p> Hi, </p> <p> There is problem with intersection of 2 <a class="missing wiki">BoostMultiPolygons</a>. Result consisted of only one poly, but should contain 2. Our boost version is 1.55. We use MS VS 2005. </p> <p> Regards, Roman. </p> <p> Source: </p> <pre class="wiki">typedef boost::geometry::model::d2::point_xy&lt;double&gt; BoostPoint; typedef boost::geometry::model::ring&lt;BoostPoint, true&gt; BoostRing; typedef boost::geometry::model::polygon&lt;BoostPoint, true&gt; BoostPolygon; typedef boost::geometry::model::multi_polygon&lt;BoostPolygon&gt; BoostMultiPolygon; std::ifstream in("input.txt"); BoostMultiPolygon mpSrc1, mpSrc2, mpRes; int polyCount; in&gt;&gt;polyCount; for (int i=0;i&lt;polyCount;i++) { int pointCount; in&gt;&gt;pointCount; BoostPolygon curPolygon; BoostRing curRing; for(int j=0;j&lt;pointCount;j++) { double x,y; in&gt;&gt;x&gt;&gt;y; curRing.push_back(BoostPoint(x,y)); } curPolygon.outer() = curRing; mpSrc1.push_back(curPolygon); } in&gt;&gt;polyCount; for (int i=0;i&lt;polyCount;i++) { int pointCount; in&gt;&gt;pointCount; BoostPolygon curPolygon; BoostRing curRing; for(int j=0;j&lt;pointCount;j++) { double x,y; in&gt;&gt;x&gt;&gt;y; curRing.push_back(BoostPoint(x,y)); } curPolygon.outer() = curRing; mpSrc2.push_back(curPolygon); } boost::geometry::intersection(mpSrc1, mpSrc1, mpRes); // mpRes contain only 1 poly. </pre><p> Contaiment of input.txt : </p> <pre class="wiki">2 27 1.7795412086922593 -0.6928106373008438 1.7891900856407261 -0.73346701678889104 1.8205003053203772 -0.93531819320144416 1.8121292936644648 -1.1807879269729795 1.7394808987253128 -1.4154103358489794 1.6076723780308959 -1.6226589254855832 1.4259881506704424 -1.7879353774152118 1.2072258150073207 -1.8995978354269698 0.96679470265783485 -1.9497809426285055 0.72163046540975617 -1.934949866855677 0.60267613336191828 -1.8966346198312143 0.41731164084513261 -1.7901953365848997 0.27656953156479103 -1.6293196865339519 0.19571165090939757 -1.4314527634772853 0.18350609592762368 -1.2180509346857271 0.24127641714720549 -1.0122551473377328 0.36470663256680463 -0.8348324228970293 0.67786452669735997 -0.60942974505933833 0.76516102039389844 -0.55513726961522536 0.81184032592082556 -0.52936777403881374 0.9456140934360856 -0.46301076844880257 1.0715439430748541 -0.41043054738175999 1.2051029188121665 -0.39184926061543224 1.3438936378781083 -0.42743758887205224 1.4793480212800743 -0.49201773445646352 1.6124976944936933 -0.5720053785043937 1.7795412086922593 -0.6928106373008438 21 1.1615462164308124 1.9754373027139951 1.5360149764505899 1.886934666316108 1.7087948729537776 1.8041724959027103 1.8362554271519613 1.661147055471015 1.8986519852214538 1.4800141235445734 1.8863188239381428 1.2888326322334416 1.8011664480979825 1.1172181154349941 1.6563856381255915 0.99175502703475193 1.4722208702867912 0.93196155014586246 1.3307251338101709 0.96302852254101112 1.1889015041869535 1.0063804359754345 1.0851554485208663 1.0419536723519502 0.9303284683690195 1.1007328938955687 0.86940784993802189 1.126033284720011 0.73031572956801372 1.2427081650372707 0.64785873725084664 1.4044502129533221 0.63514254042735985 1.5855522394036576 0.69418824418515901 1.7572299913513629 0.81561115796600125 1.8921971045865578 0.98011239294323005 1.9690019829279639 1.1615462164308124 1.9754373027139951 2 27 0.4022007544928915 -0.79320935498558631 0.67786021968757104 -0.59223694917595526 0.72926567327554304 -0.56003487788773432 0.83396700970889248 -0.50259243802045006 0.94559413155101379 -0.44613850745202116 1.0715439430748541 -0.39325208386734267 1.2051029188121665 -0.36717869475972431 1.2079466156233769 -0.36787014029848375 1.383100956224427 -0.42804360792267371 1.5711416115100447 -0.55533336824076429 1.5817841916061597 -0.56708324300601975 1.712343915281392 -0.71850008854626279 1.8205003053203772 -0.93531819320144416 1.812129293664464 -1.1807879269729791 1.7394808987253114 -1.4154103358489782 1.6076723780308948 -1.6226589254855814 1.4259881506704415 -1.7879353774152098 1.2072258150073203 -1.899597835426968 0.96679470265783507 -1.9497809426285047 0.72163046540975617 -1.934949866855677 0.53668372332048819 -1.8329698805024297 0.38798986558594484 -1.6829853756425535 0.28761203927878709 -1.4971642062029744 0.24369363713914372 -1.2905815617733336 0.25979764523973214 -1.0799969565688248 0.33461758716561152 -0.88249457350408611 0.4022007544928915 -0.79320935498558631 24 0.69106840510193146 1.7283118331970613 0.80491403567959896 1.8636891961105639 0.97252446578255225 1.9537292239908663 1.1615462164308124 1.9754373027139951 1.445329131723774 1.9083675258739219 1.6295697181486921 1.8205585564967293 1.778913808591188 1.6814494215012656 1.87956003859109 1.503895640420464 1.9222073685313958 1.304305525338967 1.908582733892098 1.1608175914897563 1.9058154916000392 1.1489111215390388 1.8042808050307477 0.99216149052586733 1.6864779577548399 0.90268670286901209 1.5974991741674556 0.89671357054168577 1.4640547165764142 0.9042573086441501 1.3308383768494927 0.94117823976176729 1.1908244144294404 0.99088339761011279 1.0620930550951979 1.0410213286408192 0.93028741744520127 1.0862837299344523 0.9007363188137486 1.0981042670180636 0.7529401342681733 1.21045558001871 0.66108738214900509 1.3717924996227908 0.6399134449656606 1.5562327178056883 0.69106840510193146 1.7283118331970613 </pre> romanp@… https://svn.boost.org/trac10/ticket/9909 https://svn.boost.org/trac10/ticket/9909 Report #9905: Compile error in /libs/utility/assert_test.cpp Mon, 14 Apr 2014 19:24:00 GMT Wed, 23 Apr 2014 11:01:48 GMT <p> Compiling this file using clang++ (from Apple LLVM version 5.1) with c++11 features enabled, fails. </p> <p> Command line: </p> <blockquote> <p> "clang++" -x c++ -std=c++11 -stdlib=libc++ -O3 -O3 -finline-functions -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"../../.." -c -o "/tmp/boost/bin.v2/libs/utility/test/assert_test.test/clang-darwin-4.2.1/release/link-static/threading-multi/assert_test.o" "../assert_test.cpp" </p> </blockquote> <p> Error: </p> <p> ../assert_test.cpp:86:13: error: out-of-line definition of 'assertion_failed_msg' does not match any declaration in namespace 'boost' </p> <p> Solution: </p> <p> Replace </p> <p> void boost::assertion_failed_msg([SNIP]) { [SNIP] } </p> <p> with </p> <p> namespace boost { </p> <p> void assertion_failed_msg([SNIP]) { [SNIP] } </p> <p> } </p> chris.cooper@… https://svn.boost.org/trac10/ticket/9905 https://svn.boost.org/trac10/ticket/9905 Report #9903: patch for GCC -Wundef warning in utility/result_of.hpp Mon, 14 Apr 2014 15:08:43 GMT Mon, 14 Apr 2014 15:08:43 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9903 https://svn.boost.org/trac10/ticket/9903 Report #9902: patch for GCC 4.8 -Wunused-local-typedefs warning in tuple/detail/tuple_basic.hpp Mon, 14 Apr 2014 15:06:35 GMT Wed, 16 Apr 2014 16:05:58 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> anonymous https://svn.boost.org/trac10/ticket/9902 https://svn.boost.org/trac10/ticket/9902 Report #9900: patch for GCC -Wshadow warnings in spirit/home/classic Mon, 14 Apr 2014 15:01:23 GMT Mon, 14 Apr 2014 15:01:23 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9900 https://svn.boost.org/trac10/ticket/9900 Report #9898: patch for GCC -Wshadow warnings in random Mon, 14 Apr 2014 14:53:56 GMT Tue, 15 Apr 2014 03:05:52 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9898 https://svn.boost.org/trac10/ticket/9898 Report #9897: patch for GCC -Wunused-parameter warnings in ptr_container Mon, 14 Apr 2014 14:50:59 GMT Mon, 14 Apr 2014 14:50:59 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9897 https://svn.boost.org/trac10/ticket/9897 Report #9896: patch for GCC -Wextra warning in ptr_container/ptr_map_adapter.hpp Mon, 14 Apr 2014 14:46:58 GMT Mon, 14 Apr 2014 14:46:58 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9896 https://svn.boost.org/trac10/ticket/9896 Report #9895: patch for GCC -Wignored-qualifiers warnings in ptr_container/detail/map_iterator.hpp Mon, 14 Apr 2014 14:45:01 GMT Mon, 14 Apr 2014 14:45:01 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9895 https://svn.boost.org/trac10/ticket/9895 Report #9894: patch for GCC -Wshadow warnings in ptr_container Mon, 14 Apr 2014 14:42:42 GMT Mon, 14 Apr 2014 14:42:42 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9894 https://svn.boost.org/trac10/ticket/9894 Report #9893: patch for Clang -Wtautological-constant-out-of-range-compare in property_tree/detail/json_parser_write.hpp Mon, 14 Apr 2014 14:39:18 GMT Tue, 22 Apr 2014 11:12:01 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9893 https://svn.boost.org/trac10/ticket/9893 Report #9892: patch for GCC -Wshadow warnings in property_tree Mon, 14 Apr 2014 14:36:01 GMT Mon, 14 Apr 2014 14:36:01 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9892 https://svn.boost.org/trac10/ticket/9892 Report #9885: path to suppress MSVC 2008 warning C4510 in multi_array/concept_checks.hpp Mon, 14 Apr 2014 13:05:24 GMT Mon, 28 Apr 2014 17:06:47 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9885 https://svn.boost.org/trac10/ticket/9885 Report #9881: patch for GCC -Wshadow warnings in crc.hpp Mon, 14 Apr 2014 12:51:11 GMT Mon, 14 Apr 2014 12:51:11 GMT <p> upstreaming patch from <a class="missing wiki">LibreOffice</a> project, to fix compiler warnings </p> mstahl@… https://svn.boost.org/trac10/ticket/9881 https://svn.boost.org/trac10/ticket/9881 Report #9877: freelist test crashes on Linux/GCC/release/x86 Sun, 13 Apr 2014 10:33:02 GMT Wed, 23 Apr 2014 13:09:39 GMT <p> Hello, </p> <p> on a Redhat 6.5 system with GCC 4.4.7 I compiled the latest trunk with these parameters: <em>toolset=gcc architecture=x86 address-model=32 variant=release</em> </p> <p> I get the following error in the testsuite: </p> <pre class="wiki">unknown location(0): fatal error in "fixed_size_freelist_test": memory access violation at address: 0x1c93bbed: no mapping at fault address freelist_test.cpp(113): last checkpoint </pre><pre class="wiki">(gdb) bt #0 0x0805d652 in boost::lockfree::queue&lt;dummy*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::push(dummy* const&amp;) () #1 0x0805f1f2 in freelist_tester&lt;boost::lockfree::detail::fixed_size_freelist&lt;dummy, boost::lockfree::detail::runtime_sized_freelist_storage&lt;dummy, std::allocator&lt;dummy&gt; &gt; &gt;, true&gt;::allocate() () #2 0x08054367 in boost::detail::thread_data&lt;boost::_bi::bind_t&lt;void, boost::_mfi::mf0&lt;void, freelist_tester&lt;boost::lockfree::detail::fixed_size_freelist&lt;dummy, boost::lockfree::detail::runtime_sized_freelist_storage&lt;dummy, std::allocator&lt;dummy&gt; &gt; &gt;, true&gt; &gt;, boost::_bi::list1&lt;boost::_bi::value&lt;freelist_tester&lt;boost::lockfree::detail::fixed_size_freelist&lt;dummy, boost::lockfree::detail::runtime_sized_freelist_storage&lt;dummy, std::allocator&lt;dummy&gt; &gt; &gt;, true&gt;*&gt; &gt; &gt; &gt;::run() () #3 0x00125b26 in thread_proxy () from /uhome/gjasny/src/modular-boost/bin.v2/libs/thread/build/gcc-4.4.7/release/address-model-32/architecture-x86/threading-multi/libboost_thread.so.1.56.0 #4 0x00cd1b39 in start_thread () from /lib/libpthread.so.0 #5 0x00c14d6e in clone () from /lib/libc.so.6 </pre><p> I an <strong>not</strong> able to reproduce the crash in x86 debug mode or any x64 mode. </p> <pre class="wiki">[gjasny@drsbuild05.drs atomic]$ git describe fatal: No tags can describe '95c083ddfd990f7c848b785e5a0e9d282da5359b'. Try --always, or create some tags. [gjasny@drsbuild05.drs lockfree]$ git describe fatal: No tags can describe '8ffc9b3f26cd5802655ceb7d4188911f1cf7067d'. Try --always, or create some tags. </pre><p> Thanks, Gregor </p> gjasny@… https://svn.boost.org/trac10/ticket/9877 https://svn.boost.org/trac10/ticket/9877 Report #9874: turning off 'include_next' support breaks includes Sun, 13 Apr 2014 01:09:34 GMT Sun, 13 Apr 2014 01:09:34 GMT <p> The directive '#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT !+ 0" in file cpp_re2_lexer.hpp is in the wrong place, and causes all #include processing to break if BOOST_WAVE_SUPPORT_INCLUDE_NEXT is set to 0. </p> <p> I've attached a simple patch. </p> jon@… https://svn.boost.org/trac10/ticket/9874 https://svn.boost.org/trac10/ticket/9874 Report #9873: Boost.Geometry: boost::geometry::convex_hull makes a convex polygon look concave for certain values Fri, 11 Apr 2014 12:12:13 GMT Wed, 24 Aug 2016 12:32:31 GMT <p> The goal is to determine if a polygon is convex. boost::geometry::convex_hull can be used to so: if the polygon equals that points, it is convex. </p> <p> However, convex_hull does make a convex polygon look concave for certain values. </p> <p> I found that for these values, convex_hull work as expected: </p> <ul><li>(15.0,631.0) </li><li>( 8.0,628.0) </li><li>( 8.0,679.0) </li><li>(15.0,682.0) </li></ul><p> I found that for these values, convex_hull work does not work as expected: </p> <ul><li>(15.9835,631.923), </li><li>(8.24075,628.579), </li><li>(8.24075,679.58 ), </li><li>(15.9835,682.926) </li></ul><p> Below is the main portion of the code, including comments and assert statements. </p> <p> I am using: </p> <ul><li>OS: Lubuntu (with all updates) and Windows 7 (with all updates) </li><li>GCC: 4.8.0 </li><li>Boost 1.55.0 </li><li>Qt Creator 2.8.1 with Qt 5.1. </li></ul><p> Full code can be viewed at <a class="missing wiki">GitHub</a> -&gt; project <a class="missing wiki">ProjectRichelBilderbeek</a> -&gt; folder Test -&gt; folder CppBoostGeometryExample7 -&gt; code there. </p> <pre class="wiki">#include &lt;cassert&gt; #include &lt;iostream&gt; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Weffc++" #pragma GCC diagnostic ignored "-Wunused-local-typedefs" #pragma GCC diagnostic ignored "-Wunused-variable" #include &lt;boost/geometry.hpp&gt; #include &lt;boost/geometry/geometries/point_xy.hpp&gt; #pragma GCC diagnostic pop //Goal: determine if a polygon, derived from points, is convex //Method: if the convex_hull equals that points, it is convex // //Bug: convex_hull does make a convex polygon look concave for certain values int main() { using namespace boost::geometry; typedef model::d2::point_xy&lt;double&gt; Point; typedef model::polygon&lt;Point&gt; Polygon; //Example A: works as expected { /* Polygon used: - | - 2---3 | | - 1---0 | +--|---|---| (point values are those simplified from example B) */ const std::vector&lt;Point&gt; points { {15.0,631.0}, { 8.0,628.0}, { 8.0,679.0}, {15.0,682.0} }; Polygon polygon; append(polygon, points); assert(boost::geometry::num_points(polygon) == 4); boost::geometry::correct(polygon); assert(boost::geometry::num_points(polygon) == 5 &amp;&amp; "OK: boost::geometry::correct adds a point"); Polygon hull; boost::geometry::convex_hull(polygon, hull); assert(boost::geometry::num_points(hull) == 5 &amp;&amp; "OK: the hull of a convex polygon has the same number of points as that polygon"); assert(boost::geometry::equals(polygon,hull)); } //Example B: does not work as expected { /* Polygon used: - | - 2---3 | | - 1---0 | +--|---|---| */ const std::vector&lt;Point&gt; points { {15.9835,631.923}, {8.24075,628.579}, {8.24075,679.58 }, {15.9835,682.926} }; Polygon polygon; append(polygon, points); assert(boost::geometry::num_points(polygon) == 4); boost::geometry::correct(polygon); assert(boost::geometry::num_points(polygon) == 5 &amp;&amp; "OK: boost::geometry::correct adds a point"); Polygon hull; boost::geometry::convex_hull(polygon, hull); assert(boost::geometry::num_points(hull) == 6 &amp;&amp; "Should not add an extra point, as the original polygon was convex"); assert(!boost::geometry::equals(polygon,hull) &amp;&amp; "Should be equal, but does not"); } } </pre> richel@… https://svn.boost.org/trac10/ticket/9873 https://svn.boost.org/trac10/ticket/9873 Report #9872: brandes_betweenness_centrality does not work with graph containing disjoint components. Fri, 11 Apr 2014 02:14:19 GMT Fri, 11 Apr 2014 02:14:19 GMT <p> Assertion `get(path_count, w) != 0' failed, </p> <p> Assertion fails at the following if the graph contains disjoint components: boost/graph/distributed/betweenness_centrality.hpp:926 </p> <p> Sample Graph (in metis format): 5 3 2 1 3 2 5 4 </p> Alok Kumbhare <kumbhare@…> https://svn.boost.org/trac10/ticket/9872 https://svn.boost.org/trac10/ticket/9872 Report #9871: remove_spikes does not remove spike Thu, 10 Apr 2014 14:35:15 GMT Thu, 14 Jun 2018 10:23:43 GMT <p> The following call... </p> <pre class="wiki">boost::geometry::remove_spikes( "MULTIPOLYGON(((4287 2160,5984 2160)))" ) </pre><p> ...does not modify the input at all. Given that my polygons are oriented counter-clockwise, <strong>open</strong> and based on int, this is a valid multi-polygon that consists of only a spike, which should be removed. </p> <p> Please refer to discussion at <a class="ext-link" href="http://lists.boost.org/geometry/2014/04/2858.php"><span class="icon">​</span>http://lists.boost.org/geometry/2014/04/2858.php</a> </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/9871 https://svn.boost.org/trac10/ticket/9871 Report #9855: Corruption in container::string when used with boost::interprocess Tue, 08 Apr 2014 12:27:47 GMT Fri, 02 May 2014 11:19:21 GMT <p> I have found a rather strange problem in Boost.Container which I can only get to show itself when used from Boost.Interprocess. So the problem may be in either Boost.Container and Boost.Interprocess. </p> <p> I have a vector of strings (in shared memory). When I push back some of these strings one of them ends up missing its null termination (c_str() returns a string which has a garbage character at the end). </p> <p> I have tried to work out what the problem is, and my theory is that it is when the vector gets resized and the strings get moved into their new positions. The move semantics make the now "empty" strings "unconstructed". A new push_back will do an assign onto an unconstructed slot without "reconstructing" it. But this is where I get lost in the vector code... </p> <p> I have a short test program at <a class="ext-link" href="https://gist.github.com/DonOregano/10116264"><span class="icon">​</span>https://gist.github.com/DonOregano/10116264</a>. Compile and run and it will hopefully print out some information about the error. </p> <p> It appears that this error happens only on 64bit OSes. And I have only tried it on Linux (recent Ubuntu and Arch). </p> Lars Hagström <lars@…> https://svn.boost.org/trac10/ticket/9855 https://svn.boost.org/trac10/ticket/9855 Report #9850: ICL size() is inconsistent with iterators Tue, 08 Apr 2014 00:07:25 GMT Tue, 08 Apr 2014 00:07:25 GMT <p> Currently size() of an ICL container is not consistent with std::distance( cont.begin(), cont.end() ), which makes it not a model of the standard container concept and is a source of confusion. </p> Matt Calabrese https://svn.boost.org/trac10/ticket/9850 https://svn.boost.org/trac10/ticket/9850 Report #9849: shared_memory_object incompatible between x86 to x64 on Windows. Mon, 07 Apr 2014 17:47:04 GMT Mon, 07 Apr 2014 17:47:04 GMT <p> The problem is very similar to Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6054" title="#6054: Bugs: Reading Shared Memory from x86 to x64 and vice versa on OSX (closed: fixed)">#6054</a> for OSX and a different sub-folder of </p> <pre class="wiki">C:\\ProgramData/boost_interprocess/ </pre><p> is created for each x86 or x64. It happens in get_bootstamp (tmp_dir_helpers.hpp:45) which generates a different file. </p> <p> The code is directly defined for OSX in get_bootstamp, but for windows, it goes to windows_semaphore_based_map() constructor (windows_intermodule_singleton.hpp:57) where it behaves differently depending on the size of void*. </p> <p> If this behavior is an exception, it should be written in the docs, since mixing x64 and x32 seems to work on OSX and Unix and does work with the native windows functions and the windows_shared_memory. </p> rich@… https://svn.boost.org/trac10/ticket/9849 https://svn.boost.org/trac10/ticket/9849 Report #9843: binary serializer wrong behaviour treating enums Mon, 07 Apr 2014 01:55:11 GMT Mon, 14 Apr 2014 05:59:39 GMT <p> from iserializer.hpp template&lt;class Archive&gt; struct load_enum_type { </p> <blockquote> <p> template&lt;class T&gt; static void invoke(Archive &amp;ar, T &amp;t){ </p> <blockquote> <p> <em> convert integers to correct enum to load int i; ar &gt;&gt; boost::serialization::make_nvp(NULL, i); t = static_cast&lt; T &gt;(i); </em></p> </blockquote> <p> } </p> </blockquote> <p> }; </p> <p> it tries to load all enums int-sized. even in this case: enum class <a class="missing wiki">WrongBehaviour</a> : unsigned char { }; </p> <p> it reads 4-byte in my case, while 1 byte's expected. </p> jpjps@… https://svn.boost.org/trac10/ticket/9843 https://svn.boost.org/trac10/ticket/9843 Report #9841: BOOST_HAS_INTPTR_T is undocumented. Sun, 06 Apr 2014 20:22:02 GMT Tue, 31 Jul 2018 18:34:11 GMT <p> Please document BOOST_HAS_INTPTR_T. </p> anonymous https://svn.boost.org/trac10/ticket/9841 https://svn.boost.org/trac10/ticket/9841 Report #9830: memory leak in time_duration Wed, 02 Apr 2014 18:27:53 GMT Thu, 10 Apr 2014 15:10:44 GMT <p> Hi folks, this is a leak i've found compiling this very single line: boost::posix_time::time_duration td(1,0,0,0); cout &lt;&lt; td; </p> <p> valgrind reports the following leak: ==16902== 25 bytes in 1 blocks are possibly lost in loss record 21 of 29 ==16902== at 0x40290AC: operator new(unsigned int) (vg_replace_malloc.c:313) ==16902== by 0x455BB54: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CC72: std::string::_Rep::_M_clone(std::allocator&lt;char&gt; const&amp;, unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CD10: std::string::reserve(unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x455CF8C: std::string::append(char const*, unsigned int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19) ==16902== by 0x8079DE9: boost::date_time::time_facet&lt;boost::posix_time::ptime, char, std::ostreambuf_iterator&lt;char, std::char_traits&lt;char&gt; &gt; &gt;::time_facet(unsigned int) (in /home/marcos/release/sandbox/chutaygol) ==16902== by 0x8084086: std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; boost::posix_time::operator&lt;&lt; &lt;char, std::char_traits&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, boost::posix_time::time_duration const&amp;) </p> <p> I hope you find a bug with the help of my report Marcos Mayorga </p> mm@… https://svn.boost.org/trac10/ticket/9830 https://svn.boost.org/trac10/ticket/9830 Report #9827: Missing support for some code page(e.g 949, 950) in windows conversion with std backend Wed, 02 Apr 2014 09:55:42 GMT Thu, 13 Jul 2017 14:51:24 GMT <p> There is a table windows_encoding all_windows_encodings[] in wconv_codepage.ipp. It contains several code page definitions. However, it misses some code pages, such as the Korean code page(949) or Traditional Chinese Big5 code page(950), which will cause an invalid_charset_error when running in that windows for the following code: </p> <pre class="wiki">// Assuming we are using the std backend so it supports ansi encodings boost::locale::generator gen; gen.use_ansi_encoding(true); std::locale loc(gen("")); // Throws invalid_charset_error when running in Korean windows but OK in English windows. // The charset is "windows949" in Korean windows, which is not in the table. std::string us = boost::locale::conv::to_utf&lt;char&gt;("abcdefg", loc); </pre><p> The root cause of this exception is that the generated code page string is not in the table. When the locale generator with std backend in windows platform generates a locale, it calls boost::locale::util::get_system_locale(bool use_utf8). This function will use the following code to generate the locale string(in default_locale.cpp): </p> <pre class="wiki">if(GetLocaleInfoA(LOCALE_USER_DEFAULT,LOCALE_IDEFAULTANSICODEPAGE,buf,sizeof(buf))!=0) { if(atoi(buf)==0) lc_name+=".UTF-8"; else { lc_name +=".windows-"; lc_name +=buf; } } </pre><p> So the encoding part of the lc_name is windows-(code page). In a system with Korean(949) or Traditional Chinese(950) code page, this will generate an encoding string like "windows-949" or "windows-950". However, when wconv_from_utf::open() initializes, it tries to search "windows949" or "windows950" in array all_windows_encodings[]. Obviously it will not find the string, and the open() fails, then the exception is thrown. </p> <p> For a quick fix, I suggest adding the missing code page to the table: </p> <pre class="wiki">{ "cp949", 949, 0 }, // Korean { "uhc", 949, 0 }, // From "iconv -l" { "windows949", 949, 0 }, // Korean // "big5" already in the table { "windows950", 950, 0 }, // TC, big5 </pre><p> However the list may not be complete, and we may encounter problems when running in a system with code page that does not exist in the list. So we may probably add the following code to function int encoding_to_windows_codepage(char const *ccharset) in wconv_codepage.ipp: </p> <pre class="wiki">--- E:\Build1\boost_1_55_0\libs\locale\src\encoding\wconv_codepage.ipp 2014-04-02 16:34:52.000000000 +0800 +++ E:\Build2\boost_1_55_0\libs\locale\src\encoding\wconv_codepage.ipp 2014-04-02 17:31:37.000000000 +0800 @@ -206,12 +206,18 @@ return ptr-&gt;codepage; } else { return -1; } } + if(ptr==end &amp;&amp; charset.size()&gt;7 &amp;&amp; charset.substr(0,7)=="windows") { + int cp = atoi(charset.substr(7).c_str()); + if(IsValidCodePage(cp)) { + return cp; + } + } return -1; } template&lt;typename CharType&gt; bool validate_utf16(CharType const *str,unsigned len) </pre><p> This piece of code directly parses and validates the encoding string. The concern is that the call to <a class="missing wiki">IsValidCodePage</a> may decrease the performance(not tested). </p> hucaonju@… https://svn.boost.org/trac10/ticket/9827 https://svn.boost.org/trac10/ticket/9827 Report #9826: compress boost::property Tue, 01 Apr 2014 23:04:08 GMT Sat, 06 Dec 2014 15:46:49 GMT <p> Hello, </p> <p> looking at property_map, I noticed that boost::property is wasting space. property&lt;tag,double&gt; will typically have size 16 because of the no_property member. list_edge&lt;Vertex,no_property&gt; will also be too long for the same reason. A proper use of the empty base optimization (possibly through tuple or compressed_pair) should help with this. Partial specializations for no_property may be a simpler alternative. </p> <p> Graphs can grow large, and it seems quite important to avoid wasting memory. </p> marc.glisse@… https://svn.boost.org/trac10/ticket/9826 https://svn.boost.org/trac10/ticket/9826 Report #9825: mutable_heap wan't to construct Compare in assert in increase and decrease function Tue, 01 Apr 2014 12:01:42 GMT Tue, 01 Apr 2014 12:01:42 GMT <p> if Compare class don't have default Constructor and code use increase or decrease function then code don't compile. </p> Piotr Smulewicz <ps262971@…> https://svn.boost.org/trac10/ticket/9825 https://svn.boost.org/trac10/ticket/9825 Report #9824: boost::filesystem::is_empty() doesn't work with symlinks on Windows Tue, 01 Apr 2014 09:17:13 GMT Thu, 10 Sep 2015 13:03:43 GMT <p> See the original information on this problem in this Stackoverflow question: </p> <blockquote> <p> hxxp://stackoverflow.com/questions/22668337/boostfilesystemis-empty-returns-false-for-symlinks </p> </blockquote> <p> The person who reported that problem/asked the question on Stackoverflow also set up a github project that demonstrates the problem: </p> <blockquote> <p> hxxps://github.com/monsdar/BoostSymLinkError </p> </blockquote> <p> Basically, the <code>filesystem::is_empty()</code> function doesn't follow a symlink, so it will return false even if the target of the symlink has a length greater than 0. </p> <p> The V2 filesystem library worked for this situation. The difference is that V2 used the <code>stat()</code> function in the VC++ library, while the V3 filesystem library uses the Win32 <code>GetFileAttributesExW()</code> API. The latter does not follow symlinks and returns a file size of 0 regardless of the size of the symlink target. </p> <p> Attached is a diff for libs/filesystem/src/operations.cpp which uses the <code>stat()</code> technique very similar to what was used in filesystem V2. A few differences: </p> <ul><li><code>_wstat()</code> is used instead of <code>stat()</code> to accommodate UNICODE filenames </li><li>a bit test using <code>_S_IFDIR</code> is used to determine if the path is a directory instead of <code>S_ISDIR()</code> because the VC++ library doesn't include a <code>S_ISDIR()</code> or <code>_S_ISDIR()</code> macro. </li></ul><p> This patch is only lightly tested (MSVC++ 12.0, 32-bit, on Win7 x64, filenames with ASCII characters only). I'm not sure what the motivations for changing to the <code>GetFileAttributesExW()</code> API in filesystem V3 were, so I'm not sure if there's a fundamental flaw in using <code>_wstat()</code> that would prevent using it in V3. </p> michael.burr@… https://svn.boost.org/trac10/ticket/9824 https://svn.boost.org/trac10/ticket/9824 Report #9819: Documentation issue with Boost Graph Library Mon, 31 Mar 2014 18:31:08 GMT Mon, 31 Mar 2014 18:31:08 GMT <p> The documentation (<a href="http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/mcgregor_common_subgraphs.html">http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/mcgregor_common_subgraphs.html</a>) for the mcgregor_common_subgraphs() function indicates that the only_connected_subgraphs bool comes after the callback function: </p> <pre class="wiki">// named parameter version template &lt;typename GraphFirst, typename GraphSecond, typename SubGraphCallback, typename Param, typename Tag, typename Rest&gt; void mcgregor_common_subgraphs (const GraphFirst&amp; graph1, const GraphSecond&amp; graph2, SubGraphCallback user_callback, bool only_connected_subgraphs, const bgl_named_params&amp; params); </pre><p> However, in the code it actually comes before the callback (from boost/graph/mcgregor_common_subgraphs.hpp): </p> <pre class="wiki"> // Named parameter variant of mcgregor_common_subgraphs template &lt;typename GraphFirst, typename GraphSecond, typename SubGraphCallback, typename Param, typename Tag, typename Rest&gt; void mcgregor_common_subgraphs (const GraphFirst&amp; graph1, const GraphSecond&amp; graph2, bool only_connected_subgraphs, SubGraphCallback user_callback, const bgl_named_params&lt;Param, Tag, Rest&gt;&amp; params) { </pre><p> The examples in the documentation, though, use the working bool-first order. </p> Rocco Moretti <rmorettiase@…> https://svn.boost.org/trac10/ticket/9819 https://svn.boost.org/trac10/ticket/9819 Report #9817: Boost Asio + Visual Studio 2013 crashes without BOOST_ASIO_DISABLE_IOCP Mon, 31 Mar 2014 02:21:42 GMT Mon, 31 Mar 2014 02:21:42 GMT <p> In a Visual Studio 2013 SP1 Project with 8 executables using boost asio, 1 of them crashes in a repetitive way, always at the same point. The problem is related to memory management and code generation when win_iocp_socket_service is used. For example the following code, under very special circumstances, may trigger the crash: </p> <pre class="wiki"> tcp::iostream * sss = new tcp::iostream("mysite.com", "80"); </pre><p> I realized that everytime it crashes, win_iocp_io_service constructor is not called. Hence iocp_.handle is not initialized and is later used in <a class="missing wiki">CreateIoCompletionPort</a>() containing garbage, this being the ultimate reason of the crash. </p> <p> On the other hand, in the processes that work, the constructor is properly called, as it should always be. =&gt; Is there any known possibility for win_iocp_io_service constructor not being called? Is there anything like a default constructor that could be called instead? </p> <pre class="wiki"> main() { tcp::iostream * sss = new tcp::iostream("mysite.com", "80"); } </pre><p> The code won't crash. But the following may do if <a class="missing wiki">MyClass</a> instantiates boost::asio::io_service </p> <pre class="wiki"> MyClass * myInstance = NULL; main() { if(myInstance) delete myInstance; tcp::iostream * sss = new tcp::iostream("mysite.com", "80"); } </pre><p> Don't expect to be able to reproduce it this way, as I said it's difficult to isolate because it probably is related to a bug in the compiler that only manifests in very special conditions that boost asio sometimes trigger. Simply moving lines of code may fix it. </p> <p> The problem is not in memory management in our source code, that was my first thought, but all tests suggest it isn't. In addition, the code has been working for years with boost 1.45 and GCC 4.5. The only change was moving to Visual Studio 2013 and boost asio 1.55. </p> <p> To corroborate, I was able to reproduce in a surrealistic way: just adding or commenting a line in dead code (code that can never be reached because it is placed after a return) would fix or make the application crash. </p> <p> Finally I solved everything by defining BOOST_ASIO_DISABLE_IOCP. I didn't change a single line of code. No more crashes since then. </p> kasty.jose@… https://svn.boost.org/trac10/ticket/9817 https://svn.boost.org/trac10/ticket/9817 Report #9816: boost::filesystem::is_empty does not work for symbolic links on Windows Sun, 30 Mar 2014 10:11:13 GMT Thu, 10 Sep 2015 13:04:38 GMT <p> Hi, </p> <p> I'm using boost::filesystem::is_empty() to check if configuration files I'm using are empty. Due to our software deployment these files are mostly symbolic links created with the Windows 7 internal mklink command. </p> <p> I've used Boost 1.46.1 in the past for this and everything worked fine. Lastly I upgraded to 1.55.0 and found out that is_empty does not work anymore. </p> <p> I at first asked at Stackoverflow for some help: <a class="ext-link" href="http://stackoverflow.com/questions/22668337/boostfilesystemis-empty-returns-false-for-symlinks"><span class="icon">​</span>Boost::filesystem::is_empty() returns false for Symlinks</a> </p> <p> I also created a Github project which reproduces the problem: <a class="ext-link" href="https://github.com/monsdar/BoostSymLinkError"><span class="icon">​</span>Github - BoostSymLinkError</a> </p> Nils Brinkmann <monsdar+boost@…> https://svn.boost.org/trac10/ticket/9816 https://svn.boost.org/trac10/ticket/9816 Report #9810: boost serialization: deserialization from boost txt archive fails on -nan for double Thu, 27 Mar 2014 19:20:37 GMT Mon, 14 Mar 2016 21:31:49 GMT <p> A double gets correctly serialized to "-nan". Deserializing it leads to 'boost::archive::archive_exception' </p> <blockquote> <p> what(): input stream error </p> </blockquote> <p> when used with a text archive. </p> florian.burkart@… https://svn.boost.org/trac10/ticket/9810 https://svn.boost.org/trac10/ticket/9810 Report #9808: bc_clustering: "has no edges" identifier not found Tue, 25 Mar 2014 10:54:54 GMT Tue, 09 Aug 2016 09:14:14 GMT <p> Function has_no_edges(g) is behind graph namespace. Need to attach graph:: indicator before calling this function in bc_clustering.hpp. </p> <div class="wikipage" style="font-size: 80%"><p> Original library code: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">if</span> <span class="p">(</span><span class="n">has_no_edges</span><span class="p">(</span><span class="n">g</span><span class="p">))</span> <span class="k">return</span><span class="p">;</span> <span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="n">do</span> <span class="p">{</span> <span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="err">!</span><span class="n">is_done</span> <span class="o">&amp;&amp;</span> <span class="err">!</span><span class="n">has_no_edges</span><span class="p">(</span><span class="n">g</span><span class="p">));</span> </pre></div></div></div><div class="wikipage" style="font-size: 80%"><p> Modified code: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">if</span> <span class="p">(</span><span class="n">graph</span><span class="p">::</span><span class="n">has_no_edges</span><span class="p">(</span><span class="n">g</span><span class="p">))</span> <span class="k">return</span><span class="p">;</span> <span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="n">do</span> <span class="p">{</span> <span class="p">(</span><span class="o">...</span><span class="p">)</span> <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="err">!</span><span class="n">is_done</span> <span class="o">&amp;&amp;</span> <span class="err">!</span><span class="n">graph</span><span class="p">::</span><span class="n">has_no_edges</span><span class="p">(</span><span class="n">g</span><span class="p">));</span> </pre></div></div></div> Łukasz Ilnicki <lukaszi89@…> https://svn.boost.org/trac10/ticket/9808 https://svn.boost.org/trac10/ticket/9808 Report #9806: Possible bug in the transposition of a banded matrix (Boost uBLAS library) Mon, 24 Mar 2014 15:01:07 GMT Mon, 24 Mar 2014 15:01:07 GMT <p> The attached small example crashes if line 17 is commented out.<br /> In other words, it seems that it is not possible to assign the transpose of a banded matrix to an empty banded matrix. </p> michele.de.stefano@… https://svn.boost.org/trac10/ticket/9806 https://svn.boost.org/trac10/ticket/9806 Report #9804: boost::geometry::intersection returns input polygon when the result should be empty. Mon, 24 Mar 2014 08:00:03 GMT Mon, 24 Mar 2014 08:00:03 GMT <p> The result of an intersection is sometimes equal to one of the input polygons, when the result should be empty. For example: </p> <pre class="wiki"> typedef boost::geometry::model::d2::point_xy&lt;double&gt; Point; typedef boost::geometry::model::polygon&lt;Point&gt; Polygon; Polygon pg1; Polygon pg2; boost::geometry::model::multi_polygon&lt;Polygon&gt; result; boost::geometry::append(pg1, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg1, Point(-9.0, 3.2500000000000022)); boost::geometry::append(pg1, Point(-9.0, 6.5)); boost::geometry::append(pg1, Point(-6.0, 6.5)); boost::geometry::append(pg1, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg2, Point(-3.0, 0.0)); boost::geometry::append(pg2, Point(-6.0, 0.0)); boost::geometry::append(pg2, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg2, Point(-3.0, 3.2500000000000009)); boost::geometry::append(pg2, Point(-3.0, 0.0)); boost::geometry::intersection(pg1, pg2, result); </pre><p> After the intersection, result contains a polygon equal to pg1. We're using boost 1.55 and also tried the rescale_to_integer branch, which gives the same results. </p> <p> The problem seems to be with boost::geometry::within. We've previously had problems with within that we resolved by using a different strategy. Changing the strategy of the within calls in the function update_selection_map in select_rings.hpp makes intersection return the correct result for this case. </p> Nick <7415963@…> https://svn.boost.org/trac10/ticket/9804 https://svn.boost.org/trac10/ticket/9804 Report #9797: Scanning files without updating file counter when initializing from settings container Thu, 20 Mar 2014 09:42:06 GMT Thu, 20 Mar 2014 10:11:02 GMT <p> When setting up a text file backend programmatically I can call scan_for_files() with the update_counter parameter set to false. </p> <p> However when initializing logging from a settings container, default_text_file_sink_factory::create_sink() always calls scan_for_files() with the update_counter parameter set to true. </p> <p> In my project I need to be able to initialize a text file backend from a settings container, and scanning files with update_counter set to false. </p> robert.hegner@… https://svn.boost.org/trac10/ticket/9797 https://svn.boost.org/trac10/ticket/9797 Report #9794: Calling async_read_some before(tcp::socket, ...) before tcp::socket::async_connect handler is called causes async_connect handler to indicate successful connect Thu, 20 Mar 2014 04:56:44 GMT Thu, 20 Mar 2014 05:03:35 GMT <p> Given the example in this ticket, and assuming that there is no service running on localhost:29873, I would expect the example to print: </p> <pre class="wiki">Failed to read Failed to connect </pre><p> Instead I get: </p> <pre class="wiki">Failed to read Connected! </pre><div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;istream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;ostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/asio.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/bind.hpp&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="p">;</span> <span class="k">using</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">tcp</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="n">asio</span><span class="o">::</span><span class="n">io_service</span> <span class="n">ios</span><span class="p">;</span> <span class="n">tcp</span><span class="o">::</span><span class="n">socket</span> <span class="n">socket</span><span class="p">{</span><span class="n">ios</span><span class="p">};</span> <span class="n">tcp</span><span class="o">::</span><span class="n">endpoint</span> <span class="n">endpoint</span><span class="p">(</span><span class="n">asio</span><span class="o">::</span><span class="n">ip</span><span class="o">::</span><span class="n">address</span><span class="o">::</span><span class="n">from_string</span><span class="p">(</span><span class="s">&quot;127.0.0.1&quot;</span><span class="p">),</span> <span class="mi">29873</span><span class="p">);</span> <span class="n">socket</span><span class="p">.</span><span class="n">async_connect</span><span class="p">(</span><span class="n">endpoint</span><span class="p">,</span> <span class="p">[](</span><span class="k">const</span> <span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">&amp;</span> <span class="n">ec</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span> <span class="o">!</span><span class="n">ec</span> <span class="p">)</span> <span class="p">{</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Connected!&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to connect&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">});</span> <span class="n">asio</span><span class="o">::</span><span class="n">streambuf</span> <span class="n">readBuffer</span><span class="p">;</span> <span class="n">asio</span><span class="o">::</span><span class="n">async_read_until</span><span class="p">(</span><span class="n">socket</span><span class="p">,</span> <span class="n">readBuffer</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="p">[](</span><span class="k">const</span> <span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">&amp;</span> <span class="n">ec</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span> <span class="o">!</span><span class="n">ec</span> <span class="p">)</span> <span class="p">{</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Read &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">size</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to read&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="p">});</span> <span class="n">ios</span><span class="p">.</span><span class="n">run</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> I also have the same problem in boost 1.48. </p> <p> I know it's not really logical to do what the example shows, but I would not expect the result it gives. </p> tim.pavlic@… https://svn.boost.org/trac10/ticket/9794 https://svn.boost.org/trac10/ticket/9794 Report #9792: named_mutex is not process Persistence by default in windows Wed, 19 Mar 2014 09:02:27 GMT Wed, 19 Mar 2014 10:07:53 GMT <p> when the BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION is defined, the named_mutex is ipcdetail::shm_named_mutex and is not process persistence. </p> <p> BTW: when we can remove the BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION? </p> huyuguang@… https://svn.boost.org/trac10/ticket/9792 https://svn.boost.org/trac10/ticket/9792 Report #9791: [libs/program_options] winmain.cpp fails to compile with -O3, ok with -O0 (gcc-5666.3) Tue, 18 Mar 2014 16:07:47 GMT Wed, 19 Mar 2014 18:50:40 GMT <p> Hello </p> <p> I have identified a problem when cross-compiling libs\program_options\src\winmain.cpp with Apple's gcc-5666.3 (4.2.1) and the -O3/2/1 switches, it works fine with -O0 </p> <pre class="wiki">"X:/libs/gcc-5666.3-x86_64-apple-darwin10/bin/g++.exe" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -m32 -w -m32 -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -c -o "bin.v2\libs\program_options\build\gcc-4.2.1\release\abi-sysv\address-model-32\binary-format-mach-o\link-static\strip-on\target-os-darwin\threadapi-pthread\threading-multi\winmain.o" "libs\program_options\src\winmain.cpp" </pre><p> Unfortunately I don't have any more logs but I have uploaded the gcc-5666.3-x86_64-apple-darwin10.tar.xz on my googledrive if you want to give a shot by yourself <a class="ext-link" href="https://drive.google.com/folderview?id=0B4dcRcayW88VNmRtZDEybEZoLTQ&amp;usp=sharing"><span class="icon">​</span>https://drive.google.com/folderview?id=0B4dcRcayW88VNmRtZDEybEZoLTQ&amp;usp=sharing</a> </p> class101 <ad@…> https://svn.boost.org/trac10/ticket/9791 https://svn.boost.org/trac10/ticket/9791 Report #9790: LINK1104 link error Tue, 18 Mar 2014 14:59:46 GMT Tue, 18 Mar 2014 15:37:54 GMT <p> Downloaded 'latest' (at least I thought it was the lastest - Version pull down below suggests two subsequent versions) package from sourceforge. After installing, I started reading the "Getting Started" pages and came to the list of "Need to be Compiled" libraries. Since I'm currently after the filesystem capabilities, I built (using the bootstrap and .\b2 commands). I then started through the tutorial for the filesystem lib. </p> <p> I set up VS (using MSVS10), to find the boost libraries, and typed in tut1. Upon compile, I get a link error: </p> <p> LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc100-mt-gd-1_55.lib' </p> <p> The reason that it cannot open it, is because there is NO ...vc100-mt... Instead, we now have ...vc110-mt... </p> <p> For now, I believe that I'll uninstall, and go back one version. Try to get through the tutorials. </p> <p> I've used boost libraries before, but always with non-compiled headers and with projects at work. I read about the filesystem iterators online and thought that I'd give it a whirl for a home project. This is what I ran into, so I thought that I'd report it. </p> Mitch Oldroyd <Oldroyd_m@…> https://svn.boost.org/trac10/ticket/9790 https://svn.boost.org/trac10/ticket/9790 Report #9789: Consistent comment support for INI files Tue, 18 Mar 2014 14:06:25 GMT Tue, 18 Mar 2014 14:14:08 GMT <p> See ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5379" title="#5379: Feature Requests: Support '#' comments in property_tree ini parser (closed: fixed)">#5379</a> - semicolon was supported but hash was not in property tree ini parser, hash was added as a result of that ticket. </p> <p> I am presently dealing with program options. In config_file.cpp, only hash is supported. </p> <p> Please can semicolon be added for consistency within boost as well as other applications. </p> <p> For example, PHP only supports semicolon (they have dropped support for hash which I am given to understand was always the lesser used character for commenting INI files). Many applications do not support hash. </p> edward@… https://svn.boost.org/trac10/ticket/9789 https://svn.boost.org/trac10/ticket/9789 Report #9770: Finish_edge event misbehavior. Tue, 11 Mar 2014 14:20:04 GMT Tue, 11 Mar 2014 18:07:44 GMT <p> Consider the following diamond DAG: </p> <pre class="wiki"> 3 / \ 1 2 \ / 0 </pre><p> A depth first search on this graph with a visitor that records the on-finish-vertex and on-vinish-edge events should output something that: </p> <pre class="wiki">Finish vertex: 3 Finish vertex: 1 Finish edge: (1,3) Finish edge: (2,3) Finish vertex: 2 Finish edge: (0,1) Finish vertex: 0 Finish edge: (0,2 </pre><p> But it acually outputs: </p> <pre class="wiki">Finish vertex: 3 Finish edge: (1,3) Finish vertex: 1 Finish edge: (1,3) Finish edge: (2,3) Finish vertex: 2 Finish edge: (0,2) Finish vertex: 0 Finish edge: (0,2) </pre><p> The edge (0,2) is seen twice while (0,1) not at all (see the attachment). </p> <p> The problem comes from "boost/graph/depth_first_search.hpp" in depth_first_visit_impl(). The variable "src_e" is overwritten during the propagation with another tree edge. </p> <p> The following simple fix solves the problem: </p> <pre class="wiki">--- /tmp/depth_first_search.hpp 2014-03-11 15:11:53.616272419 +0100 +++ boost/graph/depth_first_search.hpp 2014-03-11 15:11:14.854137441 +0100 @@ -143,8 +143,8 @@ ColorValue v_color = get(color, v); if (v_color == Color::white()) { vis.tree_edge(*ei, g); - src_e = *ei; + Edge src_e = *ei; stack.push_back(std::make_pair(u, std::make_pair(src_e, std::make_pair(++ei, ei_end)))); u = v; put(color, u, Color::gray()); </pre><p> </p> edwin.carlinet@… https://svn.boost.org/trac10/ticket/9770 https://svn.boost.org/trac10/ticket/9770 Report #9769: Add conversion from boost::exception_ptr to std::exception_ptr when available Tue, 11 Mar 2014 06:48:51 GMT Fri, 12 Sep 2014 17:12:34 GMT <p> Having the conversion from boost::exception_ptr to std::exception_ptr, when the compiler supports it std::exception_ptr, is needed to implement this ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9710" title="#9710: Feature Requests: Support std::exception_ptr in boost::promise (closed: wontfix)">#9710</a> "Support std::exception_ptr in boost::promise". </p> <p> Do you think that it is worth adding it to Boost.Exception? Could this conversion be done more efficiently using the internals of the library? </p> viboes https://svn.boost.org/trac10/ticket/9769 https://svn.boost.org/trac10/ticket/9769 Report #9764: posix_time::time_duration::operator/(int) can trigger division by zero error Mon, 10 Mar 2014 11:12:22 GMT Mon, 10 Mar 2014 11:12:22 GMT <p> When dividing time_duration by a 64-bit integer the divisor will be implicitly cast to 'int' type (32-bits on most platforms). </p> <p> This will cause 'division by zero' runtime error for any value which is a multiple of 2<sup>32</sup>. It will also cause invalid values to be calculated if the divisor is larger than 2<sup>31</sup> - 1. </p> <p> I don't see any reason why the time_duration interface should be limited to division by 32-bit integer values on systems where the storage type used in time_duration is at least 64-bit long. </p> Michał Ślizak <michal.slizak+boost@…> https://svn.boost.org/trac10/ticket/9764 https://svn.boost.org/trac10/ticket/9764 Report #9758: boost::geometry::index::rtree does not compile with CoordinateSystem geographic< Sat, 08 Mar 2014 20:30:42 GMT Sat, 07 Apr 2018 07:12:34 GMT <p> boost::geometry::index::rtree does not compile with <a class="missing wiki">CoordinateSystem</a> geographic&lt; </p> <p> <a class="missing wiki">CoordinateSystem</a> cartesian is ok </p> <p> Example program: </p> <pre class="wiki">typedef bg::model::point&lt;double, 2, bg::cs::cartesian&gt; geo_point_ok; typedef bg::model::point&lt;double, 2, bg::cs::geographic&lt;bg::degree&gt; &gt; geo_point; typedef std::pair&lt;geo_point, unsigned int&gt; geo_vg_value; void test() { double lon=10.0, lat=60.0; geo_point pt(on, lat); rtree.insert(std::make_pair(pt, wp-&gt;id)); std::vector&lt;geo_vg_value&gt; result; geo_point here(targetLat, targetLat); rtree.query(bgi::nearest(here, 20), std::back_inserter(result)); } </pre> ola.lykkja@… https://svn.boost.org/trac10/ticket/9758 https://svn.boost.org/trac10/ticket/9758 Report #9755: Simple way to get hash. Fri, 07 Mar 2014 12:25:16 GMT Fri, 07 Mar 2014 12:25:16 GMT <p> When writing custom hash_value functions, it is often useful to forward to the hash of another value. However, there is currently no short and simple way to do this. Consider: </p> <p> template&lt;class T&gt; struct C { </p> <blockquote> <p> some_complex_mpl_expression&lt;T&gt;::type value; friend std::size_t hash_value() { </p> <blockquote> <p> <em> First attempt: requires knowledge of the type of the value to hash. return boost::hash&lt;some_complex_mpl_expression&lt;T&gt;::type&gt;()(this-&gt;value); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Second attempt: two lines, not recommended. using namespace boost; return hash_value(this-&gt;value); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em> Third attempt: works, but requires three lines of code and doesn't yield the same hash as the first two attempts. std::size_t seed = 0; boost::hash_combine(seed, this-&gt;value); return seed; </em></p> </blockquote> <p> } </p> </blockquote> <p> }; </p> <p> I propose the addition of a simple function to calculate the hash of any arbitrary value, defined below: </p> <p> template&lt;class T&gt; std::size_t get_hash(T const&amp; v) { </p> <blockquote> <p> return hash&lt;T&gt;()(v); </p> </blockquote> <p> } </p> <p> This would allow me to write the above hash_value function with a single line of simple and correct code: </p> <blockquote> <p> friend std::size_t hash_value() { </p> <blockquote> <p> return boost::get_hash(this-&gt;value); </p> </blockquote> <p> } </p> </blockquote> Rainer Deyke <rainerd@…> https://svn.boost.org/trac10/ticket/9755 https://svn.boost.org/trac10/ticket/9755 Report #9749: bzip2_decompressor input filter gives data_error_magic Thu, 06 Mar 2014 20:11:05 GMT Fri, 06 Nov 2015 02:21:00 GMT <p> The bzip2_decompressor input filter is not able to read some bz2 files properly. It can read only the first few lines of the file then terminates with data_error_magic (BZ_DATA_ERROR_MAGIC in bzlib.h). </p> <p> After examining the problematic bz2 files I noticed that the first compressed stream is much shorter (536 bytes long) than the following streams. Debugging lead me to the conclusion that the simmetric_filter class's read method fills the buffer with new data even when the buffer hasn't been consumed completely. With the proposed solution below the files can be read to the end without further problems. </p> <p> The original code segment: </p> <pre class="wiki">if (status == f_good) status = fill(src); </pre><p> The proposed modification: </p> <pre class="wiki">if (status == f_good &amp;&amp; buf.ptr() == buf.eptr()) status = fill(src); </pre><p> Could someone please make this modification? Regards, </p> <blockquote> <p> Balazs </p> </blockquote> Balazs Andor Zalanyi <zalanyi.balazs@…> https://svn.boost.org/trac10/ticket/9749 https://svn.boost.org/trac10/ticket/9749 Report #9747: Warning from template_arity_impl<F,N> using GCC 4.8.2 Thu, 06 Mar 2014 08:40:52 GMT Thu, 06 Mar 2014 08:40:52 GMT <p> This code </p> <pre class="wiki">template&lt; typename F, int N &gt; struct template_arity_impl { BOOST_STATIC_CONSTANT(int, value = sizeof(::boost::mpl::aux::arity_helper(type_wrapper&lt;F&gt;(), arity_tag&lt;N&gt;())) - 1 ); }; </pre><p> from boost/mpl/aux_/preprocessed/gcc/template_arity.hpp assigns int value = sizeof(...) causing a sign-conversion warning. </p> Hartmut Schirmer <h.schirmer@…> https://svn.boost.org/trac10/ticket/9747 https://svn.boost.org/trac10/ticket/9747 Report #9742: for_each causes funny behavior in phoenix V3 expressions Wed, 05 Mar 2014 08:06:53 GMT Mon, 07 Apr 2014 16:43:57 GMT <p> Using phoenix::for_each in a Phoenix expression produces a strange behavior, which seems to be reverse execution of the comma-separated expressions. This does NOT happen when you include Phoenix V2 from the spirit directory. </p> <p> Sample Code: (Full code attached) </p> <pre class="wiki">std::vector&lt;int&gt; v{1,2}; (std::cout &lt;&lt; phx::val("("), phx::for_each(arg1, phx::lambda[std::cout &lt;&lt; arg1]), std::cout &lt;&lt; phx::val(")"))(v); </pre><p> This originally showed up for me when using phoenix expressions in spirit semantic actions, discussed here: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/Phoenix-V3-for-each-or-lambda-seem-to-be-ruining-qi-semantic-actions-tp4659691.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/Phoenix-V3-for-each-or-lambda-seem-to-be-ruining-qi-semantic-actions-tp4659691.html</a> </p> Chromatix https://svn.boost.org/trac10/ticket/9742 https://svn.boost.org/trac10/ticket/9742 Report #9736: [documentation] document the size() extension points Tue, 04 Mar 2014 12:59:20 GMT Tue, 04 Mar 2014 12:59:20 GMT <p> I added optimisations and extension-points to efficiently get the size() of a range. This means that when passing a type such as std::list that an optimal size() function is chosen in preference to performing std::distance on bidirectional iterators. </p> Neil Groves https://svn.boost.org/trac10/ticket/9736 https://svn.boost.org/trac10/ticket/9736 Report #9730: copy_graph doesn't use graph_traits Sun, 02 Mar 2014 13:44:49 GMT Sun, 02 Mar 2014 13:44:49 GMT <p> copy_graph doesn't use graph_traits internally. Therefore, classes which don't have traversal_category and directed_category, such as std::vector or SGB, are not used as the source graph. </p> <p> follow code is compile error: </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;list&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/vector_as_graph.hpp&gt; #include &lt;boost/graph/copy.hpp&gt; int main() { using VectorGraph = std::vector&lt;std::list&lt;int&gt;&gt;; auto vgraph = VectorGraph{{1, 2, 3}, {3, 5}, {5}, {4}, {0, 2}, {0}}; using Graph = boost::adjacency_list&lt;&gt;; auto graph = Graph{}; boost::copy_graph(vgraph, graph , boost::vertex_copy([]( boost::graph_traits&lt;VectorGraph&gt;::vertex_descriptor , boost::graph_traits&lt;Graph&gt;::vertex_descriptor) {}) . edge_copy([]( boost::graph_traits&lt;VectorGraph&gt;::edge_descriptor , boost::graph_traits&lt;Graph&gt;::edge_descriptor) {}) ); } </pre><p> patch is here </p> <pre class="wiki">--- /usr/local/include/boost/graph/copy.hpp 2014-03-02 21:44:55.000000000 +0900 +++ copy.hpp 2014-03-02 21:45:05.000000000 +0900 @@ -248,8 +248,8 @@ template &lt;class Graph&gt; struct choose_graph_copy { - typedef typename Graph::traversal_category Trv; - typedef typename Graph::directed_category Dr; + typedef typename graph_traits&lt;Graph&gt;::traversal_category Trv; + typedef typename graph_traits&lt;Graph&gt;::directed_category Dr; enum { algo = (is_convertible&lt;Trv, vertex_list_graph_tag&gt;::value &amp;&amp; is_convertible&lt;Trv, edge_list_graph_tag&gt;::value) </pre> Masahiro Nawata <kamo.tanabota@…> https://svn.boost.org/trac10/ticket/9730 https://svn.boost.org/trac10/ticket/9730 Report #9728: Bootstrap currently fails Sat, 01 Mar 2014 18:39:41 GMT Sat, 01 Mar 2014 19:57:44 GMT <p> I just just did a clone from Github. </p> <p> The instructions that I'm following are at <em>more/getting_started/unix-variants.html</em>. </p> <p> The first step fails on a missing directory: </p> <pre class="wiki">boost$ ./bootstrap.sh ./bootstrap.sh: 1: ./bootstrap.sh: ./tools/build/v2/engine/build.sh: not found Building Boost.Build engine with toolset ... Failed to build Boost.Build build engine Consult 'bootstrap.log' for more details </pre> myselfasunder@… https://svn.boost.org/trac10/ticket/9728 https://svn.boost.org/trac10/ticket/9728 Report #9726: transform_iterator does not compile on SUN with Cstd STL Sat, 01 Mar 2014 11:11:57 GMT Tue, 08 Apr 2014 04:44:36 GMT <p> boost/iterator/transform_iterator.hpp:49 </p> <pre class="wiki">... typename std::iterator_traits&lt;Iterator&gt;::reference ... </pre><p> should read: </p> <pre class="wiki">... typename boost::detail::iterator_traits&lt;Iterator&gt;::reference ... </pre><p> otherwise it fails to compile on SUN with old Cstd STL that does not have proper iterator_traits&lt;&gt;. All other classes already use boost::detail::iterator_traits&lt;&gt; </p> Yevgeniy Shaporynskyy <shaporynskyy@…> https://svn.boost.org/trac10/ticket/9726 https://svn.boost.org/trac10/ticket/9726 Report #9724: Add move semantics for ssl::stream<> Fri, 28 Feb 2014 10:08:32 GMT Thu, 01 Mar 2018 10:13:17 GMT <p> Hi, </p> <p> <em>boost::asio::basic_stream_socket&lt;&gt;</em> implements move semantics. However, <em>boost::asio::ssl::stream&lt;&gt;</em> does not. </p> <p> I don't know if this feature is in the roadmap yet, but for c++11 and later users, this could be very handy. </p> anonymous https://svn.boost.org/trac10/ticket/9724 https://svn.boost.org/trac10/ticket/9724 Report #9722: Changeset 55698 Problem with "base_unit_info<S>::name());" Fri, 28 Feb 2014 09:42:11 GMT Tue, 11 Mar 2014 00:38:56 GMT <p> In the Changeset 55698 in Line 85 the return(Scale::name() + S::name()); was changed to return(Scale::name() + base_unit_info&lt;S&gt;::name()); </p> <p> Now I get the compiler-error /opt/local/include/boost/units/scaled_base_unit.hpp:85:32: Implicit instantiation of undefined template 'boost::units::base_unit_info&lt;boost::units::cgs::gram_base_unit&gt;' </p> <p> when I try to get the name of a scaled unit: </p> <blockquote> <p> boost::units::si::kilogram_base_unit kg; std::string strKg{kg.name()}; </p> </blockquote> <p> When I change line 85 back to the original version, the binding results and the output is correct. </p> <p> The same is valid for line 81 "symbol". </p> <p> Possible solution: go back to the former version. Side effects? </p> <p> or add in gram.hpp in line 36 </p> <blockquote> <p> template&lt;&gt; struct base_unit_info&lt;cgs::gram_base_unit&gt; { </p> <blockquote> <p> static const char* name() { return("gram"); } static const char* symbol() { return("g"); } </p> </blockquote> <p> }; </p> </blockquote> <p> but results in double definitions of name and symbol. The same has to be repeated for the other base_units, e.g. centimeter_base_unit </p> Eckhard Nees <eckhard.nees@…> https://svn.boost.org/trac10/ticket/9722 https://svn.boost.org/trac10/ticket/9722 Report #9721: ptree write_json does not conform to JSON standard Thu, 27 Feb 2014 14:52:01 GMT Tue, 19 Jun 2018 15:34:54 GMT <p> According to the JSON standard documented at <a class="ext-link" href="http://www.json.org"><span class="icon">​</span>http://www.json.org</a>, only string values should have quotes around them. The Boost write_json method puts quotes around all values, not just strings. </p> <p> For example, the following program: </p> <p> #include &lt;cstdlib&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;boost/property_tree/ptree.hpp&gt; #include &lt;boost/property_tree/json_parser.hpp&gt; </p> <p> using boost::property_tree::ptree; using boost::property_tree::read_json; using boost::property_tree::write_json; </p> <p> int main() { </p> <blockquote> <p> ptree pt; </p> </blockquote> <p> </p> <blockquote> <p> pt.put ("string", "string value"); pt.put ("integer", 1); pt.put ("float", 3.14159); </p> </blockquote> <blockquote> <p> std::ostringstream buf; write_json (buf, pt); </p> </blockquote> <blockquote> <p> std::cout &lt;&lt; buf.str(); return 0; </p> </blockquote> <p> } </p> <p> produces this output: </p> <p> { </p> <blockquote> <p> "string": "string value", "integer": "1", "float": "3.14159" </p> </blockquote> <p> } </p> <p> According to the JSON standard, the output should be: </p> <p> { </p> <blockquote> <p> "string": "string value", "integer": 1, "float": 3.14159 </p> </blockquote> <p> } </p> <p> (no quotes around the numeric values) </p> Mark Pfeifer <Mark_Pfeifer@…> https://svn.boost.org/trac10/ticket/9721 https://svn.boost.org/trac10/ticket/9721 Report #9717: Boost math library on PPC64 has thousands of errors Wed, 26 Feb 2014 14:36:01 GMT Wed, 12 Mar 2014 16:35:26 GMT <p> Hi, </p> <p> I'm trying to port Boost 1.55 on PowerPC64 BE and LE. Thousands of errors appear with math library. </p> <p> Investigation one test (bessel_zeros_example_1) which loops, I see by means of gdb the following: </p> <blockquote> <p> boost::math::cyl_bessel_j_zero&lt; double, ..... boost::math::detail::cyl_bessel_j_zero_imp&lt;<span class="underline">float128, ..... </span></p> </blockquote> <p> This "<span class="underline">float128" seems erroneous. However, looking at boost/math/special_functions/bessel.hpp code, I see that this type is chosen at compilation time, by means of: </span></p> <blockquote> <p> typedef typename policies::evaluation&lt;result_type, Policy&gt;::type value_type; </p> </blockquote> <p> and it is a nightmare to understand why the compiler did choose <span class="underline">float128. Unless gdb is showing nuts ? </span></p> <p> Exact test is: bin.v2/libs/math/example/bessel_zeros_example_1.test/gcc-4.8.2/debug/bessel_zeros_example_1 </p> <p> Comparing execution path of this test code in PPC64/BE to Intel64, I see some floor() value computed differently on the 2 systems, and leading the test program to enter a wrong path and stay stucked in an infinite loop. </p> <p> There is some fundamental error, hidden by compiler which compiles templates and gives me no hint. </p> <p> I need help to determine what is wrong with Boost math on PPC64. </p> <p> Tony </p> Tony Reix <tony.reix@…> https://svn.boost.org/trac10/ticket/9717 https://svn.boost.org/trac10/ticket/9717 Report #9715: Converting std:exception_ptr to boost:exception_ptr Wed, 26 Feb 2014 09:47:25 GMT Wed, 26 Feb 2014 09:47:47 GMT <p> Please provide a way to convert std::exception_ptr to boost::exception_ptr (if std::exception_ptr is available of course). </p> <p> This would important for users who do not want to wrap all of their throws in enable_current_exception() and/or use std::exception_ptr in other parts of their code, but forced to use boost::exception_ptr in their public interface of other boost libraries. </p> <p> See also: <a class="ext-link" href="http://stackoverflow.com/questions/22010388/converting-stdexception-ptr-to-boostexception-ptr"><span class="icon">​</span>http://stackoverflow.com/questions/22010388/converting-stdexception-ptr-to-boostexception-ptr</a> </p> <p> Would it be possible to typedef std::exception_ptr as boost::exception_ptr if boost is compiled with C++11? </p> anonymous https://svn.boost.org/trac10/ticket/9715 https://svn.boost.org/trac10/ticket/9715 Report #9713: Boost.MPI - error in documentation Tue, 25 Feb 2014 22:26:39 GMT Tue, 25 Feb 2014 22:26:39 GMT <p> In the section MPI Implementation, page <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/mpi/getting_started.html">http://www.boost.org/doc/libs/1_55_0/doc/html/mpi/getting_started.html</a>, there is an error in the documentation. </p> <p> In particular: </p> <blockquote> <p> int main() </p> </blockquote> <p> Should be: </p> <blockquote> <p> int main (int argc, char<strong> argv) </strong></p> </blockquote> <p> Otherwise the example code doesn't compile. </p> anonymous https://svn.boost.org/trac10/ticket/9713 https://svn.boost.org/trac10/ticket/9713 Report #9704: b2: Compiler flavour has no flexibility for cross-compiling projects. Mon, 24 Feb 2014 20:39:19 GMT Fri, 04 Apr 2014 22:13:25 GMT <p> Hi, </p> <p> I've been trying hard, but it is annoying, didn't find it elsewhere and it could really be improved. </p> <p> I am building my project (i.e. all of my project tree) </p> <blockquote> <p> on 2 platforms: </p> </blockquote> <ul><li>Windows, </li><li>Linux, </li></ul><p> for 3 different platforms: </p> <ul><li>Windows </li><li>Linux IA32 </li><li>Linux ARM HF </li></ul><p> Now, whilst b2 subsystem is quite flexible in specifying different types of compilers, it is not so much when using the same type of compiler, but using different versions of it. </p> <p> I have managed to define it somehow, i.e. in my project_config.jam (@ home dir): </p> <pre class="wiki">if [ os.name ] = NT { using gcc : : : &lt;cxxflags&gt;-std=c++11 &lt;cxxflags&gt;"-include cmath" &lt;cxxflags&gt;-Wdeprecated-declarations ; using gcc : armhf : arm-linux-gnueabihf-g++.exe : &lt;cxxflags&gt;-std=c++11 &lt;cxxflags&gt;"-include cmath" &lt;cxxflags&gt;-Wdeprecated-declarations ; } if [ os.name ] = LINUX { using gcc : : : &lt;cxxflags&gt;-std=c++11 &lt;cxxflags&gt;"-include cmath" ; using gcc : armhf : /usr/bin/arm-linux-gnueabihf-g++ : &lt;cxxflags&gt;-std=c++11 &lt;cxxflags&gt;"-include cmath" &lt;cxxflags&gt;-Wdeprecated-declarations ; } </pre><p> But now, in every sub-project, where I'm moving files to a 'release' location, (* and whenever I need to specify copmiler-flavor specific configuration) I need to perform something like: </p> <pre class="wiki">install copy_binaries_to_release : target_names.. : &lt;target-os&gt;linux:&lt;toolset-gcc:version&gt;4.7:&lt;location&gt;../../release/ &lt;target-os&gt;windows:&lt;toolset&gt;gcc-4.7.2-mingw:&lt;location&gt;../../release/ &lt;toolset-gcc:version&gt;armhf:&lt;location&gt;../../release_armhf/ &lt;toolset&gt;gcc-mingw-armhf:&lt;location&gt;../../release/ ; </pre><p> Is there a better way of doing it? </p> <p> If not, then the problem (and I guess a bug) is that b2 behaves differently on different platforms, somewhat lacks of mechanism to support what I need to do (and it's not really very uncommon). </p> <p> Problems: </p> <ol><li>Different toolset names when building on different OSes (and yes, I did try to specify a default flavor, but see Problem 2). </li></ol><table class="wiki"> <tr><td style="text-align: center"> </td><td> command </td><td> toolset </td><td> flavor </td></tr><tr><td> gcc XA32(linux) </td><td> b2 </td><td> gcc </td><td> 4.7 </td></tr><tr><td> gcc XA32(win) </td><td> b2 </td><td> gcc-4.7.2-mingw </td><td> ? </td></tr><tr><td> <strong>gcc armhf(linux)</strong> </td><td> <strong>b2 --toolset=gcc-armhf</strong> </td><td> <strong>gcc</strong> </td><td> <strong>armhf</strong> </td></tr><tr><td> gcc armhf(win) </td><td> b2 --toolset=gcc-armhf target-os=linux </td><td> gcc-mingw-armhf </td><td> ? </td></tr></table> <p> Only gcc-armhf seems to achieve requested results. BUt the main issue it, that it is all different on different platforms, and both: armhf should produce compatible binaries. </p> <p> BTW: is there really a need to distinguish between e.g. Cygwin and MinGW flavours if they produce the same target with the same version of compiler? If one builds from Cygwin and MinGW for the same platform: resulting executables should be compatible for the same target, so only in 'bin' build directory they can really be different (if needed), but it is unlikely that one builds both of them (target:gcc version) at the same time (like it is unlikely that I build under windows and linux at the same time). </p> <ol start="2"><li>It is not possible to specify a flavor for GCC (by explicitly giving it a name and compiler location) - because b2 is performing a version check. This check either fails, or if it does not (and default version is used) - automatic build-platform-specific flavor value is created behind the control) - probably because b2 is trying to be too clever at this. </li></ol><p> Couldn't it leave it alone, and use flavor that was explicitly specified? </p> <p> I really wish that I could specify above: </p> <pre class="wiki">using gcc : 4.7 : &lt;my-path-to-gcc47&gt; ... ; using gcc : armhf : &lt;my-path-to-gcc47 arm hf&gt; ... ; </pre><p> and wouldn't have to create links or worry about the build system changing/ coming up with a flavor by concatenating target name (e.g. on </p> <pre class="wiki">b2 --toolset=gcc-armhf </pre><p> with g++ (and having to hack/create symlinks to match this etc.) - </p> <p> It should just accept what I specify, and use it 'as-is' (and if someone does something stupid - let them fail and fix it). </p> <p> There could also be a support for something like: </p> <pre class="wiki">import toolset ; if [ toolset.name ] == gcc { if [ toolset.flavor ] == flav_1 { } } # and my verbosive Jamfiles could be re-written to something like: local gcc_flavor = [ toolset.flavor ] ; install copy_binaries_to_release : target_names.. : &lt;toolset&gt;gcc,&lt;flavor&gt;4.7:&lt;location&gt;../../release &lt;toolset&gt;gcc,&lt;flavor&gt;armhf:&lt;location&gt;../../release_$(gcc_flavor) # or even to: &lt;toolset&gt;gcc:&lt;location&gt;../../release_$(gcc_flavor) ; </pre><p> With a bit of guidance / advice from someone, who knows the build system well - I'm happy to help with implementing the above. </p> <p> Thanks, LUkasz. </p> <p> (BTW: what is the best component for build system / tools?) </p> lukasz.forynski@… https://svn.boost.org/trac10/ticket/9704 https://svn.boost.org/trac10/ticket/9704 Report #9703: build system ignores --with-icu= option Mon, 24 Feb 2014 19:09:28 GMT Mon, 10 Mar 2014 22:37:10 GMT <p> Configured as: </p> <p> ./bootstrap.sh --with-icu --with-icu=/opt/icu4c-52.1 </p> <p> I can see that line in project-config.jam exists: </p> <p> path-constant ICU_PATH : /opt/icu4c-52.1 ; </p> <p> But when I run ./b2 -a it reports: </p> <ul><li>has_icu builds : yes (cached) </li></ul><p> ... </p> <ul><li>Boost.Locale needs either iconv or ICU library to be built. </li></ul><p> (repeated many times) </p> sergey@… https://svn.boost.org/trac10/ticket/9703 https://svn.boost.org/trac10/ticket/9703 Report #9699: Ticket submission capcha inappropriately mixes non-HTTPS content Sun, 23 Feb 2014 18:45:11 GMT Tue, 16 Sep 2014 05:54:57 GMT <p> When an update is flagged as potential spam, the Google capcha request uses http, not https. This prevents more secure browsers from loading the script. I had to switch to Safari to make updates, which you can imagine makes me super uncomfortable this weekend in particular. </p> Nate Rosenblum <flander@…> https://svn.boost.org/trac10/ticket/9699 https://svn.boost.org/trac10/ticket/9699 Report #9697: clang fails on 32bit MacOS X (unknown target CPU i686) Sat, 22 Feb 2014 09:14:46 GMT Sat, 22 Feb 2014 09:17:12 GMT <p> compiling boost.context with 'b2 toolset=clang' on 32bit MacOS X fails: </p> <blockquote> <p> "clang++" -x c++ -O0 -g -O0 -fno-inline -Wall -g -march=i686 -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_NO_AUTO_LINK=1 -I"/Users/nat/boost-git" -c -o "/Users/nat/boost-git/bin.v2/libs/context/test/test_context.test/clang-darwin-4.2.1/debug/address-model-32/architecture-x86/link-static/threading-multi/test_context.o" "/Users/nat/boost-git/libs/context/test/test_context.cpp" </p> </blockquote> <p> error: unknown target CPU 'i686' ...failed clang-darwin.compile.c++ /Users/nat/boost-git/bin.v2/libs/context/test/test_context.test/clang-darwin-4.2.1/debug/address-model-32/architecture-x86/link-static/threading-multi/test_context.o... </p> olli https://svn.boost.org/trac10/ticket/9697 https://svn.boost.org/trac10/ticket/9697 Report #9692: Add operator[](graph_bundle_t) to compressed_sparse_row_graph<bidirectionalS> Thu, 20 Feb 2014 19:11:57 GMT Thu, 20 Feb 2014 19:11:57 GMT <p> Hello, </p> <p> it would be really fine, if in a bidirectional csr graph the graph's properties were accessible in the same way as in a directed csr graph. </p> Philipp Büttgenbach <Philipp.Buettgenbach@…> https://svn.boost.org/trac10/ticket/9692 https://svn.boost.org/trac10/ticket/9692 Report #9691: Unused parameter 'args' in the definition of the macro BOOST_PARAMETER_FUNCTION Thu, 20 Feb 2014 18:53:54 GMT Thu, 20 Feb 2014 18:53:54 GMT <p> In CGAL (www.cgal.org), usage of BOOST_PARAMETER_FUNCTION triggers several of such following warnings with recent g++ (4.8) and LLVM/clang: </p> <pre class="wiki">CGAL-4.4-Ic-126/include/CGAL/perturb_mesh_3.h:39:1: warning: unused parameter 'args' [-Wunused-parameter] BOOST_PARAMETER_FUNCTION( ^ /usr/local/include/boost/parameter/preprocessor.hpp:937:5: note: expanded from macro 'BOOST_PARAMETER_FUNCTION' BOOST_PARAMETER_FUNCTION_AUX( \ ^ /usr/local/include/boost/parameter/preprocessor.hpp:933:5: note: expanded from macro 'BOOST_PARAMETER_FUNCTION_AUX' BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER(name, args, 0, 0, tag_namespace) ^ /usr/local/include/boost/parameter/preprocessor.hpp:911:5: note: expanded from macro 'BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER' BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER_AUX( \ ^ /usr/local/include/boost/parameter/preprocessor.hpp:899:21: note: expanded from macro 'BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER_AUX' , Args const&amp; args \ ^ </pre><p> I have verified that indeed the parameter is not used, and I propose that <strong>patch</strong>: </p> <pre class="wiki">diff --git a/include/boost/parameter/preprocessor.hpp b/include/boost/parameter/preprocessor.hpp index f1bda87..23ddbc4 100644 --- a/include/boost/parameter/preprocessor.hpp +++ b/include/boost/parameter/preprocessor.hpp @@ -896,7 +896,7 @@ struct funptr_predicate&lt;void**&gt; BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \ ResultType BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \ ResultType(*)() \ - , Args const&amp; args \ + , Args const&amp; \ , int \ BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \ BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG \ </pre> Laurent Rineau <Laurent.Rineau__boost@…> https://svn.boost.org/trac10/ticket/9691 https://svn.boost.org/trac10/ticket/9691 Report #9687: introduce boost::python::raw_method Thu, 20 Feb 2014 10:00:39 GMT Thu, 20 Feb 2014 10:00:39 GMT <p> Hi, </p> <p> I am developing a Python's module using boost::python. I need to create a method for certain class, which takes <code>*args</code> and <code>**kwargs</code>. </p> <p> Boost::python is capable of creating a raw function/constructor, but lacks an API for creating a <strong>raw method</strong>. I attach a header, which introduces this option. </p> <p> Thank you for a feedback. </p> <p> Regards </p> <hr /> <p> Example: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">namespace</span> <span class="n">bp</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="p">;</span> <span class="k">class</span> <span class="nc">ClassName</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="c1">// ...</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">init</span><span class="p">()</span> <span class="p">{</span> <span class="n">s_class</span> <span class="o">=</span> <span class="n">bp</span><span class="o">::</span><span class="n">class_</span><span class="o">&lt;</span><span class="n">ClassName</span><span class="o">&gt;</span><span class="p">(</span><span class="s">&quot;ClassName&quot;</span><span class="p">,</span> <span class="cm">/* ... */</span><span class="p">)</span> <span class="p">.</span><span class="n">def</span><span class="p">(</span><span class="s">&quot;RawMethodName&quot;</span><span class="p">,</span> <span class="n">bp</span><span class="o">::</span><span class="n">raw_method</span><span class="o">&lt;</span><span class="n">ClassName</span><span class="o">&gt;</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">ClassName</span><span class="o">::</span><span class="n">MethodName</span><span class="p">,</span> <span class="mi">2</span><span class="p">));</span> <span class="p">}</span> <span class="n">bp</span><span class="o">::</span><span class="n">object</span> <span class="n">RawMethodName</span><span class="p">(</span> <span class="k">const</span> <span class="n">bp</span><span class="o">::</span><span class="n">tuple</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="k">const</span> <span class="n">bp</span><span class="o">::</span><span class="n">dict</span> <span class="o">&amp;</span><span class="n">kwargs</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Do something with args, kwargs</span> <span class="k">return</span> <span class="n">bp</span><span class="o">::</span><span class="n">object</span><span class="p">();</span> <span class="p">}</span> <span class="c1">// ...</span> <span class="k">private</span><span class="o">:</span> <span class="k">static</span> <span class="n">bp</span><span class="o">::</span><span class="n">object</span> <span class="n">s_class</span><span class="p">;</span> <span class="p">};</span> <span class="n">bp</span><span class="o">::</span><span class="n">object</span> <span class="n">ClassName</span><span class="o">::</span><span class="n">s_class</span><span class="p">;</span> </pre></div></div> phatina@… https://svn.boost.org/trac10/ticket/9687 https://svn.boost.org/trac10/ticket/9687 Report #9686: Provide cmd file for building both 32-bit and 64-bit libraries on Windows with Microsoft Visual C++ Thu, 20 Feb 2014 00:57:25 GMT Thu, 20 Feb 2014 23:27:29 GMT <p> It would make sense to provide a cmd file to automate bootstrapping and building both 32-bit and 64-bit libraries (in the Debug and Release configurations) on Windows (placing them under stage32 and stage64, respectively). Running bootstrap and b2 with no command-line arguments as recommended in the Getting Started guide will build only 32-bit libraries. In order to build 64-bit libraries, one has to consult bjam docs to figure out which parameters/options to use. Since targeting both 32-bit, and 64-bit architectures is quite common for developers working under Windows, having a batch file to automate Boost library builds for both architectures in one go will save them some time and effort. </p> rassokhin@… https://svn.boost.org/trac10/ticket/9686 https://svn.boost.org/trac10/ticket/9686 Report #9685: Boost.Locale does not link against static ICU on Windows Wed, 19 Feb 2014 23:06:28 GMT Thu, 08 Dec 2016 14:40:25 GMT <p> There seems to be no support for linking against the static ICU libraries (sicuXX.lib) on Windows. Is there any plans to add it (?), or is there an inherent problem? </p> <p> I would be willing to write that support if there is a bit of guidance on how to go about it in the Jamfile. </p> stathis@… https://svn.boost.org/trac10/ticket/9685 https://svn.boost.org/trac10/ticket/9685 Report #9682: first slash in path "a:/b/c" is interpreted as second node in [path.begin() parh.end()] sequence (windows) Wed, 19 Feb 2014 11:57:59 GMT Wed, 19 Feb 2014 11:57:59 GMT <p> <em>windows boost::filesystem::path p("a:/b/c"); boost::filesystem::path result; for(boost::filesystem::path::iterator it = p.begin(); it != p.end(); ++it) { </em></p> <blockquote> <p> result/=*it; <em>value of it on second iteration is '/' </em></p> </blockquote> <p> } assert(result.string() == "a:/b\c"); </p> anonymous https://svn.boost.org/trac10/ticket/9682 https://svn.boost.org/trac10/ticket/9682 Report #9681: How Do I Remove C:\ProgramData\boost_Interprocess From My Computer Wed, 19 Feb 2014 04:17:34 GMT Mon, 10 Mar 2014 22:56:17 GMT <p> Hello, </p> <p> I've recently run malware scan and C:\<a class="missing wiki">ProgramData</a>\boost_Interprocess keeps popping us as an issue, no matter how many times I try to clean and remove it. When I try to delete it from accessing the C: Drive, it says I do not have permission. It didn't use to be there before and I don't want it there now. </p> <p> Can someone please show me how to delete this from my computer? </p> <p> Thanks </p> anonymous https://svn.boost.org/trac10/ticket/9681 https://svn.boost.org/trac10/ticket/9681 Report #9680: Exceptions disabling in some files Tue, 18 Feb 2014 20:00:27 GMT Tue, 18 Feb 2014 20:00:27 GMT <p> Used the macro BOOST_TRY,BOOST_CATCH,BOOST_CATCH_END and BOOST_RETHROW do be able to use some method/classes when exceptions are disabled </p> anonymous https://svn.boost.org/trac10/ticket/9680 https://svn.boost.org/trac10/ticket/9680 Report #9679: documentation about bidirectional iterator Tue, 18 Feb 2014 13:34:57 GMT Tue, 11 Mar 2014 03:56:13 GMT <p> <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/BidirectionalIterator.html">http://www.boost.org/doc/libs/1_55_0/doc/html/BidirectionalIterator.html</a> states: </p> <p> Precondition of predecrement: "i is incrementable (not off-the-end) and some dereferenceable iterator j exists such that i == ++j" </p> <p> This can be interpreted that end() iterator can not be decremented, which according to other sources you can do. </p> <p> <a class="ext-link" href="http://stackoverflow.com/a/5322234/104774"><span class="icon">​</span>http://stackoverflow.com/a/5322234/104774</a> references "ISO/IEC 14882:2003 C++ Standard 23.1.1/12 – Sequences" </p> Stefaan Verstraeten <stefaan.verstraeten@…> https://svn.boost.org/trac10/ticket/9679 https://svn.boost.org/trac10/ticket/9679 Report #9677: make_biconnected_planar failure when working with custom planar embedding Mon, 17 Feb 2014 19:46:00 GMT Mon, 17 Feb 2014 19:46:00 GMT <p> Using make_biconnected_planar function with a planar graph G and its custom embedding results in a graph, which is no longer planar. </p> <p> The problem doesn't occur when embedding G with boyer_myrvold_planarty_test. </p> <p> The custom planar embedding of a graph G with 11 vertices and 18 edges is (each group is a counter clock-wise list of edges adjacent to a vertex): </p> <p> 0 - 1 : 0 0 - 8 : 15 </p> <p> 0 - 1 : 0 1 - 2 : 2 4 - 1 : 3 1 - 3 : 1 </p> <p> 1 - 2 : 2 2 - 3 : 5 2 - 4 : 4 </p> <p> 1 - 3 : 1 3 - 4 : 6 2 - 3 : 5 </p> <p> 4 - 1 : 3 2 - 4 : 4 3 - 4 : 6 </p> <p> 5 - 6 : 7 5 - 8 : 9 7 - 5 : 8 </p> <p> 5 - 6 : 7 6 - 7 : 10 6 - 9 : 12 8 - 6 : 11 </p> <p> 7 - 5 : 8 7 - 8 : 13 9 - 7 : 14 6 - 7 : 10 </p> <p> 5 - 8 : 9 8 - 6 : 11 8 - 9 : 16 0 - 8 : 15 7 - 8 : 13 </p> <p> 6 - 9 : 12 9 - 7 : 14 9 - 10 : 17 8 - 9 : 16 </p> <p> 9 - 10 : 17 </p> <p> An example program is attached. </p> Jakub Oćwieja <netkuba@…> https://svn.boost.org/trac10/ticket/9677 https://svn.boost.org/trac10/ticket/9677 Report #9676: ptr_container without RTTI Mon, 17 Feb 2014 12:03:39 GMT Mon, 17 Feb 2014 12:03:39 GMT <p> ptr_container requires RTTI support only when compiled in debug mode. The reason for this seem to be a few assertions in <code>clone_allocator.hpp</code> and <code>detail/reversible_ptr_container.hpp</code>, which make use of <code>typeid</code>. </p> <p> It seems to me like these assertions should be surrounded by checks for <code>BOOST_NO_TYPEID</code> or something to that effect, so as to enable compilation in debug mode without RTTI. </p> <p> Steps to reproduce: Attempt to compile ptr_container in debug mode with RTTI support disabled. </p> <p> Expected result: Compilation finishes without error. </p> <p> Actual result: Compilation fails with errors in <code>clone_allocator.hpp</code> and <code>detail/reversible_ptr_container.hpp</code> regarding use of typeid when RTTI is disabled. </p> d.leinhaeuser@… https://svn.boost.org/trac10/ticket/9676 https://svn.boost.org/trac10/ticket/9676 Report #9675: qt5: moc invocation broken for Qt 5.2 Mon, 17 Feb 2014 08:38:37 GMT Mon, 17 Feb 2014 08:38:37 GMT <p> Between Qt 5.1 and 5.2, the command line syntax for <code>moc</code> changed, breaking builds. Specifically, the <code>-f</code> command line argument works differently: previously, it was <code>-f&lt;file&gt;</code> where <code>&lt;file&gt;</code> could be omitted; in Qt 5.2, it's <code>-f &lt;file&gt;</code> – notice the additional space, and <code>&lt;file&gt;</code> is not optional any more. The moc invocation by the Qt5 module relied on the old behaviour as it passed <code>-f</code> without a filename. Furthermore, the moc input file was passed right after the <code>-f</code> argument. The same usage is now interpreted as the input file being the parameter to <code>-f</code>, and the input it expected on <code>stdin</code>. Since nothing is ever written into it, moc never finishes. </p> frank.richter@… https://svn.boost.org/trac10/ticket/9675 https://svn.boost.org/trac10/ticket/9675 Report #9674: qt5: <rccflags> support Mon, 17 Feb 2014 08:27:47 GMT Mon, 17 Feb 2014 08:27:47 GMT <p> Support <code>&lt;rccflags&gt;</code> for both qt4 and qt5 by moving the feature declaration to a separate module. </p> frank.richter@… https://svn.boost.org/trac10/ticket/9674 https://svn.boost.org/trac10/ticket/9674 Report #9669: Invalid links in Boost python Sat, 15 Feb 2014 00:13:46 GMT Mon, 10 Mar 2014 22:46:45 GMT <p> The page <a href="http://www.boost.org/doc/libs/1_55_0/libs/python/doc/">http://www.boost.org/doc/libs/1_55_0/libs/python/doc/</a> contains links to web pages that are not valid Eg. "Building Hybrid Systems With Boost Python" </p> parama_chakra@… https://svn.boost.org/trac10/ticket/9669 https://svn.boost.org/trac10/ticket/9669 Report #9667: Testing v 1.55 : bad characters in some .output files Fri, 14 Feb 2014 10:10:50 GMT Thu, 26 Jun 2014 22:19:04 GMT <p> There are bad characters at end of string of this line of a .output file (generated by ../b2 in status sub-dir): </p> <p> hello worldhello worlda wide stringanother wide string<sup>@ </sup></p> <p> That prevents some tools to read till end of file. </p> <p> $ cat boost1.55-1.55.0/bin.v2/libs/range/test/iterator_range.test/gcc-4.8/debug/link-static/threading-multi/iterator_range.output Running 7 test cases... hello worldhello worlda wide stringanother wide string <strong>* No errors detected </strong></p> <p> EXIT STATUS: 0 </p> <p> $ grep EXIT boost1.55-1.55.0/bin.v2/libs/range/test/iterator_range.test/gcc-4.8/debug/link-static/threading-multi/iterator_range.output Binary file boost1.55-1.55.0/bin.v2/libs/range/test/iterator_range.test/gcc-4.8/debug/link-static/threading-multi/iterator_range.output matches </p> <p> hexdump -C ......./iterator_range.output ........ 00 0a 45 58 49 54 ........ </p> <blockquote> <p> <sup></sup><sup></sup><sup> These characters are unexpected in the middle of the file. </sup></p> </blockquote> <p> There are some more errors in other .output files I'm now analyzing. </p> Tony Reix <tony.reix@…> https://svn.boost.org/trac10/ticket/9667 https://svn.boost.org/trac10/ticket/9667 Report #9666: managed_shared_memory constructor crash Thu, 13 Feb 2014 18:30:35 GMT Thu, 03 Jul 2014 16:33:15 GMT <p> The following code causes a crash on Visual Studio 2013 when compiling for 64-bit and with optimization. </p> <pre class="wiki">#include &lt;boost/interprocess/managed_shared_memory.hpp&gt; using namespace boost::interprocess; int main() { static const char name[] = "test_shm"; shared_memory_object::remove(name); managed_shared_memory segment(create_only, name, 65536); return 0; } </pre><p> The reported error is a buffer overrun The crash doesn't happen on 32-bit builds. It also doesn't happen when building without optimization. Finally, it doesn't happen when compiling with /GS- (disable security checks). </p> <p> This is the stack trace: </p> <pre class="wiki">msvcr120.dll!__crt_debugger_hook(int _Reserved=1) Line 60 C testshm.exe!__raise_securityfailure(_EXCEPTION_POINTERS * ExceptionPointers=0x000000013fa8c170) Line 70 C testshm.exe!__report_gsfailure(unsigned __int64 StackCookie=63963535653567328) Line 241 C testshm.exe!boost::intrusive::rbtree_algorithms&lt;boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,1&gt; &gt;::rebalance_after_insertion(const boost::interprocess::offset_ptr&lt;boost::intrusive::compact_rbtree_node&lt;boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt; &gt;,__int64,unsigned __int64,0&gt; &amp; header=&lt;struct at NULL&gt;, boost::interprocess::offset_ptr&lt;boost::intrusive::compact_rbtree_node&lt;boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt; &gt;,__int64,unsigned __int64,0&gt; p={...}) Line 528 C++ testshm.exe!boost::intrusive::bstree_impl&lt;boost::intrusive::bhtraits&lt;boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;::block_ctrl,boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,1&gt;,0,boost::intrusive::default_tag,3&gt;,void,unsigned __int64,1,4&gt;::insert_equal(boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;::block_ctrl &amp; value={...}) Line 861 C++ testshm.exe!boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;::priv_add_segment(void * addr=0x0000000050000063, unsigned __int64 segment_size=1374736) Line 426 C++ testshm.exe!boost::interprocess::segment_manager&lt;char,boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;,boost::interprocess::iset_index&gt;::segment_manager&lt;char,boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;,boost::interprocess::iset_index&gt;(unsigned __int64 segment_size=65536) Line 414 C++ testshm.exe!boost::interprocess::ipcdetail::basic_managed_memory_impl&lt;char,boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;,boost::interprocess::iset_index,8&gt;::create_impl(void * addr=0x0000000000000000, unsigned __int64 size=1) Line 176 C++ testshm.exe!boost::interprocess::ipcdetail::managed_open_or_create_impl&lt;boost::interprocess::shared_memory_object,8,1,0&gt;::priv_open_or_create&lt;boost::interprocess::ipcdetail::create_open_func&lt;boost::interprocess::ipcdetail::basic_managed_memory_impl&lt;char,boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;,boost::interprocess::iset_index,8&gt; &gt; &gt;(boost::interprocess::ipcdetail::create_enum_t type=1068023640, const char * const &amp; id=0x00000000000000c2, unsigned __int64 size=8, boost::interprocess::mode_t mode=read_write, const void * addr=0x0000000000000000, const boost::interprocess::permissions &amp; perm={...}, boost::interprocess::ipcdetail::create_open_func&lt;boost::interprocess::ipcdetail::basic_managed_memory_impl&lt;char,boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family,boost::interprocess::offset_ptr&lt;void,__int64,unsigned __int64,0&gt;,0&gt;,boost::interprocess::iset_index,8&gt; &gt; construct_func) Line 407 C++ testshm.exe!main() Line 9 C++ testshm.exe!__tmainCRTStartup() Line 626 C kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown </pre> seppleviathan@… https://svn.boost.org/trac10/ticket/9666 https://svn.boost.org/trac10/ticket/9666 Report #9661: bind: Convert lost qualifier Wed, 12 Feb 2014 02:50:13 GMT Wed, 12 Feb 2014 02:50:13 GMT <p> The following code doesn't compile with vs2013. It will be OK if boost::bind is replaced with std::bind or using less placeholders. </p> <pre class="wiki">#include &lt;boost/bind.hpp&gt; void foo(int&amp;, int, int){} int main(){ using boost::bind; int a; auto&amp;&amp; f = bind(&amp;foo, _1, _2, _3); f(a, 0, 0); return 0; } </pre> Yuan Yao <yaoyuan1216@…> https://svn.boost.org/trac10/ticket/9661 https://svn.boost.org/trac10/ticket/9661 Report #9660: boost_1_55_0.zip will not unzip, path names too long Tue, 11 Feb 2014 21:32:42 GMT Mon, 25 Jul 2016 21:33:21 GMT <p> boost_1_55_0.zip: Can not unzip long path name files with <a class="missing wiki">WinZip</a> or the windows 7 unzip. </p> anonymous https://svn.boost.org/trac10/ticket/9660 https://svn.boost.org/trac10/ticket/9660 Report #9657: Boost Log V2 Library Android Linking Tue, 11 Feb 2014 12:14:29 GMT Thu, 13 Feb 2014 09:24:22 GMT <p> I am trying to build Boost 1.55 Log v2 library on Android using NDK 9C. I have used the patches and build the boost using build-android.sh including thread,iostreams,random and log options. I have used the other features of Boost and they have worked. But there seems to be linking problem with the Log V2 on NDK 9c 64 bit which I could not solve with the existing solutions. I keep getting the same "undefined reference" error. On the web people solved this problem including "#define BOOST_ALL_DYN_LINK" but it did not work for me. The build-android.sh file option LIBRARIES=--with-libraries=date_time,filesystem,program_options,regex,signals,system,thread,iostreams,random,log </p> <p> Console Output: </p> <pre class="wiki">10:35:45 **** Build of configuration Default for project BoostLogLib **** /home/guven/Desktop/IDP/adt/android-ndk-r9c/ndk-build all Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml Android NDK: WARNING:jni/Android.mk:BoostLogLib: non-system libraries in linker flags: /home/guven/Desktop/IDP/adt/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/libgnustl_static.a -lboost_system-gcc-mt-1_55 -lboost_filesystem-gcc-mt-1_55 -lboost_thread-gcc-mt-1_55 -lboost_iostreams-gcc-mt-1_55 -lboost_date_time-gcc-mt-1_55 -lboost_random-gcc-mt-1_55 -lboost_log-gcc-mt-1_55 -lboost_log_setup-gcc-mt-1_55 -lboost_program_options-gcc-mt-1_55 -lboost_regex-gcc-mt-1_55 -lboost_chrono-gcc-mt-1_55 Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the Android NDK: current module [armeabi-v7a] Compile++ thumb: BoostLogLib &lt;= BoostLogLib.cpp [armeabi-v7a] SharedLibrary : libBoostLogLib.so jni/BoostLogLib.cpp:20: error: undefined reference to 'boost::log::v2_mt_posix::core::get()' /home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/boost_1_55_0/boost/log/attributes/attribute_name.hpp:80: error: undefined reference to 'boost::log::v2_mt_posix::attribute_name::get_id_from_string(char const*)' jni/BoostLogLib.cpp:20: error: undefined reference to 'boost::log::v2_mt_posix::core::set_filter(boost::log::v2_mt_posix::filter const&amp;)' /home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/boost_1_55_0/boost/log/attributes/value_extraction.hpp:232: error: undefined reference to 'boost::log::v2_mt_posix::attribute_value_set::find(boost::log::v2_mt_posix::attribute_name) const' /home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/boost_1_55_0/boost/log/attributes/value_extraction.hpp:233: error: undefined reference to 'boost::log::v2_mt_posix::attribute_value_set::end() const' /home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/boost_1_55_0/boost/log/attributes/value_extraction.hpp:241: error: undefined reference to 'boost::log::v2_mt_posix::aux::attach_attribute_name_info(boost::exception&amp;, boost::log::v2_mt_posix::attribute_name const&amp;)' collect2: error: ld returned 1 exit status make: *** [obj/local/armeabi-v7a/libBoostLogLib.so] Error 1 10:35:50 Build Finished (took 4s.138ms) </pre><blockquote> <p> <a class="missing wiki">BoostLogLib</a>.h </p> </blockquote> <pre class="wiki">#ifndef BOOSTLOGLIB_H_ #define BOOSTLOGLIB_H_ #include &lt;jni.h&gt; #include &lt;iostream&gt; #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: print * Signature: ()V */ JNIEXPORT jstring JNICALL Java_com_example_boostloglib_BoostLogLib_print (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif /* BOOSTLOGLIB_H_ */ </pre><p> <a class="missing wiki">BoostLogLib</a>.cpp </p> <pre class="wiki">#define BOOST_LOG_USE_CHAR #define BOOST_ALL_DYN_LINK #include "BoostLogLib.h" #include &lt;boost/log/core.hpp&gt; #include &lt;boost/log/trivial.hpp&gt; #include &lt;boost/log/expressions.hpp&gt; namespace logging = boost::log; //[ example_tutorial_trivial_with_filtering void init() { logging::core::get()-&gt;set_filter ( logging::trivial::severity &gt;= logging::trivial::info ); } int start_logging() { init(); return 0; } JNIEXPORT jstring JNICALL Java_com_example_boostloglib_BoostLogLib_print(JNIEnv * env, jobject obj){ start_logging(); jstring result = env-&gt;NewStringUTF("Hello world!!!"); // C style string to Java String return result; } </pre><p> Android.mk </p> <pre class="wiki">LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := BoostLogLib LOCAL_SRC_FILES := BoostLogLib.cpp LOCAL_CPP_EXTENSION := .cpp LOCAL_CPPFLAGS += -std=c++0x LOCAL_LDLIBS += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/libgnustl_static.a LOCAL_CFLAGS += -lpthread LOCAL_CFLAGS += -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include LOCAL_CFLAGS += -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include LOCAL_CFLAGS += -I/home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/boost_1_55_0 LOCAL_LDLIBS += -L/home/guven/Desktop/IDP/workspace/3rdparty/Boost-for-Android/build/lib -lboost_system-gcc-mt-1_55 -lboost_filesystem-gcc-mt-1_55 -lboost_thread-gcc-mt-1_55 -lboost_iostreams-gcc-mt-1_55 -lboost_date_time-gcc-mt-1_55 -lboost_random-gcc-mt-1_55 -lboost_log-gcc-mt-1_55 -lboost_log_setup-gcc-mt-1_55 -lboost_program_options-gcc-mt-1_55 -lboost_regex-gcc-mt-1_55 -lboost_chrono-gcc-mt-1_55 LOCAL_CPPFLAGS += -fexceptions LOCAL_CPPFLAGS += -frtti include $(BUILD_SHARED_LIBRARY) </pre><p> Application.mk </p> <pre class="wiki">APP_MODULES := BoostLogLib APP_ABI := armeabi-v7a APP_STL := gnustl_static APP_PLATFORM := android-9 NDK_TOOLCHAIN_VERSION := 4.8 APP_CPPFLAGS += -std=c++0x </pre> Guven <guveni@…> https://svn.boost.org/trac10/ticket/9657 https://svn.boost.org/trac10/ticket/9657 Report #9649: boost_interprocess, Win32: apps built with boost <1.54 remove temp files from apps >=1.54 (and vice versa) Mon, 10 Feb 2014 17:47:06 GMT Mon, 10 Feb 2014 21:34:48 GMT <p> In boost 1.54, the format of the interprocess temporary file name changed (previously something like <code>20140205173952.047159</code>, now like <code>1391618455</code>). Unfortunately, this means that the "clean out previous boot session directories" recognizes the respective other filename as an "old" filename, even though it really isn't. Suppose you create an interprocess object with "Kernel or Filesystem" or persistence in an app A build against boost 1.54. You store something in it, but close it with the intention of re-opening it later (the desired persistence allows for that). But you happen to start an app B build against pre-1.54 in the meantime ... this cleans out the temp dir, incorrectly discarding the interprocess objects A created earlier. The attached patch changes the temp dir name if the "new" format is used. </p> frank.richter@… https://svn.boost.org/trac10/ticket/9649 https://svn.boost.org/trac10/ticket/9649 Report #9647: BOOST_MPL_ASSERT_RELATION fails to properly handle unsigned types Sun, 09 Feb 2014 21:00:37 GMT Sat, 04 Apr 2015 21:29:55 GMT <p> boost/integer_traits.hpp contains the following </p> <pre class="wiki">template&lt;&gt; class integer_traits&lt;unsigned long&gt; : public std::numeric_limits&lt;unsigned long&gt;, public detail::integer_traits_base&lt;unsigned long, 0, ULONG_MAX&gt; { }; </pre><p> Problem is that, at least on Clang ULONG_MAX resolves to (through &lt;limits.h&gt;) to be </p> <pre class="wiki">#define ULONG_MAX (__LONG_MAX__ *2UL+1UL) </pre><p> But when <span class="underline">LONG_MAX</span> resolves to long and the rules of arithmetic promotion result in the expression <span class="underline">LONG_MAX</span> *2UL+1UL being a long rather than unsigned long. This causes some funky behavior in cases like: </p> <pre class="wiki">BOOST_MPL_ASSERT_RELATION( (boost::integer_traits&lt;unsigned long&gt;::const_max), &gt;, (boost::integer_traits&lt;unsigned char&gt;::const_max) ); </pre><p> which fails to compile with "Non-type template argument evaluates to 4294967295, which cannot be narrowed to type 'long' </p> Robert Ramey https://svn.boost.org/trac10/ticket/9647 https://svn.boost.org/trac10/ticket/9647 Report #9643: rename should be more eplicit that it allows file move operations Fri, 07 Feb 2014 14:57:54 GMT Fri, 07 Feb 2014 14:57:54 GMT <p> The documentation for rename says that it renames the file and then refers to the ISO C web page for rename for details. That page implies that the new name can be in another directory with the same filename to perform a move file operation, but it would be much more helpful if the boost filesystem documentation stated this explicitly. </p> <p> On stackoverflow, someone comments that if the move files due to filesystem differences, then you have to do a copy/delete combination anyway. It seems like if this is real possibility that boost.filesystme.rename should be enhanced to handle that for me so I don't have to remember a three-step operation in order to move files: 1) try rename and if that fails, then 2) copy file, and 3) delete file </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/9643 https://svn.boost.org/trac10/ticket/9643 Report #9642: Possible race condition in boost::interprocess::message_queue creation Fri, 07 Feb 2014 14:50:29 GMT Fri, 07 Feb 2014 14:50:29 GMT <p> Dear folks, </p> <p> I am trying to debug sporadic access violations that occur inside a boost::interprocess message queue. (access violation reading an address in the shared memory region). </p> <p> Environment: boost 1.54, VC++2010. Occurs in both Debug &amp; Release builds. </p> <p> It always occurs on or about line 854 (in case of reception) in message_queue.hpp: Comments were added by me </p> <blockquote> <p> recvd_size = top_msg.len; <em> top_msg points to invalid location </em></p> </blockquote> <p> Or line 756 (in case of sending) </p> <p> BOOST_ASSERT(free_msg_hdr.priority == 0); <em> free_msg_hdr points to invalid location </em></p> <p> Please see this S/O link for the entire question, plus sample code that reproduces the problem for me: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/21628306/boostinterprocess-message-queue-race-condition-on-creation"><span class="icon">​</span>http://stackoverflow.com/questions/21628306/boostinterprocess-message-queue-race-condition-on-creation</a> </p> namezero@… https://svn.boost.org/trac10/ticket/9642 https://svn.boost.org/trac10/ticket/9642 Report #9634: v 1.54 - powerpc64/LE : filesystem : operations_test : core Thu, 06 Feb 2014 13:13:02 GMT Thu, 06 Feb 2014 13:13:02 GMT <p> Hi, Test /boost1.54-1.54.0/bin.v2/libs/filesystem/test/operations_test_static.test/gcc-4.8/debug/link-static/operations_test generates a core, when testing it with version 1.54 on powerpc64/LE - Ubuntu 14.04 alpha2. Defect has already been opened against Ubuntu, since they do not seem to have lunch Boost tests in this environment: no answer yet. Debugging seems to show that the issue is in: </p> <p> BOOST : libs/filesystem/src/path.cpp </p> <blockquote> <p> std::locale path::imbue(const std::locale&amp; loc) { </p> <blockquote> <p> std::locale temp(path_locale); &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; line 918 path_locale = loc; codecvt_facet_ptr = </p> <blockquote> <p> &amp;std::use_facet&lt;std::codecvt&lt;wchar_t, char, std::mbstate_t&gt; &gt;(path_locale); </p> </blockquote> <p> return temp; </p> </blockquote> <p> } </p> </blockquote> <p> At line 918, C++ tries to do some initialization. This seems to imply to use field _M_impl of path_locale, which is 0x0. It seems that no initialization of path_locale is done and thus _M_impl stay 0x0. Then, there is a crash in stdlibc++ code. </p> <p> (gdb) where <a class="missing ticket">#0</a> boost::filesystem::path::imbue (loc=...) at ../libs/filesystem/src/path.cpp:918 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x00000000100491b0 in boost::filesystem::path::codecvt () at ../libs/filesystem/src/path.cpp:911 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x000000001004aa3c in boost::filesystem::path::wstring (this=0x3ffffffff5c8) at ../boost/filesystem/path.hpp:386 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x000000001004a540 in boost::filesystem::detail::unique_path (model=..., ec=0x0) at ../libs/filesystem/src/unique_path.cpp:113 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x00000000100238c4 in boost::filesystem::unique_path (p=...) at ../boost/filesystem/operations.hpp:544 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x00000000100200cc in <span class="underline">static_initialization_and_destruction_0 (</span>initialize_p=1, <span class="underline">priority=65535) at ../libs/filesystem/test/operations_test.cpp:118 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00000000100201fc in _GLOBAL</span>sub_I<span class="underline">Z8cpp_mainiPPc () at ../libs/filesystem/test/operations_test.cpp:2034 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x000000001004d444 in </span>libc_csu_init () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> 0x00003fffb7c8e1ec in generic_start_main (main=0x1003173c &lt;main(int, char<strong>)&gt;, argc=&lt;optimized out&gt;, argv=0x3ffffffffa68, auxvec=0x3ffffffffb10, init=0x1004d3b0 &lt;<span class="underline">libc_csu_init&gt;, </span></strong></p> <blockquote> <p> rtld_fini=&lt;optimized out&gt;, stack_end=&lt;optimized out&gt;, fini=&lt;optimized out&gt;) at ../csu/libc-start.c:246 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> 0x00003fffb7c8e458 in <span class="underline">libc_start_main (argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;, ev=&lt;optimized out&gt;, auxvec=&lt;optimized out&gt;, rtld_fini=&lt;optimized out&gt;, stinfo=&lt;optimized out&gt;, </span></p> <blockquote> <p> stack_on_entry=&lt;optimized out&gt;) at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:93 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/10" title="#10: Bugs: allyourbase.jam file is bad. (closed: Out of Date)">#10</a> 0x0000000000000000 in ?? () </p> <p> (gdb) p loc $25 = (const std::locale &amp;) @0x3ffffffff418: {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, </p> <blockquote> <p> _M_impl = 0x100790f0, static _S_classic = 0x3fffb7fae0b8 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_global = 0x3fffb7fae0b8 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_categories = 0x3fffb7f92cb8 &lt;<span class="underline">gnu_cxx::category_names&gt;, static _S_once = 0} </span></p> </blockquote> <p> (gdb) p path_locale $26 = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, </p> <blockquote> <p> M_impl = 0x0, </p> </blockquote> <blockquote> <p> static _S_classic = 0x3fffb7fae0b8 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_global = 0x3fffb7fae0b8 &lt;(anonymous namespace)::c_locale_impl&gt;, static _S_categories = 0x3fffb7f92cb8 &lt;<span class="underline">gnu_cxx::category_names&gt;, static _S_once = 0} </span></p> </blockquote> <p> So, the question is: why path_locale has not been initialized ? and why this happens in PPC/LE and not elsewhere ? </p> <p> I'm not an expert in C++ and need help. </p> <p> <a class="missing wiki">Thanks/Regards</a> </p> <p> Tony </p> Tony Reix <tony.reix@…> https://svn.boost.org/trac10/ticket/9634 https://svn.boost.org/trac10/ticket/9634 Report #9631: function_input_iterator does not work with lambda Wed, 05 Feb 2014 11:04:49 GMT Wed, 26 Feb 2014 21:29:01 GMT <p> The following program does not compile on g++-4.8.1/clang-3.4 </p> <blockquote> <p> 1 #define BOOST_RESULT_OF_USE_DECLTYPE 2 #include &lt;boost/iterator/function_input_iterator.hpp&gt; 3 4 int main() { 5 auto f = [](){return 1;}; 6 auto i = boost::make_function_input_iterator(f, 0); 7 return 0; 8 } </p> </blockquote> <p> error: g++ main.cpp -std=c++0x -I/home/wygos/libs/boost_1_55_0/include/ </p> <blockquote> <p> In file included from main.cpp:2:0: /home/wygos/libs/boost_1_55_0/include/boost/iterator/function_input_iterator.hpp: In instantiation of ‘class boost::impl::function_input_iterator&lt;main()::<span class="underline">lambda0, int&gt;’: /home/wygos/libs/boost_1_55_0/include/boost/iterator/function_input_iterator.hpp:112:11: required from ‘class boost::function_input_iterator&lt;main()::</span>lambda0, int&gt;’ </p> </blockquote> <p> main.cpp:6:54: required from here </p> <blockquote> <p> /home/wygos/libs/boost_1_55_0/include/boost/iterator/function_input_iterator.hpp:26:15: error: no type named ‘result_type’ in ‘struct main()::<span class="underline">lambda0’ </span></p> <blockquote> <p> class function_input_iterator </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /home/wygos/libs/boost_1_55_0/include/boost/iterator/function_input_iterator.hpp:48:17: error: no type named ‘result_type’ in ‘struct main()::<span class="underline">lambda0’ </span></p> <blockquote> <blockquote> <blockquote> <p> dereference() const { <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> /home/wygos/libs/boost_1_55_0/include/boost/iterator/function_input_iterator.hpp:59:62: error: no type named ‘result_type’ in ‘struct main()::<span class="underline">lambda0’ </span></p> <blockquote> <blockquote> <p> mutable optional&lt;typename Function::result_type&gt; value; </p> </blockquote> </blockquote> </blockquote> <p> Suggested solution: </p> <blockquote> <p> function_input_iterator should use boost::result_of </p> </blockquote> Piotr Wygocki <wygos@…> https://svn.boost.org/trac10/ticket/9631 https://svn.boost.org/trac10/ticket/9631 Report #9627: Missing include and BOOST_NO_TYPEID check Mon, 03 Feb 2014 07:58:38 GMT Wed, 26 Feb 2014 21:29:14 GMT <p> Hello, </p> <p> In boost 1.54 "#include "boost/throw_exception.hpp"" is missing in dynamic_bitset/dynamic_bitset.hpp, so the macro BOOST_THROW_EXCEPTIO would be defined. Also "#ifndef BOOST_NO_TYPEID" check is missing in ptr_container/clone_allocator.hpp and ptr_container/detail/reversible_ptr_container.hpp around the usage of BOOST_ASSERT where it uses typeid() </p> vency.cvetkov@… https://svn.boost.org/trac10/ticket/9627 https://svn.boost.org/trac10/ticket/9627 Report #9626: streams: ambiguous call to overloaded function when combining bufferstream and iostreams::filtering_streambuf Sun, 02 Feb 2014 08:13:14 GMT Sun, 02 Feb 2014 08:16:41 GMT <p> Hi, I'm using interprocess::bufferstream, interprocess::basic_vectorstream and iostreams::filtering_streambuf to compress/decompress bzip2. The attached code compiles and works fine in 54, but fails to compile in 55. I've looked inside bufferstream.hpp and saw major changes (like multiple inheritance - which probably caused the problem). (BTW, I couldn't find the description of these changes in the 55 release notes. Where can I find it?) </p> <p> Thank you, Edan Ayal </p> Edan Ayal <edanayal@…> https://svn.boost.org/trac10/ticket/9626 https://svn.boost.org/trac10/ticket/9626 Report #9624: boost::icl::swap causes ambiguity with std::swap with ADL Fri, 31 Jan 2014 18:28:35 GMT Fri, 31 Jan 2014 18:28:35 GMT <p> With C++11, the swap() function overload in boost::icl is ambiguous with std::swap due to ADL. I'm using boost 1.53, but this doesn't appear to be addressed in git yet either. It think it's the exact same problem previously addressed in Boost.Variant (<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/2839"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/2839</a>). </p> <p> I've applied the same fix (i.e., using separate template params for two arguments to swap, making it less specialized than std::swap) to my local copy of boost, and it appears to resolve it. </p> <p> I'm using clang 3.4 / libstdc++ from gcc 4.7.2 / boost 1.53, compile line ==&gt; clang -std=c++11 -o test_adl test_adl.cc </p> <p> test file and error message attached. </p> <p> Thanks, --Nathan </p> Nathan Thomas <nthomas@…> https://svn.boost.org/trac10/ticket/9624 https://svn.boost.org/trac10/ticket/9624 Report #9623: boost::asio does not respect FD_SETSIZE limit in select() based implementation Fri, 31 Jan 2014 15:02:51 GMT Fri, 31 Jan 2014 15:02:51 GMT <p> Compiled on Linux with BOOST_ASIO_DISABLE_EPOLL. </p> anonymous https://svn.boost.org/trac10/ticket/9623 https://svn.boost.org/trac10/ticket/9623 Report #9622: Add function time created file. Fri, 31 Jan 2014 11:33:48 GMT Fri, 31 Jan 2014 11:33:48 GMT bubokastor@… https://svn.boost.org/trac10/ticket/9622 https://svn.boost.org/trac10/ticket/9622 Report #9614: Optional File Creation for boost::interprocess::file_lock Tue, 28 Jan 2014 21:54:43 GMT Tue, 28 Jan 2014 21:54:43 GMT <p> An optional overload (default second argument?) for the constructor to create and open the file to use for the file_lock would be very useful. </p> <p> Currently, when creating a file lock, I typically do something like: </p> <pre class="wiki">std::ofstream tmpf(/path/to/lock/file); tmpf.close(); boost::interprocess:file_lock f_lock(/path/to/lock/file); </pre><p> Say I have a class, such as: </p> <pre class="wiki">class Foo { public: Foo(); private: boost::interprocess::file_lock f_lock; }; </pre><p> I have to do the following in the constructor: </p> <pre class="wiki">Foo::Foo() { std::ofstream tmpf(/path/to/lock/file); tmpf.close(); boost::interprocess:file_lock tmp_lock(/path/to/lock/file); f_lock.swap(tmp_lock); } </pre><p> This is cumbersome and limits usefulness in initializer lists. Tweaking the constructor to something like: </p> <pre class="wiki">file_lock::file_lock(const char *path, bool create = false); </pre><p> Would allow a constructor to do the following: </p> <pre class="wiki">Foo::Foo() : f_lock(/path/to/file/lock, true) { } </pre> Peter LaDow <petela@…> https://svn.boost.org/trac10/ticket/9614 https://svn.boost.org/trac10/ticket/9614 Report #9611: boost::algorithm::clamp not available as boost::clamp Mon, 27 Jan 2014 20:46:57 GMT Mon, 18 Jul 2016 08:09:12 GMT <p> clamp isn't available in boost namespace itself while other algorithms are. Could it be added? </p> Olaf van der Spek <ml@…> https://svn.boost.org/trac10/ticket/9611 https://svn.boost.org/trac10/ticket/9611 Report #9608: Reset on Report and Custom String Sun, 26 Jan 2014 19:38:56 GMT Sun, 26 Jan 2014 19:38:56 GMT <p> It might be nice if there's a way for the timer to reset on report. And for report to take a string argument so the output could include what the time is about. </p> Olaf van der Spek <ml@…> https://svn.boost.org/trac10/ticket/9608 https://svn.boost.org/trac10/ticket/9608 Report #9607: auto_cpu_timer constructors Typo Sun, 26 Jan 2014 19:33:45 GMT Sun, 26 Jan 2014 19:33:45 GMT <p> "Otherwise format_string() == std::cout" </p> <p> I don't think this is correct. </p> Olaf van der Spek <ml@…> https://svn.boost.org/trac10/ticket/9607 https://svn.boost.org/trac10/ticket/9607 Report #9606: Boost.LocalFunction cannot bind pointer variables by reference on gcc/clang Sat, 25 Jan 2014 16:44:37 GMT Fri, 07 Mar 2014 16:05:33 GMT <p> Boost.<a class="missing wiki">LocalFunction</a> cannot bind pointer variables by reference on gcc or clang. I have tested this against the latest boost code available in version 1.55.0 and <a class="changeset" href="https://svn.boost.org/trac10/changeset/86799" title="trac 9280: moved handling of deferred events to history policy">r86799</a>. I have tested that it works on Visual Studio though but not on gcc 4.1 (Linux), 4.6 (Linux), nor clang 5.0 (OSX). Here's the test </p> <pre class="wiki">// Example compile: g++ -I /usr/local/include/boost_1_55_0 -o bug bug.cpp #include &lt;boost/local_function.hpp&gt; #include &lt;stdio.h&gt; int main() { int x = 1; int *px = &amp;x; void BOOST_LOCAL_FUNCTION(bind&amp; px, bind&amp; x) { printf("INSIDE: &amp;px = %p, &amp;x = %p\n", &amp;px, &amp;x); } BOOST_LOCAL_FUNCTION_NAME(fubar) printf("OUTSIDE: &amp;px = %p, &amp;x = %p\n", &amp;px, &amp;x); fubar(); return 0; } </pre><p> The pointer values output by this program should be identical for both the INSIDE and OUTSIDE cases. Notice that value for &amp;px differs. </p> <p> I found some ways to sort of make this work but none of them are acceptable workarounds for me: </p> <ul><li>Binding pointer variables works perfectly in Boost.<a class="missing wiki">ScopeExit</a> for all compilers/platforms that I tested </li><li>Adding "-std=c++0x" to the compiler line also fixes the problem </li></ul> e4lam@… https://svn.boost.org/trac10/ticket/9606 https://svn.boost.org/trac10/ticket/9606 Report #9604: compilation failure c1017 Fri, 24 Jan 2014 16:41:22 GMT Fri, 24 Jan 2014 16:41:22 GMT <p> Using MSVC++ 2012, compiling my program gives me the following error. </p> <pre class="wiki">C1017: invalid integer constant expression. in boost\parameter\aux_\unwrap_cv_reference.hpp:47 #if BOOST_WORKAROUND(MSVC, == 1200) </pre><p> This can be fixed easily by replacing MSVC by BOOST_MSVC on this line. </p> orenaud@… https://svn.boost.org/trac10/ticket/9604 https://svn.boost.org/trac10/ticket/9604 Report #9599: Add a parallel_transform algorithm Wed, 22 Jan 2014 12:03:31 GMT Wed, 22 Jan 2014 12:06:12 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_transform algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9599 https://svn.boost.org/trac10/ticket/9599 Report #9598: no operator found which takes a left-hand operand of type 'boost::filesystem::directory_iterator' Wed, 22 Jan 2014 08:25:26 GMT Wed, 26 Feb 2014 21:30:13 GMT <p> Hi, </p> <p> I'm working with the Boost C++ library since a long time and suddenly I got stranges error when I compile my software with Visual Studio 2012 (in debug 64 bits). I have absolutely no idea of the problem and the "output" does not really help me. </p> <p> Here are the kind of errors I got (the output): </p> <p> _libraries\lib_Boost\boost/iterator/iterator_facade.hpp(847): error C2059: syntax error : ',' </p> <p> And the following one too : </p> <p> I'm working with the Boost C++ library since a long time and suddenly I got stranges error when I compile my software with Visual Studio 2012 (in debug 64 bits). I have absolutely no idea of the problem and the "output" does not really help me. </p> <p> Here are the kind of errors I got (the output): </p> <pre class="wiki">_libraries\lib_Boost\boost/iterator/iterator_facade.hpp(847): error C2059: syntax error : ',' </pre><p> And the following one too : </p> <pre class="wiki">_libraries\lib_Boost\boost/filesystem/operations.hpp(798): error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'boost::filesystem::directory_iterator' (or there is no acceptable conversion) _libraries\lib_Boost\boost/filesystem/path.hpp(621): could be 'bool boost::filesystem::operator !=(const boost::filesystem::path &amp;,const boost::filesystem::path &amp;)' _libraries\lib_Boost\boost/filesystem/path.hpp(622): or 'bool boost::filesystem::operator !=(const boost::filesystem::path &amp;,const boost::filesystem::path::string_type &amp;)' _libraries\lib_Boost\boost/filesystem/path.hpp(623): or 'bool boost::filesystem::operator !=(const boost::filesystem::path::string_type &amp;,const boost::filesystem::path &amp;)' _libraries\lib_Boost\boost/filesystem/path.hpp(624): or 'bool boost::filesystem::operator !=(const boost::filesystem::path &amp;,const boost::filesystem::path::value_type *)' _libraries\lib_Boost\boost/filesystem/path.hpp(625): or 'bool boost::filesystem::operator !=(const boost::filesystem::path::value_type *,const boost::filesystem::path &amp;)' while trying to match the argument list '(boost::filesystem::directory_iterator, boost::filesystem::directory_iterator)' </pre><p> Does someone has an idea that can help me to find the reason of theses errors ? Is there some compilation options that can help to find the problem ? </p> <p> I only have theses 2 errors (a lot of time !!) </p> <p> Feel free to contact me by email... I'm also available through Skype. </p> <p> Thanks </p> krys@… https://svn.boost.org/trac10/ticket/9598 https://svn.boost.org/trac10/ticket/9598 Report #9597: "boost::iostreams::file_descriptor" doesn't close Windows low-level file descriptors properly when specifying "file_descriptor_flags::close_handle" Mon, 20 Jan 2014 15:32:51 GMT Mon, 20 Jan 2014 15:32:51 GMT <p> When opening a file on Windows using <code>boost::iostreams::file_descriptor</code>, <code>boost::iostreams::file_descriptor_sink</code> or <code>boost::iostreams::file_descriptor_source</code> in combination with a low-level file descriptor and when specifying <code>file_descriptor_flags::close_handle</code>, then the file descriptor isn't closed properly on close/exit. </p> <p> Using one of the mentioned methods, the low-level file descriptor is converted to a Windows handle using the API call <code>_get_osfhandle</code> <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9597#point1" title="#9597: Bugs: &#34;boost::iostreams::file_descriptor&#34; doesn't close Windows low-level ... (new)">(1)</a>: </p> <div class="wiki-code"><div class="code"><pre><span class="kt">void</span> <span class="n">file_descriptor_impl</span><span class="o">::</span><span class="n">open</span><span class="p">(</span><span class="kt">int</span> <span class="n">fd</span><span class="p">,</span> <span class="n">flags</span> <span class="n">f</span><span class="p">)</span> <span class="p">{</span> <span class="n">open</span><span class="p">(</span><span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="n">file_handle</span><span class="o">&gt;</span><span class="p">(</span><span class="n">_get_osfhandle</span><span class="p">(</span><span class="n">fd</span><span class="p">)),</span> <span class="n">f</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> When closing, the file handle is closed using <code>CloseHandle</code>: </p> <div class="wiki-code"><div class="code"><pre><span class="kt">void</span> <span class="n">file_descriptor_impl</span><span class="o">::</span><span class="n">close_impl</span><span class="p">(</span><span class="kt">bool</span> <span class="n">close_flag</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">throw_</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">handle_</span> <span class="o">!=</span> <span class="n">invalid_handle</span><span class="p">())</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">close_flag</span><span class="p">)</span> <span class="p">{</span> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="err">#</span><span class="n">ifdef</span> <span class="n">BOOST_IOSTREAMS_WINDOWS</span> <span class="o">::</span><span class="n">CloseHandle</span><span class="p">(</span><span class="n">handle_</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">;</span> <span class="cp">#else</span> <span class="n">BOOST_IOSTREAMS_FD_CLOSE</span><span class="p">(</span><span class="n">handle_</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span> <span class="cp">#endif</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">success</span> <span class="o">&amp;&amp;</span> <span class="n">throw_</span><span class="p">)</span> <span class="n">throw_system_failure</span><span class="p">(</span><span class="s">&quot;failed closing file&quot;</span><span class="p">);</span> <span class="p">}</span> <span class="n">handle_</span> <span class="o">=</span> <span class="n">invalid_handle</span><span class="p">();</span> <span class="n">flags_</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div><p> According to <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9597#point1" title="#9597: Bugs: &#34;boost::iostreams::file_descriptor&#34; doesn't close Windows low-level ... (new)">(1)</a> the API call <code>_close</code> <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9597#point2" title="#9597: Bugs: &#34;boost::iostreams::file_descriptor&#34; doesn't close Windows low-level ... (new)">(2)</a> shall be used to close a low-level file descriptor. Practical tests shew that every time a file is opened and closed using one of the mentioned methods, Windows (XP) assigns a new file descriptor with an increasing value to it, unless the program runs out of available file handles. Manually closing the file by specifying <code>file_descriptor_flags::close_handle</code> and calling <code>_close</code> solves this issue. </p> <p> <span class="wikianchor" id="point1">(1)</span> <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/ks2530z6.aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/ks2530z6.aspx</a> <br /> <span class="wikianchor" id="point2">(2)</span> <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/5fzwd5ss.aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/5fzwd5ss.aspx</a> </p> anonymous https://svn.boost.org/trac10/ticket/9597 https://svn.boost.org/trac10/ticket/9597 Report #9592: Add a parallel_for_each algorithm Sat, 18 Jan 2014 11:01:52 GMT Tue, 21 Jan 2014 18:04:27 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_for_each algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9592 https://svn.boost.org/trac10/ticket/9592 Report #9591: Add a parallel_for algorithm. Sat, 18 Jan 2014 10:58:07 GMT Wed, 22 Jan 2014 12:07:39 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_for algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9591 https://svn.boost.org/trac10/ticket/9591 Report #9590: Add a parallel_reduce algorithm. Sat, 18 Jan 2014 10:55:43 GMT Tue, 21 Jan 2014 18:04:06 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_reduce algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9590 https://svn.boost.org/trac10/ticket/9590 Report #9589: Add a parallel_sort algorithm. Sat, 18 Jan 2014 10:53:57 GMT Tue, 21 Jan 2014 18:03:55 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_sort algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9589 https://svn.boost.org/trac10/ticket/9589 Report #9588: Add a parallel_invoke algorithm. Sat, 18 Jan 2014 10:53:12 GMT Tue, 21 Jan 2014 18:03:46 GMT <p> Base on <a class="ext-link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf"><span class="icon">​</span>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3429.pdf</a> and TBB Intel library add a parallel_invoke algorithm. </p> <p> The main difference is that the algorithm could take an Executor as parameter. </p> viboes https://svn.boost.org/trac10/ticket/9588 https://svn.boost.org/trac10/ticket/9588 Report #9586: Boost Date/Time should use BOOST_TRY/CATCH instead of try Fri, 17 Jan 2014 17:32:12 GMT Thu, 18 Jan 2018 13:58:59 GMT <p> Hello, </p> <p> We had to activate the USE_DATE_TIME_PRE_1_33_FACET_IO and modify a few files in try/catches to BOOST_TRY/CATCH in date_time/gregorian/greg_facet.hpp to get our <a class="missing wiki">Date/Time</a> dependency compiling in non-exception code. Here's the attached patch. </p> <p> However, <a class="missing wiki">Date/Time</a> depends too heavily on try/catch behavior in detriment to projects wanting to use it but without exceptions. Can this be fixed for a next iteration of Boost? </p> catalinalexandru.zamfir@… https://svn.boost.org/trac10/ticket/9586 https://svn.boost.org/trac10/ticket/9586 Report #9583: Support of wide character filenames in boost::interprocess::file_lock Thu, 16 Jan 2014 09:12:54 GMT Thu, 16 Jan 2014 09:16:51 GMT <p> boost::interprocess::file_lock is unable to handle paths with wide character filenames. </p> <p> This feature is already commented in the list of future improvements </p> <p> I attach one patch to add this support for Windows platform (you can use boost::filesystem::c_str() and it will hide if it is char* or wchar_t* for you :)) </p> jmalo@… https://svn.boost.org/trac10/ticket/9583 https://svn.boost.org/trac10/ticket/9583 Report #9582: Boost.Units: conversion to double with prefixed unit Thu, 16 Jan 2014 08:59:23 GMT Sun, 16 Mar 2014 11:52:09 GMT <p> A post to the Boost-users maillinglist suggested me to request this feature. </p> <p> In the code below, I convert a double that is known to be in millimeters to a unit and back again. The latter fails, where it works as expected for meters. </p> <p> I think that adding this feature increases the symmetry in the use of Boost.Units, as I have emphasised in my code. </p> <p> I am aware of the great care the Boost.Units developers have in maintaining type-safety, so it might be that I am unaware of code compiling that shouldn't would this request be acknowledged. </p> <pre class="wiki">using boost::units::conversion_factor; using boost::units::quantity; using boost::units::si::length; using boost::units::si::meter; using boost::units::si::milli; typedef quantity&lt;length&gt; Length; //This value is read from file const double x_in_mm = 1.0; //Add units const Length x(x_in_mm * (milli * meter)); //Brackets added for emphasis const double x_again_in_m = x / meter; //Works const double x_again_in_mm { x / (milli * meter) //Same brackets as at emphasis }; //Why doesn't this? assert(x_in_mm == x_again_in_mm); </pre> richel@… https://svn.boost.org/trac10/ticket/9582 https://svn.boost.org/trac10/ticket/9582 Report #9580: [spirit.lex] self("state") += calls a wrong operator += Thu, 16 Jan 2014 00:38:18 GMT Thu, 30 Jan 2014 15:52:29 GMT <p> This construct </p> <div class="wiki-code"><div class="code"><pre> <span class="k">this</span><span class="o">-&gt;</span><span class="n">self</span><span class="p">(</span><span class="s">&quot;SOME_STATE&quot;</span><span class="p">)</span> <span class="o">+=</span> <span class="n">someTokenDef</span><span class="p">;</span> </pre></div></div><p> doesn't call </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">LexerDef</span><span class="p">,</span> <span class="k">typename</span> <span class="n">Expr</span><span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">lexer_def_</span><span class="o">&lt;</span><span class="n">LexerDef</span><span class="o">&gt;&amp;</span> <span class="n">boost</span><span class="o">::</span><span class="n">spirit</span><span class="o">::</span><span class="n">lex</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="k">operator</span><span class="o">+=</span> <span class="p">(</span><span class="n">lexer_def_</span><span class="o">&lt;</span><span class="n">LexerDef</span><span class="o">&gt;&amp;</span> <span class="n">lexdef</span><span class="p">,</span> <span class="n">Expr</span><span class="o">&amp;&amp;</span> <span class="n">xpr</span><span class="p">)</span> </pre></div></div><p> as it should in order for the definition get added to the lexer. Instead this operator </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">Left</span><span class="p">,</span> <span class="k">typename</span> <span class="n">Right</span><span class="o">&gt;</span> <span class="k">typename</span> <span class="n">boost</span><span class="o">::</span><span class="n">proto</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">enable_binary</span><span class="o">&lt;</span> <span class="n">deduce_domain</span> <span class="p">,</span> <span class="n">deduce_domain</span><span class="o">::</span><span class="n">proto_grammar</span> <span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">mpl</span><span class="o">::</span><span class="n">or_</span><span class="o">&lt;</span><span class="n">is_extension</span><span class="o">&lt;</span><span class="n">Left</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">is_extension</span><span class="o">&lt;</span><span class="n">Right</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">proto</span><span class="o">::</span><span class="n">tag</span><span class="o">::</span><span class="n">plus_assign</span> <span class="p">,</span> <span class="n">Left</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="p">,</span> <span class="n">Right</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="o">&gt;::</span><span class="n">type</span> <span class="k">const</span> <span class="k">operator</span> <span class="o">+=</span><span class="p">(</span><span class="n">Left</span> <span class="o">&amp;&amp;</span><span class="n">left</span><span class="p">,</span> <span class="n">Right</span> <span class="o">&amp;&amp;</span><span class="n">right</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">boost</span><span class="o">::</span><span class="n">proto</span><span class="o">::</span><span class="n">detail</span><span class="o">::</span><span class="n">make_expr_</span><span class="o">&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">proto</span><span class="o">::</span><span class="n">tag</span><span class="o">::</span><span class="n">plus_assign</span> <span class="p">,</span> <span class="n">deduce_domain</span> <span class="p">,</span> <span class="n">Left</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="p">,</span> <span class="n">Right</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="o">&gt;</span><span class="p">()(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> is called from boost::proto::exprns_ namespace. </p> Vyacheslav Andrejev https://svn.boost.org/trac10/ticket/9580 https://svn.boost.org/trac10/ticket/9580 Report #9577: trim_copy doesn't support string_ref Wed, 15 Jan 2014 19:07:55 GMT Mon, 31 Mar 2014 20:00:27 GMT <pre class="wiki">boost::string_ref z = " AA BB "; boost::string_ref b = boost::trim_copy(z); </pre><p> does not compile </p> ml@… https://svn.boost.org/trac10/ticket/9577 https://svn.boost.org/trac10/ticket/9577 Report #9576: read_until for string_ref Wed, 15 Jan 2014 15:13:20 GMT Fri, 24 Jan 2014 09:04:41 GMT <pre class="wiki">string_ref read_until(string_ref&amp; is, const char* sep); </pre><p> Could we have a function like this that reads until a separator, returns the part before the separator and then eats the separator? It should read and return the entire input if no separator is found. </p> Olaf van der Spek <ml@…> https://svn.boost.org/trac10/ticket/9576 https://svn.boost.org/trac10/ticket/9576 Report #9575: is_directory() wrong with NTFS mounted volumes, and temp_directory_path() fails then Wed, 15 Jan 2014 08:59:08 GMT Wed, 15 Jan 2014 08:59:08 GMT <p> is_directory() returns false with NTFS mounted volumes in Windows. This look like the same problem as <a class="new ticket" href="https://svn.boost.org/trac10/ticket/5649" title="#5649: Bugs: create_directories() fails with NTFS mounted volumes (new)">#5649</a>, but the consequences are more serious I think. Some people put the temp directory on a mounted volume, and in this case temp_directory_path() fails although windows has a valid temporary directory. I use some commercial software that uses temp_directory_path() which will fail without useful error messages. </p> andreas.malzahn@… https://svn.boost.org/trac10/ticket/9575 https://svn.boost.org/trac10/ticket/9575 Report #9573: type_rebinder<int,type_2,0> template specialization is not found using Sun's compiler 12.3 Tue, 14 Jan 2014 20:22:32 GMT Wed, 26 Feb 2014 21:28:43 GMT <p> <strong>#include &lt;boost/interprocess/managed_mapped_file.hpp&gt;<br /> using namespace boost::interprocess;<br /> typedef boost::interprocess::managed_mapped_file::segment_manager segment_manager_t;</strong><br /> </p> <p> /*<br /> Including those 3 lines above , is like code below when Sun's compiler trying to </p> <blockquote> <p> specialize type_rebinder&lt;int, second_rebind_type_t, 0&gt; and it does not find it, because of int = Ptr and there is no specialization for that type </p> </blockquote> <p> Compilation command : /appl/toolbox/solarisstudio12.3/bin/CC -v -library=stdcxx4 -D_XOPEN_SOURCE=500 -I/home/uqadir/boost_1_55/boost _1_55_0/ main.cpp </p> <p> #include &lt;boost/intrusive/set_hook.hpp&gt;<br /> #include &lt;boost/intrusive/detail/generic_hook.hpp&gt;<br /> #include &lt;boost/interprocess/detail/segment_manager_helper.hpp&gt;<br /> #include &lt;boost/intrusive/pointer_traits.hpp&gt;<br /> #include &lt;boost/intrusive/detail/utilities.hpp&gt;<br /> #include &lt;boost/intrusive/detail/memory_util.hpp&gt;<br /> </p> <p> typedef boost::intrusive::bhtraits&lt;boost::interprocess::ipcdetail::intrusive_value_type_impl&lt; boost::intrusive::generic_hook&lt; boost: :intrusive::get_set_node_algo&lt;boost::interprocess::offset_ptr&lt;void, int, unsigned, 0&gt;, 1&gt;, boost::intrusive::default_tag, 1, 3&gt;, cha r, unsigned&gt;, boost::intrusive::rbtree_node_traits&lt; boost::interprocess::offset_ptr&lt;void, int, unsigned, 0&gt;, 1&gt;, 1, boost::intrusive ::default_tag, 3 &gt; <strong>second_rebind_type_t</strong> ;<br /> </p> <p> typedef boost::intrusive::detail::type_rebinder &lt;<strong>int</strong>, second_rebind_type_t, <strong>0</strong>&gt;::type my_type; <strong>&lt;-- no such specialization in boost</strong> <br /> */ </p> <p> main () { } </p> vladmir.venediktov@… https://svn.boost.org/trac10/ticket/9573 https://svn.boost.org/trac10/ticket/9573 Report #9570: TTI doesn't support inheritance or at least this is not documented anywhere Mon, 13 Jan 2014 21:05:51 GMT Tue, 04 Mar 2014 15:33:48 GMT <p> If I didn't know better (not mentioned in TFM) I'd find the behavior of this program very surprising (g++-mp-4.8 -std=c++0x ..., from macports): </p> <p> #include "boost/tti/has_member_function.hpp" </p> <p> struct Container { </p> <blockquote> <p> void func() {} </p> </blockquote> <p> }; </p> <p> struct Container2 : public Container { </p> <blockquote> <p> using Container::func; <em> doesn't help </em></p> </blockquote> <p> }; </p> <p> <em>typedef Container container_t; </em> ok typedef Container2 container_t; <em> fail </em></p> <p> BOOST_TTI_HAS_MEMBER_FUNCTION(func) </p> <p> static_assert( </p> <blockquote> <p> has_member_function_func&lt; </p> <blockquote> <p> container_t, void, boost::mpl::vector&lt;&gt; </p> <blockquote class="citation"> <p> ::value, </p> </blockquote> </blockquote> <p> "fail" </p> </blockquote> <p> ); </p> <p> int main(int, char<strong>) { return 0; } </strong></p> anonymous https://svn.boost.org/trac10/ticket/9570 https://svn.boost.org/trac10/ticket/9570 Report #9568: incomplete type is not allowed Mon, 13 Jan 2014 11:49:45 GMT Mon, 13 Jan 2014 11:49:45 GMT <p> if compiling with latest intel compiler XE Composer 2013 SP1 IA-32 with vs2012 compilation fails, </p> <p> --- using BOOST_TYPEOF_SUPPRESS_UNNAMED_NAMESPACE did not modify anything, because reason is due to typeof --- </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp(50): error: incomplete type is not allowed </p> <blockquote> <p> struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl&lt;V, T&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=Ado::COMPtr_::COMPtr&lt;Ado:: </p> </blockquote> </blockquote> <p> IAdoRepoSession&gt;]" at line 140 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=Ado::C </p> </blockquote> <p> OMPtr_::COMPtr&lt;Ado::IAdoRepoSession&gt;]" at line 50 </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;Ado::COMPtr_:: </p> </blockquote> <p> COMPtr&lt;Ado::IAdoRepoSession&gt;&gt;]" at line 581 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp(140): error: class "boost::type_of::encode_type&lt;boost::type_of::vector1&lt;boost::mpl::size_t &lt;327820U&gt;&gt;, Ado::COMPtr_::COMPtr&lt;Ado::IAdoRepoSession&gt;&gt;" has no member "type" </p> <blockquote> <p> BOOST_TYPEOF_REGISTER_TEMPLATE(boost::scope_exit::detail::wrapper, 1) <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=Ado::C </p> </blockquote> </blockquote> </blockquote> <p> OMPtr_::COMPtr&lt;Ado::IAdoRepoSession&gt;]" at line 50 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;Ado::COMPtr_:: </p> </blockquote> <p> COMPtr&lt;Ado::IAdoRepoSession&gt;&gt;]" at line 581 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: class "boost::type_of::decode_begin&lt;boost::type_of::vector50&lt;boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;&gt;&gt;" has no member class "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: not a class or struct name </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: class "boost_se_wrapped_t_0_581" has no member "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp(50): error: incomplete type is not allowed </p> <blockquote> <p> struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl&lt;V, T&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=Ado::COMPtr_::COMPtr&lt;Ado:: </p> </blockquote> </blockquote> <p> IAdoRepository&gt;]" at line 140 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=Ado::C </p> </blockquote> <p> OMPtr_::COMPtr&lt;Ado::IAdoRepository&gt;]" at line 50 </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;Ado::COMPtr_:: </p> </blockquote> <p> COMPtr&lt;Ado::IAdoRepository&gt;&gt;]" at line 581 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp(140): error: class "boost::type_of::encode_type&lt;boost::type_of::vector1&lt;boost::mpl::size_t &lt;327820U&gt;&gt;, Ado::COMPtr_::COMPtr&lt;Ado::IAdoRepository&gt;&gt;" has no member "type" </p> <blockquote> <p> BOOST_TYPEOF_REGISTER_TEMPLATE(boost::scope_exit::detail::wrapper, 1) <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=Ado::C </p> </blockquote> </blockquote> </blockquote> <p> OMPtr_::COMPtr&lt;Ado::IAdoRepository&gt;]" at line 50 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;Ado::COMPtr_:: </p> </blockquote> <p> COMPtr&lt;Ado::IAdoRepository&gt;&gt;]" at line 581 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(29): error: name followed by "::" must be a class or namespace name </p> <blockquote> <p> BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~) <sup> detected during instantiation of class "boost::type_of::sizer&lt;V&gt; [with V=&lt;error-type&gt;]" at line 581 of "../../src/global/basic/aserialization_handler. </sup></p> </blockquote> <p> cxx" </p> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: class "boost::type_of::decode_begin&lt;boost::type_of::vector50&lt;boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;&gt;&gt;" has no member class "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: not a class or struct name </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: class "boost_se_wrapped_t_1_581" has no member "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp(50): error: incomplete type is not allowed </p> <blockquote> <p> struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl&lt;V, T&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;65592U&gt;&gt;, T=Ado::SerializationHandler:: </p> </blockquote> </blockquote> <p> Impl]" at line 56 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/modifiers.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, T *&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=Ado::SerializationHandler::Impl]" at line </p> </blockquote> <p> 50 </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=Ado::SerializationHandler::Impl *]" at line 581 o </p> </blockquote> <p> f "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/modifiers.hpp(56): error: class "boost::type_of::encode_type&lt;boost::type_of::vector1&lt;boost::mpl::s ize_t&lt;65592U&gt;&gt;, Ado::SerializationHandler::Impl&gt;" has no member "type" </p> <blockquote> <p> BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_pointer_fun); <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, T *&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=Ado::SerializationHandler::Impl]" at line </p> </blockquote> </blockquote> </blockquote> <p> 50 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=Ado::SerializationHandler::Impl *]" at line 581 o </p> </blockquote> <p> f "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/typeof_impl.hpp(44): error: class "boost::enable_if&lt;boost::integral_constant&lt;bool, 0&gt;, boost::type _of::sizer&lt;&lt;error-type&gt;&gt;&gt;" has no member "type" </p> <blockquote> <p> sizer&lt;typename encode_type&lt;V, T&gt;::type&gt; &gt;::type encode(T&amp;); </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during instantiation of "boost::type_of::encode" based on template arguments &lt;boost::type_of::vector0&lt;void&gt;, Ado::SerializationHandler::Impl </p> </blockquote> <p> *&gt; at line 581 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../src/global/basic/aserialization_handler.cxx(581): error: no instance of constructor "boost_se_params_t_581::boost_se_params_t_581" matches the argument li st </p> <blockquote> <p> argument types are: (Ado::COMPtr_::COMPtr&lt;Ado::IAdoRepoSession&gt;, Ado::COMPtr_::COMPtr&lt;Ado::IAdoRepository&gt;, Ado::SerializationHandler::Impl *) </p> </blockquote> <blockquote> <p> BOOST_SCOPE_EXIT((pNewRepoSession) (pCurrentRepo) (this_)) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(583): error: expression must have pointer type </p> <blockquote> <p> this_-&gt;_CloseNewRepoSession(pNewRepoSession, pCurrentRepo); <sup> </sup></p> </blockquote> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp(50): error: incomplete type is not allowed </p> <blockquote> <p> struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl&lt;V, T&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector2&lt;boost::mpl::size_t&lt;327820U&gt;, boost::mpl::size_t&lt;65589U&gt;&gt;, </p> </blockquote> </blockquote> <p> T=Ado::COMPtr_::COMPtr&lt;Ado::IAdoSerializer&gt;]" at line 53 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/modifiers.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, const T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=Ado::COMPtr_::C </p> </blockquote> <p> OMPtr&lt;Ado::IAdoSerializer&gt;]" at line 50 </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=const Ado::COMPtr_::COMPtr </p> </blockquote> <p> &lt;Ado::IAdoSerializer&gt;]" at line 140 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=const </p> </blockquote> <p> Ado::COMPtr_::COMPtr&lt;Ado::IAdoSerializer&gt;]" at line 50 </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;const Ado::COM </p> </blockquote> <p> Ptr_::COMPtr&lt;Ado::IAdoSerializer&gt;&gt;]" at line 907 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/modifiers.hpp(53): error: class "boost::type_of::encode_type&lt;boost::type_of::vector2&lt;boost::mpl::s ize_t&lt;327820U&gt;, boost::mpl::size_t&lt;65589U&gt;&gt;, Ado::COMPtr_::COMPtr&lt;Ado::IAdoSerializer&gt;&gt;" has no member "type" </p> <blockquote> <p> BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_fun); <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, const T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=Ado::COMPtr_::C </p> </blockquote> </blockquote> </blockquote> <p> OMPtr&lt;Ado::IAdoSerializer&gt;]" at line 50 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector1&lt;boost::mpl::size_t&lt;327820U&gt;&gt;, T=const Ado::COMPtr_::COMPtr </p> </blockquote> <p> &lt;Ado::IAdoSerializer&gt;]" at line 140 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/scope_exit.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type_impl&lt;V, boost::scope_exit::detail::wrapper&lt;P0&gt;&gt; [with V=boost::type_of::vector0&lt;void&gt;, P0=const </p> </blockquote> <p> Ado::COMPtr_::COMPtr&lt;Ado::IAdoSerializer&gt;]" at line 50 of "../../../build_link/i140-vc110-mt-gd-6_4/include/boost/typeof/encode_decode.hpp" </p> <blockquote> <p> instantiation of class "boost::type_of::encode_type&lt;V, T&gt; [with V=boost::type_of::vector0&lt;void&gt;, T=boost::scope_exit::detail::wrapper&lt;const Ado::COM </p> </blockquote> <p> Ptr_::COMPtr&lt;Ado::IAdoSerializer&gt;&gt;]" at line 907 of "../../src/global/basic/aserialization_handler.cxx" </p> <p> ../../src/global/basic/aserialization_handler.cxx(907): error: class "boost::type_of::decode_begin&lt;boost::type_of::vector50&lt;boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost: :mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, </p> <blockquote> <p> boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;, boost::mpl::size_t&lt;&lt;error-constant&gt;&gt; </p> </blockquote> <p> , boost::mpl::size_t&lt;&lt;error-constant&gt;&gt;&gt;&gt;" has no member class "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT(pSerializer) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(907): error: not a class or struct name </p> <blockquote> <p> BOOST_SCOPE_EXIT(pSerializer) <sup> </sup></p> </blockquote> <p> ../../src/global/basic/aserialization_handler.cxx(907): error: class "boost_se_wrapped_t_0_907" has no member "type" </p> <blockquote> <p> BOOST_SCOPE_EXIT(pSerializer) </p> </blockquote> iloehken@… https://svn.boost.org/trac10/ticket/9568 https://svn.boost.org/trac10/ticket/9568 Report #9566: program_options parsers.cpp does not compile: template-related error Mon, 13 Jan 2014 10:44:55 GMT Mon, 13 Jan 2014 10:44:55 GMT <p> When compiling program_options/src/parsers.cpp for sun/release/stdlib-sun-stlport/threading-multi Sun Studio 11 C++ 5.8, the compiler issues the following errors: </p> <blockquote> <p> "libs/program_options/src/parsers.cpp", line 162: Error: Could not find a match for boost::program_options::parse_config_file&lt;boost::program_options::charT&gt;(const char*, const boost::program_options::options_description&amp;, bool). "libs/program_options/src/parsers.cpp", line 169: Error: Could not find a match for boost::program_options::parse_config_file&lt;boost::program_options::charT&gt;(const char*, const boost::program_options::options_description&amp;, bool). </p> </blockquote> <p> The attached patch solves the problem by expliciting the template parameter for parse_config_file. I guess this is a bug in the compiler rather than in boost, but it seems to me that the suggested patch is still correct C++. Since this is the only issue that would inhibit use of program_options on my platform, for me it would be very useful to integrate the patch into the library. </p> rv1971 <rv1971@…> https://svn.boost.org/trac10/ticket/9566 https://svn.boost.org/trac10/ticket/9566 Report #9562: boost::detail::operator_brackets_proxy::result_type::operator= return type is wrong Sat, 11 Jan 2014 19:05:22 GMT Tue, 14 Jan 2014 05:25:06 GMT <p> From boost/iterator/detail/operator_brackets_dispatch.hpp: </p> <pre class="wiki">template &lt;class Iterator, class Reference&gt; struct operator_brackets_proxy { class result_type { Iterator const m_i; explicit result_type(Iterator const &amp; i) : m_i(i) { } friend struct operator_brackets_proxy; void operator=(result_type&amp;); public: operator Reference() const { return *m_i; } operator_brackets_proxy const &amp; operator=( typename Iterator::value_type const &amp; x) const { *m_i = x; return *this; } }; static result_type apply(Iterator const &amp; i) { return result_type(i); } }; </pre><p> The return type of <code>result_type::operator=</code> should be <code>result_type const &amp;</code>, not <code>operator_brackets_proxy const &amp;</code>. This looks like a typo. </p> Eric Niebler https://svn.boost.org/trac10/ticket/9562 https://svn.boost.org/trac10/ticket/9562 Report #9560: operations_test_static unit test crashes during static initialization phase on Mac/10.7/32-bit/darwin-4.2.1 Fri, 10 Jan 2014 21:11:28 GMT Wed, 16 Apr 2014 15:20:49 GMT <p> Verifying a 32-bit build of Boost on Mac, I get a consistent crash in operations_test_static during static initialization (prior to main() invocation). Problem appears to be a lack of initialization of path.hpp's anon namespace 'codecvt_facet_ptr'. </p> <p> Platform: 1.55.0, Mac OS 10.7, Xcode 4.3.3, darwin-4.2.1, address-model=32, architecture=x86 </p> <p> Build sequence is (approximately): </p> <pre class="wiki">./bjam toolset=darwin variant=debug address-model=32 architecture=x86 --layout=tagged --with-filesystem -sNO_BZIP2=1 -d2 -d+4 stage cd libs/filesystem/test ../../../bjam toolset=darwin variant=debug address-model=32 architecture=x86 --layout=tagged --with-filesystem -sNO_BZIP2=1 -d2 -d+4 -a -q </pre><p> Stacktrace of access violation: </p> <pre class="wiki">(gdb) run Starting program: /Users/monty/3P/3p-boost-update/boost/bin.v2/libs/filesystem/test/operations_test_static.test/darwin-4.2.1/debug/address-model-32/architecture-x86/link-static/operations_test_static Reading symbols for shared libraries ++......................... done Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00000000 0x00058054 in std::__codecvt_abstract_base&lt;wchar_t, char, __mbstate_t&gt;::in (this=0x0, __state=@0xbfffeba0, __from=0x1660cc "operations-test-%%%%-%%%%-%%%%-%%%%", __from_end=0x1660ef "", __from_next=@0xbfffeb9c, __to=0xbfffec90, __to_end=0xbffff090, __to_next=@0xbfffeb98) at codecvt.h:206 206 __to, __to_end, __to_next); (gdb) where #0 0x00058054 in std::__codecvt_abstract_base&lt;wchar_t, char, __mbstate_t&gt;::in (this=0x0, __state=@0xbfffeba0, __from=0x1660cc "operations-test-%%%%-%%%%-%%%%-%%%%", __from_end=0x1660ef "", __from_next=@0xbfffeb9c, __to=0xbfffec90, __to_end=0xbffff090, __to_next=@0xbfffeb98) at codecvt.h:206 #1 0x00057e10 in convert_aux (from=0x1660cc "operations-test-%%%%-%%%%-%%%%-%%%%", from_end=0x1660ef "", to=0xbfffec90, to_end=0xbffff090, target=@0xbffff200, cvt=@0x0) at path_traits.cpp:76 #2 0x00057908 in boost::filesystem::path_traits::convert (from=0x1660cc "operations-test-%%%%-%%%%-%%%%-%%%%", from_end=0x1660ef "", to=@0xbffff200, cvt=@0x0) at path_traits.cpp:158 #3 0x00058c79 in boost::filesystem::path::wstring (this=0xbffff288, cvt=@0x0) at path.hpp:392 #4 0x00058d0a in boost::filesystem::path::wstring (this=0xbffff288) at path.hpp:386 #5 0x00058346 in boost::filesystem::detail::unique_path (model=@0xbffff288, ec=0x0) at unique_path.cpp:113 #6 0x000375fb in boost::filesystem::unique_path (p=@0xbffff288) at operations.hpp:544 #7 0x000339b5 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at operations_test.cpp:118 #8 0x0003371a in global constructors keyed to _ZN12_GLOBAL__N_18platformE () at operations_test.cpp:2035 #9 0x8fe11203 in __dyld__ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE () #10 0x8fe10d68 in __dyld__ZN16ImageLoaderMachO16doInitializationERKN11ImageLoader11LinkContextE () #11 0x8fe0e2c8 in __dyld__ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEjRNS_21InitializerTimingListE () #12 0x8fe0f268 in __dyld__ZN11ImageLoader15runInitializersERKNS_11LinkContextERNS_21InitializerTimingListE () #13 0x8fe03694 in __dyld__ZN4dyld24initializeMainExecutableEv () #14 0x8fe07f99 in __dyld__ZN4dyld5_mainEPK12macho_headermiPPKcS5_S5_ () #15 0x8fe012ef in __dyld__ZN13dyldbootstrap5startEPK12macho_headeriPPKclS2_ () #16 0x8fe01063 in __dyld__dyld_start () </pre> Monty Brandenberg <mcbinc@…> https://svn.boost.org/trac10/ticket/9560 https://svn.boost.org/trac10/ticket/9560 Report #9557: BOOST_FOREACH with iterators? Thu, 09 Jan 2014 00:02:17 GMT Thu, 09 Jan 2014 00:02:17 GMT <p> I love BOOST_FOREACH and use it all the time. </p> <p> The normal signature is </p> <p> BOOST_FOREACH( T &amp; t, Collection&lt;T&gt;){...} </p> <p> Would it be possible to also permit </p> <p> BOOST_FOREACH( T *, Collection&lt;T&gt;){..&gt;} </p> <p> This would make it even more useful to me. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/9557 https://svn.boost.org/trac10/ticket/9557 Report #9555: signals - libs/signals/test/swap_test.cpp compilation error on Debian squeeze Wed, 08 Jan 2014 18:23:25 GMT Wed, 08 Jan 2014 18:23:25 GMT <p> Unit tests for 'signals' library fail to compile on Debian due to missing '#include &lt;iostream&gt;' in swap_test.cpp. </p> <p> Platform: Debian squeeze (6.0.5), target=gcc-4.6, architecture=x86, 32-bit, variant=release (debug variant compiles). Unit tests being run under bjam with 'variant=release -a -q -d2 -d+4' arguments produce the following error: </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -DBOOST_ALL_NO_LIB=1 -DBOOST_SIGNALS_NO_DEPRECATION_WARNING -DBOOST_SIGNALS_STATIC_LINK -DBOOST_TEST_NO_AUTO_LINK=1 -DNDEBUG -I"../../.." -c -o "../../../bin.v2/libs/signals/test/swap_test.test/gcc-4.6/release/link-static/swap_test.o" "swap_test.cpp" </p> </blockquote> <p> In file included from ../../../boost/config.hpp:26:0, </p> <blockquote> <p> from ../../../boost/signal.hpp:25, from swap_test.cpp:4: </p> </blockquote> <p> ../../../boost/config/user.hpp:111:0: warning: "BOOST_ALL_NO_LIB" redefined [enabled by default] &lt;command-line&gt;:0:0: note: this is the location of the previous definition swap_test.cpp: In member function 'void HelloWorld::operator()() const': swap_test.cpp:11:5: error: 'cout' is not a member of 'std' 0.000007 sec system; 0.000087 sec user ...failed gcc.compile.c++ ../../../bin.v2/libs/signals/test/swap_test.test/gcc-4.6/release/link-static/swap_test.o... ...skipped &lt;p../../../bin.v2/libs/signals/test/swap_test.test/gcc-4.6/release/link-static&gt;swap_test for lack of &lt;p../../../bin.v2/libs/signals/test/swap_test.test/gcc-4.6/release/link-static&gt;swap_test.o... SEM: &lt;s&gt;gcc-link-semaphore now used by &lt;p../../../bin.v2/libs/signals/test/swap_test.test/gcc-4.6/release/link-static&gt;swap_test ...failed updating 1 target... ...skipped 1 target... ...updated 50 targets... ERROR: building default configuration returned 1 </p> <p> Mercurial unified diff of fix: </p> <pre class="wiki">diff -r af87ea28f909 boost/libs/signals/test/swap_test.cpp --- a/boost/libs/signals/test/swap_test.cpp Thu Dec 19 23:16:23 2013 +0000 +++ b/boost/libs/signals/test/swap_test.cpp Wed Jan 08 18:20:02 2014 +0000 @@ -1,8 +1,9 @@ // https://svn.boost.org/trac/boost/ticket/5521 // claims a linker error for this. +#include &lt;iostream&gt; #include &lt;boost/signal.hpp&gt; #include &lt;boost/signals/connection.hpp&gt; struct HelloWorld { </pre> Monty Brandenberg <mcbinc@…> https://svn.boost.org/trac10/ticket/9555 https://svn.boost.org/trac10/ticket/9555 Report #9554: read_graphviz example code crashes Wed, 08 Jan 2014 11:57:46 GMT Wed, 08 Jan 2014 12:11:48 GMT <p> The example code for read_graphviz crashes when run. </p> <p> <a href="http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/read_graphviz.html#example">http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/read_graphviz.html#example</a> </p> <p> See also <a class="ext-link" href="http://stackoverflow.com/q/20967950/16582"><span class="icon">​</span>http://stackoverflow.com/q/20967950/16582</a> </p> anonymous https://svn.boost.org/trac10/ticket/9554 https://svn.boost.org/trac10/ticket/9554 Report #9552: bimap compilation fails on 1.55 that was successful on 1.54 (hash_detail issues) Wed, 08 Jan 2014 05:36:30 GMT Wed, 08 Jan 2014 05:36:30 GMT <p> Bimap compilation fails on Boost 1.55 because of hashing issues. Platform: gcc (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1 x64, C++11 compilation mode </p> <p> Bimap declaration: </p> <pre class="wiki"> typedef boost::bimap&lt;boost::bimaps::unordered_set_of&lt;Id&gt;, boost::bimaps::unconstrained_set_of&lt;Id&gt;, boost::bimaps::vector_of_relation&gt; Nbimap; Nbimap m_nbimap; </pre><p> Where id is unsigned int or int (conditional). </p> <p> Build log is attached. </p> Artem V L <luart@…> https://svn.boost.org/trac10/ticket/9552 https://svn.boost.org/trac10/ticket/9552 Report #9549: [graph][BGL][PBGL] Dynamic_properties class does not allow distributed property_maps Tue, 07 Jan 2014 11:48:26 GMT Tue, 07 Jan 2014 11:55:14 GMT <p> I am working with parallel graphs and distributed property maps. I found a problem compiling the code when I intended to add a distributed property map to the dynamic_property variable. The error was a casting problem: error: inicialización inválida de una referencia que no es constante de tipo ‘boost::default_property_traits&lt;boost::parallel::distributed_property_map&lt;boost::graph::distributed::mpi_process_group, boost::detail::parallel::global_descriptor_property_map&lt;long unsigned int&gt;, boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_in_edges_t, std::list&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt;, std::allocator&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt; &gt; &gt;, <a class="missing wiki">VertexProperties</a>&gt;, boost::property&lt;boost::edge_target_processor_id_t, short int, EdgeProperties&gt;, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_in_edges_t, std::list&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt;, std::allocator&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt; &gt; &gt;, <a class="missing wiki">VertexProperties</a>&gt;, boost::property&lt;boost::edge_target_processor_id_t, short int, EdgeProperties&gt;, boost::no_property, boost::listS&gt;*, double, double&amp;, double VertexProperties::*&gt; &gt; &gt;::reference {aka double&amp;}’ desde un r-valor de tipo ‘boost::parallel::distributed_property_map&lt;boost::graph::distributed::mpi_process_group, boost::detail::parallel::global_descriptor_property_map&lt;long unsigned int&gt;, boost::vec_adj_list_vertex_property_map&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_in_edges_t, std::list&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt;, std::allocator&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt; &gt; &gt;, <a class="missing wiki">VertexProperties</a>&gt;, boost::property&lt;boost::edge_target_processor_id_t, short int, EdgeProperties&gt;, boost::no_property, boost::listS&gt;, boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_in_edges_t, std::list&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt;, std::allocator&lt;boost::detail::parallel::stored_in_edge&lt;boost::detail::edge_desc_impl&lt;boost::directed_tag, long unsigned int&gt; &gt; &gt; &gt;, <a class="missing wiki">VertexProperties</a>&gt;, boost::property&lt;boost::edge_target_processor_id_t, short int, EdgeProperties&gt;, boost::no_property, boost::listS&gt;*, double, double&amp;, double VertexProperties::*&gt; &gt;::value_type {aka double}’ </p> <p> I also want to propose a patch to solve this problem. </p> anonymous https://svn.boost.org/trac10/ticket/9549 https://svn.boost.org/trac10/ticket/9549 Report #9547: Boost Filesystem documentation contains now removed "make_absolute()" method Mon, 06 Jan 2014 15:37:19 GMT Mon, 06 Jan 2014 15:37:19 GMT <p> In <a href="http://www.boost.org/doc/libs/1_55_0/libs/filesystem/doc/reference.html#class-path">http://www.boost.org/doc/libs/1_55_0/libs/filesystem/doc/reference.html#class-path</a> there is a "path" method "make_absolute()" that doesn't exist anymore. </p> <p> It points to the non-member operational function "absolute()" that replaces "make_absolute()" though. </p> <p> Has this commit not been backported? <a class="ext-link" href="https://svn.boost.org/trac/boost/changeset/80163"><span class="icon">​</span>https://svn.boost.org/trac/boost/changeset/80163</a> </p> riccardi@… https://svn.boost.org/trac10/ticket/9547 https://svn.boost.org/trac10/ticket/9547 Report #9545: program_options description printout bug Mon, 06 Jan 2014 12:29:02 GMT Tue, 07 Jan 2014 18:44:42 GMT <p> When setting the default value of a float option to 0.05, the help description that is printed by the program states that the default value is 0.0500000007. For double, it states "0.050000000000000003". The value of the variable within the program is correct, i.e. 0.05. </p> <p> I'm compiling with: </p> <p> $ g++ --version g++ (GCC) 4.8.3 20131226 (prerelease) </p> <p> Here is a test program that reproduces the problem when run with the option "--help": </p> <pre class="wiki">#include "boost/program_options.hpp" int main(int argc, char ** argv) { float dt; boost::program_options::variables_map vm; boost::program_options::options_description desc("Description"); desc.add_options() ("help", "Print help message") ("dt", boost::program_options::value&lt;float&gt;(&amp;dt)-&gt;default_value(0.05), "Time step") ; boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm); boost::program_options::notify(vm); if(vm.count("help")) desc.print(std::cout); std::cout &lt;&lt; "dt = " &lt;&lt; dt &lt;&lt; "\n"; return 0; } </pre> Torquil Sørensen <torquil@…> https://svn.boost.org/trac10/ticket/9545 https://svn.boost.org/trac10/ticket/9545 Report #9542: [system] BOOST_ERROR_CODE_HEADER_ONLY only works with full source tree Sat, 04 Jan 2014 11:24:51 GMT Sat, 04 Jan 2014 11:24:51 GMT <p> defining the BOOST_ERROR_CODE_HEADER_ONLY symbol only works when using the source tree. but it breaks compilation when the boost headers and compiled libraries are installed (e.g. in /usr/include or other fhs-like locations). </p> timblechmann https://svn.boost.org/trac10/ticket/9542 https://svn.boost.org/trac10/ticket/9542 Report #9538: BOOST_PROTO_USE_NORMAL_RESULT_OF incorrectly defined Tue, 31 Dec 2013 18:32:22 GMT Tue, 31 Dec 2013 18:32:22 GMT <p> In proto/proto_fwd.hpp, based on how the macro BOOST_PROTO_USE_NORMAL_RESULT_OF is used, it's meant to be defined when the compiler supports c++11 decltype and implements N3276, for example, BOOST_PROTO_RESULT_OF is boost::result_of when BOOST_PROTO_USE_NORMAL_RESULT_OF is defined. </p> <p> However, its definition seems incorrect, and is inconsistent with the comments next to it. </p> <pre class="wiki"> #ifdef BOOST_NO_CXX11_DECLTYPE_N3276 ^^^^^^ this should be #ifndef # // Proto can only use the decltype-based result_of if N3276 has been # // implemented by the compiler. # // See http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3276.pdf # ifndef BOOST_PROTO_USE_NORMAL_RESULT_OF # define BOOST_PROTO_USE_NORMAL_RESULT_OF # endif #endif </pre> Hui Li <Hui.Li@…> https://svn.boost.org/trac10/ticket/9538 https://svn.boost.org/trac10/ticket/9538 Report #9536: narrow-conversion uses insufficient input char type Mon, 30 Dec 2013 17:20:39 GMT Mon, 30 Dec 2013 17:32:35 GMT <p> Test runs exhibit this problem: </p> <pre class="wiki">compile-c-c++ ..\..\..\bin.v2\libs\date_time\test\teststreams.test\msvc-12.0\debug\address-model-64\posix_time\teststreams.obj teststreams.cpp boost/date_time/posix_time/posix_time_legacy_io.hpp(83) : warning C4244: 'argument' : conversion from 'wchar_t' to 'char', possible loss of data posix_time\teststreams.cpp(144) : see reference to function template instantiation 'std::basic_istream&lt;wchar_t,std::char_traits&lt;wchar_t&gt;&gt; &amp;boost::posix_time::operator &gt;&gt;&lt;wchar_t&gt;(std::basic_istream&lt;wchar_t,std::char_traits&lt;wchar_t&gt;&gt; &amp;,boost::posix_time::time_duration &amp;)' being compiled </pre><p> The current implementation uses std::stringstream::narrow(char) with its 'char' input parameter type to transform 'charT' chars taken from a std::basic_istream&lt;charT&gt; into 'char' chars. This is most likely not what is intended if 'charT' is wider than 'char'. </p> <p> Tests were run against Boost version 1.55.0 and latest 'development' branch using vc10, vc11, and vc12. Test logs are attached. </p> dani@… https://svn.boost.org/trac10/ticket/9536 https://svn.boost.org/trac10/ticket/9536 Report #9533: boost::accumulators::weighted_median different results for debug and release modes Sun, 29 Dec 2013 17:05:47 GMT Mon, 30 Dec 2013 07:38:13 GMT <p> I have a different results for debug and release modes. Look at readme and example in </p> <p> <a class="ext-link" href="https://github.com/aurusov/boost_accumulators_weighted_median_error"><span class="icon">​</span>https://github.com/aurusov/boost_accumulators_weighted_median_error</a> </p> Andrey Urusov <drobus@…> https://svn.boost.org/trac10/ticket/9533 https://svn.boost.org/trac10/ticket/9533 Report #9532: BCP stackoverflow on Boost.Log Sun, 29 Dec 2013 17:04:48 GMT Fri, 14 Mar 2014 12:15:28 GMT <p> Boost.BCP fails to process Boost.Log: </p> <pre class="wiki">C:\Program Files (x86)\boost\boost_1_55_0&gt;bin.v2\tools\bcp\msvc-11.0\release\link-static\bcp.exe --list log **** exception(225): stack overflow ******** errors detected; see standard output for details ******** </pre> Evgeny.Panasyuk@… https://svn.boost.org/trac10/ticket/9532 https://svn.boost.org/trac10/ticket/9532 Report #9530: Building Boost with minGW Sun, 29 Dec 2013 05:47:06 GMT Tue, 31 Dec 2013 01:33:15 GMT <p> Hey, I use <a class="missing wiki">CodeBlocks</a>(minGW) and I'm having problems with building boost. "C:\Program Files (x86)\<a class="missing wiki">CodeBlocks</a>\MinGW\bin" is in the Path variable and I was able to build b2 and bjam with "bootstrap.bat gcc" but after "b2 toolset=gcc --build-type=complete" I get some errors. </p> <p> output: </p> <pre class="wiki">link.jam: No such file or directory Building the Boost C++ Libraries. Performing configuration checks - 32-bit : yes - arm : no - mips1 : no - power : no - sparc : no - x86 : yes - has_icu builds : no warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam - zlib : no - iconv (libc) : no - iconv (separate) : no - icu : no - icu (lib64) : no - g++ -shared-* supported : yes - message-compiler : no - compiler-supports-ssse3 : yes - compiler-supports-avx2 : yes - gcc visibility : yes - long double support : yes warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message. warning: No python installation configured and autoconfiguration note: failed. See http://www.boost.org/libs/python/doc/building.html note: for configuration instructions or pass --without-python to note: suppress this message and silently skip all Boost.Python targets - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) - zlib : no - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) - zlib : no (cached) C:/libs/boost_1_55_0/tools/build/v2/build\virtual-target.jam:1099: in virtual-target.register-actual-name from module virtual-target error: Duplicate name of actual target: &lt;pstage\lib&gt;libboost_exception-mgw47-mt-1_55.a error: previous virtual target { common%common.copy-libboost_exception-mgw47-mt-1_55.a.STATIC_LIB { gcc%gcc.archive-libboost_exception-mgw47-mt-1_55.a.STATIC_LIB { gcc%gcc.compile.c++-clone_current_exception_non_intrusive.o.OBJ { clone_current_exception_non_intrusive.cpp.CPP } } } } error: created from ./stage-proper error: another virtual target { common%common.copy-libboost_exception-mgw47-mt-1_55.a.STATIC_LIB { gcc%gcc.archive-libboost_exception-mgw47-mt-1_55.a.STATIC_LIB { gcc%gcc.compile.c++-clone_current_exception_non_intrusive.o.OBJ { clone_current_exception_non_intrusive.cpp.CPP } } } } error: created from ./stage-proper error: added properties: &lt;linkflags&gt;-shared-libgcc &lt;linkflags&gt;-shared-libstdc++ error: removed properties: none C:/libs/boost_1_55_0/tools/build/v2/build\virtual-target.jam:484: in actualize-no-scanner from module object(file-target)@5267 C:/libs/boost_1_55_0/tools/build/v2/build\virtual-target.jam:134: in class@virtual-target.actualize from module object(file-target)@5267 C:/libs/boost_1_55_0/tools/build/v2\build-system.jam:720: in load from module build-system C:\libs\boost_1_55_0\tools\build\v2/kernel\modules.jam:289: in import from module modules C:\libs\boost_1_55_0\tools\build\v2/kernel/bootstrap.jam:139: in boost-build from module C:\libs\boost_1_55_0\boost-build.jam:17: in module scope from module </pre> anonymous https://svn.boost.org/trac10/ticket/9530 https://svn.boost.org/trac10/ticket/9530 Report #9525: Assert with program termination due to context<...>() call in simple_state's entry action is incorrect Thu, 26 Dec 2013 12:58:40 GMT Sun, 26 Jan 2014 18:12:14 GMT <pre class="wiki">#include &lt;boost/statechart/state_machine.hpp&gt; #include &lt;boost/statechart/simple_state.hpp&gt; namespace sc = boost::statechart; struct state; struct fsm : sc::state_machine&lt;fsm, state&gt; { void test() {} }; struct state : sc::simple_state&lt;state, fsm&gt; { state() { context&lt;fsm&gt;().test(); } }; int main() { fsm test; test.initiate(); } </pre><pre class="wiki">statechart_test: /usr/include/boost/statechart/simple_state.hpp:682: static OtherContext&amp; boost::statechart::simple_state&lt;MostDerived, Context, InnerInitial, historyMode&gt;::context_impl_other_context::context_impl(State&amp;) [with OtherContext = fsm; State = boost::statechart::simple_state&lt;state, fsm&gt;; MostDerived = state; Context = fsm; InnerInitial = boost::mpl::list&lt;mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na&gt;; boost::statechart::history_mode historyMode = (boost::statechart::history_mode)0u]: Assertion `get_pointer( stt.pContext_ ) != 0' failed. Аварийный останов </pre><p> It's not correct to throw uncatchable surprises like asserts. It's especially incorrect when your library is used in the embedded software. </p> <p> Not to mention this isn't reflected anywhere in the documentation. </p> <p> Please change this to exception throwing, or better, find a way to detect calls like that at compile time. But don't use asserts. That's just bad treatment of your users. </p> anonymous https://svn.boost.org/trac10/ticket/9525 https://svn.boost.org/trac10/ticket/9525 Report #9523: reserve() corrupts data in boost::bimap vector_of_relation Tue, 24 Dec 2013 18:15:22 GMT Tue, 24 Dec 2013 18:15:22 GMT <p> bimap::reserve() has bad behavior: </p> <ol><li>Corrupts the data by inserting item into the empty bimap </li><li>Reserves incorrect amount of elements capacity </li></ol><p> Environment: Linux Ubuntu x64 3.2.0-57-generic 87-Ubuntu SMP, gcc (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1 </p> <p> Code: </p> <pre class="wiki"> typedef unsigned Id; const unsigned m_nodes = 1518; typedef boost::bimap&lt;boost::bimaps::unordered_set_of&lt;Id&gt;, boost::bimaps::unconstrained_set_of&lt;Id&gt;, boost::bimaps::vector_of_relation&gt; Nbimap; Nbimap m_nbimap; fprintf(stderr, "Initial bmsize: %u, capacity: %u\n", m_nbimap.size(), m_nbimap.capacity()); m_nbimap.reserve(m_nodes); fprintf(stderr, "Postreserve bmsize: %u, capacity: %u, nsize: %u\n", m_nbimap.size(), m_nbimap.capacity(), m_nodes); </pre><p> Console output: </p> <pre class="wiki">Initial bmsize: 0, capacity: 0 Postreserve bmsize: 1, capacity: 15, nsize: 1518 </pre> Artem V L <luart@…> https://svn.boost.org/trac10/ticket/9523 https://svn.boost.org/trac10/ticket/9523 Report #9521: Exception when passing buffer to read_xml() Tue, 24 Dec 2013 05:05:03 GMT Tue, 24 Dec 2013 05:54:48 GMT <p> Hi, I have taken reference from <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/3831"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/3831</a> </p> <p> I have made changes for read_xml(), now I am getting below exception "ex.what():: &lt;unspecified file&gt;(1): expected &lt;" </p> <p> code: </p> <p> string fileDataStr ((const char*)xmlFileBuffer); boost::property_tree::ptree pt; std::stringstream ss; ss&lt;&lt;fileDataStr; boost::property_tree::read_xml( ss, tree ); </p> Hitesh Saxena https://svn.boost.org/trac10/ticket/9521 https://svn.boost.org/trac10/ticket/9521 Report #9510: std::swap should be pulled in from <utility> in C++11 Thu, 19 Dec 2013 17:06:03 GMT Thu, 19 Dec 2013 17:06:03 GMT <p> included &lt;utility&gt; and removed &lt;algorithm&gt; in swap.hpp as in c++11 std::swap is present in &lt;utility&gt; </p> sambitbolt@… https://svn.boost.org/trac10/ticket/9510 https://svn.boost.org/trac10/ticket/9510 Report #9508: 1.54 regression: boost/thread/once.hpp includes boost/placeholders.hpp Thu, 19 Dec 2013 02:22:06 GMT Mon, 13 Jan 2014 22:05:14 GMT <pre class="wiki">#include &lt;functional&gt; #include &lt;boost/thread/once.hpp&gt; using namespace std::placeholders; static int x = sizeof(_1); </pre><p> The code above compiles in C++11 mode on boost 1.53, but it fails on boost 1.54 like this: </p> <pre class="wiki">boost_bind_bug.cpp:6:23: error: reference to ‘_1’ is ambiguous static int x = sizeof(_1); ^ In file included from boost_bind_bug.cpp:1:0: /usr/include/c++/4.8.2/functional:1004:34: note: candidates are: const std::_Placeholder&lt;1&gt; std::placeholders::_1 extern const _Placeholder&lt;1&gt; _1; ^ In file included from /usr/include/boost/bind/bind.hpp:1742:0, from /usr/include/boost/bind.hpp:22, from /usr/include/boost/thread/pthread/once_atomic.hpp:19, from /usr/include/boost/thread/once.hpp:20, from boost_bind_bug.cpp:2: /usr/include/boost/bind/placeholders.hpp:55:15: note: boost::arg&lt;1&gt; {anonymous}::_1 boost::arg&lt;1&gt; _1; ^ </pre><p> This magic inclusion of boost/bind/placeholders.hpp is extremely impolite. </p> luto@… https://svn.boost.org/trac10/ticket/9508 https://svn.boost.org/trac10/ticket/9508 Report #9507: [bcp] bcp creates broken build for asio component Wed, 18 Dec 2013 14:06:23 GMT Wed, 09 Sep 2015 07:52:51 GMT <p> When I try to extract the 'asio' component via bcp (and custom namespace), I end up with a broken build environment in the target dir. Every other component I tried to extract this way works. </p> <p> I'm on OS X 10.9.1 using XCode 5 command line tools. </p> <p> Steps to reproduce (in bash): </p> <pre class="wiki">./bootstrap.sh ( cd tools/bcp/ &amp;&amp; ../../tools/build/v2/engine/bin.macosxx86_64/bjam toolset=darwin ) ./dist/bin/bcp --namespace=akboost --namespace-alias \ build \ asio \ $HOME/build/akboost/ cp bjam $HOME/build/akboost cd $HOME/build/akboost ./bjam -d+2 debug release \ toolset=darwin \ threading=multi \ link=static \ cxxflags=-stdlib=libstdc++ \ cxxflags=-mmacosx-version-min=10.7 \ linkflags=-stdlib=libstdc++ \ linkflags=-mmacosx-version-min=10.7 \ --toolset-root=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk \ --macosx-version=10.7 --macosx-version-min=10.7 \ --layout=tagged \ --build-dir=$HOME/build/akboost_1.55_build \ --prefix=$HOME/akboost_1.55.0 \ install </pre><p> This yields this error from bjam: </p> <pre class="wiki">link.jam: No such file or directory error: Unable to find file or target named error: '/boost/context//boost_context' error: referred to from project at error: 'libs/coroutine/build' error: could not resolve project reference '/boost/context' </pre><p> If I use bcp to extract any other component (I tried algorithm, assign, chrono, date_time, detail, filesystem, filesystem3, foreach, gil, iostreams, multi_array, multi_index, numeric, property_tree, regex, serialization spirit signal system, timer and thread) everything works just fine and bjam works its magic. </p> virtualritz@… https://svn.boost.org/trac10/ticket/9507 https://svn.boost.org/trac10/ticket/9507 Report #9505: Replace plain throw with BOOST_THROW_EXCEPTION Tue, 17 Dec 2013 16:11:10 GMT Tue, 17 Dec 2013 16:11:10 GMT <p> Hello, </p> <p> could you please have a look at the pull request here: <a class="ext-link" href="https://github.com/boostorg/tokenizer/pull/1"><span class="icon">​</span>https://github.com/boostorg/tokenizer/pull/1</a> </p> <p> Thanks, Gregor </p> Gregor Jasny <gjasny@…> https://svn.boost.org/trac10/ticket/9505 https://svn.boost.org/trac10/ticket/9505 Report #9502: Unexpected behaviour of boost::mpi::request::test() Tue, 17 Dec 2013 14:04:33 GMT Tue, 17 Dec 2013 14:04:33 GMT <p> The following code snippet shows that boost::mpi::request::test() behaves differently depending on whether we send a message of built-in type or a message of custom type: </p> <pre class="wiki">struct custom_type { template&lt;class Archive&gt; void serialize(Archive&amp; ar, const unsigned int version) {} }; [...] int i; auto req = comm.irecv(0,0,i); req.wait(); std::cout &lt;&lt; "Did we receive the built in type message: " &lt;&lt; bool(req.test()) &lt;&lt; std::endl; custom_type c; auto req = comm.irecv(0,0,c); req.wait(); std::cout &lt;&lt; "Did we receive the custom type message: " &lt;&lt; bool(req.test()) &lt;&lt; std::endl; </pre><p> Output: </p> <pre class="wiki">Did we receive the built in type message: 1 Did we receive the custom type message: 0 </pre><p> Similar behaviour is observed if you just repeatedly call req.test(): For the built-in type, the returned boost::optional switches from empty to non-empty once and then stays non-empty, whereas for the custom type it switches from empty to non-empty and in the next call goes back to empty again. </p> <p> For our application, it would be desirable if the custom type behaviour would be the same as the built-in type behaviour. If this is not possible or not advisable, then at least the documentation of boost::mpi::request should mention this difference in behaviour. </p> ettersi@… https://svn.boost.org/trac10/ticket/9502 https://svn.boost.org/trac10/ticket/9502 Report #9499: Oracle Solaris Studio 5.12 warning at os_thread_functions.hpp line 465 Mon, 16 Dec 2013 18:14:42 GMT Tue, 24 Dec 2013 16:29:00 GMT <p> Would be great if the following warning could be rectified. Thanks! </p> <p> "path/to/boost/interprocess/detail/os_thread_functions.hpp", line 465: Warning (Anachronism), badargtype2w: Formal argument 3 of type extern "C" void*(*)(void*) in call to pthread_create(unsigned*, const _pthread_attr*, extern "C" void*(*)(void*), void*) is being passed void*(*)(void*). </p> alessio.massaro@… https://svn.boost.org/trac10/ticket/9499 https://svn.boost.org/trac10/ticket/9499 Report #9495: property_tree json_read should accept iterators instead of just streams Sun, 15 Dec 2013 11:57:20 GMT Tue, 07 Jul 2015 14:05:45 GMT <p> For a project I am using boost::property_tree abundantly. The trees need to be transfered across all kinds of interfaces and I have ran the limited function call several times. </p> <p> It requires a istream to read from. To make matters worse, as soon as it enters the function, a complete copy is made to a vector. And that happens when I already had to make a copy because the read_json method expects to consume all input data, which rarely happens for me. I know the exact beginning and ending position in the stream, but there is no way to specify this. </p> <p> The following function signature would be prefered: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">Iterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Ptree</span><span class="o">&gt;</span> <span class="kt">void</span> <span class="n">read_json_internal</span><span class="p">(</span><span class="n">Iterator</span> <span class="n">begin</span><span class="p">,</span> <span class="n">Iterator</span> <span class="n">end</span><span class="p">,</span> <span class="n">Ptree</span> <span class="o">&amp;</span><span class="n">pt</span><span class="p">,</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&amp;</span><span class="n">filename</span><span class="p">)</span> </pre></div></div><p> This signature could still be used by the existing read_json_internal, which first converts this to a vector and then passed the vector iterators begin and and to this function, to avoid code duplication. </p> <p> Of course, the proper front-end in json_parser.hpp needs to be added to. </p> <p> The benefit is that this method can operate directly on my input sequence where I can specify exactly where the JSON states and where the JSON ends, avoiding all copies completely. </p> <p> I will attach a patch based on SVN Trunk that will accomplish this. </p> Egbert van der Wal <ewal@…> https://svn.boost.org/trac10/ticket/9495 https://svn.boost.org/trac10/ticket/9495 Report #9493: labeled_graph may refer to and operate on released memory after removing a vertex by label Fri, 13 Dec 2013 12:39:26 GMT Wed, 23 Sep 2015 13:08:15 GMT <p> Although <code>labeled_graph</code> is not officially part of BGL API some people try to use it. </p> <p> Unfortunately, the current implementation has a serious bug that might lead to a crash. The problem appears when removing a vertex from labeled_graph by its label. My investigation shown that despite of vertex being actually removed, the label is not and it still refers to the removed vertex. </p> <p> The problem is "easier" to reproduce when adjacency_list's <a class="missing wiki">VertexList</a> is set to a container like boost::listS. </p> <p> The attached test case shows the problem. I also attached the output from a valgrind run on the test case code and a patch that fixes the issue for the "configuration" that I use (a more generic fix will probably be needed). </p> Adam Romanek <romanek.adam@…> https://svn.boost.org/trac10/ticket/9493 https://svn.boost.org/trac10/ticket/9493 Report #9487: Missing codepage identifiers in wconv_codepage.ipp Wed, 11 Dec 2013 16:36:36 GMT Wed, 11 Dec 2013 16:36:36 GMT <p> The list of supported charsets in wconv_codepage.ipp is very limited. Any encoding not mentioned there will result in invalid_charset_error exception on Windows. </p> <p> See list of available Windows codepage identifiers: <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx</a> </p> <p> Personally I'm very interested in codepage 866 support (legacy/DOS Russian encoding, still widely seen in legacy documents in Russia). But I think most, if not all, supported Windows encoding should work in Boost.Locale (they do work in ICU/iconv, of course). </p> Nikita Ofitserov <himikof@…> https://svn.boost.org/trac10/ticket/9487 https://svn.boost.org/trac10/ticket/9487 Report #9485: stdout and stderr not forwarded to respective channels Tue, 10 Dec 2013 23:19:46 GMT Tue, 10 Dec 2013 23:19:46 GMT <p> Apparently, Boost.Build does not forward output sent out by commands it executes to respective channels to which the output is originally sent by executed commands. </p> <p> Simple test on Linux seems to prove that: </p> <pre class="wiki">$ cat Jamroot exe testcpp : test.cpp ; $ cat test.cpp X main() {} $ b2 1&gt;/dev/null $ b2 2&gt;/dev/null ...found 7 targets... ...updating 2 targets... gcc.compile.c++ bin/gcc-4.8.2/debug/test.o test.cpp:1:1: error: ‘X’ does not name a type X main() {} ^ "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -fPIC -c -o "bin/gcc-4.8.2/debug/test.o" "test.cpp" ...failed gcc.compile.c++ bin/gcc-4.8.2/debug/test.o... ...skipped &lt;pbin/gcc-4.8.2/debug&gt;testcpp for lack of &lt;pbin/gcc-4.8.2/debug&gt;test.o... ...failed updating 1 target... ...skipped 1 target... $ </pre><p> I've observed the same channel merging in <a class="ext-link" href="https://github.com/mloskot/qt-creator-plugin-boostbuild"><span class="icon">​</span>Boost.Build Plugin for Qt Creator</a> that I have been developing. </p> <p> I asked on IRC about it, and Volodya confirmed channels should not be merged: </p> <pre class="wiki">&lt;volodya&gt; mloskot: I think children stdout and stderr should be forwarded to stdout and stderr respectively. </pre><p> So, I think it is a bug. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9485 https://svn.boost.org/trac10/ticket/9485 Report #9480: make_permissions slower then it needs to be Mon, 09 Dec 2013 13:06:56 GMT Sun, 30 Apr 2017 17:17:38 GMT <p> in libs\filesystem\src\operations.cpp the make_permissions calls path::extension four times, which accounts for pretty much 100% of the cpu cycles outside the OS call of the directory iterators increment function. A better approach would be to get the extension string once and reuse it four times. Even better would be to find the last '.' in the filename and avoid the extra std::string construction. </p> <blockquote> <p> perms make_permissions(const path&amp; p, DWORD attr) { </p> <blockquote> <p> perms prms = fs::owner_read | fs::group_read | fs::others_read; if ((attr &amp; FILE_ATTRIBUTE_READONLY) == 0) </p> <blockquote> <p> prms |= fs::owner_write | fs::group_write | fs::others_write; </p> </blockquote> <p> std::string ext = p.extension().string(); if (BOOST_FILESYSTEM_STRICMP(ext.c_str(), ".exe") == 0 </p> <blockquote> <table class="wiki"> <tr><td> BOOST_FILESYSTEM_STRICMP(ext.c_str(), ".com") == 0 </td></tr><tr><td> BOOST_FILESYSTEM_STRICMP(ext.c_str(), ".bat") == 0 </td></tr><tr><td> BOOST_FILESYSTEM_STRICMP(ext.c_str(), ".cmd") == 0) </td></tr></table> <p> prms |= fs::owner_exe | fs::group_exe | fs::others_exe; </p> </blockquote> <p> return prms; </p> </blockquote> <p> } </p> </blockquote> <p> Or for extra performance (avoids construction of one std::string for the extension at the price of extra nasty code): </p> <blockquote> <p> perms make_permissions(const path&amp; p, DWORD attr) { </p> <blockquote> <p> perms prms = fs::owner_read | fs::group_read | fs::others_read; if ((attr &amp; FILE_ATTRIBUTE_READONLY) == 0) </p> <blockquote> <p> prms |= fs::owner_write | fs::group_write | fs::others_write; </p> </blockquote> <p> const std::string&amp; path_str = p.string(); if (path_str.size() &gt;= 4) { </p> <blockquote> <p> const char* ext = path_str.c_str() + path_str.size() - 4; if (BOOST_FILESYSTEM_STRICMP(ext, ".exe") == 0 </p> <blockquote> <table class="wiki"> <tr><td> BOOST_FILESYSTEM_STRICMP(ext, ".com") == 0 </td></tr><tr><td> BOOST_FILESYSTEM_STRICMP(ext, ".bat") == 0 </td></tr><tr><td> BOOST_FILESYSTEM_STRICMP(ext, ".cmd") == 0) </td></tr></table> <p> prms |= fs::owner_exe | fs::group_exe | fs::others_exe; </p> </blockquote> </blockquote> <p> } return prms; </p> </blockquote> <p> } </p> </blockquote> Adrian Dorr <a.dorr@…> https://svn.boost.org/trac10/ticket/9480 https://svn.boost.org/trac10/ticket/9480 Report #9478: boost::iostreams::copy - sink - ENOSPC (No space left on device) error handling Sat, 07 Dec 2013 09:39:47 GMT Sat, 07 Dec 2013 18:57:47 GMT <p> Platform: GCC on Linux; boost 1.55. </p> <p> In the code fragment below, is there a way to handle ENOSPC? </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;boost/iostreams/filtering_streambuf.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; #include &lt;boost/iostreams/filter/bzip2.hpp&gt; // open input file stream of the bzip2 file std::ifstream ifs("file.bz2"); // open output stream to the "full" device // full device is a "utility-device" to check how applications handle ENOSPC // more details in "man full" std::ofstream ofs("/dev/full"); // Setup the iostreams filter boost::iostreams::filtering_streambuf&lt;boost::iostreams::output&gt; filters; filters.push(boost::iostreams::bzip2_decompressor()); filters.push(ofs); // "run" the filter boost::iostreams::copy(ifs, filters); </pre><p> If I do strace of the compiled binary, the code seem to infinitely call writev() with the same data and returns ENOSPC error. </p> <pre class="wiki">writev(4, [{NULL, 0}, {"DATA DATA "..., 4096}], 2) = -1 ENOSPC (No space left on device) </pre><p> How can this error be handled or made thrown as an error from <code>boost::iostreams::copy()</code> </p> <p> Is it possible to set appropriate exceptions() on the ofstream object? I tried <code>ofs.exceptions(std::ios::badbit | std::ios::failbit)</code> but it didn't make any difference. </p> dckorah@… https://svn.boost.org/trac10/ticket/9478 https://svn.boost.org/trac10/ticket/9478 Report #9477: Trac - captcha not working for new ticket; non-https link blocked by browser Sat, 07 Dec 2013 09:38:52 GMT Wed, 11 Dec 2013 06:38:27 GMT <p> Impossible to create new ticket unless you use specific browser features (firefox) to override the blocking. </p> dckorah@… https://svn.boost.org/trac10/ticket/9477 https://svn.boost.org/trac10/ticket/9477 Report #9476: boost::iostreams::copy - sink - ENOSPC (No space left on device) error handling Sat, 07 Dec 2013 09:33:56 GMT Wed, 11 Dec 2013 06:39:27 GMT <p> Platform: GCC on Linux; boost 1.55. </p> <p> In the code fragment below, is there a way to handle ENOSPC? </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;boost/iostreams/filtering_streambuf.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; #include &lt;boost/iostreams/filter/bzip2.hpp&gt; // open input file stream of the bzip2 file std::ifstream ifs("file.bz2"); // open output stream to the "full" device // full device is a "utility-device" to check how applications handle ENOSPC // more details in "man full" std::ofstream ofs("/dev/full"); // Setup the iostreams filter boost::iostreams::filtering_streambuf&lt;boost::iostreams::output&gt; filters; filters.push(boost::iostreams::bzip2_decompressor()); filters.push(ofs); // "run" the filter boost::iostreams::copy(ifs, filters); </pre><p> If I do strace of the compiled binary, the code seem to infinitely call writev() with the same data and returns ENOSPC error. </p> <pre class="wiki">writev(4, [{NULL, 0}, {"DATA DATA "..., 4096}], 2) = -1 ENOSPC (No space left on device) </pre><p> How can this error be handled or made thrown as an error from <code>boost::iostreams::copy()</code> </p> <p> Is it possible to set appropriate exceptions() on the ofstream object? I tried <code>ofs.exceptions(std::ios::badbit | std::ios::failbit)</code> but it didn't make any difference. </p> anonymous https://svn.boost.org/trac10/ticket/9476 https://svn.boost.org/trac10/ticket/9476 Report #9472: Undocumented define causes header-only libraries to have link dependency on system Wed, 04 Dec 2013 21:54:23 GMT Fri, 06 Dec 2013 18:12:23 GMT <p> Code using the ASIO library must be linked with a boost binary lib, even though asio is considered 'header only' library. </p> <p> Test system - ubuntu 13.10, using boost 1.55 download archive (not installed package). </p> <p> Similar problem reported in ticket 7085. Suspect this is systemic. </p> <p> Demo source code: </p> <pre class="wiki">/* $ g++ -I. -Wall asio_link_fail.cpp -Wno-unused-local-typedefs /tmp/ccjgSD3Q.o: In function `__static_initialization_and_destruction_0(int, int)': asio_link_fail.cpp:(.text+0x50): undefined reference to `boost::system::generic_category()' asio_link_fail.cpp:(.text+0x5a): undefined reference to `boost::system::generic_category()' asio_link_fail.cpp:(.text+0x64): undefined reference to `boost::system::system_category()' /tmp/ccjgSD3Q.o: In function `boost::asio::error::get_system_category()': asio_link_fail.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[_ZN5boost4asio5error19get_system_categoryEv]+0x7): undefined reference to `boost::system::system_category()' collect2: error: ld returned 1 exit status */ #include "boost/asio.hpp" int main() { return 1; } </pre> soda@… https://svn.boost.org/trac10/ticket/9472 https://svn.boost.org/trac10/ticket/9472 Report #9470: Example in documentation uses wrong parameter type Wed, 04 Dec 2013 11:48:00 GMT Wed, 04 Dec 2013 11:48:00 GMT <p> The example of parse_config_file in <a href="http://www.boost.org/doc/libs/1_55_0/doc/html/program_options/overview.html#idp163372680">http://www.boost.org/doc/libs/1_55_0/doc/html/program_options/overview.html#idp163372680</a> uses a filename as first parameter, but the library expects a std::istream. </p> bohn@… https://svn.boost.org/trac10/ticket/9470 https://svn.boost.org/trac10/ticket/9470 Report #9469: std::swap should be pulled in from <utility> in C++11 Wed, 04 Dec 2013 09:34:53 GMT Wed, 04 Dec 2013 09:34:53 GMT <p> boost/utility/swap.hpp #includes &lt;algorithm&gt; to bring std::swap in, which is OK for C++03 but not so in C++11: std::swap has been moved to &lt;utility&gt; as explained in [diff.cpp03.library]. </p> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/9469 https://svn.boost.org/trac10/ticket/9469 Report #9465: Issues with kqueue_reactor, dynamic libraries and -fvisibility=hidden Tue, 03 Dec 2013 13:22:52 GMT Tue, 03 Dec 2013 13:22:52 GMT <p> I've discovered a problem within a larger project for MacOS which uses multiple dynamic libraries and asio features (deadline_timers and tcp/udp sockets). </p> <p> After investigating the problem I've managed to reproduce it in the following minimal example: </p> <pre class="wiki">////////// Timer.hpp ////////// #ifndef TIMER_HPP #define TIMER_HPP #include &lt;boost/asio.hpp&gt; #include &lt;boost/thread.hpp&gt; #define VISIBLE __attribute__ ((visibility ("default"))) class VISIBLE Timer { public: Timer(boost::asio::io_service&amp; service); private: void onTimeout(const boost::system::error_code&amp; code); boost::asio::deadline_timer timer; }; #endif // Timer_HPP ////////// Timer.cpp ////////// #include &lt;Timer.hpp&gt; Timer::Timer(boost::asio::io_service&amp; service) : timer(service) { timer.expires_from_now(boost::posix_time::seconds(1)); timer.async_wait(boost::bind(&amp;Timer::onTimeout, this, _1)); } void Timer::onTimeout(const boost::system::error_code&amp; code) { std::cout &lt;&lt; "The callback from the dynamic library was called." &lt;&lt; std::endl; } ////////// main.cpp ////////// #include &lt;Timer.hpp&gt; boost::asio::io_service service; void run() { service.run(); } void onTimeout(const boost::system::error_code&amp; code) { std::cout &lt;&lt; "The callback from main was called." &lt;&lt; std::endl; } int main() { Timer timer(service); boost::asio::deadline_timer deadline_timer(service); deadline_timer.expires_from_now(boost::posix_time::seconds(1)); deadline_timer.async_wait(boost::bind(&amp;onTimeout, _1)); boost::thread t(boost::bind(&amp;run)); t.join(); return 0; } </pre><p> Timer.cpp is compiled into a dynamic library and used by main.cpp which is compiled as an executable. The environment: MacOS 10.8.5, Boost 1.54.0, clang 500.2.79 </p> <p> The parameters which are passed to clang at compilation time are: </p> <pre class="wiki">clang++ -ggdb -c Timer.cpp -I. -I/opt/local/include -fPIC -fvisibility=hidden </pre><p> </p> <pre class="wiki">clang++ -ggdb -o libTimer.dylib -dynamiclib Timer.o -L/opt/local/lib -lboost_thread-mt -lboost_system-mt -fvisibility=hidden </pre><p> </p> <pre class="wiki">clang++ -ggdb main.cpp -o runTest -I. -I/opt/local/include -L. -L/opt/local/lib -lboost_thread-mt -lboost_system-mt -lTimer fvisibility=hidden </pre><p> </p> <p> The visibility is set to hidden at compilation time in order to expose only desired functions (e.g. the Timer class) from my library. The problem that arise is that the callback of the timer from main.cpp is never called. If I remove the visibility flag at compilation time the example works as it should (both timer callbacks are called). </p> <p> When I did further investigations I've observed that 2 kqueue_reactor instances are create when using hidden visibility and only one kqueue_reactor is created when visibility is set to default. </p> <p> When compiling the example on Linux using visibility set to hidden the example works as expected. </p> avbica@… https://svn.boost.org/trac10/ticket/9465 https://svn.boost.org/trac10/ticket/9465 Report #9463: Boost subgraph copy constructor in 1.55.0 not working properly but works well i 1.46.0 Tue, 03 Dec 2013 07:05:01 GMT Tue, 03 Dec 2013 07:05:01 GMT <p> While using the boost 1.46.0, the copy constructor worked well to copy all deep level subgraphs. In this a recursive call to new subgraph is invoked while iterating over subgraphs hence it works well. But for boost 1.55.0, children iterator is used to iterate over subgraphs and as children iterator is able to iterate over only next level subgraphs, it do not perform deep copy and hence deep level subgraphs are not getting copied properly. I think children iterator should be made to iterate all deep level subgraphs so as to make it work like 1.46.0 </p> Mayur Narkhede <mayur_narkhede@…> https://svn.boost.org/trac10/ticket/9463 https://svn.boost.org/trac10/ticket/9463 Report #9460: boost::statechart::fifo_worker not working well when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined Mon, 02 Dec 2013 16:15:43 GMT Tue, 07 Jul 2015 13:25:04 GMT <p> boost::statechart::fifo_worker uses boost::mutex::scoped_lock typedef which is not accessible when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined (this macro is defined when BOOST_THREAD_VERSION is set to 4).<br /> I suggest to replace scoped_lock typedefs with explicit boost::unique_lock usage.<br /> Best regards, Maksim. </p> myasnikovmaksim@… https://svn.boost.org/trac10/ticket/9460 https://svn.boost.org/trac10/ticket/9460 Report #9459: Boost Locale not compiling when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined Mon, 02 Dec 2013 16:06:04 GMT Mon, 02 Dec 2013 16:09:48 GMT <p> Boost Locale uses Boost Thread lock types which definitions are not included through &lt;boost/thread/mutex.hpp&gt; when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined (this macro is defined when BOOST_THREAD_VERSION is set to 4). I suggest to include &lt;boost/thread/lock_types.hpp&gt; in every file that uses any lock type. Since I build Boost only on Windows platforms attached patch may be incomplete. Best regards, Maksim. </p> myasnikovmaksim@… https://svn.boost.org/trac10/ticket/9459 https://svn.boost.org/trac10/ticket/9459 Report #9458: Boost Locale not compiling when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined Mon, 02 Dec 2013 16:02:49 GMT Tue, 07 Jul 2015 13:24:49 GMT <p> Boost Locale uses Boost Thread lock types which definitions are not included through &lt;boost/thread/mutex.hpp&gt; when BOOST_THREAD_DONT_PROVIDE_NESTED_LOCKS is defined (this macro is defined when BOOST_THREAD_VERSION is set to 4).<br /> I suggest to include &lt;boost/thread/lock_types.hpp&gt; in every file that uses any lock type.<br /> Since I build Boost only on Windows platforms attached patch may be incomplete.<br /> Best regards, Maksim. </p> myasnikovmaksim@… https://svn.boost.org/trac10/ticket/9458 https://svn.boost.org/trac10/ticket/9458 Report #9453: building with --without-context doesn't actually work Mon, 02 Dec 2013 07:00:35 GMT Tue, 24 Jan 2017 19:14:11 GMT <p> apparently you also need to pass --without-coroutine, but the output from the build does not say that at all: </p> <pre class="wiki">Component configuration: - atomic : building - chrono : building - context : not building - coroutine : building ... </pre><p> it probably should state something like "building (for couroutine), but not installing headers". or abort. or disable coroutine too. something. </p> Mike Frysinger <vapier@…> https://svn.boost.org/trac10/ticket/9453 https://svn.boost.org/trac10/ticket/9453 Report #9452: split + is_any_of on char16_t splits on zero character Mon, 02 Dec 2013 05:19:59 GMT Mon, 02 Dec 2013 05:19:59 GMT <p> boost::algorithm::split + boost::algorithm::is_any_of on char16_t* splits given string on zero character, which differs from the char* version. </p> <p> Pseudo-example: </p> <ul><li>split("a\0b", "X") -&gt; ("a\0b") </li><li>split(u"a\0b", u"X") -&gt; ("a", "b") </li></ul><p> There's a workaround of wrapping u"X" in a std::u16string, which works perfectly well. </p> cool.pepyaka@… https://svn.boost.org/trac10/ticket/9452 https://svn.boost.org/trac10/ticket/9452 Report #9450: fstream open utf8 filename fails x86_64-w64-mingw32 Mon, 02 Dec 2013 01:57:34 GMT Thu, 16 Oct 2014 03:25:21 GMT <p> boost::filesystem stream classes won't open files with non-ascii filenames provided as utf-8 strings. This happens with and without imbuing a locale as specified in the boost doc page "Default Encoding under Microsoft Windows". My example is basically the example on that page, but with an ifstream. </p> <p> I compiled boost on Arch Linux using the AUR mingw-w64 packages. I reproduced the issue on Windows 7 x64, Windows 7 x64 VM, and in x64 Wine. </p> <p> I confirmed that the file exists and is named properly by making a parallel test program using _wopen (the file opened successfully). </p> spoo@… https://svn.boost.org/trac10/ticket/9450 https://svn.boost.org/trac10/ticket/9450 Report #9449: Boost.MPL min_element bug for equal elements (fix included) Sun, 01 Dec 2013 22:24:50 GMT Mon, 02 Dec 2013 11:27:48 GMT <p> For equal elements, Boost.MPL <code>min_element</code> with a predicate <code>Pred</code> does not satisfy its own requirements of returning the <strong>first</strong> element <code>i</code> that satifies <code>!Pred(j, i)</code> for all <code>j</code>. It turns out that <code>min_element</code> is implemented in terms of <code>max_element</code> with the negated predicate <code>not_&lt;Pred&gt;</code>. In turn, <code>max_element</code> with its own predicate <code>Pred</code> is required to (and in fact does) return the first element <code>i</code> that satisfies <code>!Pred(i, j)</code>. </p> <p> It is straightforward to see that negating the predicate is a bug. The current implementation of <code>min_element</code> has <code>less</code> as its default predicate, and subsequently calls <code>max_element</code> with <code>greater_equal</code>, whereas the requirements indicate that it should use <code>greater</code>. This results in <code>min_element</code> returning the <strong>last</strong> element of the sequence, rather than the first. </p> <p> To get the required semantics, users currently have to supply <code>less_equal</code> to <code>min_element</code> as a workaround. The proper fix would be to implement <code>min_element</code> by calling <code>max_element</code> with the arguments for the predicate reversed: <code>lambda&lt;Pred, _2, _1&gt;</code>. </p> <p> See below for a short example that displays the problem and implements the fix. The program sets up a <code>vector</code> of three equal elements. Both <code>min_element</code> and <code>max_element</code> are specified to return an iterator to the first (index 0) element. Instead, <code>min_element</code> returns an iterator to the last (index 2) element. Both the redefined predicate work-around and the reimplementation of <code>min_element</code> fix the problem. The example can be run from <a class="ext-link" href="http://coliru.stacked-crooked.com/a/c517d85cbc0aee66"><span class="icon">​</span>http://coliru.stacked-crooked.com/a/c517d85cbc0aee66</a> </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/begin_end.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/distance.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/lambda.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/less_equal.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/max_element.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/min_element.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/placeholders.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/vector_c.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">mpl</span><span class="p">;</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">Sequence</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Predicate</span> <span class="o">=</span> <span class="n">less</span><span class="o">&lt;</span><span class="n">_1</span><span class="p">,</span><span class="n">_2</span><span class="o">&gt;&gt;</span> <span class="k">struct</span> <span class="nl">stable_min_element</span> <span class="p">:</span> <span class="c1">// mpl::min_element uses max_element&lt;Sequence, not_&lt;Predicate&gt;&gt;</span> <span class="n">max_element</span><span class="o">&lt;</span><span class="n">Sequence</span><span class="p">,</span> <span class="n">lambda</span><span class="o">&lt;</span><span class="n">Predicate</span><span class="p">,</span> <span class="n">_2</span><span class="p">,</span> <span class="n">_1</span><span class="o">&gt;&gt;</span> <span class="p">{};</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="n">V</span> <span class="o">=</span> <span class="n">vector_c</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">MinIdx</span> <span class="o">=</span> <span class="n">distance</span><span class="o">&lt;</span><span class="n">begin</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">min_element</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">LEMinIdx</span> <span class="o">=</span> <span class="n">distance</span><span class="o">&lt;</span><span class="n">begin</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">min_element</span><span class="o">&lt;</span><span class="n">V</span><span class="p">,</span> <span class="n">less_equal</span><span class="o">&lt;</span><span class="n">_1</span><span class="p">,</span> <span class="n">_2</span><span class="o">&gt;</span> <span class="o">&gt;::</span><span class="n">type</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">SMinIdx</span> <span class="o">=</span> <span class="n">distance</span><span class="o">&lt;</span><span class="n">begin</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">stable_min_element</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">&gt;</span><span class="p">;</span> <span class="k">using</span> <span class="n">MaxIdx</span> <span class="o">=</span> <span class="n">distance</span><span class="o">&lt;</span><span class="n">begin</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="p">,</span> <span class="n">max_element</span><span class="o">&lt;</span><span class="n">V</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">&gt;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">MinIdx</span><span class="o">::</span><span class="n">value</span><span class="p">;</span> <span class="c1">// ERROR: prints 2 instead of 0</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">LEMinIdx</span><span class="o">::</span><span class="n">value</span><span class="p">;</span> <span class="c1">// 0</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">SMinIdx</span><span class="o">::</span><span class="n">value</span><span class="p">;</span> <span class="c1">// 0</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">MaxIdx</span><span class="o">::</span><span class="n">value</span><span class="p">;</span> <span class="c1">// 0</span> <span class="p">}</span> </pre></div></div> Rein Halbersma <rhalbersma@…> https://svn.boost.org/trac10/ticket/9449 https://svn.boost.org/trac10/ticket/9449 Report #9439: boost::spawn core dump Wed, 27 Nov 2013 03:30:43 GMT Tue, 28 Oct 2014 12:16:06 GMT <p> My program generate an core dump when I create 50000 coroutines.The number of coroutines is too big? </p> <p> gcc version 3.4.5 20051201 (Red Hat 3.4.5-2) </p> <p> My program is: #include &lt;boost/bind.hpp&gt; #include &lt;boost/asio/io_service.hpp&gt; #include &lt;boost/asio/ip/tcp.hpp&gt; #include &lt;boost/asio/spawn.hpp&gt; #include &lt;boost/asio/steady_timer.hpp&gt; #include &lt;boost/asio/write.hpp&gt; #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;sys/time.h&gt; #include &lt;sys/resource.h&gt; #include &lt;unistd.h&gt; using boost::asio::ip::tcp; </p> <p> void do_echo(boost::asio::yield_context yield, </p> <blockquote> <p> boost::asio::io_service *io_service) { </p> </blockquote> <blockquote> <p> for (; ;) { </p> <blockquote> <p> try { </p> <blockquote> <p> tcp::socket sock(*io_service); tcp::endpoint ep(boost::asio::ip::address::from_string("127.0.0.1"), 19011); sock.async_connect(ep, yield); std::cout&lt;&lt; 1 &lt;&lt;std::endl ; </p> </blockquote> <p> } catch (...) { </p> <blockquote> <p> std::cout&lt;&lt;"test"; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> int main(int argc, char* argv[]) { </p> <blockquote> <p> try { </p> <blockquote> <p> boost::asio::io_service io_service; for (int i=0; i&lt;50000; ++i) { </p> <blockquote> <p> boost::asio::spawn(io_service, boost::bind(&amp;do_echo, _1, &amp;io_service)); </p> </blockquote> <p> } io_service.run(); </p> </blockquote> </blockquote> <blockquote> <p> } catch(...) { </p> <blockquote> <p> std::cerr &lt;&lt; "Exception:\n"; </p> </blockquote> <p> } return 0; </p> </blockquote> <p> } </p> ybb198602@… https://svn.boost.org/trac10/ticket/9439 https://svn.boost.org/trac10/ticket/9439 Report #9438: call of overloaded ‘ignore_unused_variable_warning(...)’ is ambiguous Wed, 27 Nov 2013 01:01:25 GMT Sun, 09 Mar 2014 18:01:26 GMT <p> Here are two patches that prevent some compilations errors due to ambiguous definitions of 'ignore_unused_variable_warning' (defined by both boost and lemon) under g++ 4.8.2 (works fine with clang 3.3 though). </p> <p> It simply fully qualify the uses of the function by addind the boost:: namespace specifier before every 'call' in the concept checks. </p> <p> Changing only the range concepts gave more errors in the concerpt_check library, so patchs for both libraries are provided. </p> <p> You'll find as supplementary files the preprocessed source that fail to compile with and the error output. </p> Thomas Hume <thomas.hume@…> https://svn.boost.org/trac10/ticket/9438 https://svn.boost.org/trac10/ticket/9438 Report #9436: Add predefined concept for contextual conversion to bool Tue, 26 Nov 2013 15:31:25 GMT Tue, 26 Nov 2013 15:31:25 GMT <p> One concept that is often useful in many types is a contextual conversion to bool. The following expressions should be valid with the concept: </p> <pre class="wiki"> if (o) {} if (!o) {} return bool(o); </pre><p> </p> <p> Add a predefined concept that catches these requirement. A possible implementation: </p> <pre class="wiki">namespace boost { namespace type_erasure { template&lt;class T&gt; struct testable { static bool apply(const T&amp; arg) { return bool(arg); } }; template&lt;class T, class Base&gt; struct concept_interface&lt;testable&lt;T&gt;, Base, T&gt; : Base { explicit operator bool () const { return call(testable&lt;T&gt;(), *this); } }; }} </pre> akrzemi1@… https://svn.boost.org/trac10/ticket/9436 https://svn.boost.org/trac10/ticket/9436 Report #9433: boost unit_test_framework is using deprecated version 1 timers Tue, 26 Nov 2013 09:11:16 GMT Tue, 26 Nov 2013 09:11:16 GMT <p> boost::unit_test_framework is using internally the deprecated version 1 timers. As such we are not able to upgrade to the new cpu_timers. </p> <p> boost/timer/timer.hpp:38:1: error: ‘namespace boost::timer { }’ redeclared as different kind of symbol </p> pat <pat@…> https://svn.boost.org/trac10/ticket/9433 https://svn.boost.org/trac10/ticket/9433 Report #9431: Problem compiling zip_iterator with clang and C++11 Mon, 25 Nov 2013 20:13:00 GMT Wed, 27 Nov 2013 20:27:15 GMT <p> The following code fails to compile on OSX 10.8.5 with Xcode 5.0.1 and Boost 1.49.0. This is not real world code, but it demonstrates the problem I'm facing. </p> <pre class="wiki">#include &lt;boost/iterator/zip_iterator.hpp&gt; template&lt;typename T&gt; void foo() { boost::zip_iterator&lt;boost::tuple&lt;T*&gt; &gt; iter; std::fill(iter, iter, boost::make_tuple(T())); } void bar() { foo&lt;int&gt;(); } </pre><p> Here are the commands I used to compile (if I drop "-stdlib=libc++" from the compile line, the code compiles just fine): </p> <pre class="wiki">setenv DEVELOPER_DIR /Applications/Xcode5.0.1.app/Contents/Developer xcrun -sdk macosx10.8 clang++ -c zip_iterator.cpp -I&lt;boost-path&gt;/include -std=c++11 -stdlib=libc++ </pre><p> and here is a heavily formatted snippet of the key error: </p> <pre class="wiki">/Applications/Xcode5.0.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/algorithm:1824:1: note: candidate function [with _RandomAccessIterator = boost::zip_iterator&lt;boost::tuples::tuple&lt;int *&gt; &gt;, _Tp = boost::tuples::tuple&lt;int&gt;] not viable: no known conversion from 'typename iterator_traits&lt;zip_iterator&lt;tuple&lt;int *&gt; &gt; &gt;::iterator_category' (aka 'boost::detail::iterator_category_with_traversal&lt;std::__1::input_iterator_tag, boost::random_access_traversal_tag&gt;') to 'std::__1::random_access_iterator_tag' for 4th argument __fill(_RandomAccessIterator __first, _RandomAccessIterator __last, const _Tp&amp; __value_, random_access_iterator_tag) </pre><p> It appears as if the zip_iterator is not being converted to the correct iterator tag, which is why no calls to std::fill match. </p> jonathan.jones@… https://svn.boost.org/trac10/ticket/9431 https://svn.boost.org/trac10/ticket/9431 Report #9428: Lib program_options build fail for mingw Sun, 24 Nov 2013 08:28:49 GMT Fri, 17 Jan 2014 17:02:24 GMT <p> Library program_options (boost 1.55, same applies to earlier boost versions) does not build for mingw (4.6.2). Don't know if MinGW is fully supported by boost, but some libraries do seem to have adaptation for it. Solution seems straight-forward. File ...\libs\program_options\src\parsers.cpp: </p> <table class="wiki"> <tr>#if !defined(_WIN32) <td> defined(<span class="underline">COMO_VERSION</span>) </td></tr></table> <p> extern char<strong> environ; #else <em> SMAL patch for MinGW #if defined(_WIN32) &amp;&amp; defined(<span class="underline">MINGW32</span>) extern char</em></strong><em> environ; #endif </em></p> <p> (SMAL is a soon-to-be released open-source sw) </p> Jan Rosendahl <jan.rosendahl@…> https://svn.boost.org/trac10/ticket/9428 https://svn.boost.org/trac10/ticket/9428 Report #9427: svg_mapper bugs Sat, 23 Nov 2013 10:15:53 GMT Sat, 23 Nov 2013 12:50:52 GMT <div class="wikipage" style="font-size: 80%"><p> Code highlighting: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;fstream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry/geometries/point_xy.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/geometry/geometries/polygon.hpp&gt;</span><span class="cp"></span> <span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">d2</span><span class="o">::</span><span class="n">point_xy</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span> <span class="n">point_type</span><span class="p">;</span> <span class="n">point_type</span> <span class="n">a</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">model</span><span class="o">::</span><span class="n">polygon</span><span class="o">&lt;</span><span class="n">point_type</span><span class="o">&gt;</span> <span class="n">b</span><span class="p">;</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">read_wkt</span><span class="p">(</span><span class="s">&quot;POLYGON((0 0,0 7,4 2,2 0,0 0))&quot;</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">ofstream</span> <span class="n">svg</span><span class="p">(</span><span class="s">&quot;my_map.svg&quot;</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">geometry</span><span class="o">::</span><span class="n">svg_mapper</span><span class="o">&lt;</span><span class="n">point_type</span><span class="o">&gt;</span> <span class="n">mapper</span><span class="p">(</span><span class="n">svg</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">);</span> <span class="c1">//mapper.add(a);</span> <span class="n">mapper</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">b</span><span class="p">);</span> <span class="c1">//mapper.map(a, &quot;fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2&quot;);</span> <span class="n">mapper</span><span class="p">.</span><span class="n">map</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="s">&quot;fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2&quot;</span><span class="p">);</span> <span class="p">}</span> </pre></div></div></div><p> This code can produce 2 kinds of suspicious behavior:<br /> </p> <p> 1)If I output only single point(a), it's coordinates are invalid(svg output fragment: <em>circle cx="-2147483648" cy="-2147483648"</em>).<br /> 2)If I add polygon to the output(a and b), I get more relevant output, but still invalid(svg output fragment: <em>circle cx="1000" cy="0"</em>). </p> <p> I use msvssp4 with debug-x64 configuration. </p> yuyoyuppe https://svn.boost.org/trac10/ticket/9427 https://svn.boost.org/trac10/ticket/9427 Report #9405: boost::spirit::karma::real_generator prints a number multiplied by 10 Mon, 18 Nov 2013 08:23:32 GMT Sat, 09 May 2015 00:34:46 GMT <p> When using the attached example, the number 0.09999999999999987 is printed as 0.999999999999999, i.e. multiplied by 10. </p> Josef Zlomek <josef@…> https://svn.boost.org/trac10/ticket/9405 https://svn.boost.org/trac10/ticket/9405 Report #9399: Can't build 1.55.0 release with GCC 4.x and -std=c++0x Sat, 16 Nov 2013 09:46:49 GMT Wed, 20 Nov 2013 19:47:45 GMT <p> Hello, </p> <p> I cannot build boost 1.55.0 with GCC 4.5.4, nor GCC 4.8.2, and -std=c++0x on NetBSD, Solaris, nor OS X. It always stops on "error: no matching function for call to 'call_once(boost::once_flag&amp;, void (&amp;)())'". For example: </p> <pre class="wiki">gcc.compile.c++ bin.v2/libs/wave/build/gcc-4.5.4/release/threading-multi/instantiate_cpp_grammar.o In file included from ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15:0, from ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:21, from ./boost/spirit/home/classic/core.hpp:42, from ./boost/spirit/include/classic_core.hpp:11, from ./boost/wave/grammars/cpp_grammar.hpp:14, from libs/wave/src/instantiate_cpp_grammar.cpp:24: ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp: In member function 'IdT boost::spirit::classic::impl::object_with_id_base&lt;TagT, IdT&gt;::acquire_object_id() [with TagT = boost::spirit::classic::impl::grammar_tag, IdT = long unsigned int]': ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:78:62: instantiated from 'boost::spirit::classic::impl::object_with_id&lt;TagT, IdT&gt;::object_with_id() [with TagT = boost::spirit::classic::impl::grammar_tag, IdT = long unsigned int]' ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:51:15: instantiated from 'boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;::grammar() [with DerivedT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, ContextT = boost::spirit::classic::parser_context&lt;&gt;]' ./boost/wave/grammars/cpp_grammar.hpp:623:41: instantiated from 'boost::wave::grammars::cpp_grammar&lt;TokenT, ContainerT&gt;::cpp_grammar(bool&amp;, TokenT&amp;, ContainerT&amp;) [with TokenT = boost::wave::cpplexer::lex_token&lt;&gt;, ContainerT = std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt;]' ./boost/wave/grammars/cpp_grammar.hpp:738:91: instantiated from 'static boost::spirit::classic::tree_parse_info&lt;IteratorT&gt; boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::parse_cpp_grammar(const LexIteratorT&amp;, const LexIteratorT&amp;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::position_type&amp;, bool&amp;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::token_type&amp;, token_container_type&amp;) [with LexIteratorT = boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, TokenContainerT = std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::position_type = boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::CowString&lt;boost::wave::util::AllocatorStringStorage&lt;char&gt; &gt; &gt; &gt;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::token_type = boost::wave::cpplexer::lex_token&lt;&gt;, token_container_type = std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt;]' libs/wave/src/instantiate_cpp_grammar.cpp:48:40: instantiated from here ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:140:17: error: no matching function for call to 'call_once(boost::once_flag&amp;, void (&amp;)())' In file included from ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:18:0, from ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15, from ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:21, from ./boost/spirit/home/classic/core.hpp:42, from ./boost/spirit/include/classic_core.hpp:11, from ./boost/wave/grammars/cpp_grammar.hpp:14, from libs/wave/src/instantiate_cpp_grammar.cpp:24: ./boost/thread/once.hpp: In function 'void boost::call_once(Function, boost::once_flag&amp;) [with Function = void (*)()]': ./boost/spirit/home/classic/core/non_terminal/impl/static.hpp:72:13: instantiated from 'boost::spirit::classic::static_&lt;T, Tag&gt;::static_(Tag) [with T = boost::thread_specific_ptr&lt;boost::weak_ptr&lt;boost::spirit::classic::impl::grammar_helper&lt;boost::spirit::classic::grammar&lt;boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, boost::spirit::classic::parser_context&lt;&gt; &gt;, boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt; &gt; &gt; &gt;, Tag = boost::spirit::classic::impl::get_definition_static_data_tag]' ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:241:81: instantiated from 'typename DerivedT::definition&lt;ScannerT&gt;&amp; boost::spirit::classic::impl::get_definition(const boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;*) [with DerivedT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, ContextT = boost::spirit::classic::parser_context&lt;&gt;, ScannerT = boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt;, typename DerivedT::definition&lt;ScannerT&gt; = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;::definition&lt;boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt; &gt;]' ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:296:78: instantiated from 'typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type boost::spirit::classic::impl::grammar_parser_parse(const boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;*, const ScannerT&amp;) [with int N = 0, DerivedT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, ContextT = boost::spirit::classic::parser_context&lt;&gt;, ScannerT = boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt;, typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type = boost::spirit::classic::tree_match&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;]' ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:57:54: instantiated from 'typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;::parse_main(const ScannerT&amp;) const [with ScannerT = boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt;, DerivedT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, ContextT = boost::spirit::classic::parser_context&lt;&gt;, typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type = boost::spirit::classic::tree_match&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;]' ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:65:9: instantiated from 'typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;::parse(const ScannerT&amp;) const [with ScannerT = boost::spirit::classic::scanner&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::scanner_policies&lt;boost::spirit::classic::iteration_policy, boost::spirit::classic::pt_match_policy&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;, boost::spirit::classic::action_policy&gt; &gt;, DerivedT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;, ContextT = boost::spirit::classic::parser_context&lt;&gt;, typename boost::spirit::classic::parser_result&lt;boost::spirit::classic::grammar&lt;DerivedT, ContextT&gt;, ScannerT&gt;::type = boost::spirit::classic::tree_match&lt;boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, boost::spirit::classic::nil_t&gt;]' ./boost/wave/grammars/cpp_grammar.hpp:706:69: instantiated from 'boost::spirit::classic::tree_parse_info&lt;IteratorT, NodeFactoryT&gt; boost::wave::grammars::parsetree_parse(const IteratorT&amp;, const IteratorT&amp;, const boost::spirit::classic::parser&lt;SkipT&gt;&amp;) [with NodeFactoryT = boost::spirit::classic::node_val_data_factory&lt;boost::spirit::classic::nil_t&gt;, IteratorT = boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, ParserT = boost::wave::grammars::cpp_grammar&lt;boost::wave::cpplexer::lex_token&lt;&gt;, std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt; &gt;]' ./boost/wave/grammars/cpp_grammar.hpp:740:58: instantiated from 'static boost::spirit::classic::tree_parse_info&lt;IteratorT&gt; boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::parse_cpp_grammar(const LexIteratorT&amp;, const LexIteratorT&amp;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::position_type&amp;, bool&amp;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::token_type&amp;, token_container_type&amp;) [with LexIteratorT = boost::wave::cpplexer::lex_iterator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt;, TokenContainerT = std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::position_type = boost::wave::util::file_position&lt;boost::wave::util::flex_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;, boost::wave::util::CowString&lt;boost::wave::util::AllocatorStringStorage&lt;char&gt; &gt; &gt; &gt;, boost::wave::grammars::cpp_grammar_gen&lt;LexIteratorT, TokenContainerT&gt;::token_type = boost::wave::cpplexer::lex_token&lt;&gt;, token_container_type = std::list&lt;boost::wave::cpplexer::lex_token&lt;&gt;, boost::fast_pool_allocator&lt;boost::wave::cpplexer::lex_token&lt;&gt; &gt; &gt;]' libs/wave/src/instantiate_cpp_grammar.cpp:48:40: instantiated from here ./boost/thread/once.hpp:38:9: error: no matching function for call to 'call_once(boost::once_flag&amp;, void (*&amp;)())' ./boost/system/error_code.hpp: At global scope: ./boost/system/error_code.hpp:222:36: warning: 'boost::system::posix_category' defined but not used ./boost/system/error_code.hpp:223:36: warning: 'boost::system::errno_ecat' defined but not used ./boost/system/error_code.hpp:224:36: warning: 'boost::system::native_ecat' defined but not used "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -std=c++0x -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -c -o "bin.v2/libs/wave/build/gcc-4.5.4/release/threading-multi/instantiate_cpp_grammar.o" "libs/wave/src/instantiate_cpp_grammar.cpp" </pre><p> With Clang, the release builds fine. Using -std=c++98 and GCC it also builds fine. </p> <p> Please, advise, </p> <p> Adam </p> adam@… https://svn.boost.org/trac10/ticket/9399 https://svn.boost.org/trac10/ticket/9399 Report #9398: get-invocation-command is not using user provided value in some cases Fri, 15 Nov 2013 14:19:35 GMT Fri, 15 Nov 2013 14:37:50 GMT <p> Notably, the problem appears when trying to specify a custom &lt;archiver&gt; or &lt;ranlib&gt; option to either gcc or clang toolchains (the latter deriving from the former. </p> <p> The get-invocation-command rule executes a shell command then return the output, or the user provided value if the execution did not output anything. </p> <p> However, it means that the user cannot overwrite the tools paths and has to manually patch the toolset file to hardcode the tool path, which is an issue. </p> <p> The easy fix would be to check for an option before calling get-invocation-command (at least in gcc.jam, but it is possible that other toolsets are also affected). A maybe-not-so-easy-fix would be to change get-invocation-command behavior to return the user provided value if there is one, and to call the specified command if there is none (so the opposite of what is currently done). </p> <p> tl;dr : <strong>tools/build/v2/user-config.jam</strong> </p> <pre class="wiki">using clang : 3.3 : /home/arcanis/emscripten/emcc : &lt;archiver&gt;"/home/arcanis/emscripten/archiver" &lt;ranlib&gt;"/home/arcanis/emscripten/emranlib" ; </pre><p> Doesn't (cannot) work </p> nison.mael@… https://svn.boost.org/trac10/ticket/9398 https://svn.boost.org/trac10/ticket/9398 Report #9396: circular_buffer + gil compiler error Fri, 15 Nov 2013 12:34:49 GMT Fri, 15 Nov 2013 12:34:49 GMT <p> When 'boost/gil/bit_aligned_pixel_iterator.hpp' is included, the compiler selects for whatever reason an std::uninitialized_copy overload from the gil header instead of boost::cb_detail::uninitialized_copy within boost::cb_detail::uninitialized_move_if_noexcept_impl (boost/circualr_buffer/details.hpp) for types with !boost::is_nothrow_move_constructible. A workaround (solution?) is to fully qualify the call to boost::cb_detail::uninitialized_copy, but why the std overload gets even selected? Is this a compiler bug? Or a gil problem? </p> <p> Tested on: Windows 7 SP1 x64 + MSVC 2010 SP1 </p> <pre class="wiki">#include &lt;boost/circular_buffer.hpp&gt; #include &lt;boost/gil/bit_aligned_pixel_iterator.hpp&gt; // comment this to resolve struct Foo { Foo(const Foo&amp;) {} }; int main(int, char*[]) { #if 1 boost::circular_buffer&lt;Foo&gt; buffer; buffer.set_capacity(42); #endif #if 0 // minimum example typedef boost::cb_details::iterator&lt; boost::circular_buffer&lt;int&gt; , boost::cb_details::nonconst_traits&lt; std::allocator&lt;int&gt; &gt; &gt; InputIterator; boost::cb_details::uninitialized_move_if_noexcept_impl&lt;int&gt;(InputIterator(), InputIterator(), (int*)nullptr, boost::false_type()); #endif return 0; } </pre> g.kuehnert <g.kuehnert@…> https://svn.boost.org/trac10/ticket/9396 https://svn.boost.org/trac10/ticket/9396 Report #9393: quantile for hypergeometric distribution - precision/rounding issue Thu, 14 Nov 2013 21:07:39 GMT Tue, 11 Mar 2014 17:06:35 GMT <p> Hi (John), </p> <p> This is the same as Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9183" title="#9183: Support Requests: quantile for poisson distribution - precision issue? (closed: fixed)">#9183</a> (<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/9183"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/9183</a>) but applies to the hypergeometric distribution. For example, </p> <pre class="wiki">#define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_up #include &lt;cstdio&gt; #include &lt;boost/math/distributions/hypergeometric.hpp&gt; int main() { unsigned int xmin = 71; unsigned int length = 9; boost::math::hypergeometric_distribution&lt;&gt; dist( 79u, 101u, 109u ); for ( unsigned int i = 0; i &lt; length; ++i ) { double x = xmin + i; double y = boost::math::cdf( dist, x ); // boost::math::cdf( boost::math::complement( dist, x ) ); std::printf( " x = %g\tCDF(x) = %f\tinverse-CDF(CDF(x)) = %g\n", x, y, boost::math::quantile( dist, y ) ); } return 0; } </pre><p> returns </p> <pre class="wiki"> x = 71 CDF(x) = 0.068671 inverse-CDF(CDF(x)) = 72 x = 72 CDF(x) = 0.297575 inverse-CDF(CDF(x)) = 72 x = 73 CDF(x) = 0.615846 inverse-CDF(CDF(x)) = 73 x = 74 CDF(x) = 0.856699 inverse-CDF(CDF(x)) = 74 x = 75 CDF(x) = 0.965083 inverse-CDF(CDF(x)) = 75 x = 76 CDF(x) = 0.994746 inverse-CDF(CDF(x)) = 77 x = 77 CDF(x) = 0.999561 inverse-CDF(CDF(x)) = 77 x = 78 CDF(x) = 0.999985 inverse-CDF(CDF(x)) = 78 x = 79 CDF(x) = 1.000000 inverse-CDF(CDF(x)) = 79 </pre><p> I was hoping/expecting to obtain: </p> <pre class="wiki"> x y z [1,] 71 0.06867117 71 [2,] 72 0.29757505 72 [3,] 73 0.61584552 73 [4,] 74 0.85669885 74 [5,] 75 0.96508285 75 [6,] 76 0.99474584 76 [7,] 77 0.99956126 77 [8,] 78 0.99998459 78 [9,] 79 1.00000000 79 </pre><p> which I was used to on R. </p> <p> Thank you! </p> anonymous https://svn.boost.org/trac10/ticket/9393 https://svn.boost.org/trac10/ticket/9393 Report #9391: Trac: New Ticket Captcha Thu, 14 Nov 2013 16:43:18 GMT Thu, 14 Nov 2013 17:06:39 GMT <p> The Captcha is not working (FF 25.0 + Chromium 30). </p> <p> Due to a false positive in the blacklist and to external links to references (removed them already), I can not submit a bug... </p> Axel Huebl <a.huebl@…> https://svn.boost.org/trac10/ticket/9391 https://svn.boost.org/trac10/ticket/9391 Report #9385: Call current_exception in concurrent manner for the same exception object Wed, 13 Nov 2013 14:55:08 GMT Wed, 13 Nov 2013 14:55:08 GMT <p> In attached file you can find minimal test that crashes when uses boost implementation of exception_ptr. It happens when call current_exception in concurrent manner for the same exception object. </p> <p> Why does I expect that it should work? Because documentation does not say opposite (and it works in std implementation). </p> <p> In boost till 1.42(<a href="http://www.boost.org/doc/libs/1_43_0/libs/exception/doc/exception_ptr.html">http://www.boost.org/doc/libs/1_43_0/libs/exception/doc/exception_ptr.html</a>) was said: </p> <blockquote> <p> Therefore, in general it is not safe to call rethrow_exception concurrently to throw the same exception object into multiple threads. </p> </blockquote> <p> And I have called it under mutex. But even in 1.42 was not said that call current_exception in concurrent manner (for the same exception object) not allowed. </p> <p> The problem in class boost::exception_detail::exception </p> <div class="wiki-code"><div class="code"><pre><span class="k">class</span> <span class="nc">boost</span><span class="o">::</span><span class="n">exception_detail</span><span class="o">::</span><span class="n">exception</span> <span class="p">{</span> <span class="p">...</span> <span class="k">mutable</span> <span class="n">exception_detail</span><span class="o">::</span><span class="n">refcount_ptr</span><span class="o">&lt;</span><span class="n">exception_detail</span><span class="o">::</span><span class="n">error_info_container</span><span class="o">&gt;</span> <span class="n">data_</span><span class="p">;</span> </pre></div></div><p> when you call current_exception it's cloning current object of exception that create race condition. </p> <p> The documentation not enough clear about thread safety restrictions for current_exception and rethrow_excepoption. </p> <p> Here is back trace </p> <pre class="wiki">#0 0x000000000225a110 in ?? () #1 0x0000000000410455 in boost::exception_detail::refcount_ptr&lt;boost::exception_detail::error_info_container&gt;::add_ref() () #2 0x000000000040dc0a in boost::exception_detail::refcount_ptr&lt;boost::exception_detail::error_info_container&gt;::refcount_ptr(boost::exception_detail::refcount_ptr&lt;boost::exception_detail::error_info_container&gt; const&amp;) () #3 0x000000000040c1ba in boost::exception::exception(boost::exception const&amp;) () #4 0x0000000000413033 in boost::exception_detail::current_exception_std_exception_wrapper&lt;std::runtime_error&gt;::current_exception_std_exception_wrapper(boost::exception_detail::current_exception_std_exception_wrapper&lt;std::runtime_error&gt; const&amp;) () #5 0x00000000004130bd in boost::exception_detail::clone_impl&lt;boost::exception_detail::current_exception_std_exception_wrapper&lt;std::runtime_error&gt; &gt;::clone_impl(boost::exception_detail::clone_impl&lt;boost::exception_detail::current_exception_std_exception_wrapper&lt;std::runtime_error&gt; &gt; const&amp;) () #6 0x0000000000420563 in boost::exception_detail::clone_impl&lt;boost::exception_detail::current_exception_std_exception_wrapper&lt;std::runtime_error&gt; &gt;::rethrow() const () #7 0x000000000040cca8 in boost::rethrow_exception(boost::exception_ptr const&amp;) () #8 0x0000000000409825 in executer(boost::mutex&amp;, boost::exception_ptr) () #9 0x0000000000421ff2 in void boost::_bi::list2&lt;boost::reference_wrapper&lt;boost::mutex&gt;, boost::_bi::value&lt;boost::exception_ptr&gt; &gt;::operator()&lt;void (*)(boost::mutex&amp;, boost::exception_ptr), boost::_bi::list0&gt;(boost::_bi::type&lt;void&gt;, void (*&amp;)(boost::mutex&amp;, boost::exception_ptr), boost::_bi::list0&amp;, int) () #10 0x00000000004211cd in boost::_bi::bind_t&lt;void, void (*)(boost::mutex&amp;, boost::exception_ptr), boost::_bi::list2&lt;boost::reference_wrapper&lt;boost::mutex&gt;, boost::_bi::value&lt;boost::exception_ptr&gt; &gt; &gt;::operator()() () #11 0x0000000000420122 in boost::detail::thread_data&lt;boost::_bi::bind_t&lt;void, void (*)(boost::mutex&amp;, boost::exception_ptr), boost::_bi::list2&lt;boost::reference_wrapper&lt;boost::mutex&gt;, boost::_bi::value&lt;boost::exception_ptr&gt; &gt; &gt; &gt;::run() () #12 0x00007fdff7194d29 in thread_proxy () from /home/roman-s/libraries/boost_1_53_0/stage/lib/libboost_thread.so.1.53.0 #13 0x00007fdff6f71f8e in start_thread (arg=0x7fdff5178700) at pthread_create.c:311 #14 0x00007fdff6782a0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113 </pre><p> In my project where we use boost::exception on more difficult case, problem happens all time in refcount_ptr that try delete already deleted object. In this synthetical test problems arrives in a little bit another manner. But it's exactly reproduce our logic. Of course we can avoid this problem, but problem is. </p> <p> Thank you. </p> cupper.jj@… https://svn.boost.org/trac10/ticket/9385 https://svn.boost.org/trac10/ticket/9385 Report #9384: Ticket spam filter is to restrictive. Wed, 13 Nov 2013 11:41:29 GMT Thu, 14 Nov 2013 20:11:10 GMT <p> I tried to sumbit <a class="new ticket" href="https://svn.boost.org/trac10/ticket/9383" title="#9383: Bugs: augmented_crc example fails (new)">#9383</a> from </p> <p> 139.1.148.6 </p> <p> but the system said it was spam (ip). So I switched to </p> <p> 79.246.230.3 </p> <p> --- </p> <p> The message was also strange since I was asked to do a captcha, but there was no captcha: </p> <pre class="wiki">Captcha Error Submission rejected as potential spam (Akismet says content is spam, StopForumSpam says this is spam (ip)) Trac thinks your submission might be Spam. To prove otherwise please provide a response to the following. </pre> Dominik Muth <dominik.muth@…> https://svn.boost.org/trac10/ticket/9384 https://svn.boost.org/trac10/ticket/9384 Report #9383: augmented_crc example fails Wed, 13 Nov 2013 11:35:36 GMT Wed, 13 Nov 2013 11:35:36 GMT <p> I just built Boost 1.55.0 with VS 2008. Runs, but the example from </p> <p> <a href="http://www.boost.org/doc/libs/1_55_0/libs/crc/crc.html#crc_func">http://www.boost.org/doc/libs/1_55_0/libs/crc/crc.html#crc_func</a> </p> <p> fails. </p> <p> Source: </p> <pre class="wiki">// boost_ending.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include &lt;boost/crc.hpp&gt; // for boost::crc_basic, boost::augmented_crc #include &lt;boost/cstdint.hpp&gt; // for boost::uint16_t #include &lt;cassert&gt; // for assert #include &lt;iostream&gt; // for std::cout #include &lt;ostream&gt; // for std::endl // Main function int _tmain(int argc, _TCHAR* argv[]) { using boost::uint16_t; using boost::augmented_crc; uint16_t data[6] = { 2, 4, 31, 67, 98, 0 }; uint16_t const init_rem = 0x123; uint16_t crc1 = augmented_crc&lt;16, 0x8005&gt;( data, sizeof(data), init_rem ); uint16_t const zero = 0; uint16_t const new_init_rem = augmented_crc&lt;16, 0x8005&gt;( &amp;zero, sizeof(zero) ); boost::crc_basic&lt;16&gt; crc2( 0x8005, new_init_rem ); crc2.process_block( data, &amp;data[5] ); // don't include CRC std::cout &lt;&lt; "crc2: " &lt;&lt; crc2.checksum() &lt;&lt; std::endl; std::cout &lt;&lt; "crc1: " &lt;&lt; crc1 &lt;&lt; std::endl; assert( crc2.checksum() == crc1 ); std::cout &lt;&lt; "All tests passed." &lt;&lt; std::endl; std::cin.ignore(); return 0; } </pre><p> Output: </p> <pre class="wiki">crc2: 22581 crc1: 36743 Assertion failed: crc2.checksum() == crc1, file boost_ending.cpp, line 33 </pre> Dominik Muth <dominik.muth@…> https://svn.boost.org/trac10/ticket/9383 https://svn.boost.org/trac10/ticket/9383 Report #9382: flat_stable associative containers. Wed, 13 Nov 2013 10:35:34 GMT Thu, 24 May 2018 20:45:45 GMT <p> I think it would be interesting to have flat associative containers based on the stable_vector implementation. </p> <p> From my understanding of the flat_ containers and stable_vector we may have a good mix of access performance and insert performance. </p> <p> Maybe it's not a real need thanks to C++11 optimization (move, RVO...), I'm still discovering the new standard. </p> <p> Congratulation for the job done in the container lib, it's impressive to see what new implementations can bring. </p> <p> Vincent </p> vincent.fericelli@… https://svn.boost.org/trac10/ticket/9382 https://svn.boost.org/trac10/ticket/9382 Report #9372: g++ 4.7 -Wshadow warnings need attention Tue, 12 Nov 2013 23:24:27 GMT Thu, 14 Nov 2013 02:50:43 GMT <p> Following are warnings from g++ 4.7 </p> <p> boost/mpl/has_xxx.hpp:344:9: warning: "BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION" is not defined [-Wundef] </p> <p> boost/mpl/has_xxx.hpp:357:9: warning: "BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES" is not defined [-Wundef] </p> <p> boost/mpl/has_xxx.hpp:386:9: warning: "BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION" is not defined [-Wundef] </p> <p> boost/mpl/has_xxx.hpp:459:8: warning: "BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE" is not defined [-Wundef] </p> Tom Browder <tom.browder@…> https://svn.boost.org/trac10/ticket/9372 https://svn.boost.org/trac10/ticket/9372 Report #9368: Generalize edge weight types usable in prim_minimum_spanning_tree Tue, 12 Nov 2013 04:33:31 GMT Tue, 12 Nov 2013 04:42:54 GMT <p> The current implementation of prim_minimum_spanning_tree makes the following assumptions about edge weight types: </p> <p> + weights have the less-than (&lt;) operator defined </p> <p> + weight identity value is 0 </p> <p> + the maximum weight value is accessible by std::numeric_limits&lt;W&gt;::max() </p> <p> I've attached a patch that removes these requirements of edge weights by allowing users to use the distance_compare, distance_zero, and distance_inf named parameters. These parameters are passed to the dijsktra_shortest_paths() call that underlies the prim_minimum_spanning_tree function. </p> lgtorres42@… https://svn.boost.org/trac10/ticket/9368 https://svn.boost.org/trac10/ticket/9368 Report #9367: Minor typo in Boost.Algorithm Tue, 12 Nov 2013 03:55:57 GMT Sun, 17 Nov 2013 22:52:38 GMT <p> Patch attached for fixing it. </p> <p> Additional comments: </p> <p> In <code>ordered-hpp.qbk</code>, the iterator requirements for <code>is_sorted</code> say </p> <blockquote> <p> The is_sorted functions will work on all kinds of iterators (except output iterators). </p> </blockquote> <p> So I think it would be better to use <code>InputIterator</code> rather than <code>Iterator</code> for template parameters: </p> <div class="wiki-code"> <div class="diff"> <ul class="entries"> <li class="entry"> <h2> <a>libs/algorithm/doc/ordered-hpp.qbk</a> </h2> <table class="trac-diff inline" cellspacing="0"> <colgroup> <col class="lineno"/><col class="lineno"/><col class="content"/> </colgroup> <thead> <tr> <th title="File libs/algorithm/doc/ordered-hpp.qbk (revision 86541)"> </th> <th title="File libs/algorithm/doc/ordered-hpp.qbk (working copy)"> </th> <td> <em></em> &nbsp; </td> </tr> </thead> <tbody class="unmod"> <tr> <th>19</th><th>19</th><td class="l"><span></span></td> </tr> <tr> <th>20</th><th>20</th><td class="l"><span>``</span></td> </tr> <tr> <th>21</th><th>21</th><td class="l"><span>namespace boost { namespace algorithm {</span></td> </tr> </tbody> <tbody class="mod"> <tr class="first"> <th>22</th><th>&nbsp;</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; template &lt;typename I<del></del>terator, typename Pred&gt;</span></td> </tr> <tr> <th>23</th><th>&nbsp;</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; bool is_sorted ( I<del>terator first, </del>Iterator last, Pred p );</span></td> </tr> <tr> <th>&nbsp;</th><th>22</th><td class="r"><span>&nbsp; &nbsp; &nbsp; &nbsp; template &lt;typename I<ins>nputI</ins>terator, typename Pred&gt;</span></td> </tr> <tr class="last"> <th>&nbsp;</th><th>23</th><td class="r"><span>&nbsp; &nbsp; &nbsp; &nbsp; bool is_sorted ( I<ins>nputIterator first, Input</ins>Iterator last, Pred p );</span></td> </tr> </tbody> <tbody class="unmod"> <tr> <th>24</th><th>24</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; </span></td> </tr> </tbody> <tbody class="mod"> <tr class="first"> <th>25</th><th>&nbsp;</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; template &lt;typename I<del></del>terator&gt;</span></td> </tr> <tr> <th>26</th><th>&nbsp;</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; bool is_sorted ( I<del>terator first, </del>Iterator last );</span></td> </tr> <tr> <th>&nbsp;</th><th>25</th><td class="r"><span>&nbsp; &nbsp; &nbsp; &nbsp; template &lt;typename I<ins>nputI</ins>terator&gt;</span></td> </tr> <tr class="last"> <th>&nbsp;</th><th>26</th><td class="r"><span>&nbsp; &nbsp; &nbsp; &nbsp; bool is_sorted ( I<ins>nputIterator first, Input</ins>Iterator last );</span></td> </tr> </tbody> <tbody class="unmod"> <tr> <th>27</th><th>27</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; </span></td> </tr> <tr> <th>28</th><th>28</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; </span></td> </tr> <tr> <th>29</th><th>29</th><td class="l"><span>&nbsp; &nbsp; &nbsp; &nbsp; template &lt;typename Range, typename Pred&gt;</span></td> </tr> </tbody> </table> </li> </ul> </div></div><p> Ditto for is_decreasing/increasing and is_strictly_decreasing/increasing. </p> <p> In <code>is_sorted.hpp</code>, the DOXYGEN comments for <code>is_sorted</code> use <code>ForwardIterator</code>. Is that a typo of <code>InputIterator</code>? Ditto for is_decreasing/increasing and is_strictly_decreasing/increasing. </p> oss.2012.team+2013C@… https://svn.boost.org/trac10/ticket/9367 https://svn.boost.org/trac10/ticket/9367 Report #9364: linux epoll sizeof(epoll_event) == 12 Mon, 11 Nov 2013 05:40:08 GMT Mon, 11 Nov 2013 05:40:08 GMT <p> add gcc flag -malign-double and sizeof(epoll_event) == 16 is not valid; </p> <p> pls. Add BOOST_STATIC_ASSERT(sizeof(epoll_event) == 12); </p> <p> ps. Sorry my bad english. </p> anonymous https://svn.boost.org/trac10/ticket/9364 https://svn.boost.org/trac10/ticket/9364 Report #9362: Non-const operator() don't compile Mon, 11 Nov 2013 03:39:18 GMT Mon, 11 Nov 2013 03:39:18 GMT <p> Using phoenix::bind with a user-defined function object with non-const operator() results in compile errors, even though the operator could be called. It seems that at some point Boost.Phoenix adds const qualifier to the bound function which results in compilation failure either when result_of is invoked (in C++11), or when the function object is called (in C++03). </p> <p> I've attached a test case and compilation errors from GCC 4.8.1 in C++03 and C++11 modes. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/9362 https://svn.boost.org/trac10/ticket/9362 Report #9361: boost::random::xor_combine max() has wrong Sun, 10 Nov 2013 12:52:13 GMT Mon, 10 Mar 2014 23:21:47 GMT <p> In haeder &lt;boost/random/xor_combine.hpp&gt; line139: </p> <pre class="wiki">static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return (std::max)((URNG1::min)(), (URNG2::max)()); } </pre><p> URNG1::min has wrong, maybe correctly is URNG1::max. </p> <p> correct as below: </p> <pre class="wiki">static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return (std::max)((URNG1::max)(), (URNG2::max)()); } </pre> bolero.murakami@… https://svn.boost.org/trac10/ticket/9361 https://svn.boost.org/trac10/ticket/9361 Report #9353: Complete stream-based interface for WKT/WKB geometry I/O Thu, 07 Nov 2013 11:45:42 GMT Thu, 07 Nov 2013 11:45:42 GMT <p> Some time ago, I discussed this idea on the list with <a class="ext-link" href="http://lists.boost.org/geometry/2013/07/2409.php"><span class="icon">​</span>Barend</a>: </p> <blockquote class="citation"> <p> Yes, the WKT input might can be changed to streams. I will think about that. Internally it uses Boost.Tokenizer. It takes a string as input </p> </blockquote> <p> and <a class="ext-link" href="http://lists.boost.org/geometry/2013/07/2408.php"><span class="icon">​</span>Bruno</a>: </p> <blockquote class="citation"> <p> yes we should probably think about having this stream-based as well </p> </blockquote> <p> So, let's not forget about it at some point. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9353 https://svn.boost.org/trac10/ticket/9353 Report #9350: boost does not use prefix for rpath Wed, 06 Nov 2013 21:24:09 GMT Wed, 06 Nov 2013 21:24:09 GMT <p> How to reproduce: </p> <pre class="wiki">MY_PREFIX=/my/boost/target ./bootstrap.sh --prefix=$MY_PREFIX ./b2 -j 14 -d+2 address-model=64 install ldd $MY_PREFIX/lib/libboost_filesystem.so | grep boost libboost_system.so.1.54.0 =&gt; NOT FOUND </pre><p> I've observed this issue with Boost 1.52 (using the sun toolset - sun.jam) and with Boost 1.54 (using the gcc toolset - gcc.jam). </p> <p> It seems that boost sets the rpath to the build directory and not to the specified prefix (during link time). </p> <p> Expected results: </p> <p> ldd $MY_PREFIX/lib/libboost_filesystem.so | grep boost </p> <blockquote> <p> libboost_system.so.1.54.0 =&gt; $MY_PREFIX/lib/libboost_system.so.1.54.0 </p> </blockquote> <p> (note that I've picked libboost_filesystem as an example - other boost libraries have the same issue, e.g. chrono/log/time/...) </p> <p> Currently I use a dirty workaround to have the rpath set correctly: </p> <pre class="wiki">--- a/tools/build/v2/tools/gcc.jam +++ b/tools/build/v2/tools/gcc.jam @@ -945,7 +945,7 @@ rule link ( targets * : sources * : properties * ) actions link bind LIBRARIES { - "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(&lt;)" $(START-GROUP) "$(&gt;)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(MY_PREFIX)/lib -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(&lt;)" $(START-GROUP) "$(&gt;)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) } @@ -1011,7 +1011,7 @@ rule link.dll ( targets * : sources * : properties * ) # Differs from 'link' above only by -shared. actions link.dll bind LIBRARIES { - "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(RPATH) "$(.IMPLIB-COMMAND)$(&lt;[1])" -o "$(&lt;[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(&lt;[-1]:D=) -shared $(START-GROUP) "$(&gt;)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,$(MY_PREFIX)/lib "$(.IMPLIB-COMMAND)$(&lt;[1])" -o "$(&lt;[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(&lt;[-1]:D=) -shared $(START-GROUP) "$(&gt;)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) } rule setup-threading ( targets * : sources * : properties * ) </pre><p> The workaround for <code>tools/build/v2/tools/sun.jam</code> is similar. </p> Georg Sauthoff <mail@…> https://svn.boost.org/trac10/ticket/9350 https://svn.boost.org/trac10/ticket/9350 Report #9349: Could not build development trunk with Visual Studio 2013 without patch for named_slot_map Wed, 06 Nov 2013 20:33:52 GMT Wed, 06 Nov 2013 20:33:52 GMT <p> Trying to build the latest svn version of boost with Visual Studio 2013. </p> <p> I needed to bump the _MSC_VER, &lt;= 1800 version numbers in the workarounds in libs/signals/src/named_slot_map.cpp and boost/signals/detail/named_slot_map.hpp. </p> <p> After that it built... although with quite a few warnings. </p> sbauer230@… https://svn.boost.org/trac10/ticket/9349 https://svn.boost.org/trac10/ticket/9349 Report #9348: b2 cannot find Jamroot when run at the root of a mounted partition. Wed, 06 Nov 2013 16:10:31 GMT Thu, 28 Aug 2014 15:30:04 GMT <p> When boost is extracted to the root of a partion (in this case, one mounted as a folder in windows) B2 fails to build boost when attempting to stage with the following error: <em>notice: could not find main target stage notice: assuming it is a name of file to create. error: Project target requested but not yet assigned for module' </em></p> <p> See the following mailing list thread for details <a class="ext-link" href="http://lists.boost.org/boost-build/2013/11/27147.php"><span class="icon">​</span>http://lists.boost.org/boost-build/2013/11/27147.php</a> </p> darthpjb@… https://svn.boost.org/trac10/ticket/9348 https://svn.boost.org/trac10/ticket/9348 Report #9345: Add support for M component to WKT and WKB I/O Tue, 05 Nov 2013 18:19:55 GMT Tue, 05 Nov 2013 18:19:55 GMT <p> This task is related to <a class="ext-link" href="http://lists.boost.org/geometry/2013/11/2669.php"><span class="icon">​</span>Changes in WKB (read) behaviour proposal (WKT Part)</a> discussion on the list. </p> <p> We should try to add ability to consume/produce the M (measure) component from/to geometries encoded in OGC WKT and WKB formats. </p> <p> As Barend explained in the thread linked above: </p> <blockquote class="citation"> <p> We drop the M anyway (currently). We cannot handle it because our Point Concept does not contain model-values. Something additional would be necessary to be able to assign it to the point in question (strategy? policy? assigner?), which can do with it what it wants. An easy option would be assigning the M to the third dimension (if any), and that is probably currently the case (I have to check). </p> </blockquote> <p> I think a form of user-defined data assigner, similar to dimension assigners, which uses can enable for adapted geometries would be useful. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9345 https://svn.boost.org/trac10/ticket/9345 Report #9344: Document and test non-OGC behaviour of WKT and WKB support Tue, 05 Nov 2013 18:15:13 GMT Tue, 05 Nov 2013 18:15:13 GMT <p> This task is related to <a class="ext-link" href="http://lists.boost.org/geometry/2013/11/2669.php"><span class="icon">​</span>Changes in WKB (read) behaviour proposal (WKT Part)</a> discussion on the list. </p> <p> Boost.Geometry uses data in WKT format input for unit tests. In many cases, non-standard forms of WKT (according to OGC specification) are used what in fact constitutes some form of Boost.Geometry Extended WKT. </p> <p> The documentation should be clear about OGC standard behaviour and non-standard extensions of WKT and WKB layer as well. </p> <p> Also, it looks not all forms of geometry input is currently covered with tests. From the thread linked above: </p> <blockquote class="citation"> <blockquote class="citation"> <p> The BNF include in the OGC SFS spec is clear the "third value" for M is required: </p> <p> &lt;point z&gt; ::= &lt;x&gt; &lt;y&gt; &lt;z&gt; &lt;point m&gt; ::= &lt;x&gt; &lt;y&gt; &lt;m&gt; &lt;point zm&gt; ::= &lt;x&gt; &lt;y&gt; &lt;z&gt; &lt;m&gt; </p> </blockquote> <p> There are not unit tests for them all, we should check and extend the tests. </p> </blockquote> Mateusz Loskot https://svn.boost.org/trac10/ticket/9344 https://svn.boost.org/trac10/ticket/9344 Report #9339: Switch WKB parser to use Boost.Endian Mon, 04 Nov 2013 10:02:18 GMT Mon, 04 Nov 2013 10:02:18 GMT <p> Currently, WKB I/O extension hosts private copy of original code written by Beman Dawes to support endianness <a class="ext-link" href="https://svn.boost.org/svn/boost/trunk/boost/geometry/extensions/gis/io/wkb/detail/endian.hpp"><span class="icon">​</span>boost/geometry/extensions/gis/io/wkb/detail/endian.hpp</a> </p> <p> Beman <a class="ext-link" href="http://lists.boost.org/Archives/boost/2013/11/208236.php"><span class="icon">​</span>has announced</a> this code has been completed and will be released as Boost.Endian. Once this happens, the Boost.Geometry's extension shall switch to use it, instead of maintaining private copy of the same code. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9339 https://svn.boost.org/trac10/ticket/9339 Report #9331: Boost Log fails to compile on FreeBSD 10.0 Sat, 02 Nov 2013 04:07:46 GMT Sat, 02 Nov 2013 04:07:46 GMT <p> During a release compile of boost with clang 3.3 on FreeBSD 10.0, the log library failed to build: </p> <p> ./boost/math/tools/promotion.hpp:141:10: error: implicit instantiation of undefined template 'boost::STATIC_ASSERTION_FAILURE&lt;false&gt;' </p> <p> K-ballo on IRC suggested that I comment out line 29 of boost/math/tools/config.hpp: </p> <p> # define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS </p> <p> This resolved the problem. I am submitting this ticket just in case anyone else runs in to this problem. </p> anonymous https://svn.boost.org/trac10/ticket/9331 https://svn.boost.org/trac10/ticket/9331 Report #9330: Add initializer_list constructor to ptr_container Thu, 31 Oct 2013 10:56:53 GMT Thu, 31 Oct 2013 10:56:53 GMT <p> Pointer container library does not take advantadge of new C++11 features such as std::initializer_list constructor and move constructor. </p> anonymous https://svn.boost.org/trac10/ticket/9330 https://svn.boost.org/trac10/ticket/9330 Report #9329: Compilation fixes for Sun CC and its ancient standard library Wed, 30 Oct 2013 23:23:15 GMT Wed, 30 Oct 2013 23:23:15 GMT <p> This patch avoids the following errors when compiling the library using Sun CC (Sun C++ 5.10 SunOS_i386 2009/06/03): </p> <pre class="wiki">"libs/program_options/src/options_description.cpp", line 422: Error, nomatchoverin: Could not find a match for std::count&lt;std::_InputIterator, std::_T, std::_Size&gt;(char*, char*, char) needed in::format_paragraph(std::ostream &amp;, std::string, unsigned, unsigned). "libs/program_options/src/options_description.cpp", line "libs/program_options/src/options_description.cpp", line 483: Error, toofewtargs: Too few arguments for template std::reverse_iterator. "/opt/sunstudio12.1/prod/include/CC/Cstd/rw/iterator", line 426: Error, nofunctmpl: "friend" declaration is incompatible with function template. "libs/program_options/src/options_description.cpp", line 483: Where, temwhilespec: While specializing "std::reverse_iterator&lt;const char*&gt;". "libs/program_options/src/options_description.cpp", line 483: Where, temspecend: Specialized in non-template code. "libs/program_options/src/options_description.cpp", line 484: Error, toofewtargs: Too few arguments for template std::reverse_iterator. 472: Error, nomatchoverin: Could not find a match for std::distance&lt;std::_ForwardIterator, std::_Distance&gt;(const char*, const char*const) needed in::format_paragraph(std::ostream &amp;, std::string, unsigned, unsigned). "libs/program_options/src/value_semantic.cpp", line 371: Error, nomatchoverin: Could not find a match for std::vector&lt;std::string&gt;::vector(__rwstd::__rb_tree&lt;std::string, std::string, __rwstd::__ident&lt;std::string, std::string&gt;, std::less&lt;std::string&gt;, std::allocator&lt;std::string&gt;&gt;::const_iterator, __rwstd::__rb_tree&lt;std::string, std::string, __rwstd::__ident&lt;std::string, std::string&gt;, std::less&lt;std::string&gt;, std::allocator&lt;std::string&gt;&gt;::const_iterator) needed in boost::program_options::ambiguous_option::substitute_placeholders(const std::string &amp;) const. </pre><p> I don't really understand neither of them, unfortunately: looking at the standard library headers both the calls to <code>count()</code> and <code>distance()</code> should compile. OTOH neither of them is really necessary so I hope this patch can be applied nevertheless. With <code>reverse_iterator</code> it's more mysterious but, again, IMHO its use in the original code is not really needed, so I've just replaced it with <code>rfind()</code>. </p> <p> The last error is clear: this compiler standard library doesn't provide template ctor of <code>std::vector</code> from an iterator pair, so an alternative method of constructing it must be used. This does make the code less concise and elegant, but unfortunately I don't see any other way to make it work in this case. </p> <p> TIA! </p> vz-boost@… https://svn.boost.org/trac10/ticket/9329 https://svn.boost.org/trac10/ticket/9329 Report #9326: io_service.get_unfinished_work_count() Wed, 30 Oct 2013 18:52:47 GMT Wed, 30 Oct 2013 18:52:47 GMT <p> Would be good to have this function to return how many work the io_service still have left to do. By diving in the sources, I found out that this function would be simples as: </p> <pre class="wiki">long get_unfinished_work_count() { return outstanding_work_; } </pre><p> This function is useful to know if asio still have unfinished work to do. Meantime the only way to know if there is still work left to do, is by calling run_one()/run() and see if it returns immediately or not, that approach is not ideal. There are cases that you don't want to block the thread. </p> edubart <edub4rt@…> https://svn.boost.org/trac10/ticket/9326 https://svn.boost.org/trac10/ticket/9326 Report #9324: boost\include\boost-1_53\boost\asio\detail\impl\signal_set_service.ipp Off by One Error Wed, 30 Oct 2013 16:57:24 GMT Wed, 30 Oct 2013 21:46:36 GMT <p> In the function </p> <pre class="wiki">boost::system::error_code signal_set_service::add( signal_set_service::implementation_type&amp; impl, int signal_number, boost::system::error_code&amp; ec) </pre><p> The guard statement </p> <pre class="wiki">// Check that the signal number is valid. if (signal_number &lt; 0 || signal_number &gt; max_signal_number) { ec = boost::asio::error::invalid_argument; return ec; } </pre><p> has an Off-by-One error. </p> <p> The guard statement should read </p> <pre class="wiki">// Check that the signal number is valid. if (signal_number &lt; 0 || signal_number &gt;= max_signal_number) { ec = boost::asio::error::invalid_argument; return ec; } </pre> Oscar Deits <odeits@…> https://svn.boost.org/trac10/ticket/9324 https://svn.boost.org/trac10/ticket/9324 Report #9322: spinlock_gcc_arm.hpp fails when building iOS arm64 Wed, 30 Oct 2013 14:01:57 GMT Sat, 01 Mar 2014 00:17:20 GMT <p> I am using boost in my iOS and Android applications and building for arm64 in iOS fails in spinlock_gcc_arm because the the SWP instruction and LDREX are not part of the arm64 instruction set. I do not have enough knowledge about the ARM assembly instructions to implement a proper fix for this myself and was hopeful someone with more expertise could provide a fix for the next release (or a patch for the current, if possible). </p> Joe Radjavitch <joerad11@…> https://svn.boost.org/trac10/ticket/9322 https://svn.boost.org/trac10/ticket/9322 Report #9321: named mutex permissions are not reset after application crash Wed, 30 Oct 2013 12:08:25 GMT Wed, 30 Oct 2013 20:50:12 GMT <p> <strong>Using boost named_mutex on Windows with the standard permissions object.</strong> </p> <p> An application creates a named mutex and removes it on exit. This works fine even if the application is started by different users one after the other. </p> <p> Now assume the application crashes and does not call remove, anymore. When a different user starts the same application later on, the named mutex cannot be created and throws an interprocess exception "access denied". </p> <p> This is due to the fact that the mutex file in the folder <code>c:\ProgramData\boost_interprocess</code> still exists, and it has the permissions of the user that started the application first. </p> <p> <strong>How to reproduce</strong> </p> <p> The following simple application simulates a crash by exiting before removing the mutex. </p> <p> Run the application as user x. The mutex is successfully constructed, the application crashes unexpectedly. </p> <p> Then run the application as user y. The mutex cannot be constructed as file <code>c:\ProgramData\boost_interprocess\my_mutex_name</code> is still present and cannot be opened by user y although user x who owns the file does not use it by any process. </p> <pre class="wiki">#include "boost/interprocess/sync/named_mutex.hpp" int main(const int argc, const char* const * const argv) { try { boost::interprocess::named_mutex mutex(boost::interprocess::open_or_create, "my_mutex_name"); printf("mutex construction successful\n"); } catch (const boost::interprocess::interprocess_exception&amp; ex) { printf("mutex construction failed: %s\n", ex.what()); } exit(0); boost::interprocess::named_mutex::remove("my_mutex_name"); return 0; } </pre> Marcus Ackermann <Marcus.Ackermann@…> https://svn.boost.org/trac10/ticket/9321 https://svn.boost.org/trac10/ticket/9321 Report #9318: Improve performance of boost string algorithms when converting case Tue, 29 Oct 2013 18:35:11 GMT Tue, 29 Oct 2013 18:35:11 GMT <p> We recently switched STL library to libstdc++ and hit a performance snag on code that use boost string algorithms for converting case or comparing case insensitive. </p> <p> I noticed that the algorithms use the standard C++ convenience functions for character classification for each and every character being converted or compared. This is very inefficient as these standard C++ functions in turn call std::use_facet every time they are called. At least in libstdc++, std::use_facet is very expensive as it involves quite a bit of code including a dynamic_cast. </p> <p> To quote Josuttis' The C++ Standard Library: "It is much faster to obtain the corresponding facet from the locale and to use the functions on this object directly". </p> <p> Indeed if I wrap boost::to_upper/lower (an other) with functions that cache and reuse the facet within the same call to to_upper/lower, I see a significant run time improvement. In fact my application can cache the facet for the entire duration of the program running, something the string algorithms cannot do since they must support on the fly locale changes, but I wonder if this latter case should be supported also? </p> <p> Thanks for a great library. </p> <p> Soren Soe </p> boost@… https://svn.boost.org/trac10/ticket/9318 https://svn.boost.org/trac10/ticket/9318 Report #9315: boost shared_ptr should detect __sync support in clang Mon, 28 Oct 2013 23:11:32 GMT Fri, 28 Feb 2014 20:16:59 GMT <p> clang (at least as of 3.4) has support for GCC <span class="underline">sync functions. shared_ptr should properly detect that clang has such support (at least on ARM such support is not detected properly). </span></p> vlovich@… https://svn.boost.org/trac10/ticket/9315 https://svn.boost.org/trac10/ticket/9315 Report #9314: boost shared_ptr should use C++11 atomics when available Mon, 28 Oct 2013 23:09:49 GMT Fri, 13 Dec 2013 21:11:51 GMT <p> If a native assembly lock-free version is unavailable, boost should use native C++11 atomics if the library has them. This will far more reliably pick an efficient implementation for shared_ptr in cases where the optimized assembly version is unavailable and where <span class="underline">sync support may be unavailable/not detected properly. </span></p> anonymous https://svn.boost.org/trac10/ticket/9314 https://svn.boost.org/trac10/ticket/9314 Report #9313: Preserve doxygen syntax highlighting in doxygen2boostbook. Mon, 28 Oct 2013 22:38:24 GMT Mon, 28 Oct 2013 22:38:24 GMT <p> Instead of using the 'language="c++"' attribute. </p> Daniel James https://svn.boost.org/trac10/ticket/9313 https://svn.boost.org/trac10/ticket/9313 Report #9307: future::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument Sat, 26 Oct 2013 11:15:00 GMT Fri, 13 Apr 2018 07:12:20 GMT <p> rev 86424 </p> <pre class="wiki"> Test output: marshall-mac - thread - ex_future_fallback_to_lib / clang-darwin-asan Rev 86424 / Fri, 25 Oct 2013 05:14:04 +0000 Compile [2013-10-25 12:22:41 UTC]: succeed "/Volumes/TwoTB/LLVM/build/llvm-cmake-nodebug/bin/clang++" -x c++ -fsanitize=address -O0 -g -Wextra -Wno-long-long -Wunused-function -pedantic -O0 -fno-inline -Wall -pedantic -g -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED -DBOOST_THREAD_USE_LIB=1 -I".." -c -o "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/thread/test/ex_future_fallback_to_lib.test/clang-darwin-asan/debug/threading-multi/future_fallback_to.o" "../libs/thread/test/../example/future_fallback_to.cpp" Link [2013-10-25 12:22:41 UTC]: succeed "/Volumes/TwoTB/LLVM/build/llvm-cmake-nodebug/bin/clang++" -o "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/thread/test/ex_future_fallback_to_lib.test/clang-darwin-asan/debug/threading-multi/ex_future_fallback_to_lib" "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/thread/test/ex_future_fallback_to_lib.test/clang-darwin-asan/debug/threading-multi/future_fallback_to.o" "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/thread/test/ex_future_fallback_to_lib.test/clang-darwin-asan/debug/threading-multi/tss_null.o" "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/chrono/build/clang-darwin-asan/debug/link-static/threading-multi/libboost_chrono.a" "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/thread/build/clang-darwin-asan/debug/link-static/threading-multi/libboost_thread.a" "/Volumes/TwoTB/boost/regression/trunk/results/boost/bin.v2/libs/system/build/clang-darwin-asan/debug/link-static/threading-multi/libboost_system.a" -g -fsanitize=address Run [2013-10-25 12:22:41 UTC]: fail 0x7fff78e0a180 - ../libs/thread/test/../example/future_fallback_to.cpp[32] &lt;MAIN 0x10beab000 - ../libs/thread/test/../example/future_fallback_to.cpp[26] P1 0x10beac000 - ../libs/thread/test/../example/future_fallback_to.cpp[20] P1 0x7fff78e0a180 - ../libs/thread/test/../example/future_fallback_to.cpp[60] ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Invalid argument EXIT STATUS: 1 </pre> viboes https://svn.boost.org/trac10/ticket/9307 https://svn.boost.org/trac10/ticket/9307 Report #9306: Linking failure - Building BOOST with gcc-4.8 on Mac OSX Sat, 26 Oct 2013 07:13:26 GMT Mon, 11 Nov 2013 11:20:25 GMT <p> Hi, </p> <p> I am trying to compile boost on mac using gcc-4.8 and getting link errors. I have few reasons for this to be built with gcc and not clang which will deviate the actual issue. I have built boost with these steps: </p> <ol><li>Edited user-config.jam in /tools/build/v2 and added the following </li></ol><p> using gcc : 3.2 : /usr/local/bin/g++-3.2 ; </p> <ol start="2"><li>./bootstrap --prefix=/custom/path </li><li>./b2 -d 2 toolset=gcc-4.8 </li></ol><p> Errors are as below: </p> <pre class="wiki">ld: unknown option: -h collect2: error: ld returned 1 exit status ...failed gcc.link.dll bin.v2/libs/serialization/build/gcc-4.8/release/threading-multi/libboost_serialization.dylib... ...skipped &lt;pstage/lib&gt;libboost_wserialization.dylib for lack of &lt;pbin.v2/libs/serialization/build/gcc-4.8/release/threading-multi&gt;libboost_serialization.dylib... gcc.link.dll stage/lib/libboost_signals.dylib "/usr/local/bin/g++-4.8" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" -o "stage/lib/libboost_signals.dylib" -Wl,-h -Wl,libboost_signals.dylib -shared "bin.v2/libs/signals/build/gcc-4.8/release/threading-multi/trackable.o" "bin.v2/libs/signals/build/gcc-4.8/release/threading-multi/connection.o" "bin.v2/libs/signals/build/gcc-4.8/release/threading-multi/named_slot_map.o" "bin.v2/libs/signals/build/gcc-4.8/release/threading-multi/signal_base.o" "bin.v2/libs/signals/build/gcc-4.8/release/threading-multi/slot.o" ld: unknown option: -R collect2: error: ld returned 1 exit status ...failed gcc.link.dll stage/lib/libboost_signals.dylib... gcc.link.dll stage/lib/libboost_prg_exec_monitor.dylib "/usr/local/bin/g++-4.8" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" -o "stage/lib/libboost_prg_exec_monitor.dylib" -Wl,-h -Wl,libboost_prg_exec_monitor.dylib -shared "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/execution_monitor.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/debug.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/cpp_main.o" ld: unknown option: -R collect2: error: ld returned 1 exit status ...failed gcc.link.dll stage/lib/libboost_prg_exec_monitor.dylib... gcc.link.dll stage/lib/libboost_unit_test_framework.dylib "/usr/local/bin/g++-4.8" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib" -Wl,-R -Wl,"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config" -o "stage/lib/libboost_unit_test_framework.dylib" -Wl,-h -Wl,libboost_unit_test_framework.dylib -shared "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/execution_monitor.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/debug.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/compiler_log_formatter.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/exception_safety.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/framework.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/interaction_based.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/logged_expectations.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/plain_report_formatter.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/progress_monitor.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/results_collector.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/results_reporter.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/test_tools.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/unit_test_log.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/unit_test_main.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/unit_test_monitor.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/unit_test_parameters.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/unit_test_suite.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/xml_log_formatter.o" "bin.v2/libs/test/build/gcc-4.8/release/threading-multi/xml_report_formatter.o" ld: unknown option: -R collect2: error: ld returned 1 exit status ...failed gcc.link.dll stage/lib/libboost_unit_test_framework.dylib... ...skipped &lt;pstage/lib&gt;libboost_timer.dylib for lack of &lt;pbin.v2/libs/chrono/build/gcc-4.8/release/threading-multi&gt;libboost_chrono.dylib... ...skipped &lt;pstage/lib&gt;libboost_wave.dylib for lack of &lt;pbin.v2/libs/thread/build/gcc-4.8/release/threading-multi&gt;libboost_thread.dylib... ...failed updating 23 targets... ...skipped 14 targets... </pre> karunreddy30@… https://svn.boost.org/trac10/ticket/9306 https://svn.boost.org/trac10/ticket/9306 Report #9299: Feature Requests: circular_buffer::emplace(...) Thu, 24 Oct 2013 21:13:43 GMT Tue, 28 Nov 2017 21:03:11 GMT <p> I think a great addition to circular_buffer would be to support emplace(...)/emplace_back()/emplace_front() to make it more C++11 compliant. </p> <p> At the first quick glance I took at the source, implementation seems straight-forward, more or less c&amp;p the code from insert/push_back/push_front and construct the items in-place instead. The tricky part however would be to stay compliant with older C++ versions, if that is a desired feature (and it seems to be considering that e.g. Boost.Move can be used instead of the C++11 move semantics). I do not have an idea how to do this as I'm not an experienced boost developer (or actually even user for that matter). </p> <p> If older C++-compliance is not needed and my assumption of simply "c&amp;ping insert/push_back/push_front" is confirmed by a boost developer, I could probably provide a patch a few weeks from now (my time is a bit limited at the moment) if required. If the compliance is needed however, I would prefer that a more experienced developer would implement it. </p> anonymous https://svn.boost.org/trac10/ticket/9299 https://svn.boost.org/trac10/ticket/9299 Report #9297: "boost::iostreams::file_descriptor_sink" doesn't support translation of line endings on Windows Thu, 24 Oct 2013 09:33:20 GMT Thu, 24 Oct 2013 09:33:20 GMT <p> When a Windows file descriptor is opened in text mode, all newline characters written to this file are translated to CRLF. However, if <em>boost::iostreams::file_descriptor_sink</em> is used on such a file descriptor to write newlines to a stream, these newline characters are not translated to CRLF. </p> <p> The following sample program demonstrates this: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/iostreams/device/file_descriptor.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/iostreams/stream.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;fcntl.h&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;io.h&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;sys/stat.h&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">static</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">str1</span> <span class="o">=</span> <span class="s">&quot;This is a line&quot;</span><span class="p">;</span> <span class="k">static</span> <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">str2</span> <span class="o">=</span> <span class="s">&quot;This is another line&quot;</span><span class="p">;</span> <span class="kt">int</span> <span class="n">fd</span> <span class="o">=</span> <span class="n">_open</span><span class="p">(</span><span class="s">&quot;output.txt&quot;</span><span class="p">,</span> <span class="n">_O_WRONLY</span> <span class="o">|</span> <span class="n">_O_CREAT</span> <span class="o">|</span> <span class="n">_O_TRUNC</span> <span class="o">|</span> <span class="n">_O_TEXT</span><span class="p">,</span> <span class="n">_S_IREAD</span> <span class="o">|</span> <span class="n">_S_IWRITE</span><span class="p">);</span> <span class="n">_write</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">str1</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">str1</span><span class="p">.</span><span class="n">size</span><span class="p">());</span> <span class="n">_write</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// This writes &quot;\r\n&quot;</span> <span class="n">boost</span><span class="o">::</span><span class="n">iostreams</span><span class="o">::</span><span class="n">file_descriptor_sink</span> <span class="n">sink</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">iostreams</span><span class="o">::</span><span class="n">close_handle</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">iostreams</span><span class="o">::</span><span class="n">stream</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">iostreams</span><span class="o">::</span><span class="n">file_descriptor_sink</span><span class="o">&gt;</span> <span class="n">stream</span><span class="p">(</span><span class="n">sink</span><span class="p">);</span> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">str2</span><span class="p">;</span> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="c1">// This only writes &quot;\n&quot;</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> m.kosch@… https://svn.boost.org/trac10/ticket/9297 https://svn.boost.org/trac10/ticket/9297 Report #9296: synchronous non-blocking support for boost::asio::ip::tcp::socket::connect() Wed, 23 Oct 2013 19:37:12 GMT Wed, 23 Oct 2013 19:37:12 GMT <p> Currently the implementation of boost::asio::detail::socket_ops::sync_connect() makes connect operations on a TCP socket which is in non-blocking mode (i.e. via set_user_non_blocking()) behave like a blocking connect(), by calling poll_connect() to wait for the completion of a non-blocking connect. </p> <p> I have scenarios where I need the connect operation to be non-blocking, but I do not want to use async_connect() because I need to be able to handle the completion of the connect operation synchronously but at a later time. A typical scenario is adapting code which already manages large numbers of non-blocking file descriptors/sockets via epoll(), whereby I want to initiate the connect operation on a boost::asio::ip::tcp:socket object but then pass its native_handle() to epoll to later reap the connect completion. </p> <p> As for better or worse the current implementation of socket::connect() with a socket in non-blocking mode is expected to have completed the connect attempt upon return (i.e. boost::asio::errors::would_block or in_progress are not expected), a new basic_socket::non_blocking_connect() - or some such - with support down through the various layers would probably be called for. </p> <p> At the moment, I am achieving what I need by side-stepping socket::connect like this: </p> <pre class="wiki"> boost::asio::ip::tcp::socket socket(ios); boost::asio::ip::tcp::endpoint addr(...); boost::system::error_code ec; socket.open(addr.protocol, ec); // set various sockopts... socket.non_blocking(true, ec); // in lieu of a hypothetical socket.non_blocking_connect(addr, ec): ::connect(socket.native_handle(), addr.data(), socklen_t(addr.size())); ec = make_error_code(boost::asio::error::basic_errors(errno)); </pre> Stephen C. Pope <stephen.pope@…> https://svn.boost.org/trac10/ticket/9296 https://svn.boost.org/trac10/ticket/9296 Report #9295: PHOENIX_LIMIT macro clash: property_tree -- log/sink Wed, 23 Oct 2013 15:11:28 GMT Mon, 03 Feb 2014 20:56:49 GMT <p> Components: </p> <ul><li>spirit </li><li>phoenix </li><li>log </li><li>property_tree </li></ul><p> The following does not compile using gcc 4.8.1 or 4.7.2 (linux) using default warning options: </p> <pre class="wiki">#include "boost/property_tree/json_parser.hpp" #include "boost/log/sinks.hpp" </pre><p> The reason is that there are two (different?) definitions picked up, from deep within the include graphs: </p> <pre class="wiki">boost/phoenix/core/limits.hpp:26 #define PHOENIX_LIMIT BOOST_PHOENIX_LIMIT boost/spirit/home/classic/attribute.hpp:30 #define PHOENIX_LIMIT 6 </pre><p> (Note to others: A workaround for cases where the two are not truly used together is to use a pimpl.) </p> Johan Lundberg <lundberj@…> https://svn.boost.org/trac10/ticket/9295 https://svn.boost.org/trac10/ticket/9295 Report #9292: event_log example crashes. Wed, 23 Oct 2013 00:22:58 GMT Wed, 23 Oct 2013 00:22:58 GMT <p> In supplied event_log_messages.mc: </p> <p> <a class="missing wiki">SeverityNames</a>=(Debug=0x0:MY_SEVERITY_DEBUG </p> <blockquote> <p> Info=0x1:MY_SEVERITY_INFO Warning=0x2:MY_SEVERITY_WARNING Error=0x3:MY_SEVERITY_ERROR ) </p> </blockquote> <p> Which translates into: </p> <p> <em> </em> Define the severity codes <em> #define MY_SEVERITY_WARNING 0x2 #define MY_SEVERITY_INFO 0x0 #define MY_SEVERITY_ERROR 0x3 </em></p> <p> in the generated event_log_messages.h </p> <p> When trying to execute the code: </p> <blockquote> <p> type_mapping[error] = sinks::event_log::make_event_type(MY_SEVERITY_ERROR); </p> </blockquote> <p> in supplied main.cpp </p> <p> the call to make_event_type throws out_of_range, because only levels 0, 1, 2, and 4 are allowed. </p> mike.ferrel@… https://svn.boost.org/trac10/ticket/9292 https://svn.boost.org/trac10/ticket/9292 Report #9290: boost statechart documentation does not mention, that the state machine should be terminated with terminate() Tue, 22 Oct 2013 13:04:06 GMT Sat, 26 Oct 2013 15:20:42 GMT <p> Just hit by the issue described in an old thread: </p> <p> <a class="ext-link" href="http://lists.boost.org/boost-users/2007/07/29695.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2007/07/29695.php</a> </p> <p> In short: for assert-free state machine destruction, terminate() method must be called prior actual destruction of the state machine. This aspect is not mentioned in the tutorial, moreover the method is never called in any tutorial example. </p> Viatcheslav.Sysoltsev@… https://svn.boost.org/trac10/ticket/9290 https://svn.boost.org/trac10/ticket/9290 Report #9287: Additional string_ref constructors Tue, 22 Oct 2013 09:09:19 GMT Tue, 12 May 2015 00:57:48 GMT <p> From: </p> <ul><li>iterator_range&lt;Char const *&gt; </li><li>std::vector&lt;Char&gt; </li><li>pair of iterators </li></ul> Domagoj Šarić https://svn.boost.org/trac10/ticket/9287 https://svn.boost.org/trac10/ticket/9287 Report #9284: WaitForSingleObject(mutex) must handle WAIT_ABANDONED Tue, 22 Oct 2013 05:47:55 GMT Thu, 08 Mar 2018 15:13:50 GMT <p> boost-1_54\boost\interprocess\sync\windows\winapi_mutex_wrapper.hpp line 53 </p> <blockquote> <p> void lock() { </p> <blockquote> <p> if(winapi::wait_for_single_object(m_mtx_hnd, winapi::infinite_time) != winapi::wait_object_0){ </p> <blockquote> <p> error_info err = system_error_code(); throw interprocess_exception(err); </p> </blockquote> <p> } </p> </blockquote> <p> } </p> </blockquote> <p> The wait_for_single_object maybe return wait_abandon which means the mutex holder thread exited and did not release the mutex. Normally, this should never happen, but if the mutext holder process crash, this will happen. </p> <p> So the code should change to: unsigned long ret = winapi::wait_for(...); if(ret != winapi::wait_object_0 &amp;&amp; ret != winapi::wait_abondon) { </p> <blockquote> <p> error_info err = system_error_code(); throw interprocess_exception(err); </p> </blockquote> <p> } </p> huyuguang@… https://svn.boost.org/trac10/ticket/9284 https://svn.boost.org/trac10/ticket/9284 Report #9281: Give string_path an accessor for the value Mon, 21 Oct 2013 20:33:17 GMT Mon, 21 Oct 2013 20:33:17 GMT <p> Is there a reason not to provide an accessor for string_path::m_value? </p> <p> If not, here is the patch proposal. </p> jean https://svn.boost.org/trac10/ticket/9281 https://svn.boost.org/trac10/ticket/9281 Report #9278: Compiling error in MPL under VC12/VS2013 Mon, 21 Oct 2013 04:36:52 GMT Mon, 21 Oct 2013 21:04:34 GMT <p> Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8750" title="#8750: Support Requests: VC12 support (closed: duplicate)">#8750</a> indicated some compiling problems when using VC12. In 1.55.0 beta 1, most of the problems are gone. But the one in boost/mpl/assert.hpp still exist. The == in line 37 and 247 should be changed to &gt;=. </p> gongminmin@… https://svn.boost.org/trac10/ticket/9278 https://svn.boost.org/trac10/ticket/9278 Report #9277: Serial Hardware Handshaking in Windows XP SP3 Broken? Sun, 20 Oct 2013 21:08:09 GMT Sun, 20 Oct 2013 21:08:09 GMT <p> 9600 8N1 Transmit only, both DSR and CTS asserted by device (printer). Behavior is apparently no different than handshake none. Works fine with windows-specific code which sets the DCB as follows: </p> <pre class="wiki">dcb.fOutxCtsFlow = true; // Enable CTS monitoring dcb.fOutxDsrFlow = true; // Enable DSR monitoring dcb.fDtrControl = DTR_CONTROL_HANDSHAKE; // Enable DTR handshaking dcb.fOutX = false; // Disable XON/XOFF for transmission dcb.fInX = false; // Disable XON/XOFF for receiving dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; // Enable RTS handshaking </pre><p> Couldn't find where the DCB is set in asio... </p> bd@… https://svn.boost.org/trac10/ticket/9277 https://svn.boost.org/trac10/ticket/9277 Report #9270: Hello world example in Boost accumulator reference manual does not compile Sat, 19 Oct 2013 09:11:27 GMT Sat, 19 Oct 2013 09:11:27 GMT <p> In the code example <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/accumulators/user_s_guide.html#accumulators.user_s_guide.hello__world">http://www.boost.org/doc/libs/1_54_0/doc/html/accumulators/user_s_guide.html#accumulators.user_s_guide.hello__world</a>_ </p> <pre class="wiki"> std::cout &lt;&lt; "Moment: " &lt;&lt; accumulators::moment&lt;2&gt;(acc) &lt;&lt; std::endl; </pre><p> should be </p> <pre class="wiki"> std::cout &lt;&lt; "Moment: " &lt;&lt; moment&lt;2&gt;(acc) &lt;&lt; std::endl; </pre> jeadorf@… https://svn.boost.org/trac10/ticket/9270 https://svn.boost.org/trac10/ticket/9270 Report #9269: boost.exception unqualified enable_if/disable_if causing name clash with boost.test enable_if/disable_if Sat, 19 Oct 2013 09:04:40 GMT Sat, 19 Oct 2013 09:04:40 GMT <p> boost/exception/to_string.hpp and boost/exception/info.hpp both use enable_if/disable_if unqualified. This caused ambiguous symbols as boost/test/tree/decorator.hpp defines its own versions: boost::unit_test::decorator::disable_if/enable_if. </p> <p> There also is a related ticket for boost.test: <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/8679"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/8679</a> </p> <p> I would recommend adding boost:: at the beginning. </p> gdjss2728@… https://svn.boost.org/trac10/ticket/9269 https://svn.boost.org/trac10/ticket/9269 Report #9264: boost/date_time/local_time_adjustor.hpp requires more headers Fri, 18 Oct 2013 14:49:32 GMT Fri, 18 Oct 2013 14:49:32 GMT <pre class="wiki">#include &lt;boost/date_time/local_time_adjustor.hpp&gt; int main(int argc, char **argv) {} </pre><p> This doesn't compile because the included headers appears to require others headers. I guess the root problem is really with <code>dst_rules.hpp</code>. </p> <p> Error (g++ (<a class="missing wiki">Ubuntu/Linaro</a> 4.6.3-1ubuntu5) 4.6.3): </p> <pre class="wiki">In file included from /usr/local/include/boost_1_54_0/boost/date_time/local_time_adjustor.hpp:20:0, from tmp.cpp:1: /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp: In static member function ‘static boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::date_type boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::local_dst_start_day(boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::year_type)’: /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp:317:45: error: ‘gregorian’ has not been declared /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp:321:30: error: ‘gregorian’ has not been declared /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp: In static member function ‘static boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::date_type boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::local_dst_end_day(boost::date_time::us_dst_rules&lt;date_type_, time_duration_type_, dst_start_offset_minutes, dst_length_minutes&gt;::year_type)’: /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp:330:30: error: ‘gregorian’ has not been declared /usr/local/include/boost_1_54_0/boost/date_time/dst_rules.hpp:334:30: error: ‘gregorian’ has not been declared </pre> sshannin@… https://svn.boost.org/trac10/ticket/9264 https://svn.boost.org/trac10/ticket/9264 Report #9262: windows_intermodule_singleton breaks when calling a Debug dll from a Release executable Fri, 18 Oct 2013 10:28:48 GMT Wed, 16 Aug 2017 10:05:19 GMT <p> A simplified example of what goes wrong (the reality is more complex, and also very difficult for me to change): </p> <p> On Windows I have an exe and a dll that both use boost.interprocess. The dll interface is C-like, so that the exe and dll can use different runtimes (i.e. Debug and Release runtimes). This works fine as long as I comment out the BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME define in workaround.hpp. But if I leave that define in the code I will get random access violations deep inside the tmp_folder function (or one of the other functions in tmp_dir_helpers). </p> <p> I believe that this is due to the windows_intermodule_singleton, which is only used when ...HAS_KERNEL_BOOTTIME is defined. This singleton will get created in one runtime and then accessed in another, which does not work since it contains a std::map, which is an STL object that is not possible to pass between runtimes in Visual C++. </p> <p> If it is possible to fix this that would be great, but the other option would be a "nicer" way to turn off the singleton without having to patch one of the boost headers. </p> Lars Hagström <lars@…> https://svn.boost.org/trac10/ticket/9262 https://svn.boost.org/trac10/ticket/9262 Report #9261: ssl alert are not being sent during handshake failure Fri, 18 Oct 2013 09:24:28 GMT Tue, 22 Jul 2014 10:30:52 GMT <p> According to the SSL protocol alert messages should (and must) be sent under certain circumstances if SSL-handshake fails. When inspecting the network traffic with wireshark during SSL-handshake failure it seems like these messages are being sent. </p> <p> When debugging asio and OpenSSL one can see that OpenSSL do indeed write alert messages (as expected) to the buffers asio has set up, but asio do not write them to the socket. </p> <p> If SSL-handshake fails, OpenSSL writes alert message to asio buffers AND sets error code to SSL_ERROR_SSL. The function perform in the source code file asio/ssl/detail/impl/engine.ipp returns want_nothing if error is SSL_ERROR_SSL, which causes asio not to write data to the socket. </p> <p> This is tested on CentOS 6.4 x86_64. </p> Joakim Goldkuhl <joakim@…> https://svn.boost.org/trac10/ticket/9261 https://svn.boost.org/trac10/ticket/9261 Report #9260: Phoenix switch_ statements accessing wrong memory and cause segfault Fri, 18 Oct 2013 07:46:19 GMT Sat, 01 Feb 2014 17:04:01 GMT <p> Seth Heeren and I tracked down a problem in phoenix 3's switch_ statements that causes a crash in the attached example. </p> <p> Judging from valgrind outputs, it appears as if the switch_ accesses memory outside it's stack. In the attached case that causes a crash when accessing local variables in the enclosing rule. </p> <p> To reproduce: </p> <p> With this rule: qi::rule&lt;It, bool(), qi::locals&lt;bool, unsigned int, double, std::string&gt;, Skipper&gt; enclosing; </p> <p> defined as: enclosing %= condition[_a = _1] &gt;&gt; double_[_val = _a]; </p> <p> it works. </p> <p> If it is defined as: enclosing %= condition[_a = _1] &gt;&gt; double_[_c = _1, _val = _a]; </p> <p> it crashes. </p> <p> When not using local variables there is no crash but still undefined behavior caused by the switch_. Phoenix 2 does not have this problem. </p> stephan.menzel@… https://svn.boost.org/trac10/ticket/9260 https://svn.boost.org/trac10/ticket/9260 Report #9259: errors in iostreams container_device example Fri, 18 Oct 2013 00:16:06 GMT Fri, 18 Oct 2013 00:16:06 GMT <p> Hi, </p> <p> I've been considering container_device as a more controllable alternative to std::stringstream (to append to a std::vector&lt;char&gt;). I came across two off-by-one errors in the seek() implementation, and a problem in write() which could result in excess characters being written when the container is non-empty to start with. </p> <p> I'll attach a patch. </p> chris.foster@… https://svn.boost.org/trac10/ticket/9259 https://svn.boost.org/trac10/ticket/9259 Report #9257: Fix for clang compiler warning Thu, 17 Oct 2013 14:16:45 GMT Thu, 17 Oct 2013 14:16:45 GMT <p> clang complains about the unsigned value TLS_OUT_OF_INDEXES not fitting into a signed enum value in boost\asio\detail\impl\win_tss_ptr.ipp. The attach patch silences this warning. </p> marci_r@… https://svn.boost.org/trac10/ticket/9257 https://svn.boost.org/trac10/ticket/9257 Report #9256: Compile fixes for clang-cl Thu, 17 Oct 2013 14:11:20 GMT Thu, 17 Oct 2013 14:11:20 GMT <p> Compile fixes for clang-cl and MPL's and.hpp and or.hpp. </p> marci_r@… https://svn.boost.org/trac10/ticket/9256 https://svn.boost.org/trac10/ticket/9256 Report #9253: Support for serializing std::u16string Tue, 15 Oct 2013 19:45:50 GMT Tue, 04 Feb 2014 01:26:01 GMT <p> Hi: I would like to use the boot serialization library with the C++11 std::u16string type. When I use it with a text archive I get the following error. Could you elaborate on the plans by when we will be having support for this. For now, we can get workaround the issue by writing our own non-intrusive "load" and "save" methods for u16string, but would prefer built in serialization support for it like std::string. </p> <p> Please find below the stack trace for the error. </p> <p> Thanks </p> <p> boost/include/boost/serialization/access.hpp: In instantiation of 'static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::basic_string&lt;char16_t&gt;]': boost/include/boost/serialization/serialization.hpp:102:5: required from 'void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/serialization/serialization.hpp:161:9: required from 'void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_oarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/oserializer.hpp:148:5: required from 'void boost::archive::detail::oserializer&lt;Archive, T&gt;::save_object_data(boost::archive::detail::basic_oarchive&amp;, const void*) const [with Archive = boost::archive::text_oarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/oserializer.hpp:101:1: required from 'class boost::archive::detail::oserializer&lt;boost::archive::text_oarchive, std::basic_string&lt;char16_t&gt; &gt;' boost/include/boost/archive/detail/oserializer.hpp:253:13: required from 'static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::save_standard::invoke(Archive&amp;, const T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' boost/include/boost/archive/detail/oserializer.hpp:308:9: required from 'static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, const T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' boost/include/boost/archive/detail/oserializer.hpp:314:9: required from 'static void boost::archive::detail::save_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' boost/include/boost/archive/detail/oserializer.hpp:525:5: required from 'void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::text_oarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/common_oarchive.hpp:69:9: required from 'void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' boost/include/boost/archive/basic_text_oarchive.hpp:113:9: required from 'void boost::archive::basic_text_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' boost/include/boost/archive/detail/interface_oarchive.hpp:63:9: required from 'Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_oarchive]' main.cpp:39:15: required from here </p> <p> boost/include/boost/serialization/access.hpp:151:9: error: 'class std::basic_string&lt;char16_t&gt;' has no member named 'serialize' boost/include/boost/serialization/access.hpp: In instantiation of 'static void boost::serialization::access::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::basic_string&lt;char16_t&gt;]': boost/include/boost/serialization/serialization.hpp:102:5: required from 'void boost::serialization::serialize(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/serialization/serialization.hpp:161:9: required from 'void boost::serialization::serialize_adl(Archive&amp;, T&amp;, unsigned int) [with Archive = boost::archive::text_iarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/iserializer.hpp:188:5: required from 'void boost::archive::detail::iserializer&lt;Archive, T&gt;::load_object_data(boost::archive::detail::basic_iarchive&amp;, void*, unsigned int) const [with Archive = boost::archive::text_iarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/iserializer.hpp:120:1: required from 'class boost::archive::detail::iserializer&lt;boost::archive::text_iarchive, std::basic_string&lt;char16_t&gt; &gt;' boost/include/boost/archive/detail/iserializer.hpp:387:13: required from 'static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::load_standard::invoke(Archive&amp;, const T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' boost/include/boost/archive/detail/iserializer.hpp:439:9: required from 'static void boost::archive::detail::load_non_pointer_type&lt;Archive&gt;::invoke(Archive&amp;, T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' boost/include/boost/archive/detail/iserializer.hpp:592:5: required from 'void boost::archive::load(Archive&amp;, T&amp;) [with Archive = boost::archive::text_iarchive; T = std::basic_string&lt;char16_t&gt;]' boost/include/boost/archive/detail/common_iarchive.hpp:66:9: required from 'void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' boost/include/boost/archive/basic_text_iarchive.hpp:98:9: required from 'void boost::archive::basic_text_iarchive&lt;Archive&gt;::load_override(T&amp;, int) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' boost/include/boost/archive/text_iarchive.hpp:115:9: required from 'void boost::archive::text_iarchive_impl&lt;Archive&gt;::load_override(T&amp;, int) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' boost/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from 'Archive&amp; boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator&gt;&gt;(T&amp;) [with T = std::basic_string&lt;char16_t&gt;; Archive = boost::archive::text_iarchive]' main.cpp:55:15: required from here boost/include/boost/serialization/access.hpp:151:9: error: 'class std::basic_string&lt;char16_t&gt;' has no member named 'serialize' </p> <p> Thanks </p> learner.cpp@… https://svn.boost.org/trac10/ticket/9253 https://svn.boost.org/trac10/ticket/9253 Report #9252: Wrong compiler tag in .lib files Tue, 15 Oct 2013 17:41:46 GMT Thu, 03 Apr 2014 03:31:45 GMT <p> I build Boost with b2 --toolset=msvc11 </p> <p> The stage dir contains files like libboost_atomic-vc-mt-1_55.lib Note the "vc", which should be "vc110", as that's what VC will be looking for later on: 1&gt;LINK : fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-gd-1_55.lib' </p> Olaf van der Spek <ml@…> https://svn.boost.org/trac10/ticket/9252 https://svn.boost.org/trac10/ticket/9252 Report #9247: locale - build failure with recommended icu configuration Sun, 13 Oct 2013 16:45:28 GMT Sun, 13 Oct 2013 16:45:28 GMT <p> Configuring icu as recommended here:<br /> <a class="ext-link" href="http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild"><span class="icon">​</span>http://source.icu-project.org/repos/icu/icu/trunk/readme.html#RecBuild</a> <br />More precisely, build fails if icu::<a class="missing wiki">UnicodeString</a> contructors are declared explicit. The attach patch fixes build errors. </p> <p> All fixes in formatter.cpp constructs <a class="missing wiki">UnicodeStrings</a> from invariant strings (invariant characters defined here: <a class="ext-link" href="http://icu-project.org/apiref/icu4c/platform_8h.html#a7fb0b0fede299f9d74973b15e79d3085"><span class="icon">​</span>http://icu-project.org/apiref/icu4c/platform_8h.html#a7fb0b0fede299f9d74973b15e79d3085</a>). Previously all these constructors would involve an extra overhead as they were depending on the conversion framework. </p> <p> The change in time_zone.cpp still depends on the conversion framework (behavior not changed). I do not think it is possible to guarantee that the provided string only includes invariant characters. In this case, the resulting string is undefined. </p> hvemha@… https://svn.boost.org/trac10/ticket/9247 https://svn.boost.org/trac10/ticket/9247 Report #9244: Respect rings closure of polygon while reading WKB/WKT input Sat, 12 Oct 2013 18:34:25 GMT Thu, 14 Nov 2013 15:33:07 GMT <p> This task is reverse of <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9217" title="#9217: Patches: Impose closed rings of polygon in WKT output (closed: fixed)">#9217</a>. </p> <p> If model of a polygon specifies non-closed rings (first point is not repeated at last position), then this specification should be respected while consuming polygon encoded in OGC WKT format in which all rings are always closed. </p> <p> For example, the point number assertion below should hold: </p> <pre class="wiki">using namespace boost::geometry; typedef model::point&lt; double, 2, boost::geometry::cs::cartesian &gt; Point; typedef model::polygon&lt; Point, false, false &gt; Polygon; Polygon p; read_wkt("POLYGON((1 1, 5 1, 5 5, 1 5, 1 1))", p); assert(p.outer().size() == 4); </pre><p> The above applies to WKB I/O as well. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9244 https://svn.boost.org/trac10/ticket/9244 Report #9239: Implicit type conversion without warning, although Wconversion used Fri, 11 Oct 2013 15:49:45 GMT Tue, 11 Mar 2014 00:45:23 GMT <p> When defining a variable with automatic type recognition, </p> <pre class="wiki">auto inv_time = 1/si::second; </pre><p> this instruction </p> <pre class="wiki">inv_time = 0.4/si::second; </pre><p> does not generate a warning (using -Wconversion), while </p> <pre class="wiki">auto p = 3; p = 1.0/2.0; </pre><p> generates a warning, as it should. Is there any reason for the different behavior in both cases? It should be mentioned that this is not contingent to "auto", for </p> <pre class="wiki">quantity&lt;si::time,int&gt; time = 1/(1/si::second); time = 0.4*si::second; </pre><p> compiles without warning, too (and time = 0 s in the end). I thought implicit typecasts with possible loss of precision were forbidden or would at least trigger a warning. </p> Daniel Rings <topwohnung@…> https://svn.boost.org/trac10/ticket/9239 https://svn.boost.org/trac10/ticket/9239 Report #9237: Vectorizer friendly code Fri, 11 Oct 2013 13:36:07 GMT Wed, 10 Feb 2016 12:28:17 GMT <ul><li>use aligned storage (also statically attributed as such, with compiler specific attributes, not just allocated as aligned) </li><li>mind <span class="underline">vectorcall and its ability to pass and return tuples! <a class="ext-link" href="http://blogs.msdn.com/b/vcblog/archive/2013/07/12/introducing-vector-calling-convention.aspx"><span class="icon">​</span>http://blogs.msdn.com/b/vcblog/archive/2013/07/12/introducing-vector-calling-convention.aspx</a> </span></li><li>use native/builtin arbitrary sized vectors </li></ul><p> <a class="ext-link" href="http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html"><span class="icon">​</span>http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html</a> <a class="ext-link" href="http://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors"><span class="icon">​</span>http://clang.llvm.org/docs/LanguageExtensions.html#vectors-and-extended-vectors</a> </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/9237 https://svn.boost.org/trac10/ticket/9237 Report #9232: Template bloat Fri, 11 Oct 2013 13:18:12 GMT Sat, 12 Oct 2013 12:00:29 GMT <p> With integers of size N powm() will instantiate divide_unsigned_helper&lt;&gt; for N and N*2, since this is a very large function this leads to classical template bloat. Examining the codegen it appears that both instantiations are nearly identical save for immediate constants -&gt; this would suggest that you could refactor divide_unsigned_helper&lt;&gt; (and probably the rest of the library) so that it separates functionality that actually depends on template parameters from template-parameter independent code into separate functions (in this case divide_unsigned_helper would probably call a helper function that takes the size of the number as a runtime parameter). </p> <p> ps. even when different function template instantiations result in identical code there are _still_ lousy compilers&amp;linkers that will not merge them (Clang we are looking at you: <a class="ext-link" href="http://llvm.org/bugs/show_bug.cgi?id=11633"><span class="icon">​</span>http://llvm.org/bugs/show_bug.cgi?id=11633</a>)... </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/9232 https://svn.boost.org/trac10/ticket/9232 Report #9226: On some computer, the Common Appdata is empty in registry, so boost interprocess cannot work. Fri, 11 Oct 2013 07:24:39 GMT Fri, 06 Mar 2015 16:16:32 GMT <p> Our application is used by millions of people. I found that about 0.1 ~ 0.3 % computers will miss the registry item, or set to be empty, so lead to lots of trouble shooting. </p> <p> My suggestion is to use SHGetSpecialFolderPathA instead of get the folder from registry, in HKEY_LOCALMACHINE\SOFTWARE<br />Microsoft<br />Windows<br /><a class="missing wiki">CurrentVersion</a><br />Explorer<br />Shell Folders. </p> <p> The code is like this: inline void get_shared_documents_folder(std::string &amp;s) { </p> <blockquote> <p> s.clear(); char szPath[MAX_PATH]; if(SHGetSpecialFolderPathA(NULL,szPath,CSIDL_COMMON_APPDATA,FALSE)) { </p> <blockquote> <p> s = szPath; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> Thanks Cheng Yang </p> luckyangcheng@… https://svn.boost.org/trac10/ticket/9226 https://svn.boost.org/trac10/ticket/9226 Report #9222: iostreams documentation hard to read Thu, 10 Oct 2013 10:56:26 GMT Mon, 13 Jan 2014 22:13:33 GMT <p> Hi, </p> <p> You guys have put a lot of work into iostreams documentation, but, where it falls down is when someone unfamiliar with the library (ie, me) wants to quickly figure out how to do something. </p> <p> For example, I wanted to create an input stream from an existing array. </p> <p> I found this page: <a href="http://www.boost.org/doc/libs/1_54_0/libs/iostreams/doc/classes/array.html">http://www.boost.org/doc/libs/1_54_0/libs/iostreams/doc/classes/array.html</a> </p> <p> But frustratingly, there was no example on how to use. Google was of limited use, eventually I found this page, <a href="http://www.boost.org/doc/libs/1_53_0/libs/iostreams/doc/guide/generic_streams.html#examples">http://www.boost.org/doc/libs/1_53_0/libs/iostreams/doc/guide/generic_streams.html#examples</a> </p> <p> Which was exactly what I wanted to know, but there really should be an example on the array's page, or at least a link to the relevant documentation that talks about how to use it. </p> <p> Was very frustrating. </p> <p> cheers, Paul </p> harris.pc@… https://svn.boost.org/trac10/ticket/9222 https://svn.boost.org/trac10/ticket/9222 Report #9218: Invalid pointer dereference on MSVC debug builds Thu, 10 Oct 2013 01:00:44 GMT Thu, 10 Oct 2013 01:05:25 GMT <p> This is rare (so far only observed with race detection simulation), but due to the MSVC DebugCRT initialising "new" allocated memory to 0xCC instead of 0x00 the queue will miss a null pointer check in a particular race condition and try to dereference 0xCCCCCCCC. </p> <p> If you're interested I could probably get a log of the exact sequence of operations that leads to this error, but it's pretty wordy. </p> Gavin Lambert <gavinl@…> https://svn.boost.org/trac10/ticket/9218 https://svn.boost.org/trac10/ticket/9218 Report #9214: (Windows) bjam should choose the msvc version from the current visual studio prompt Wed, 09 Oct 2013 07:52:23 GMT Wed, 13 Jan 2016 00:54:13 GMT <p> If you have multiple versions of msvc installed bjam seems to choose itself the version of msvc and do not take the current environment into account. </p> <p> This behaviour is totally misleading, beacuse I open a specific Visual Studio prompt with a reason. </p> <p> Bjam should pick the current msvc version out of the msvc prompt by default. </p> <p> Example: I want to build boost through the cmake <a class="missing wiki">ExternalProject</a> mechanism. I have msvc11 and msvc12 installed. Even after I opened a msvc12 prompt, bjam picks msvc11. This will result into linking errors later in the cmake build process because of runtime mismatches. </p> desurium@… https://svn.boost.org/trac10/ticket/9214 https://svn.boost.org/trac10/ticket/9214 Report #9211: fstream types don't have move semantics Tue, 08 Oct 2013 13:54:16 GMT Tue, 27 May 2014 12:07:03 GMT <p> boost::filesystem::ofstream etc. lack move semantics for c++11, so they can't be used as a replacement for std::ofstream etc. if move semantics are required </p> anonymous https://svn.boost.org/trac10/ticket/9211 https://svn.boost.org/trac10/ticket/9211 Report #9205: [variant or mpl] compilation error VC2013 Mon, 07 Oct 2013 08:38:13 GMT Tue, 12 Nov 2013 10:04:50 GMT <p> I tried to use Boost 1.55.0 Beta RC's boost::variant with VC2013 RC. Compilation error this code: </p> <pre class="wiki">#include &lt;boost/variant.hpp&gt; int main() { boost::variant&lt;int, char&gt; v; } </pre><p> Error message is here: (sorry, japanese error message...) </p> <pre class="wiki">1&gt;------ ビルド開始: プロジェクト:CppConsole, 構成:Debug Win32 ------ 1&gt; main.cpp 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(149): error C2143: 構文エラー : ';' が '&lt;' の前にありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\assert.hpp(153) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_assert&lt;Pred&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(149): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(152): error C2238: ';' の前に無効なトークンがあります。 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(159): error C2143: 構文エラー : ';' が '&lt;' の前にありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\assert.hpp(163) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_assert_not&lt;Pred&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(159): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1&gt;c:\boost\boost-trunk-master\boost\mpl\assert.hpp(162): error C2238: ';' の前に無効なトークンがあります。 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(45): error C2039: 'assert_not_arg' : 'boost::mpl' のメンバーではありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::arg&lt;1&gt;::apply&lt;T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=int 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply.hpp(63) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap2&lt;boost::mpl::protect&lt;boost::mpl::arg&lt;1&gt;,0&gt;,T1,T2&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=int 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\reverse_fold_impl.hpp(74) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply2&lt;ForwardOp,boost::mpl::l_end,int&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; ForwardOp=boost::mpl::arg&lt;1&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\reverse_fold.hpp(41) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::reverse_fold_impl&lt;2,boost::mpl::l_iter&lt;boost::mpl::list2&lt;T0,T1&gt;&gt;,boost::mpl::l_iter&lt;boost::mpl::l_end&gt;,State,BackwardOp,ForwardOp&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T0=int 1&gt; , T1=char 1&gt; , State=boost::mpl::l_end 1&gt; , BackwardOp=boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;boost::unwrap_recursive,boost::mpl::void_&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt; 1&gt; , ForwardOp=boost::mpl::arg&lt;1&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(65) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::reverse_fold&lt;Seq,boost::mpl::l_end,boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;,boost::mpl::arg&lt;1&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq=boost::mpl::list2&lt;int,char&gt; 1&gt; , F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(113) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::reverse_transform1_impl&lt;P1,P2,boost::mpl::front_inserter&lt;boost::mpl::clear_impl&lt;boost::mpl::aux::list_tag&gt;::apply&lt;Sequence&gt;::type&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; P1=boost::mpl::list2&lt;int,char&gt; 1&gt; , P2=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , Sequence=boost::mpl::list2&lt;int,char&gt; 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\eval_if.hpp(41) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::transform1&lt;Seq1,Seq2OrOperation,OperationOrInserter&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq1=boost::mpl::list2&lt;int,char&gt; 1&gt; , Seq2OrOperation=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , OperationOrInserter=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\transform.hpp(138) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::eval_if&lt;boost::mpl::or_&lt;boost::mpl::is_na&lt;boost::mpl::na&gt;,boost::mpl::is_lambda_expression&lt;Seq2OrOperation&gt;,boost::mpl::not_&lt;boost::mpl::is_sequence&lt;Seq2OrOperation&gt;&gt;,boost::mpl::false_,boost::mpl::false_&gt;,boost::mpl::transform1&lt;Seq1,Seq2OrOperation,OperationOrInserter&gt;,boost::mpl::transform2&lt;Seq1,Seq2OrOperation,OperationOrInserter,Inserter&gt;&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; Seq2OrOperation=boost::unwrap_recursive&lt;boost::mpl::_1&gt; 1&gt; , Seq1=boost::mpl::list2&lt;int,char&gt; 1&gt; , OperationOrInserter=boost::mpl::na 1&gt; , Inserter=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\variant\variant.hpp(1209) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::transform&lt;boost::mpl::list2&lt;T0,T1&gt;,boost::unwrap_recursive&lt;boost::mpl::_1&gt;,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T0=int 1&gt; , T1=char 1&gt; ] 1&gt; c:\users\a_takahashi\documents\visual studio 2013\projects\cppconsole\cppconsole\main.cpp(5) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::variant&lt;int,char,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_&gt;' の参照を確認してください 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(45): error C3861: 'assert_not_arg': 識別子が見つかりませんでした 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(63): error C2039: 'assert_not_arg' : 'boost::mpl' のメンバーではありません。 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(80) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::arg&lt;2&gt;::apply&lt;T1,T2,T3,T4,T5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; , T3=boost::mpl::na 1&gt; , T4=boost::mpl::na 1&gt; , T5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(50) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap5&lt;boost::mpl::arg&lt;2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(143) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::resolve_bind_arg&lt;boost::mpl::arg&lt;2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(80) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;::apply&lt;T1,T2,T3,T4,T5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; , T3=boost::mpl::na 1&gt; , T4=boost::mpl::na 1&gt; , T5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(160) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap5&lt;boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\bind.hpp(206) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::aux::resolve_bind_arg&lt;boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;,U1,U2,U3,U4,U5&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , U1=boost::mpl::l_end 1&gt; , U2=char 1&gt; , U3=boost::mpl::na 1&gt; , U4=boost::mpl::na 1&gt; , U5=boost::mpl::na 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(49) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;::apply&lt;T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\apply.hpp(63) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply_wrap2&lt;boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;F,Tag&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt;,T1,T2&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; F=boost::unwrap_recursive 1&gt; , Tag=boost::mpl::void_ 1&gt; , T1=boost::mpl::l_end 1&gt; , T2=char 1&gt; ] 1&gt; c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\reverse_fold_impl.hpp(81) : コンパイルされたクラスの テンプレート のインスタンス化 'boost::mpl::apply2&lt;BackwardOp,boost::mpl::l_end,char&gt;' の参照を確認してください 1&gt; with 1&gt; [ 1&gt; BackwardOp=boost::mpl::bind2&lt;boost::mpl::lambda&lt;boost::mpl::push_front&lt;boost::mpl::na,boost::mpl::na&gt;,boost::mpl::void_&gt;::type,boost::mpl::_1,boost::mpl::bind1&lt;boost::mpl::protect&lt;boost::mpl::bind1&lt;boost::mpl::quote1&lt;boost::unwrap_recursive,boost::mpl::void_&gt;,boost::mpl::arg&lt;1&gt;&gt;,0&gt;,boost::mpl::_2&gt;&gt; 1&gt; ] 1&gt;c:\boost\boost-trunk-master\boost\mpl\aux_\preprocessed\plain\arg.hpp(63): error C3861: 'assert_not_arg': 識別子が見つかりませんでした ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== </pre><p> patch to boost/mpl/assert.hpp, line 137: </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC, &gt;= 1700) </pre><p> to </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC, == 1700) </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/9205 https://svn.boost.org/trac10/ticket/9205 Report #9204: const_multi_array_ref with const Mon, 07 Oct 2013 04:09:03 GMT Mon, 07 Oct 2013 04:09:03 GMT <p> It's now declared as </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">NumDims</span><span class="p">,</span> <span class="k">typename</span> <span class="n">TPtr</span> <span class="o">=</span> <span class="k">const</span> <span class="n">T</span><span class="o">*</span> <span class="o">&gt;</span> </pre></div></div><p> This makes it SFINAE-fail if you use const type for T, like <code>const_multi_array_ref&lt;const double, 2&gt;</code>. </p> <p> This simple change fixes the problem (tested): </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&quot;boost/type_traits/add_const.hpp&quot;</span><span class="cp"></span> <span class="p">...</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">NumDims</span><span class="p">,</span> <span class="k">typename</span> <span class="n">TPtr</span> <span class="o">=</span> <span class="k">typename</span> <span class="n">boost</span><span class="o">::</span><span class="n">add_const</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;::</span><span class="n">type</span> <span class="o">*</span> <span class="o">&gt;</span> </pre></div></div> Maxim.Yanchenko@… https://svn.boost.org/trac10/ticket/9204 https://svn.boost.org/trac10/ticket/9204 Report #9198: boost\boost\crc.hpp warning due to implicit bool cast Fri, 04 Oct 2013 09:58:55 GMT Sat, 05 Oct 2013 10:33:53 GMT <p> While compiling with Visual Studio 2013 RC, the following warning is issued: </p> <p> boost\boost\crc.hpp(601): warning C4800: 'unsigned int' : forcing value to bool 'true' or 'false' (performance warning) </p> <hr /> <p> Fix: Change line 601 as follows: </p> <p> bool const quotient = (remainder &amp; high_bit_mask) != 0; </p> Frank Heimes <drfghde@…> https://svn.boost.org/trac10/ticket/9198 https://svn.boost.org/trac10/ticket/9198 Report #9197: mpl\aux_\integral_wrapper.hpp(72): warning C4307: '+' : integral constant overflow Fri, 04 Oct 2013 09:54:30 GMT Thu, 04 Aug 2016 13:26:30 GMT <p> While compiling with Visual Studio 2013 RC, the following warning is issued: </p> <p> mpl\aux_\integral_wrapper.hpp(72): warning C4307: '+' : integral constant overflow </p> <p> i.e. for the following line: </p> <p> typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next; </p> Frank Heimes <drfghde@…> https://svn.boost.org/trac10/ticket/9197 https://svn.boost.org/trac10/ticket/9197 Report #9194: Compilation error with Boost.Python Thu, 03 Oct 2013 08:40:35 GMT Thu, 03 Oct 2013 08:40:35 GMT <p> Extra ")" in </p> <pre class="wiki">In file included from /mnt/server/grups/boost-1.55.0/include/boost/python/class.hpp:17:0, from /mnt/server/grups/boost-1.55.0/include/boost/python.hpp:18, from /mnt/server/grups/src/cttc-pce/pce-unstable/apps/server/plugins/management/mgmt_cli/cli_python_plugin_loader.cpp:1: /mnt/server/grups/boost-1.55.0/include/boost/python/data_members.hpp:308:47: error: missing '(' in expression </pre><pre class="wiki"># if BOOST_WORKAROUND(__EDG_VERSION__, &lt;= 238)) </pre><p> The fix seems straightforward </p> Ramon Casellas <ramon.casellas@…> https://svn.boost.org/trac10/ticket/9194 https://svn.boost.org/trac10/ticket/9194 Report #9190: boost::filesystem::extension(...) throws runtime_error if the locale is unknown. Wed, 02 Oct 2013 06:13:37 GMT Wed, 02 Oct 2013 06:13:37 GMT <p> Running the following program gives an std::runtime_error if the locale is set to something which the system doesn't support. </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; int main() { boost::filesystem::extension("test.txt"); } </pre><pre class="wiki">&gt; LC_CTYPE=unknown ./a.out &gt; terminate called after throwing an instance of 'std::runtime_error' &gt; what(): locale::facet::_S_create_c_locale name not valid &gt; Aborted </pre><p> This is reproducible on debian testing and ubuntu 12.04 but I think it's a general issue. </p> <ol><li>Is it the right behavior to throw an exception? </li></ol><ol start="2"><li>If it should throw an exception, it should have been of type filesystem_error. </li></ol> mkm@… https://svn.boost.org/trac10/ticket/9190 https://svn.boost.org/trac10/ticket/9190 Report #9188: named_slot_map.cpp fails to build in Solaris Studio 12.3 Tue, 01 Oct 2013 22:50:29 GMT Wed, 09 Oct 2013 17:15:57 GMT <p> I'm getting an "Overloading ambiguity error" when building libs/signals/src/named_slot_map.cpp on or around lines 105 &amp; 128 on the calls to <code>groups.erase</code>. </p> <p> This may be related to an issue <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-unresolved.html"><span class="icon">​</span>talked about here</a>, but that issue seems to indicate the problem would only exist in C++11. </p> <p> The error goes away with the following minor edits: </p> <pre class="wiki">-105: groups.erase((const_group_iterator) group); +105: groups.erase(*(const_group_iterator) group); -128: if (empty(g)) groups.erase((const_group_iterator) g++); +128: if (empty(g)) groups.erase(*(const_group_iterator) g++); </pre><p> I'm doing this work on an airgapped network, and the error is rather verbose ... but I'll give a shorted version of the error: </p> <pre class="wiki">"libs/signals/src/named_slot_map.cpp", line 105: Overloading ambiguity between "std::map&lt;A&gt;::erase( __rw::__rw_tree_iter&lt;B&gt; )" and "std::map&lt;A&gt;::erase(const boost::signals::detail::stored_group&amp;)". "libs/signals/src/named_slot_map.cpp", line 128: Overloading ambiguity between "std::map&lt;A&gt;::erase( __rw::__rw_tree_iter&lt;B&gt; )" and "std::map&lt;A&gt;::erase(const boost::signals::detail::stored_group&amp;)". </pre> Brian Vandenberg <phantall+boost@…> https://svn.boost.org/trac10/ticket/9188 https://svn.boost.org/trac10/ticket/9188 Report #9186: posix_time and time zones Tue, 01 Oct 2013 21:07:27 GMT Tue, 01 Oct 2013 21:07:27 GMT <p> Hi, </p> <p> When I use something like: boost::posix_time::time_from_string("2013-09-29 23:36:54.565+02"); </p> <p> I end up with: terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::bad_lexical_cast&gt; &gt;' </p> <blockquote> <p> what(): bad lexical cast: source type value could not be interpreted as target </p> </blockquote> <p> Aborted </p> <p> However, the following 2 do work: boost::posix_time::time_from_string("2013-09-29 23:36:54.565123+02"); boost::posix_time::time_from_string("2013-09-29 23:36:54.565"); </p> <p> It also doesn't seem to be doing anything with the +02. When I use to_tm() regardless of what is behind the +, I always get the 23 in tm_hour. The glibc extension tm_gmtoff is also always set to 0. </p> <p> None of the functions that convert it to strings seem to be able to have a time zone in it. </p> <p> I really don't understand why there isn't any support for time zones. A time without time zone seems to be totally useless to me. </p> <p> PS: The documentation has 3 times tm_isddst in it instead of tm_isdst. </p> kurt@… https://svn.boost.org/trac10/ticket/9186 https://svn.boost.org/trac10/ticket/9186 Report #9178: Use type deduction instead of boost::function to store lambda Sun, 29 Sep 2013 21:42:09 GMT Sun, 29 Sep 2013 21:44:19 GMT <p> boost::function is used to store lambda, which may cause superfluous allocation. It is possible to use type deduction instead. </p> Evgeny.Panasyuk@… https://svn.boost.org/trac10/ticket/9178 https://svn.boost.org/trac10/ticket/9178 Report #9177: Improved serialization of floating point values Sun, 29 Sep 2013 17:08:04 GMT Wed, 25 Jun 2014 16:44:26 GMT <p> Currently there are several weaknesses with floating point serialization: </p> <p> 1) There's no handling of <code>long double</code> or user-defined floating point types that have been declared primitives. 2) The current code for float and double may fail to print sufficient digits to round trip the value, when the value is less than 1, but not so small as to trigger an automatic switch to scientific format (which from memory occurs around 10<sup>-5). </sup></p> <p> The attached patch addresses both of these issues, and coincidentally simplifies the code as well. </p> John Maddock https://svn.boost.org/trac10/ticket/9177 https://svn.boost.org/trac10/ticket/9177 Report #9176: Intel compiler needs custom archiver Sun, 29 Sep 2013 09:06:46 GMT Sun, 29 Sep 2013 09:06:46 GMT <p> The Intel C++ compiler should have static libraries built with xiar not ar on Linux, probably on OSX as well but I don't know about that for sure. Without this static libraries built with -ipo (inter procedural optimizations) are non-usable. I'm attaching a partial patch for this, but note that: </p> <ul><li>It's only a partial solution since the Intel setup script isn't called before calling xiar - I couldn't figure out how to achieve that. </li><li>Compiled executables often don't run - again the Intel setup script needs to be run before the executable so that Intel's shared libraries can be found. One workaround would be to always link with the -static-intel flag. </li></ul> John Maddock https://svn.boost.org/trac10/ticket/9176 https://svn.boost.org/trac10/ticket/9176 Report #9173: Can't file a bug report (broken bug reporter) Sun, 29 Sep 2013 04:25:20 GMT Mon, 19 Sep 2016 19:07:50 GMT <p> This is kind of ridiculous. Boost is blocking my bug report because I provided references (and links to those references) in the report??? </p> <p> And the Bug Reporter won't provide the challenge its asking me to solve.... </p> noloader@… https://svn.boost.org/trac10/ticket/9173 https://svn.boost.org/trac10/ticket/9173 Report #9164: Dereference null return value in make_shared_object.hpp Thu, 26 Sep 2013 06:08:53 GMT Thu, 26 Sep 2013 06:08:53 GMT <p> Using some static analyzer tool , Boost reports warning messages Dereference null return value. </p> <p> In codes like: boost::detail::sp_ms_deleter&lt; T &gt; * pd = static_cast&lt;boost::detail::sp_ms_deleter&lt; T &gt; *&gt;( pt._internal_get_untyped_deleter() ); </p> <p> pd is dereference in next line : void * pv = pd-&gt;address(); </p> <p> If pd is NULL in above call, dereferencing it may cause crash. </p> <p> It can be avoided by using: BOOST_ASSERT(!pd); </p> <p> It is at many places. </p> Gaurav Gupta <g.gupta@…> https://svn.boost.org/trac10/ticket/9164 https://svn.boost.org/trac10/ticket/9164 Report #9159: bootstrap under Linux w/Solaris Studio 12.3 defaults to 64-bit; doesn't run correctly Tue, 24 Sep 2013 20:38:33 GMT Thu, 26 Sep 2013 18:09:42 GMT <p> I ran bootstrap under Linux using Solaris Studio 12.3 in a few different ways: </p> <pre class="wiki"># This defaults to 64-bit; note that # 'tools/build/v2/engine/build.sh' # does not have the means to add any # flags in with any toolset except 'cc' ./bootstrap.sh --with-toolset=sun # The binary produced doesn't work correctly: test 0 -lt $(./bjam --help |&amp; wc -c) || echo "Failed" Failed export CC=/opt/oracle/solarisstudio12.3/bin/cc export CFLAGS=-m32 ./bootstrap.sh --with-toolset=cc test 0 -lt ./bjam --help |&amp; wc -c) &amp;&amp; echo "Succeeded" Succeeded </pre><p> When building with the <code></code><code>cc</code><code></code> toolset, the default <code></code><code>project-config.jam</code><code></code> file forces <code></code><code>feature.values</code><code></code> to contain the 'cc' toolset, which causes problems later on down the line because, or so it seems, <code></code><code>cc</code><code></code> is not a valid toolset to use with bjam. The workaround I used for that was to make the replacement <code></code><code>s/cc/sun/g</code><code></code> in the .jam file. </p> Brian Vandenberg <phantall+boost@…> https://svn.boost.org/trac10/ticket/9159 https://svn.boost.org/trac10/ticket/9159 Report #9156: 1.54 broke NO_ZLIB=1 and NO_COMPRESSION=1 Tue, 24 Sep 2013 07:43:20 GMT Tue, 31 Jan 2017 10:02:58 GMT <p> <a class="ext-link" href="https://github.com/boostorg/iostreams/commit/dfb1f61c26b77556a1cca0654d08847cf87d26ae"><span class="icon">​</span>https://github.com/boostorg/iostreams/commit/dfb1f61c26b77556a1cca0654d08847cf87d26ae</a> This commit broke the ability to build boost with without zlib. The following bjam succeeds if you remove these two lines added by this patch. Please fix for 1.55? </p> <pre class="wiki">+ [ ac.check-library /zlib//zlib : &lt;library&gt;/zlib//zlib + &lt;source&gt;zlib.cpp &lt;source&gt;gzip.cpp ] </pre><pre class="wiki">./bjam toolset=gcc target-os=windows threadapi=win32 threading=multi variant=release link=static --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged --build-type=complete --prefix=/home/ubuntu/out/staging/boost -j2 install Performing configuration checks - 32-bit : yes - arm : no - mips1 : no - power : no - sparc : no - x86 : yes - has_icu builds : no warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam error: at /home/ubuntu/build/boost_1_54_0/tools/build/v2/kernel/modules.jam:107 error: Unable to find file or target named error: '/zlib//zlib' error: referred to from project at error: 'libs/iostreams/build' error: could not resolve project reference '/zlib' </pre> Warren Togami <wtogami@…> https://svn.boost.org/trac10/ticket/9156 https://svn.boost.org/trac10/ticket/9156 Report #9148: 6 Errors Sun, 22 Sep 2013 10:44:07 GMT Thu, 26 Sep 2013 18:11:37 GMT <pre class="wiki">Error 1 error C2143: syntax error : missing ';' before '&lt;' c:\program files\boost_1_54_0\boost\mpl\assert.hpp 149 1 Frelania Server C++ Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\boost_1_54_0\boost\mpl\assert.hpp 149 1 Frelania Server C++ Error 3 error C2238: unexpected token(s) preceding ';' c:\program files\boost_1_54_0\boost\mpl\assert.hpp 152 1 Frelania Server C++ Error 4 error C2143: syntax error : missing ';' before '&lt;' c:\program files\boost_1_54_0\boost\mpl\assert.hpp 159 1 Frelania Server C++ Error 5 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\boost_1_54_0\boost\mpl\assert.hpp 159 1 Frelania Server C++ Error 6 error C2238: unexpected token(s) preceding ';' c:\program files\boost_1_54_0\boost\mpl\assert.hpp 162 1 Frelania Server C++ </pre> anonymous https://svn.boost.org/trac10/ticket/9148 https://svn.boost.org/trac10/ticket/9148 Report #9143: boost can not load bootstrap Sat, 21 Sep 2013 02:02:29 GMT Sun, 14 Feb 2016 22:40:07 GMT <p> when i try to load bootstrap.bat i get this error </p> <p> cl.exe System Error </p> <blockquote> <p> The program can't start because mspdb110.dll is missing from your computer try reinstalling the program (which I did) to fix this probelm </p> </blockquote> m_hartley4@… https://svn.boost.org/trac10/ticket/9143 https://svn.boost.org/trac10/ticket/9143 Report #9141: Please document need to run install_name_tool when installing boost on MacOSX Sat, 21 Sep 2013 01:16:40 GMT Sat, 21 Sep 2013 01:16:40 GMT <p> This was originally discussed in 2008 on the Boost.build mailing list in thread "Install_name wrong on OS X dylibs with latest CVS" </p> <p> To recap, building on MacOSX with seems to work, but the resulting shared libraries lack an absolute path in their install_name, so apps using them fail to load; instead, one gets an error like </p> <pre class="wiki">dyld: Library not loaded: libboost_thread.dylib Referenced from: a.out Reason: image not found Trace/BPT trap: 5 </pre><p> To work around this, the user can set DYLIB_LIBRARY_PATH to point to the libraries, but that's not very satisfying. Or the packager can use Apple's install_name_tool to set the absolute path at install time. </p> <p> This last bit was made possible by the fix to bug 1927. </p> <p> This should be documented, perhaps near where hardcode-dll-paths is documented. The document might say something like </p> <blockquote> <p> Note about building on MacOSX </p> </blockquote> <blockquote> <p> Shared libraries on MacOSX generally have their absolute path embedded in them in a field called install_name. This field is copied into any executable that links against them. The executable then looks exactly at that absolute path to find the library. If the library is not there, the executable will fail to load. If you use e.g. homebrew to install Boost, this is taken care of for you, but if you're building boost yourself, read on. </p> </blockquote> <blockquote> <p> With the default build of Boost, doing e.g. </p> <blockquote> <p> otool -D libboost_regex.dylib </p> </blockquote> <p> produces just a pathless filename, and doing </p> <blockquote> <p> otool -L a.out | grep libboost </p> </blockquote> <p> on a library linked against this will show that the executable is trying to load the library without a path. </p> </blockquote> <blockquote> <p> A user can work around this by add the install directory to the DYLIB_LIBRARY_PATH environment variable, but that's often not acceptable. </p> </blockquote> <blockquote> <p> A nicer way to work around this is to use Apple's install_name_tool to embed the library's full path inside the library at install time, e.g. </p> <blockquote> <p> install_name_tool -id /foo/bar/libboost_regex.dylib /foo/bar/libboost_regex.dylib </p> </blockquote> </blockquote> <blockquote> <p> (Alternately, you can patch the use of -install_name in tools/build/v2/tools/darwin.jam before building, but that's ugly.) </p> </blockquote> dank@… https://svn.boost.org/trac10/ticket/9141 https://svn.boost.org/trac10/ticket/9141 Report #9137: mpl::and_<mpl::true_> returns false Thu, 19 Sep 2013 13:36:33 GMT Sat, 21 Sep 2013 03:32:51 GMT <p> The following snippet fails to compile: </p> <pre class="wiki">#include &lt;boost/mpl/and.hpp&gt; #include &lt;boost/mpl/bool.hpp&gt; int main() { using namespace boost::mpl; static_assert(and_&lt;true_&gt;::value, "?"); //fires } </pre><p> See also the following thread at the mailing list <a class="ext-link" href="http://lists.boost.org/Archives/boost/2013/09/206333.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2013/09/206333.php</a> </p> Agustín K-ballo Bergé <kaballo86@…> https://svn.boost.org/trac10/ticket/9137 https://svn.boost.org/trac10/ticket/9137 Report #9136: Typos in documentation. Thu, 19 Sep 2013 13:04:26 GMT Thu, 19 Sep 2013 13:04:26 GMT <p> There are a few occurances of "the the" in the docs of bimap. Also, it is alphabetically, not alfabetically. </p> mlang@… https://svn.boost.org/trac10/ticket/9136 https://svn.boost.org/trac10/ticket/9136 Report #9134: Code that uses BOOST_THROW_EXCEPTION produces a lot of "result may be used uninitialized (...)" warnings in certain conditions Thu, 19 Sep 2013 12:45:45 GMT Thu, 19 Sep 2013 12:45:45 GMT <p> The problem appears when using g++ with <code>-Wuninitialized -fno-exceptions -O3</code> flags. </p> <p> Given a simple test: </p> <pre class="wiki">#include &lt;boost/lexical_cast.hpp&gt; int main() { return boost::lexical_cast&lt;int&gt;(""); } </pre><p> when compiled using g++ v4.6.3 produces the following output: </p> <pre class="wiki">$ g++ test.cpp -Iboost -fno-exceptions -Wuninitialized -O3 -c In file included from test.cpp:1:0: boost/boost/lexical_cast.hpp: In static member function ‘static Target boost::detail::lexical_cast_do_cast&lt;Target, Source&gt;::lexical_cast_impl(const Source&amp;) [with Target = int, Source = const char*]’: boost/boost/lexical_cast.hpp:2353:24: warning: ‘result’ may be used uninitialized in this function [-Wuninitialized] </pre><p> Please note that this problem appears only when using <code>-O3</code> optimization level. </p> <p> One way of fixing this issue is to add <code>BOOST_ATTRIBUTE_NORETURN</code> to <code>boost::throw_exception()</code> declaration in <code>boost/throw_exception.hpp</code>, as shown in the attached patch. </p> <p> It should be safe to do so, as the documentation of <code>boost::throw_exception()</code> says that: </p> <blockquote class="citation"> <p> (...) Callers of throw_exception are allowed to assume that the function never returns (...) </p> </blockquote> <p> This solves the issue completely. </p> Adam Romanek <romanek.adam@…> https://svn.boost.org/trac10/ticket/9134 https://svn.boost.org/trac10/ticket/9134 Report #9132: mpl and lexical_cast dependency Thu, 19 Sep 2013 10:18:24 GMT Thu, 19 Sep 2013 10:41:23 GMT <p> Hi, </p> <p> It took mi one day to find out why my msm stopped to compile after upgrading to new boost. I was upgrading from 1.45 (with msm from 1.51) to 1.53. After many tries with different #define's it turned out the problem is elsewhere. This is code that breaks compilation: </p> <pre class="wiki">#include &lt;boost/lexical_cast.hpp&gt; #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_LIMIT_VECTOR_SIZE 30 #include &lt;boost/mpl/vector.hpp&gt; int main() { boost::mpl::vector&lt;int, char, double, int, int, int, int, int, int, char, int, char, double, int, int, int, int, int, int, char, int&gt; v; } </pre><p> and compilation output: </p> <pre class="wiki">g++ -Wall -Wextra -pedantic -Wlong-long plik.C -o plik -O2 -I /bldtools/3rd/boost/boost1.53/32bitrhel63/include -Wno-unused plik.C:13:1: warning: "BOOST_MPL_LIMIT_VECTOR_SIZE" redefined In file included from /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/mpl/vector.hpp:18, from /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/math/policies/policy.hpp:14, from /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/math/special_functions/math_fwd.hpp:28, from /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/math/special_functions/sign.hpp:17, from /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/lexical_cast.hpp:167, from plik.C:10: /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/mpl/limits/vector.hpp:18:1: warning: this is the location of the previous definition plik.C: In function âint main()â: plik.C:41: error: wrong number of template arguments (21, should be 20) /bldtools/3rd/boost/boost1.53/32bitrhel63/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp:22: error: provided for âtemplate&lt;class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19&gt; struct boost::mpl::vectorâ plik.C:41: error: invalid type in declaration before â;â token make: *** [plik] Error 1 </pre><p> Removing lexical_cast fixes the problem. Looks like lexical_cast started to use mpl vector with default settings and later #define's don't change the settings. </p> <p> The issue is complicated because it is not enough to move #define's at the beginning of file. I had to modify all my *.hpp files to include msm headers (and #define's) at the beginning of file. And also *.cpp files to include the above *.hpp at the beginning of file :(. </p> <p> Regards, </p> <p> Marcin Pytel </p> mkp https://svn.boost.org/trac10/ticket/9132 https://svn.boost.org/trac10/ticket/9132 Report #9131: Memcheck reports invalid read in exit() on boost 1.54 on Ubuntu 12.04 Thu, 19 Sep 2013 08:38:53 GMT Fri, 28 Feb 2014 16:47:54 GMT <pre class="wiki">==10361== Memcheck, a memory error detector ==10361== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. ==10361== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info ==10361== Command: target/test/integration_test ==10361== ==10361== Invalid read of size 8 ==10361== at 0x5AE7E18: wcscmp (wcscmp.S:479) ==10361== by 0x55A0113: std::moneypunct&lt;wchar_t, false&gt;::~moneypunct() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x55A0198: std::moneypunct&lt;wchar_t, false&gt;::~moneypunct() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5594A79: std::locale::_Impl::~_Impl() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5594C4C: std::locale::~locale() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5A81D1C: __cxa_finalize (cxa_finalize.c:56) ==10361== by 0x6733E55: ??? (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x6744A20: ??? (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x5A81900: __run_exit_handlers (exit.c:78) ==10361== by 0x5A81984: exit (exit.c:100) ==10361== by 0x5A67773: (below main) (libc-start.c:258) ==10361== Address 0x6b5fe98 is 0 bytes after a block of size 8 alloc'd ==10361== at 0x4C2AC27: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==10361== by 0x559FDED: std::moneypunct&lt;wchar_t, false&gt;::_M_initialize_moneypunct(__locale_struct*, char const*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x559711E: std::locale::_Impl::_Impl(char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x559765E: std::locale::locale(char const*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x6741733: boost::filesystem::path::codecvt() (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x50BF59E: boost::log::v2_mt_posix::sinks::text_file_backend::set_file_name_pattern_internal(boost::filesystem::path const&amp;) (in /usr/lib/libboost_log.so.1.54.0) ==10361== by 0x50C103D: boost::log::v2_mt_posix::sinks::text_file_backend::construct(boost::filesystem::path const&amp;, std::_Ios_Openmode, unsigned long, boost::log::v2_mt_posix::aux::light_function&lt;bool ()()&gt; const&amp;, bool) (in /usr/lib/libboost_log.so.1.54.0) ==10361== by 0x413815: void boost::log::v2_mt_posix::sinks::text_file_backend::construct&lt;boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;) (text_file_backend.hpp:511) ==10361== by 0x412F5E: boost::log::v2_mt_posix::sinks::text_file_backend::text_file_backend&lt;boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;) (text_file_backend.hpp:386) ==10361== by 0x41280A: boost::detail::sp_if_not_array&lt;boost::log::v2_mt_posix::sinks::text_file_backend&gt;::type boost::make_shared&lt;boost::log::v2_mt_posix::sinks::text_file_backend, boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const, &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;&amp;, ) (make_shared_object.hpp:218) ==10361== by 0x41066E: main (integration_test.cpp:17) ==10361== ==10361== Invalid read of size 8 ==10361== at 0x5AE7E18: wcscmp (wcscmp.S:479) ==10361== by 0x55A0003: std::moneypunct&lt;wchar_t, true&gt;::~moneypunct() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x55A0088: std::moneypunct&lt;wchar_t, true&gt;::~moneypunct() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5594A79: std::locale::_Impl::~_Impl() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5594C4C: std::locale::~locale() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x5A81D1C: __cxa_finalize (cxa_finalize.c:56) ==10361== by 0x6733E55: ??? (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x6744A20: ??? (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x5A81900: __run_exit_handlers (exit.c:78) ==10361== by 0x5A81984: exit (exit.c:100) ==10361== by 0x5A67773: (below main) (libc-start.c:258) ==10361== Address 0x6b600c8 is 0 bytes after a block of size 8 alloc'd ==10361== at 0x4C2AC27: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==10361== by 0x559F7FD: std::moneypunct&lt;wchar_t, true&gt;::_M_initialize_moneypunct(__locale_struct*, char const*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x559716B: std::locale::_Impl::_Impl(char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x559765E: std::locale::locale(char const*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16) ==10361== by 0x6741733: boost::filesystem::path::codecvt() (in /usr/lib/libboost_filesystem.so.1.54.0) ==10361== by 0x50BF59E: boost::log::v2_mt_posix::sinks::text_file_backend::set_file_name_pattern_internal(boost::filesystem::path const&amp;) (in /usr/lib/libboost_log.so.1.54.0) ==10361== by 0x50C103D: boost::log::v2_mt_posix::sinks::text_file_backend::construct(boost::filesystem::path const&amp;, std::_Ios_Openmode, unsigned long, boost::log::v2_mt_posix::aux::light_function&lt;bool ()()&gt; const&amp;, bool) (in /usr/lib/libboost_log.so.1.54.0) ==10361== by 0x413815: void boost::log::v2_mt_posix::sinks::text_file_backend::construct&lt;boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;) (text_file_backend.hpp:511) ==10361== by 0x412F5E: boost::log::v2_mt_posix::sinks::text_file_backend::text_file_backend&lt;boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;) (text_file_backend.hpp:386) ==10361== by 0x41280A: boost::detail::sp_if_not_array&lt;boost::log::v2_mt_posix::sinks::text_file_backend&gt;::type boost::make_shared&lt;boost::log::v2_mt_posix::sinks::text_file_backend, boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const, &gt;(boost::parameter::aux::tagged_argument&lt;boost::log::v2_mt_posix::keywords::tag::file_name, char const [14]&gt; const&amp;&amp;, ) (make_shared_object.hpp:218) ==10361== by 0x41066E: main (integration_test.cpp:17) </pre> asturman@… https://svn.boost.org/trac10/ticket/9131 https://svn.boost.org/trac10/ticket/9131 Report #9128: Vector deallocation with pool_allocator enters a dead loop Wed, 18 Sep 2013 12:21:14 GMT Wed, 18 Sep 2013 12:21:14 GMT <p> Here is the complete test code to reproduce the bug: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;ctime&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/pool/pool_alloc.hpp&gt;</span><span class="cp"></span> <span class="k">const</span> <span class="kt">size_t</span> <span class="n">LARGE</span><span class="o">=</span><span class="mi">200000</span><span class="p">,</span> <span class="n">LEN</span><span class="o">=</span><span class="mi">30</span><span class="p">;</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="n">VEC</span> <span class="o">&gt;</span> <span class="kt">void</span> <span class="n">time_it</span><span class="p">(</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">tag</span> <span class="p">)</span> <span class="p">{</span> <span class="n">VEC</span> <span class="n">vec</span><span class="p">(</span><span class="n">LARGE</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="kt">clock_t</span> <span class="n">start</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">clock</span><span class="p">()</span> <span class="p">;</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">LARGE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span> <span class="p">)</span> <span class="n">vec</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">resize</span> <span class="p">(</span><span class="n">LEN</span><span class="p">)</span> <span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">tag</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;: &quot;</span> <span class="o">&lt;&lt;</span> <span class="p">(</span> <span class="n">std</span><span class="o">::</span><span class="n">clock</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span> <span class="p">)</span> <span class="o">/</span> <span class="kt">double</span><span class="p">(</span><span class="n">CLOCKS_PER_SEC</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; secs.</span><span class="se">\n</span><span class="s">&quot;</span> <span class="p">;</span> <span class="p">}</span> <span class="cp">#define TIME_IT( a ) time_it&lt;a&gt;( #a ) ;</span> <span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">typedef</span> <span class="kt">size_t</span> <span class="n">T</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">std_vec</span> <span class="p">;</span> <span class="k">typedef</span> <span class="n">boost</span><span class="o">::</span><span class="n">pool_allocator</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">boost_allocator</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span> <span class="n">boost_allocator</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">boost_vec</span><span class="p">;</span> <span class="n">TIME_IT</span><span class="p">(</span> <span class="n">std_vec</span> <span class="p">)</span> <span class="p">;</span> <span class="n">TIME_IT</span><span class="p">(</span> <span class="n">boost_vec</span> <span class="p">)</span> <span class="p">;</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> It hangs while cleaning up at the end of the time_it function. I've seen with ddd that it hangs in boost/pool/simple_segregated_storage.hpp in the following block: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">while</span> <span class="p">(</span><span class="nb">true</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// if we&#39;re about to hit the end, or if we&#39;ve found where &quot;ptr&quot; goes.</span> <span class="k">if</span> <span class="p">(</span><span class="n">nextof</span><span class="p">(</span><span class="n">iter</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">std</span><span class="o">::</span><span class="n">greater</span><span class="o">&lt;</span><span class="kt">void</span> <span class="o">*&gt;</span><span class="p">()(</span><span class="n">nextof</span><span class="p">(</span><span class="n">iter</span><span class="p">),</span> <span class="n">ptr</span><span class="p">))</span> <span class="k">return</span> <span class="n">iter</span><span class="p">;</span> <span class="n">iter</span> <span class="o">=</span> <span class="n">nextof</span><span class="p">(</span><span class="n">iter</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> If instead of pool_allocator I use fast_pool_allocator then this does not happen and it's equally slow. In this example pool_allocator takes about 4-5 times longer to allocate than the default one - I don't know why. </p> <p> I compiled it with </p> <p> g++-4.7 -O3 -g testPool5.cc </p> <p> under Ubuntu. I tried Boost versions 1.54.0 and 1.49.0. </p> Dragan Vidovic <vitkecar@…> https://svn.boost.org/trac10/ticket/9128 https://svn.boost.org/trac10/ticket/9128 Report #9121: "Getting Started": Atomic missing from libs requiring to be built Mon, 16 Sep 2013 18:24:40 GMT Mon, 16 Sep 2013 18:24:40 GMT <p> The Atomic library is missing from the list of libs needing to be built. </p> jeffrey.flinn@… https://svn.boost.org/trac10/ticket/9121 https://svn.boost.org/trac10/ticket/9121 Report #9120: system_error_category::message() produces non-english error messages in ANSI encoding Mon, 16 Sep 2013 14:32:22 GMT Mon, 16 Sep 2013 14:32:22 GMT <p> In the system_error_category::message(), the FormatMessageA(...,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),...) is used to create error messages. Unfortunately, this code can produce non-english error messages in the ANSI encoding. </p> <p> According to the <a href="http://www.boost.org/community/error_handling.html">http://www.boost.org/community/error_handling.html</a>, "internationalization is beyond the scope of the exception class author". So, I think that it would be better to use MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT) here. </p> s.cheban@… https://svn.boost.org/trac10/ticket/9120 https://svn.boost.org/trac10/ticket/9120 Report #9119: memory errors and eventual segfault when using Log Mon, 16 Sep 2013 13:55:56 GMT Thu, 03 Oct 2013 22:13:32 GMT <p> Hello, </p> <p> I'm using the the Log component of Boost 1.54 compiled from source and I get many memory errors and segfault while invoking the function logging::add_file_log. To make sure it was not my code, I went to the Boost installation and ran valgrind on some of the Log examples that invoke that function and it happens also there. The minimalistic example tutorial_file.cpp reveals the issue (though there may be more issues with Log). I get many memory errors in Mac OS X and Ubuntu, in Mac OS X it doesn't crash the application but I get a segfault in Ubuntu. </p> <p> I'm attaching the valgrind output on Ubuntu 12.04 with kernel version "Linux HPC 3.5.0-40-generic <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/62" title="#62: Bugs: Rational sum not optimal for overflows (closed: Rejected)">#62</a>~precise1-Ubuntu SMP Fri Aug 23 17:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux". </p> <p> Best regards, Giovanni </p> Giovanni Azua <bravegag@…> https://svn.boost.org/trac10/ticket/9119 https://svn.boost.org/trac10/ticket/9119 Report #9118: Seg fault on thread join when llvm and libc++ are used Sun, 15 Sep 2013 19:47:04 GMT Sat, 11 Oct 2014 02:58:27 GMT <p> This issue appears to be specific to llvm libc++ standard library </p> <p> the program compiled with the following options will have a seg fault on thread join. </p> <pre class="wiki">clang -x c++ -arch x86_64 -std=gnu++11 -stdlib=libc++ -I/opt/local/include -c main.cpp -o main.o clang++ -arch x86_64 -L/opt/local/lib main.o -stdlib=libc++ -lboost_system-mt -lboost_thread-mt -o mutex_test </pre><p> the program compiled with </p> <pre class="wiki">clang -x c++ -arch x86_64 -I/opt/local/include -c main.cpp -o main.o clang++ -arch x86_64 -L/opt/local/lib main.o -lboost_system-mt -lboost_thread-mt -o mutex_test </pre><pre class="wiki">System Version : OS X Mountain Lion 10.8.4 Compiler : $ clang --version Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.4.0 Thread model: posix Boost: built/installed with mac ports </pre> tconant@… https://svn.boost.org/trac10/ticket/9118 https://svn.boost.org/trac10/ticket/9118 Report #9116: Binary serialization: bitwise copying should also apply to single POD objects (it now only seems to work on arrays/collections) Sat, 14 Sep 2013 19:03:26 GMT Tue, 01 Oct 2013 12:51:12 GMT <p> I'm trying to find the best settings for fast binary serialization of big POD objects. My tests indicate that, for a structure tagged as bitwise serializable, I only get better performance on arrays and vectors, not on individual objects. </p> <p> For instance, say I have a structure made up only of POD types: </p> <pre class="wiki">struct BigStruct { double m1; long long m2; float m3; // ... bool m499; short m500; }; namespace boost { namespace serialization { template &lt;class Archive&gt; void serialize(Archive&amp; ioArchive, BigStruct&amp; ioStruct, const unsigned int iVersion) { ioArchive &amp; ioStruct.m1; ioArchive &amp; ioStruct.m2; ioArchive &amp; ioStruct.m3; // ... ioArchive &amp; ioStruct.m499; ioArchive &amp; ioStruct.m500; } } } #include &lt;boost/serialization/is_bitwise_serializable.hpp&gt; BOOST_IS_BITWISE_SERIALIZABLE(BigStruct); </pre><p> Then, serializing a single BigStruct object takes considerably (at least 5 times) longer than serializing an array of 1 BigStruct object. </p> Louis Zanella <louis.zanella@…> https://svn.boost.org/trac10/ticket/9116 https://svn.boost.org/trac10/ticket/9116 Report #9114: Documentation examples not working Sat, 14 Sep 2013 12:18:48 GMT Sun, 15 Sep 2013 16:14:13 GMT <p> Example of <em>qi::phrase_parse</em> (from this <a href="http://www.boost.org/doc/libs/1_54_0/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html">page</a>): </p> <pre class="wiki">// the following parses "1.0 2.0" into a pair of double std::string input("1.0 2.0"); std::string::iterator strbegin = input.begin(); std::pair&lt;double, double&gt; p; qi::phrase_parse(strbegin, input.end(), qi::double_ &gt;&gt; qi::double_, // parser grammar qi::space, // delimiter grammar p); </pre><p> and example of <em>qi::parse</em> (from this <a href="http://www.boost.org/doc/libs/1_54_0/libs/spirit/doc/html/spirit/abstracts/attributes/more_compound_attributes.html">page</a>): </p> <pre class="wiki">// the following parses "(1.0, 2.0)" into a pair of double std::string input("(1.0, 2.0)"); std::string::iterator strbegin = input.begin(); std::pair&lt;double, double&gt; p; qi::parse(strbegin, input.end(), '(' &gt;&gt; qi::double_ &gt;&gt; ", " &gt;&gt; qi::double_ &gt;&gt; ')', // parser grammar p); </pre><p> both produce compile error: </p> <pre class="wiki">no matching function for call to 'std::pair&lt;double, double&gt;::pair(const double&amp;)' </pre><p> Compiled with gcc 4.7.3 </p> ruslan_baratov@… https://svn.boost.org/trac10/ticket/9114 https://svn.boost.org/trac10/ticket/9114 Report #9112: [tr1] Failures in test_ref_wrapper_tricky.cpp Fri, 13 Sep 2013 16:22:40 GMT Fri, 13 Sep 2013 17:00:15 GMT <p> The mentioned test case gives a number of failures. Those can be tracked down to two problems (at least the test case perceives them as problems). Google gives hits dating this back to 1.37, I have confirmed it with 1.41 and 1.54. I'm not sure why this hasn't been addressed--have I inadvertently opened a can of worms? </p> <p> First, reference_wrapper that wraps function-like objects doesn't derive off std::unary_function, resp. std::binary function. That's relatively easy to fix by introducing a reference_wrapper_base class template, that reference_wrapper inherits off. That template optionally derives off unary_ or binary_function as appropriate. </p> <p> Second, calling reference wrapper as function doesn't work for member functions. This can be solved by introducing operator() in the above mentioned base class. </p> <p> I'll attach a patch that implements the above, except for specializations for reference_wrapper&lt;{binary,unary}_function&gt;. Please let me know whether a patch to this effect would be applicable and advise on areas that need more work. </p> Petr Machata <pmachata@…> https://svn.boost.org/trac10/ticket/9112 https://svn.boost.org/trac10/ticket/9112 Report #9105: boost::tokenizer fails if string contains percent signs Thu, 12 Sep 2013 07:03:45 GMT Thu, 12 Sep 2013 07:03:45 GMT <p> [Visual Studio 2010] Let's use as an example code shown on the bottom of the page <a href="http://www.boost.org/doc/libs/1_54_0/libs/tokenizer/escaped_list_separator.htm">http://www.boost.org/doc/libs/1_54_0/libs/tokenizer/escaped_list_separator.htm</a> </p> <p> =====&gt;&gt;&gt;&gt; <em> simple_example_2.cpp #include&lt;iostream&gt; #include&lt;boost/tokenizer.hpp&gt; #include&lt;string&gt; </em></p> <p> int main(){ </p> <blockquote> <p> using namespace std; using namespace boost; string s = "Field 1,\"putting quotes around fields, allows commas\",Field 3"; tokenizer&lt;escaped_list_separator&lt;char&gt; &gt; tok(s); for(tokenizer&lt;escaped_list_separator&lt;char&gt; &gt;::iterator beg=tok.begin(); beg!=tok.end();++beg){ </p> <blockquote> <p> cout &lt;&lt; *beg &lt;&lt; "\n"; </p> </blockquote> <p> } </p> </blockquote> <p> } &lt;&lt;&lt;&lt;===== </p> <p> Works fine. </p> <p> Let's insert percent sign somewhere inside string s. As an example s = "Field 1,\"putting q%uotes around fields, allows commas\",Field 3"; </p> <p> program fails with: First-chance exception at 0x75c4c41f in test.exe: Microsoft C++ exception: boost::escaped_list_error at memory location 0x007cf060.. </p> <p> It fails even percent sign would be followed by hex code (like %20) </p> anonymous https://svn.boost.org/trac10/ticket/9105 https://svn.boost.org/trac10/ticket/9105 Report #9102: Various Boost header files define variables with internal linkage, which results in unnecessary code bloat Wed, 11 Sep 2013 09:39:06 GMT Tue, 17 Sep 2013 21:06:03 GMT <p> Some Boost headers define variables with internal linkage. For example, in <code>boost/system/error_code.hpp</code>: </p> <pre class="wiki"> static const error_category &amp; posix_category = generic_category(); static const error_category &amp; errno_ecat = generic_category(); static const error_category &amp; native_ecat = system_category(); </pre><p> In <code>boost/asio/error.hpp</code>: </p> <pre class="wiki">static const boost::system::error_category&amp; system_category = boost::asio::error::get_system_category(); static const boost::system::error_category&amp; netdb_category = boost::asio::error::get_netdb_category(); static const boost::system::error_category&amp; addrinfo_category = boost::asio::error::get_addrinfo_category(); static const boost::system::error_category&amp; misc_category = boost::asio::error::get_misc_category(); </pre><p> Because of this, every translation unit that includes these headers results in a separate instance of each of these variables in the resulting executable file. Because these variables have non-constant initializers, not only they are not eliminated during linking, even if not used, but also each instance of such variable results in a call to a initialization function during program startup. </p> <p> I think that merely including a Boost header, without using anything from it, should not result in any extra code remaining in the resulting executable - especially not if each translation unit results in a separate copy of such code. </p> abacabadabacaba@… https://svn.boost.org/trac10/ticket/9102 https://svn.boost.org/trac10/ticket/9102 Report #9099: boost::filesystem::stem() reporting wrong value on some entries (seen on Linux) Tue, 10 Sep 2013 12:52:20 GMT Tue, 10 Sep 2013 12:52:20 GMT <p> Compiled with gcc on Linux. </p> <p> Consider the following example with an empty string as path: </p> <pre class="wiki"> boost::filesystem::path mypath(""); cout &lt;&lt; mypath.parent_path().native() &lt;&lt; endl; cout &lt;&lt; mypath.stem().native() &lt;&lt; endl; </pre><p> This will print out, as expected, two empty strings. If one now changes the path to be analysed into "tmp/", like this: </p> <pre class="wiki"> boost::filesystem::path mypath("tmp/"); cout &lt;&lt; mypath.parent_path().native() &lt;&lt; endl; cout &lt;&lt; mypath.stem().native() &lt;&lt; endl; </pre><p> then the output will be "tmp" on one line (totally expected and correct) and "." on the next line (totally unexpected and wrong, it should be an empty string). </p> bach@… https://svn.boost.org/trac10/ticket/9099 https://svn.boost.org/trac10/ticket/9099 Report #9097: directory_iterator crash with intel release builds on windows Tue, 10 Sep 2013 10:11:46 GMT Tue, 10 Sep 2013 12:14:55 GMT <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; int main() { boost::filesystem::directory_iterator i1("C:\\"); boost::filesystem::directory_iterator i2("C:\\Windows"); } </pre><p> Crashes in Intel (12.1 included in Composer XE 2011 SP1) release builds. Construction of i1 works but construction of i2 gives: <em>Exception at 0x77a0320e, code: 0xc0000005: read access violation at: 0x0, flags=0x0 (first chance)</em> </p> <p> The crash (according to the debugger) happens in operations.cpp:2150. This used to work with Boost 1.48.0 and also isn't a problem with Debug or MSVC10 builds. </p> Nils Gladitz <gladitz@…> https://svn.boost.org/trac10/ticket/9097 https://svn.boost.org/trac10/ticket/9097 Report #9089: missing locale in strings_from_facet.hpp Sat, 07 Sep 2013 17:07:14 GMT Sat, 15 Mar 2014 16:09:13 GMT <p> see my example: </p> <pre class="wiki"> std::locale::global(std::locale("")); boost::posix_time::ptime t; std::stringstream ss; std::string s = "Sat, 07-Sep-43 10:40:59 GMT"; ss.str(s); boost::posix_time::time_input_facet* rfc850_date_workarround2 = new boost::posix_time::time_input_facet("%a, %d-%b-%y %H:%M:%S GMT"); ss.imbue(std::locale(std::locale::classic(), rfc850_date_workarround2)); ss &gt;&gt; t; if (t != boost::posix_time::not_a_date_time) { std::cout &lt;&lt; ss.str() &lt;&lt; std::endl; } </pre><p> I expected the output: </p> <pre class="wiki">2043-Sep-07 10:40:59 </pre><p> but in fact no output... </p> Jackarain https://svn.boost.org/trac10/ticket/9089 https://svn.boost.org/trac10/ticket/9089 Report #9088: I/O Exception state & status savers may cause std::terminate in C++11 Sat, 07 Sep 2013 13:09:13 GMT Thu, 27 Oct 2016 19:54:38 GMT <p> The <code>boost::io::basic_ios_iostate_saver</code> and <code>boost::io::basic_ios_exception_saver</code> class templates in file "boost/io/ios_state.hpp" alter the I/O exception state and trigger-mask, respectively, in their constructors and destructors. When a change in either makes the two statuses have a non-zero result when combined with bitwise-and, an exception is thrown. </p> <p> A potentially throwing destructor is problematic enough, but C++11 adds a new source of trouble. C++11 declares all destructors with no exception specification to be <code>noexcept</code> by default, which makes all imported pre-C++11 types with a throwing destructor to call <code>std::terminate</code> if they throw. The (immediate) fix would be to add a <code>noexcept(false)</code> specification to those destructors when used in C++11 mode. </p> Daryle Walker https://svn.boost.org/trac10/ticket/9088 https://svn.boost.org/trac10/ticket/9088 Report #9084: boost::asio::ip::address::is_loopback() on mapped ip4 127.0.0.1 Fri, 06 Sep 2013 10:28:46 GMT Fri, 22 Jul 2016 17:31:29 GMT <p> boost::asio::ip::address_vs::is_loopback() returns false on the address '::ffff:127.0.0.1'. Maybe this is the correct behavior, but it was certainly unexpected to me. </p> <p> (the ip4 address '127.0.0.1' maps to '::ffff:127.0.0.1'). </p> tmoers https://svn.boost.org/trac10/ticket/9084 https://svn.boost.org/trac10/ticket/9084 Report #9081: boost geometry booleans create self-intersecting polygons from non-self-intersecting polygons Wed, 04 Sep 2013 23:25:02 GMT Tue, 22 Oct 2013 02:42:03 GMT <p> The attached program mimics aspects of the way in which I am trying to use the boost geometry polygon boolean operations. It repeatedly selects two polygons from a list, computes the booleans, and adds the results to the list. It also checks the results for self-intersection and reports the input and operation that lead to the failure before exiting. When I run it as is I get this result: </p> <p> FAILED TO SUBTRACT MULTIPOLYGON(((0.2654871893371946 0.2880663823207319,0.349204346823061 0.3819520178855695,0.4615617830267027 0.4487295340751242,0.2851297065819251 0.2894032238012155,0.2654871893371946 0.2880663823207319))) MULTIPOLYGON(((0.4615617830267023 0.4487295340751238,0.4809248136210044 0.4662152446243423,0.4861159661340977 0.46332284819279,0.4615617830267023 0.4487295340751238))) MULTIPOLYGON(((0.4615617830267027 0.4487295340751242,0.4615617830267023 0.4487295340751238,0.2851297065819251 0.2894032238012155,0.2654871893371946 0.2880663823207319,0.349204346823061 0.3819520178855695,0.4615617830267023 0.4487295340751238,0.4615617830267027 0.4487295340751242))) </p> <p> Expected result: the program completes without finding a self-intersection. </p> <p> Boost SVN revision: 85565. </p> snubdodecahedron@… https://svn.boost.org/trac10/ticket/9081 https://svn.boost.org/trac10/ticket/9081 Report #9075: Devision by zero in boost/date_time/int_adapter.hpp Mon, 02 Sep 2013 09:20:08 GMT Tue, 15 Oct 2013 18:42:48 GMT <p> line 347 </p> <div class="wiki-code"><div class="code"><pre><span class="mi">339</span> <span class="cm">/*! Provided for cases when automatic conversion from </span> <span class="cm">340 * &#39;int&#39; to &#39;int_adapter&#39; causes incorrect results. */</span> <span class="mi">341</span> <span class="n">int_adapter</span> <span class="k">operator</span><span class="o">/</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="n">rhs</span><span class="p">)</span> <span class="k">const</span> <span class="mi">342</span> <span class="p">{</span> <span class="mi">343</span> <span class="k">if</span><span class="p">(</span><span class="n">is_special</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">rhs</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="mi">344</span> <span class="p">{</span> <span class="mi">345</span> <span class="k">return</span> <span class="n">mult_div_specials</span><span class="p">(</span><span class="n">rhs</span><span class="p">);</span> <span class="mi">346</span> <span class="p">}</span> <span class="mi">347</span> <span class="k">return</span> <span class="n">int_adapter</span><span class="o">&lt;</span><span class="n">int_type</span><span class="o">&gt;</span><span class="p">(</span><span class="n">value_</span> <span class="o">/</span> <span class="n">rhs</span><span class="p">);</span> <span class="mi">348</span> <span class="p">}</span> </pre></div></div><p> rhs is not checked if is_special() returns false. </p> Alexander Drichel <alexander.drichel@…> https://svn.boost.org/trac10/ticket/9075 https://svn.boost.org/trac10/ticket/9075 Report #9074: Performance inefficiencies in boost::libs::filesystem::src::operations.cpp Mon, 02 Sep 2013 09:06:42 GMT Mon, 02 Sep 2013 12:28:21 GMT <p> line 1490 Large stack use </p> <p> Local variable "info" uses 16392 bytes of stack space, which exceeds the maximum single use of 10000 bytes. </p> <p> it should be replaced by uniqe_ptr </p> <p> union info_t { </p> <blockquote> <p> char buf[REPARSE_DATA_BUFFER_HEADER_SIZE+MAXIMUM_REPARSE_DATA_BUFFER_SIZE]; REPARSE_DATA_BUFFER rdb; </p> </blockquote> <p> } /*info*/; std::unique_ptr&lt;info_t&gt; info( new info_t ); ... </p> Alexander Drichel <alexander.drichel@…> https://svn.boost.org/trac10/ticket/9074 https://svn.boost.org/trac10/ticket/9074 Report #9068: `parser_buf` like class moved to boost/detail/basic_pointerbuf.hpp Fri, 30 Aug 2013 09:10:40 GMT Thu, 13 Nov 2014 16:34:27 GMT <p> Boost.<a class="missing wiki">LexicalCast</a> uses slightly modifyed version of <code>parser_buf</code> from <code>boost/regex/v4/cpp_regex_traits.hpp</code> (see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8267" title="#8267: Bugs: lexical_cast uses stream buffers incorrectly (closed: fixed)">#8267</a>). </p> <p> In <a class="changeset" href="https://svn.boost.org/trac10/changeset/85523" title="lexical_cast.hpp improvements: more comments, BOOST_NOEXCEPT and ...">[85523]</a> I've moved common code to the boost/detail/basic_pointerbuf.hpp and now <code>boost/regex/v4/cpp_regex_traits.hpp</code> can be updated to use the common code (see patch in attachment). </p> Antony Polukhin https://svn.boost.org/trac10/ticket/9068 https://svn.boost.org/trac10/ticket/9068 Report #9067: rational::assign doesn't even have the basic guarantee Fri, 30 Aug 2013 04:00:51 GMT Fri, 30 Aug 2013 13:18:38 GMT <p> The current implementation of the <code>assign</code> member function assigns the new components before normalization checks. Normalization throws if the components are too violating to fix, but the object has already been changed and the old values have been lost. Worse, if the object was created outside of the current stack frame, it will survive the exception in a state still violating its invariant! </p> Daryle Walker https://svn.boost.org/trac10/ticket/9067 https://svn.boost.org/trac10/ticket/9067 Report #9066: Add support for MultiPoint WKB format Thu, 29 Aug 2013 23:14:32 GMT Wed, 02 Mar 2016 20:32:39 GMT <p> Mats Taraldsvik <a class="ext-link" href="http://lists.boost.org/geometry/2013/08/2479.php"><span class="icon">​</span>posted three patches</a> to the list with <a class="missing wiki">MultiPoint</a> WKB support: </p> <ul><li>0001-Adds-an-equal-check-for-<a class="missing wiki">MultiPoints</a>-with-number-of-p.patch </li><li>0002-Adds-support-for-reading-<a class="missing wiki">MultiPoint</a>-WKB.patch </li><li>0003-Add-tests-for-<a class="missing wiki">MultiPoint</a>-WKB.patch </li></ul><p> Those patches have been generated in Git format against the Git mirros. I have refactored them into SVN format using <a class="ext-link" href="https://gist.github.com/mloskot/6384278"><span class="icon">​</span>simple command</a>. </p> <p> So, here is combined version of Mats' changes in more convenient form ready for review. </p> <p> I also have added Jamfile.v2 files, so it is ready to build and test. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/9066 https://svn.boost.org/trac10/ticket/9066 Report #9059: Boost.Asio detail/impl/win_static_mutex leaks a CRITICAL_SECTION Wed, 28 Aug 2013 12:24:46 GMT Sat, 30 Jul 2016 10:16:56 GMT <p> A CRITICAL_SECTION is not some POD type. It needs to be freed using <a class="missing wiki">DeleteCriticalSection</a> or it will leak resources. </p> <p> This leak has been found using Microsoft's Application Verifier. </p> segev208@… https://svn.boost.org/trac10/ticket/9059 https://svn.boost.org/trac10/ticket/9059 Report #9056: empty_ptree missing from boost Wed, 28 Aug 2013 02:47:31 GMT Wed, 28 Aug 2013 02:47:31 GMT <p> The empty_ptree method is mentioned at <a href="http://www.boost.org/doc/libs/1_51_0/doc/html/boost/property_tree/basic_ptree.html">http://www.boost.org/doc/libs/1_51_0/doc/html/boost/property_tree/basic_ptree.html</a> and <a href="http://www.boost.org/doc/libs/1_46_1/libs/property_tree/examples/empty_ptree_trick.cpp">http://www.boost.org/doc/libs/1_46_1/libs/property_tree/examples/empty_ptree_trick.cpp</a>, but it doesn't appear to actually exist in boost. Presumably this should be fixed. </p> atomic.quark@… https://svn.boost.org/trac10/ticket/9056 https://svn.boost.org/trac10/ticket/9056 Report #9055: spin_condition.notify()hangs if communication peer crashes Tue, 27 Aug 2013 16:53:51 GMT Tue, 27 Aug 2013 16:53:51 GMT <p> When using interprocess_condition for signalling availability of new data in shared memory the call to notify_one() or notify_all() hangs forever if the communication peer terminates ungracefully. This happens because spin_condition.notify() calls m_enter_mut.lock(). </p> <p> A possible solution that we apply in our project is to provide notify methods with a timeout argument and a boolean return value that call m_enter_mut.timed_wait(abs_time). The return value can then be handled accordingly. </p> stepan.seycek@… https://svn.boost.org/trac10/ticket/9055 https://svn.boost.org/trac10/ticket/9055 Report #9052: Support of Stateful Allocators in spirit Tue, 27 Aug 2013 09:37:50 GMT Tue, 27 Aug 2013 09:37:50 GMT <p> Currently it's not possible to avoid allocations from happening with the standard allocators of the used standard library. </p> <p> That makes it quite impossible to manage the memory for the parser. </p> <p> Some use case examples: </p> <ul><li>Writing a library in C++ with a C interface allowing the user to pass 'malloc' and 'free' replacements. </li><li>Writing a program that uses a pool memory allocator </li></ul><p> I know that this probably won't be too high on your todo list, however it'd be great to have. </p> evilissimo@… https://svn.boost.org/trac10/ticket/9052 https://svn.boost.org/trac10/ticket/9052 Report #9051: jam build system refuses to work on windows, won't build on mingw-w64 Mon, 26 Aug 2013 18:30:09 GMT Sat, 05 Apr 2014 05:48:35 GMT <ul><li>batch files don't run for mingw-w64, they are only for MSVC++. </li></ul><ul><li>no Makefiles </li></ul><ul><li>Jam build system refuses to run on windows, the file extension is unrecognized, and no exe is provided for it to run like was previously the case. </li></ul><ul><li>windows 7 64-bit and mingw-w64+MSYS (gcc) is my platform. </li></ul><ul><li>I would give you the URL for the compilers, but this bug tracking system rejects them as spam, and there are numerous there, you want personal rubenvb 4.8 stdthread experimental. the x86_64 on the far left is the target processor, and the win32 or win64 on the right is the host (what you are running) </li></ul> jmichae3@… https://svn.boost.org/trac10/ticket/9051 https://svn.boost.org/trac10/ticket/9051 Report #9044: Enable constexpr for applicable operators. Sun, 25 Aug 2013 10:25:39 GMT Sun, 25 Aug 2013 10:25:39 GMT <p> Some operators, like the ones for comparison &amp; equality, generally don't require mutating operations for their work. That means those functions can be <code>constexpr</code> if they use a literal operand type and the base operators are themselves <code>constexpr</code>. </p> Daryle Walker https://svn.boost.org/trac10/ticket/9044 https://svn.boost.org/trac10/ticket/9044 Report #9043: Boost serialization version does not work on Windows Sat, 24 Aug 2013 14:30:18 GMT Mon, 03 Feb 2014 22:43:17 GMT <p> Have obtained latest version of boost and tried attached demo.cpp. I noticed that the output did not store or restore the driver name. This behaviour is the same as in the supplied example/demofile.txt and example/demo_output.txt which leads me to believe that this is not due to my system configuration. </p> <p> In VS2010 when I hover over BOOST_CLASS_VERSION it gives an error: </p> <p> ERROR: version is not a template </p> <p> but it appears to compile without error or a warning related to this. </p> <p> It appears the macro for defining versions of a class is not working, and so no classes are saving any data except for data associated with version 0, and also no data from any version other than zero will be read back in to any class either. </p> <p> I have compiled from source on ubuntu and my output is correct, both saving and loading driver names. </p> richard.stutt@… https://svn.boost.org/trac10/ticket/9043 https://svn.boost.org/trac10/ticket/9043 Report #9039: Boost.Bimap documentation misprint Fri, 23 Aug 2013 12:38:00 GMT Fri, 23 Aug 2013 12:38:00 GMT <p> <a href="http://www.boost.org/doc/libs/1_54_0/libs/bimap/doc/html/boost_bimap/the_tutorial/discovering_the_bimap_framework.html#boost_bimap.the_tutorial.discovering_the_bimap_framework.bimap_mapping_framework">http://www.boost.org/doc/libs/1_54_0/libs/bimap/doc/html/boost_bimap/the_tutorial/discovering_the_bimap_framework.html#boost_bimap.the_tutorial.discovering_the_bimap_framework.bimap_mapping_framework</a> </p> <p> I suppose there is a misprint in <strong>used</strong> word. </p> <p> Current: You have to <strong>used</strong> references to views, and not directly views object. Views cannot be constructed as separate objects from the container they belong to, so the following: </p> <p> Suggested: You have to <strong>use</strong> references to views, and not directly views object. Views cannot be constructed as separate objects from the container they belong to, so the following: </p> sarum9in@… https://svn.boost.org/trac10/ticket/9039 https://svn.boost.org/trac10/ticket/9039 Report #9038: [pool] Test cases need to link with boost_system DSO on Linux Thu, 22 Aug 2013 21:19:48 GMT Thu, 22 Aug 2013 21:19:48 GMT <p> Currently running the test suite for Boost.Pool gives me messages like the following: </p> <pre class="wiki">/home/petr/rpmbuild/BUILD/boost_1_53_0/tests-out/boost/bin.v2/libs/pool/test/test_simple_seg_storage.test/gcc-4.8.1/debug/test_simple_seg_storage.o: In function `__static_initialization_and_destruction_0': /home/petr/rpmbuild/BUILD/boost_1_53_0/libs/pool/test/../../../boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' /home/petr/rpmbuild/BUILD/boost_1_53_0/libs/pool/test/../../../boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' /home/petr/rpmbuild/BUILD/boost_1_53_0/libs/pool/test/../../../boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' </pre><p> I'm not sure whether Boost.Pool uses Boost.System directly, but on Linux, linking with Boost.System DSO is commonly needed also when one uses Boost.Thread header files. </p> <p> I'm attaching a patch that fixes the obvious cases. Unfortunately I don't know enough Jam magic to fix the valgrind invocations as well. </p> Petr Machata <pmachata@…> https://svn.boost.org/trac10/ticket/9038 https://svn.boost.org/trac10/ticket/9038 Report #9034: Timezone (%Q) is ignored in time_input_facet / local_time_input_facet Thu, 22 Aug 2013 12:19:17 GMT Thu, 22 Aug 2013 12:19:17 GMT <p> I'm trying to parse an extended ISO 8601 date-time string to ptime or local_time using the following code: </p> <pre class="wiki"> boost::local_time::wlocal_time_input_facet *inputFacet = new boost::local_time::wlocal_time_input_facet(); inputFacet-&gt;set_iso_extended_format(); std::wstringstream ss; ss.imbue(std::locale(ss.getloc(), inputFacet)); ss.str(inputString); boost::local_time::local_date_time time(boost::local_time::not_a_date_time); ss &gt;&gt; time; </pre><p> This works for "2013-08-20T17:14:21Z" or "2013-08-20T17:14:21", however it doesn't work as soon as I add a timezone to it, e.g. "2013-08-20T19:14:21+02" or "2013-08-20T19:14:21+02:00". As far as I can tell the error is because the timezone (%Q) is completely ignored in time_facet.hpp. </p> Maurice Gilden <MauriceG@…> https://svn.boost.org/trac10/ticket/9034 https://svn.boost.org/trac10/ticket/9034 Report #9033: Resource Leak in boost::filesystem in operation.cpp at resize_file_api() (Windows) Thu, 22 Aug 2013 10:48:48 GMT Fri, 08 Aug 2014 06:48:05 GMT <p> The function resize_file_api() in operations.cpp can lead to a resource leak. The responsible part of code is the following: </p> <pre class="wiki">return handle != INVALID_HANDLE_VALUE &amp;&amp; ::SetFilePointerEx(handle, sz, 0, FILE_BEGIN) &amp;&amp; ::SetEndOfFile(handle) &amp;&amp; ::CloseHandle(handle); </pre><p> If <a class="missing wiki">SetFilePointerEx</a>() or <a class="missing wiki">SetEndOfFile</a>() fail, the handle will not be closed. </p> anonymous https://svn.boost.org/trac10/ticket/9033 https://svn.boost.org/trac10/ticket/9033 Report #9032: Wrong Boost.Iterator permutation_iterator::base() description Thu, 22 Aug 2013 09:32:03 GMT Wed, 04 Sep 2013 06:37:31 GMT <p> <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/libs/iterator/doc/permutation_iterator_ref.rst"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk/libs/iterator/doc/permutation_iterator_ref.rst</a> says that return type of <code>permutation_iterator::base()</code> is <code>ElementIterator</code>, while it has to be <code>IndexIterator</code> (<a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/boost/iterator/permutation_iterator.hpp"><span class="icon">​</span>http://svn.boost.org/svn/boost/trunk/boost/iterator/permutation_iterator.hpp</a>). </p> Y. <yar444@…> https://svn.boost.org/trac10/ticket/9032 https://svn.boost.org/trac10/ticket/9032 Report #9021: Cannot export boost::iostreams::source implementation on MSVC Tue, 20 Aug 2013 20:03:29 GMT Tue, 20 Aug 2013 20:03:29 GMT <p> The following fails on MSVC 10 (VS2010) and MSVC 11 (VS2012) at least: </p> <blockquote> <p> #include &lt;boost/iostreams/concepts.hpp&gt; class <span class="underline">declspec(dllexport) mystream : public boost::iostreams::source {}; </span></p> </blockquote> <p> with the error: </p> <blockquote> <p> error C2338: (is_convertible&lt;Mode, two_sequence&gt;::value) </p> </blockquote> <p> in concepts.hpp line 47. The same think happens with a sink. Are custom sources and sinks not meant to be exported from a library? </p> mathstuf@… https://svn.boost.org/trac10/ticket/9021 https://svn.boost.org/trac10/ticket/9021 Report #9018: No cross-version constructor Tue, 20 Aug 2013 11:09:39 GMT Tue, 27 Aug 2013 10:35:27 GMT <p> I was writing a numeric class template, and it has constructor templates for cross-version conversion. When I tested with two <code>boost::rational</code> instantiations as the component types, the code calls <code>static_cast</code> at the component level, which fails since we never defined that between <code>rational</code> instantiations. (There's the <code>boost::rational_cast</code> function template, but that doesn't help in generic code.) Let's fix that. </p> <p> We could be fancy and add a non-explicit constructor template for when the component types are implicitly convertible, and an explicit version otherwise, but that would be rude to add C++11 features to a class that's otherwise C++98. Maybe we'll add it someday.... </p> Daryle Walker https://svn.boost.org/trac10/ticket/9018 https://svn.boost.org/trac10/ticket/9018 Report #9017: Support for std::numeric_traits Tue, 20 Aug 2013 10:47:48 GMT Thu, 05 Sep 2013 00:03:21 GMT <p> Although <code>boost::rational</code> uses <code>std::numeric_limits</code> in its implementation, it does not provide its own (partial) specialization of the standard class template. This means that generic numeric code cannot use <code>rational</code> in contexts that use the assistance of <code>numeric_limits</code>. </p> <p> This has been brought to my attention by Michael Olea in his message &lt;<a class="ext-link" href="http://lists.boost.org/boost-users/2013/08/79751.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2013/08/79751.php</a>&gt; to the Users' list. </p> Daryle Walker https://svn.boost.org/trac10/ticket/9017 https://svn.boost.org/trac10/ticket/9017 Report #9015: Ptree should have add_or_get Mon, 19 Aug 2013 13:24:25 GMT Fri, 23 Jan 2015 11:10:34 GMT <p> When using the method "..get" on a Ptree it is possible to retrieve the value of the key. When the key doesn't exits, the default value is used. Then the proper way should be that the default value will be added to the ptree. I don't know how other people think about it? Now you have to add another line to add it to the ptree. Maybe It can with a overloaded function, which has the option to add it to the ptree. </p> anonymous https://svn.boost.org/trac10/ticket/9015 https://svn.boost.org/trac10/ticket/9015 Report #9013: Create enum to make sign result more readable. Sun, 18 Aug 2013 16:28:55 GMT Sun, 18 Aug 2013 16:28:55 GMT <p> The function 'sign' return 1, 0 or -1 depending on the signal of the z, but comparing the result with -1, 0 or 1 constants could make the source code bad readable specially for people that doesn't know what the 'sign' function return. </p> <pre class="wiki">if (math::sign(value) == -1){ .... } </pre><p> I propose to create an enumerate type to test the result of the function with a constant, to create a more readable code. The compatibility with the previous implementation of the function is not broken. </p> <p> Suggested implementation of code: </p> <pre class="wiki">enum Sign { SIGN_NEGATIVE = -1, SIGN_ZERO = 0, SIGN_POSITIVE = 1 } template &lt;class T&gt; inline Sign sign BOOST_NO_MACRO_EXPAND(const T&amp; z) { return (z == 0) ? SIGN_ZERO : (boost::math::signbit)(z) ? SIGN_NEGATIVE : SIGN_POSITIVE; } </pre><p> The previous example comparison could be write as: </p> <pre class="wiki">if (math::sign(value) == math::SIGN_NEGATIVE){ .... } </pre> Joaquim Duran Comas <jduran.gm@…> https://svn.boost.org/trac10/ticket/9013 https://svn.boost.org/trac10/ticket/9013 Report #9006: read_xml segfaults if run from boost::asio::spawn Fri, 16 Aug 2013 14:11:29 GMT Fri, 16 Aug 2013 14:11:29 GMT <p> I've noticed that if read_xml is run through a boost::asio::spawn then read_xml encounters a segmentation violation. </p> <pre class="wiki">#include &lt;boost/property_tree/ptree.hpp&gt; #include &lt;iostream&gt; #include &lt;boost/property_tree/xml_parser.hpp&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/asio/spawn.hpp&gt; void read() { std::cout&lt;&lt;"starting read()"&lt;&lt;std::endl; std::string xml = R"phi(&lt;?xml version="1.0"?&gt; &lt;start&gt;&lt;/start&gt;)phi"; std::stringstream ss(std::move(xml)); boost::property_tree::ptree pt; boost::property_tree::read_xml(ss, pt); std::cout&lt;&lt;"ending read()"&lt;&lt;std::endl; } int main() { boost::asio::io_service ios; boost::asio::strand mystrand{ios}; read(); boost::asio::spawn(mystrand, [](boost::asio::yield_context){read();}); ios.run(); } </pre><p> The code above produces </p> <pre class="wiki">starting read() ending read() starting read() Segmentation fault </pre><p> Compiled with gcc-4.8.1 and clang-3.3 (release) on Suse Linux 11 x86_64. </p> Mátyás Végh <matyas.vegh@…> https://svn.boost.org/trac10/ticket/9006 https://svn.boost.org/trac10/ticket/9006 Report #9004: Minor corrections for boost.program_options documentation Fri, 16 Aug 2013 11:40:32 GMT Fri, 16 Aug 2013 11:40:32 GMT <p> Reading the library documentation I noted a few issues. </p> <p> <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/program_options/overview.html">http://www.boost.org/doc/libs/1_54_0/doc/html/program_options/overview.html</a> </p> <h2 class="section" id="SectionSyntacticInformation">Section "Syntactic Information"</h2> <p> Following the code snippet, the text describes four parameters. However the second option ("compression") is described as "the first option". </p> <p> Fixed text: "For the second option, the user must specify a value, using a single token." </p> <h2 class="section" id="Section:Descriptionformatting">Section: Description formatting</h2> <p> Current text: "compute the indentation for options's description" Fixed text: "compute the indentation for option's description" </p> <p> Current text: "Each of the paragraph is output" Fixed text: "Each of the paragraphs are output" or "Each paragraph is output" </p> <p> Current text: "Only one tabulator per paragraph is allowed, otherwisee an exception" Fixed text: "Only one tabulator per paragraph is allowed, otherwise an exception" </p> pfee@… https://svn.boost.org/trac10/ticket/9004 https://svn.boost.org/trac10/ticket/9004 Report #9002: boots::date_time::from_iso_string() accepts invalid time mark Fri, 16 Aug 2013 08:03:40 GMT Fri, 16 Aug 2013 08:03:40 GMT <p> Both from_iso_string() and time_from_string() allow time &gt; 23:59:59, e.g. they accept "2013-08-16 26:01:01" and do not throw. I find that is very strange and confusing, and that also breaks ISO 8601. I see that after parsing the rest of string to time_duration you do not check it to be in valid range [ 0, 24:00:00 ), may be you should? Thank you </p> Alexey Pavlyutkin <alexey.pavlyutkin@…> https://svn.boost.org/trac10/ticket/9002 https://svn.boost.org/trac10/ticket/9002 Report #8989: asio::ip namespace issues, and proposed solution Fri, 09 Aug 2013 15:22:47 GMT Sat, 10 Aug 2013 07:24:49 GMT <p> Given an <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/InternetProtocol.html">InternetProtocol</a> (usually <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/ip__tcp.html">ip::tcp</a>), there's no generic way to get access to these classes: </p> <pre class="wiki">class boost::asio::ip::address_v4; class boost::asio::ip::address_v6; </pre><p> The reason is that boost::tcp::ip is a namespace and not a type. </p> <p> I propose adding these to the requirements for <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/InternetProtocol.html">InternetProtocol</a>: </p> <pre class="wiki">X::address_v4, return type boost::asio::ip::address_v4 X::address_v6, return type boost::asio::ip::address_v6 </pre><p> This would enable template classes parameterized on <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/InternetProtocol.html">InternetProtocol</a> to be able to choose an address type. For example: </p> <pre class="wiki">template &lt;typename InternetProtcol&gt; struct Details { typedef InternetProtocol protocol_type; typedef protocol_type::endpoint endpoint_type; // Good, with this proposal typedef protocol_type::address_v4 address_v4; endpoint_type get_endpoint () { return endpoint_type (address_v4::any (), 1053); } // Bad, the only current solution typedef boost::asio::ip::address_v4 address_v4; endpoint_type get_endpoint_bad () { return endpoint_type (address_v4::any (), 1053); } }; </pre> vinnie.falco@… https://svn.boost.org/trac10/ticket/8989 https://svn.boost.org/trac10/ticket/8989 Report #8985: More -Wunused-local-typedef warnings when building Boost 1.54.0 with gcc 4.8.1 Thu, 08 Aug 2013 23:10:20 GMT Thu, 08 Aug 2013 23:10:20 GMT <p> These are the unused-local-typedef warnings specific to Boost.Python: </p> <p> ./boost/python/cast.hpp:73:20: warning: typedef ‘must_be_a_complete_type’ locally defined but not used [-Wunused-local-typedefs] </p> <blockquote> <p> typedef char must_be_a_complete_type[sizeof(T)]; </p> </blockquote> <p> ./boost/python/object/pickle_support.hpp:110:31: warning: typedef ‘error_type’ locally defined but not used [-Wunused-local-typedefs] </p> <blockquote> <p> Class_&gt;::error_type error_type; </p> </blockquote> <p> ./boost/python/make_function.hpp:58:32: warning: typedef ‘assertion’ locally defined but not used [-Wunused-local-typedefs] </p> <blockquote class="citation"> <p> ::too_many_keywords assertion; </p> </blockquote> lcarreon@… https://svn.boost.org/trac10/ticket/8985 https://svn.boost.org/trac10/ticket/8985 Report #8982: More -Wunused-local-typedef warnings when building Boost 1.54.0 with gcc 4.8.1 Thu, 08 Aug 2013 22:30:56 GMT Thu, 08 Aug 2013 22:30:56 GMT <p> These are the unused-local-typedef warnings specific to Boost.Xpressive: </p> <p> ./boost/xpressive/regex_algorithms.hpp:306:57: warning: typedef ‘char_type’ locally defined but not used [-Wunused-local-typedefs] </p> <blockquote> <p> typedef typename iterator_value&lt;<a class="missing wiki">BidiIter</a>&gt;::type char_type; </p> </blockquote> <p> ./boost/xpressive/detail/dynamic/parser.hpp:331:53: warning: typedef ‘char_type’ locally defined but not used [-Wunused-local-typedefs] </p> <blockquote> <p> typedef typename iterator_value&lt;<a class="missing wiki">BidiIter</a>&gt;::type char_type; </p> </blockquote> lcarreon@… https://svn.boost.org/trac10/ticket/8982 https://svn.boost.org/trac10/ticket/8982 Report #8978: Segfault crash in boost.python with keyword arguments and overloads. Thu, 08 Aug 2013 18:28:09 GMT Thu, 08 Aug 2013 18:32:27 GMT <p> Please see the thread on the python c++ sig email list here (lacking protocol prefix to pass spam check): mail.python.org/pipermail/cplusplus-sig/2013-August/017012.html </p> <p> Here is a minimal repro case: </p> <hr /> <p> <em> C++ #include &lt;boost/python.hpp&gt; </em></p> <p> static void f1(int a0, int a1) { } static void f2(int a0, int a1, int a2) { } </p> <p> BOOST_PYTHON_MODULE(kwargCrash) { </p> <blockquote> <p> boost::python::def("f", f1, (arg("a1")=2)); boost::python::def("f", f2, (arg("a2")=2)); </p> </blockquote> <p> } </p> <p> # Python import kwargCrash kwargCrash.f(0, a1=2) </p> <hr /> <p> Version found info: boost 1.51.0, Python 2.7.5, gcc 4.8.1. </p> <p> Please see the list thread linked above for a detailed explanation of why the crash occurs. In short, boost.python calls PyTuple_GET_ITEM() on None, and then unconditionally uses the result as a key to look up in a dict. This boost.python code hasn't changed in a long time. I suspect Python has changed, and is now returning NULL here instead of None, and calling PyDict_GetItem with NULL crashes. </p> <p> Here is a patch to the boost.python code that fixes the bug. It simply checks to see if it got None from the m_arg_names tuple, and if so, that means the overload does not accept a keyword arg in that position, so it rejects the overload. This fixes the crash and works correctly across our codebase and testsuite. </p> <p> If the patch looks good, it would be great to apply it and add the repro case to the test suite. </p> <p> Thanks! </p> <p> --- ./libs/python/src/object/function.cpp.orig 2013-07-22 17:38:54.000000000 -0700 +++ ./libs/python/src/object/function.cpp 2013-08-07 10:25:26.963988000 -0700 @@ -182,6 +182,16 @@ </p> <blockquote> <p> <em> Get the keyword[, value pair] corresponding <a class="missing wiki">PyObject</a>* kv = PyTuple_GET_ITEM(f-&gt;m_arg_names.ptr(), arg_pos); </em></p> </blockquote> <p> + <em> If kv is None, this overload does not accept a + </em> keyword argument in this position, meaning that + <em> the caller did not supply enough positional + </em> arguments. Reject the overload. + if (kv == Py_None) { + PyErr_Clear(); + inner_args = handle&lt;&gt;(); + break; + } + </p> <blockquote> <p> <em> If there were any keyword arguments, </em> look up the one we need for this <em> argument position </em></p> </blockquote> amohr@… https://svn.boost.org/trac10/ticket/8978 https://svn.boost.org/trac10/ticket/8978 Report #8975: Throw exception on allocation failure in cpp_regex_traits::value Thu, 08 Aug 2013 13:08:36 GMT Thu, 08 Aug 2013 13:08:36 GMT <p> Sorry, I'm testing the correct handling of allocation failures currently. </p> <p> STL streams have the annoying property, that they do not throw exceptions on allocation failures (std::bad_alloc). This can be changed by calling basic_stringstream::exceptions(std::ios::badbit). This is not done in cpp_regex_traits.hpp line 565, causing, in my case, a unrelated exception (invalid quantifier). </p> <p> See also <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8966" title="#8966: Bugs: No exception thrown (e.g. std::bad_alloc) on allocation failure in ... (closed: fixed)">#8966</a> for the same thing in lexical_cast. </p> Martin <martin.raiber@…> https://svn.boost.org/trac10/ticket/8975 https://svn.boost.org/trac10/ticket/8975 Report #8972: Doxygen \sa see also links are not passed to Quickbook C++ reference section. Tue, 06 Aug 2013 14:14:15 GMT Tue, 06 Aug 2013 14:14:15 GMT <p> A Doxygen 'see also' item, for example, to a known function </p> <p> \sa sum(int, int) for a slightly useful function. </p> <p> produces a Quickbook item </p> <p> See also </p> <p> sum(int, int) for a slightly useful function. </p> <p> but the sum(int, int) is not the expected link (as in the Doxygen display). </p> <p> Similarly for all other links that Doxygen will produce an autolink for. </p> <p> It would be very nice to allow users to click to go straight to the 'See Also' item. </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/8972 https://svn.boost.org/trac10/ticket/8972 Report #8971: -Wunused-local-typedefs warnings with GCC 4.8.1 Tue, 06 Aug 2013 11:41:53 GMT Sat, 07 Dec 2013 11:25:23 GMT <p> I'm getting many warnings "-Wunused-local-typedefs" when compiling with GCC 4.8.1 using the latest Boost SVN sources: </p> <pre class="wiki">/mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp: In static member function ‘static void boost::multi_array_concepts::detail::idgen_helper&lt;N&gt;::call(Array&amp;, const IdxGen&amp;, Call_Type)’: /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp:42:43: warning: typedef ‘index_range’ locally defined but not used [-Wunused-local-typedefs] typedef typename Array::index_range index_range; ^ /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp:43:37: warning: typedef ‘index’ locally defined but not used [-Wunused-local-typedefs] typedef typename Array::index index; ^ /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp: In static member function ‘static void boost::multi_array_concepts::detail::idgen_helper&lt;0ul&gt;::call(Array&amp;, const IdxGen&amp;, Call_Type)’: /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp:53:43: warning: typedef ‘index_range’ locally defined but not used [-Wunused-local-typedefs] typedef typename Array::index_range index_range; ^ /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array/concept_checks.hpp:54:37: warning: typedef ‘index’ locally defined but not used [-Wunused-local-typedefs] typedef typename Array::index index; </pre><p> and </p> <pre class="wiki">/mn/anatu/cma-u3/tmac/usr/include/boost/tuple/detail/tuple_basic.hpp: In function ‘typename boost::tuples::access_traits&lt;typename boost::tuples::element&lt;N, boost::tuples::cons&lt;HT, TT&gt; &gt;::type&gt;::const_type boost::tuples::get(const boost::tuples::cons&lt;HT, TT&gt;&amp;)’: /mn/anatu/cma-u3/tmac/usr/include/boost/tuple/detail/tuple_basic.hpp:228:45: warning: typedef ‘cons_element’ locally defined but not used [-Wunused-local-typedefs] typedef BOOST_DEDUCED_TYPENAME impl::type cons_element; </pre><p> and </p> <pre class="wiki">/mn/anatu/cma-u3/tmac/usr/include/boost/bind/arg.hpp: In constructor ‘boost::arg&lt;I&gt;::arg(const T&amp;)’: /mn/anatu/cma-u3/tmac/usr/include/boost/bind/arg.hpp:37:22: warning: typedef ‘T_must_be_placeholder’ locally defined but not used [-Wunused-local-typedefs] typedef char T_must_be_placeholder[ I == is_placeholder&lt;T&gt;::value? 1: -1 ]; </pre> Torquil Sørensen <torquil@…> https://svn.boost.org/trac10/ticket/8971 https://svn.boost.org/trac10/ticket/8971 Report #8964: operator>> missing Sun, 04 Aug 2013 20:46:36 GMT Sun, 13 Apr 2014 19:48:21 GMT <p> boost/units/io.hpp defines operator&lt;&lt; but not operator&gt;&gt;. </p> <p> As a result, dimensionful quantities can be written but not read. This is a serious problem. </p> <p> Why would I want to use Boost::Units in the first place? Because I'd like to enter dimensionful quantities into my program, then do some calculations, and have it output dimensionful quantities. </p> <p> The latter (i.e. output) works. But the former (i.e. input) is restricted to hardcoded parameters in my source file. If I move the data to a config file and try to read it, I face the problem that there is no operator&gt;&gt;. </p> pipping@… https://svn.boost.org/trac10/ticket/8964 https://svn.boost.org/trac10/ticket/8964 Report #8962: adjacency_list doesn't work with hash_setS Sun, 04 Aug 2013 00:44:16 GMT Wed, 02 Oct 2013 19:15:22 GMT <p> When compiling under Clang (3.3 final), the following code results in a compile error due to template lookup failure. It compiles cleanly under G++ 4.8. Replacing hash_setS with setS allows the code to compile. </p> <pre class="wiki">#include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;iostream&gt; int main(int argc, char* argv[]) { typedef boost::adjacency_list&lt;boost::hash_setS, boost::vecS, boost::undirectedS &gt; undirectedGraphT; undirectedGraphT G; boost::add_edge(1, 2, G); typedef boost::graph_traits &lt;undirectedGraphT&gt;::edge_descriptor Edge; Edge e; bool hasEdge{false}; std::tie(e, hasEdge) = boost::edge(1, 2, G); std::cout &lt;&lt; (hasEdge ? "did " : "did not ") &lt;&lt; "find edge\n"; } </pre> Rob Patro <rob.patro@…> https://svn.boost.org/trac10/ticket/8962 https://svn.boost.org/trac10/ticket/8962 Report #8954: clang static analyser undefined value in boost/libs/filesystem/src/unique_path.cpp Thu, 01 Aug 2013 23:31:21 GMT Mon, 28 Jul 2014 10:23:18 GMT <p> Assigned value is garbage or undefined at line 131. </p> <p> Please <a class="ext-link" href="https://ci.nedprod.com/job/Boost.AFIO%20Static%20Analysis%20Pre-Check/112/clangScanBuildBugs/"><span class="icon">​</span>https://ci.nedprod.com/job/Boost.AFIO%20Static%20Analysis%20Pre-Check/112/clangScanBuildBugs/</a>? for more detail. </p> Niall Douglas https://svn.boost.org/trac10/ticket/8954 https://svn.boost.org/trac10/ticket/8954 Report #8952: numeric::interval::nth_root generates empty interval Thu, 01 Aug 2013 23:03:08 GMT Thu, 01 Aug 2013 23:03:08 GMT <p> The attached code generates an empty interval when compiling to a 32 bits binary (i.e. passing the "-m32" flag to gcc) on a 64 bit machine (running Mac OS X). </p> <p> It works correctly when compiled to a 64 bits binary (i.e. omitting -m32). </p> marco.v.correia@… https://svn.boost.org/trac10/ticket/8952 https://svn.boost.org/trac10/ticket/8952 Report #8951: Duplicate name of actual target: <pstage-gcc\lib>libboost_exception-mgw47-d-1_54.a Thu, 01 Aug 2013 19:24:43 GMT Thu, 01 Aug 2013 20:36:55 GMT <p> Hi, </p> <p> I'm trying to build the boost library and I always get the error mentioned in the title. </p> <p> First, I tried to build it with the default toolset which was Visual Studio and it worked but I cannot make it work with mingw gcc on Windows. I've followed the instructions on page <a href="http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#install-boost-build">http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#install-boost-build</a>. </p> <p> Thanks </p> houdelou@… https://svn.boost.org/trac10/ticket/8951 https://svn.boost.org/trac10/ticket/8951 Report #8948: iostreams::filtering_stream<outout>::sync does not exist Wed, 31 Jul 2013 17:17:00 GMT Sat, 03 Aug 2013 16:30:39 GMT <p> The documentation here: </p> <p> <a href="http://www.boost.org/doc/libs/1_54_0/libs/iostreams/doc/classes/filtering_stream.html#sync">http://www.boost.org/doc/libs/1_54_0/libs/iostreams/doc/classes/filtering_stream.html#sync</a> </p> <p> claims it should exist; however, the attached code shows it only exists for filtering_stream&lt;input&gt;. </p> <p> This missing member function was mentioned in another ticket: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/4590"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/4590</a> </p> <p> but that one did not request the documentation be changed. </p> cppljevans https://svn.boost.org/trac10/ticket/8948 https://svn.boost.org/trac10/ticket/8948 Report #8946: filesystem::directory_iterator returns incorrect listing Wed, 31 Jul 2013 09:07:41 GMT Wed, 07 Aug 2013 08:26:09 GMT <p> Both <strong>directory_iterator</strong> and <strong>recursive_directory_iterator</strong> do not work correctly under linux with g++-4.7.3 : one item, assumed to be the last one, is not listed. </p> <p> Simple code to reproduce the problem : </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;boost/filesystem.hpp&gt; using namespace std; namespace bfs = boost::filesystem; int main () { system("mkdir mydir"); system("touch mydir/file1"); system("touch mydir/file2"); bfs::directory_iterator bfs_dir_i_end; bfs::directory_iterator bfs_dir_i("mydir/."); while (++bfs_dir_i != bfs_dir_i_end) { bfs::file_type type = (*bfs_dir_i).status().type(); bfs::path source = (*bfs_dir_i).path(); cout &lt;&lt; source &lt;&lt; " " &lt;&lt; type &lt;&lt; endl; } } </pre><p> Build with : </p> <pre class="wiki">g++-4.7.3 -I/usr/include/crypto++ -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 show_bug_directory_iterator.cpp g++-4.7.3 -lboost_filesystem -o show_bug_directory_iterator show_bug_directory_iterator.o </pre><p> Code result : </p> <pre class="wiki">$ ./show_bug_directory_iterator "mydir/./file1" 2 </pre><p> Should be : </p> <pre class="wiki">$ ./show_bug_directory_iterator "mydir/./file1" 2 "mydir/./file2" 2 </pre><p> Shell result : </p> <pre class="wiki">$ ls -lR . .: total 1620 drwxr-xr-x 2 alain alain 4096 31 juil. 10:48 mydir -rwxr-xr-x 1 alain alain 639766 31 juil. 10:48 show_bug_directory_iterator -rw-r--r-- 1 alain alain 497 31 juil. 10:44 show_bug_directory_iterator.cpp -rw-r--r-- 1 alain alain 1006376 31 juil. 10:48 show_bug_directory_iterator.o ./mydir: total 0 -rw-r--r-- 1 alain alain 0 31 juil. 10:48 file1 -rw-r--r-- 1 alain alain 0 31 juil. 10:48 file2 </pre><p> Notes : </p> <blockquote> <p> 1) Not tested under other gcc versions. </p> </blockquote> <blockquote> <p> 2) Tested with same results on Boost 1.52.0 and 1.53.0 </p> </blockquote> <blockquote> <p> 3) suspected regression, cf <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/257"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/257</a> </p> </blockquote> l.alebarde@… https://svn.boost.org/trac10/ticket/8946 https://svn.boost.org/trac10/ticket/8946 Report #8945: managed_shared_memory::find assertion Wed, 31 Jul 2013 08:57:00 GMT Fri, 12 Feb 2016 05:32:15 GMT <p> Hi, </p> <p> I am using ubuntu 13.04 and the compilator is : g++ (<a class="missing wiki">Ubuntu/Linaro</a> 4.6.3-1ubuntu5) 4.6.3 I have an application which successfully opened a shared memory (I checked with another client). The problem is, when a client of this shared memory tried to connect, the managed_shared_memory::find is blocking or throw the following error message (I don't know what cause my program to have one of this error rather than the other) : </p> <p> <em>mosaique: /usr/local/include/boost/interprocess/segment_manager.hpp:871: void* boost::interprocess::segment_manager::priv_generic_find(const CharT*, <a class="missing wiki">IndexType</a> &gt;&amp;, boost::interprocess::ipcdetail::in_place_interface&amp;, boost::interprocess::segment_manager::size_type&amp;, boost::interprocess::ipcdetail::true_, bool) [with CharT = char, <a class="missing wiki">CharType</a> = char, <a class="missing wiki">MemoryAlgorithm</a> = boost::interprocess::rbtree_best_fit, <a class="missing wiki">IndexType</a> = boost::interprocess::iset_index, boost::interprocess::segment_manager::size_type = long unsigned int, boost::interprocess::ipcdetail::true_ = boost::interprocess::ipcdetail::bool_]: Assertion `(ctrl_data-&gt;m_value_bytes % table.size) == 0' failed. Aborted (core dumped)</em> </p> <p> The size of my shared memory is : 9 953 280 Please help me fix this bug. </p> <p> The sources : The server is managed in the main_shm_server.cpp file The buggy client is main_mosaique.cpp It use the class SHMClient which is where the problem occur. The strange thing is when I use the same class with the same constructor parameter in another program, it is working. </p> bersac_1@… https://svn.boost.org/trac10/ticket/8945 https://svn.boost.org/trac10/ticket/8945 Report #8939: boot filesystem error when copy-overwrite-the file to itself Tue, 30 Jul 2013 15:35:20 GMT Tue, 30 Jul 2013 15:52:40 GMT <p> I'm running <a class="missing wiki">RedHat</a>. I tried to copy, and overwrite if existing file 'a' to itself. </p> <p> namespace fs=boost::filesystem; fs::copyfile('a', 'a', fs::copy_option::overwrite_if_exist); </p> <p> This clear the content of 'a', and giving me an empty file. </p> hoangtrongminhtuan@… https://svn.boost.org/trac10/ticket/8939 https://svn.boost.org/trac10/ticket/8939 Report #8937: boost::asio::ip::tcp 5000ms stall Mon, 29 Jul 2013 17:50:16 GMT Tue, 24 Sep 2013 18:18:06 GMT <p> Under certain circumstances, the boost::asio::ip::tcp module exhibits a, with a bit of patience, reproducible behavior of every now and then stalling for quite exactly 5000ms. </p> <p> On May 02, 2011, a discussion about this was started by Torben Wiggerich on the Boost Mailing List: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/asio-Randomly-having-problems-reading-from-the-socket-td3490016.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/asio-Randomly-having-problems-reading-from-the-socket-td3490016.html</a> </p> <p> On May 09, 2011, a traffic dump was requested by Cliff Green. </p> <p> I ran into the problem some time later and posted a traffic dump on Apr 02, 2012. No one has replied since. </p> <p> Today, I tested whether the issue still persists with </p> <p> Boost 1.49.0 Boost 1.53.0 Boost 1.54.0 </p> <p> and it still occurs with all of them. </p> <p> For the CPU I used an Intel Core2 Duo P7350 @ 2.0 GHz, because this bug is only reproducible in a reasonable time frame (under 1 hour) on a sufficiently slow computer. Back then I used an Athlon X2 4400+. An i7 will be too fast to show this behavior reliably, or in a reasonable amount of time, or maybe even ever. </p> <p> The operating system used was Windows 7 x64 SP1. </p> <p> The compiler used was Visual Studio 2008 SP1 x86 + all updates from Windows Update. </p> <p> I attached a Repro Case based on the code posted by Torben in the Thread. With this, on the Core2Duo I used, the behavior was repeatedly observable in under an hour of Server + Client running. </p> Florian George <fgeorge@…> https://svn.boost.org/trac10/ticket/8937 https://svn.boost.org/trac10/ticket/8937 Report #8936: month_iterator snaps-to-end when starting on the last day of a 30 day month Mon, 29 Jul 2013 17:31:03 GMT Sat, 03 Aug 2013 16:34:26 GMT <p> I am using the month_iterator to iterate months, the snap-to-end works fine when I start on a month with 31 days, however if my start date is 2013-11-30 for example, when I iterate forward a month this becomes 2013-12-31. This is not what I expect as I never started on 31 and so it should go to 2013-12-30. </p> <p> I am using boost 1.47, are you aware of this behavior and has it been resolved in a later version? </p> <p> Thanks </p> kieran.jeffrey-smart@… https://svn.boost.org/trac10/ticket/8936 https://svn.boost.org/trac10/ticket/8936 Report #8934: b2 : failed to write output file Sun, 28 Jul 2013 12:06:27 GMT Thu, 13 Mar 2014 00:50:17 GMT <p> Hello, </p> <p> Executing b2.exe within cmd.exe or powershell : </p> <p> and </p> <p> Building boost_1_54_0 with : </p> <p> b2 --debug-building --prefix=%USERPROFILE%\pkg\indie\boost address-model=64 --exec-prefix=%USERPROFILE%\programs\boost --libdir=%USERPROFILE%\pkg\lib --includedir=%USERPROFILE%\pkg\include --build-type=complete --build-dir=..\tmp pch=off debug-symbols=on debug-store=database install 2&gt;&amp;1 &gt;&gt; ..\boostbuild.txt </p> <p> results in an error : </p> <p> failed to write output file '..\tmp\boost\bin.v2\libs\program_options\build\msvc-11.0\release\address-model-64\debug-store-database\debug-symbols-on\link-static\pch-off\runtime-link-static\threading-multi\libboost_program_options-vc110-mt-s-1_54.lib.rsp'! </p> <p> My initial thoughts path name is it approaching the MAX_PATH, so I tried redirecting echo to the name file within cmd.exe; it resulted in The system cannot find the path specified. </p> <p> In powershell, echo redirection was successful but the build still failed at the same point. </p> <p> The full path length is 246 : python -c "print(len(r'C:\Users\Arkhe_2\pkg\src\tmp\boost\bin.v2\libs\program_options\build\msvc-11.0\release\address-model-64\debug-store-database\debug-symbols-on\link-static\pch-off\runtime-link-static\threading-multi\libboost_program_options-vc110-mt-s-1_54.lib.rsp'))" </p> <p> File system is NTFS located on a usb interconnected hard drive. </p> <p> Thanks for the great work. </p> jeffrey.beu.uz8yz6yl@… https://svn.boost.org/trac10/ticket/8934 https://svn.boost.org/trac10/ticket/8934 Report #8928: Build failed boost 1.54 on Mac with zlib source (-sZLIB_SOURCE) with clang and c++11 Thu, 25 Jul 2013 15:21:28 GMT Thu, 25 Jul 2013 15:25:17 GMT <p> build fail where compile zlib source in build.v2/standalone/zlib. It is because cxxflags are provided even if compile c source code by clang++ -x c. </p> <pre class="wiki"> "clang++" -x c -O3 -fPIC -std=c++11 -stdlib=libc++ -O3 -finline-functions -Wno-inline -Wall -DNDEBUG -I"/opt/work/zlib-1.2.8" -c -o "bin.v2/standalone/zlib/clang-darwin-4.2.1/release/link-static/threading-multi/adler32.o" "/opt/work/zlib-1.2.8/adler32.c" error: invalid argument '-std=c++11' not allowed with 'C/ObjC' </pre><pre class="wiki">./b2 -d2 -sZLIB_SOURCE=/opt/work/zlib-1.2.8 link=shared,static toolset=clang cxxflags=-std=c++11 cxxflags=-stdlib=libc++ cxxflags=-fPIC cxxflags="-arch x86_64" linkflags=-stdlib=libc++ linkflags=-headerpad_max_install_names linkflags="-arch x86_64" </pre><pre class="wiki">Mac OS X 10.8.4 % clang --version Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.4.0 Thread model: posix </pre> Tetsuya Hayashi <tetsu.h@…> https://svn.boost.org/trac10/ticket/8928 https://svn.boost.org/trac10/ticket/8928 Report #8926: Windows error messages used for errno codes Thu, 25 Jul 2013 08:10:06 GMT Tue, 17 Sep 2013 10:04:08 GMT <p> Consider the following: </p> <pre class="wiki">using namespace boost::system; system_error e(errc::resource_unavailable_try_again, system_category()); std::cout &lt;&lt; e.what() &lt;&lt; std::endl; </pre><p> This should print something along the lines of "Resource unavailable", but instead it prints "An attempt was made to load a program with an incorrect format". </p> <p> The value of <code>errc::resource_unavailable_try_again</code> is 11, or <code>EAGAIN</code>. What is printed, however, is the message for the Windows system error code <code>ERROR_BAD_FORMAT</code>, which is also 11. </p> <p> I encountered this while using boost::thread. I got the above message when I ran out of memory during thread creation. </p> Lars T. Kyllingstad <lars.kyllingstad@…> https://svn.boost.org/trac10/ticket/8926 https://svn.boost.org/trac10/ticket/8926 Report #8923: boost/detail/lightweight_thread.hpp: Ignores failures from WaitForSingleObject Thu, 25 Jul 2013 05:46:26 GMT Tue, 16 Sep 2014 05:46:03 GMT <p> boost/detail/lightweight_thread.hpp ignores failures from <a class="missing wiki">WaitForSingleObject</a>. There's not much point in closing the handle if the wait failed due to ERROR_INVALID_HANDLE. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8923 https://svn.boost.org/trac10/ticket/8923 Report #8922: boost/asio/detail/wince_thread.hpp: Ignores failures from WaitForSingleObject Thu, 25 Jul 2013 05:44:10 GMT Thu, 25 Jul 2013 05:44:10 GMT <p> boost/asio/detail/wince_thread.hpp ignores failures from <a class="missing wiki">WaitForSingleObject</a>. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8922 https://svn.boost.org/trac10/ticket/8922 Report #8921: boost/asio/detail/win_event.hpp: Ignores failures from WaitForSingleObject Thu, 25 Jul 2013 05:42:53 GMT Thu, 25 Jul 2013 05:42:53 GMT <p> boost/asio/detail/win_event.hpp ignores failures from <a class="missing wiki">WaitForSingleObject</a>. There's not much point in locking if the wait failed since your not in an expected state. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8921 https://svn.boost.org/trac10/ticket/8921 Report #8920: boost/asio/detail/impl/win_thread.ipp: Ignores failures from WaitForSingleObject and WaitForMultipleObjects Thu, 25 Jul 2013 05:40:28 GMT Thu, 25 Jul 2013 05:40:28 GMT <p> boost/asio/detail/impl/win_thread.ipp ignores failures from <a class="missing wiki">WaitForSingleObject</a> and <a class="missing wiki">WaitForMultipleObjects</a>. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8920 https://svn.boost.org/trac10/ticket/8920 Report #8919: boost/asio/detail/impl/win_static_mutex.ipp: Ignores failures from WaitForSingleObject Thu, 25 Jul 2013 05:38:09 GMT Thu, 25 Jul 2013 05:38:09 GMT <p> boost/asio/detail/impl/win_static_mutex.ipp ignores failures from <a class="missing wiki">WaitForSingleObject</a>. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8919 https://svn.boost.org/trac10/ticket/8919 Report #8918: boost/asio/detail/impl/win_iocp_io_service.ipp: Ignores failures from WaitForSingleObject Thu, 25 Jul 2013 05:33:06 GMT Thu, 25 Jul 2013 05:33:06 GMT <p> boost/asio/detail/impl/win_iocp_io_service.ipp ignores failures from <a class="missing wiki">WaitForSingleObject</a>. There's not much point in looping if its just going to fail again. </p> <p> At minimum (as a user), I would expect Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8918 https://svn.boost.org/trac10/ticket/8918 Report #8913: boost/asio/detail/posix_static_mutex.hpp: Ignores all failures from pthread_* functions Thu, 25 Jul 2013 04:25:37 GMT Thu, 25 Jul 2013 04:25:37 GMT <p> boost/asio/detail/posix_static_mutex.hpp ignores nearly all failures from pthread_* functions. Functions include pthread_mutex_lock and pthread_mutex_unlock. </p> <p> A lock failure is usually a bad thing, and I can't come up with scenarios where a silent failure is desired. It will make a bad problem worse by corrupting data or terminating the program. </p> <p> At minimum (as a user), I would expect for Boost to use BOOST_ASSERT in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds. </p> <p> Perhaps it would be a good idea to use boost/thread/pthread/mutex.hpp. It appears to be more mature and have a bit more stability. In addition, it throws lock exceptions where appropriate. </p> Jeffrey Walton <noloader@…> https://svn.boost.org/trac10/ticket/8913 https://svn.boost.org/trac10/ticket/8913 Report #8893: Documentation Error Wed, 24 Jul 2013 09:38:17 GMT Sun, 04 Aug 2013 07:55:17 GMT <p> Hello, </p> <p> Sorry for making a ticket here, I didn't know where to report this. Please forward to the right people. </p> <p> There's an error in the solution (code) proposed here: </p> <p> <a href="http://www.boost.org/doc/libs/1_54_0/doc/html/signals/s04.html">http://www.boost.org/doc/libs/1_54_0/doc/html/signals/s04.html</a> </p> <p> Towards the end of the code: <em> Restore the macro definition of "signals", as it was </em> defined by Qt's &lt;qobjectdefs.h&gt;. # define signals protected </p> <p> that #define statement should be changed to </p> <p> # define signals public </p> <p> Otherwise, it works on GCC, but does not work on Visual C++, as VC++ compiler will produce a different symbol (after name mangling), and the linker will report errors </p> <p> Otherwise, the solution works great. Thanks a million for having it! </p> <p> If you need to get a hold of me, you can reach me at pm@… </p> <p> Pawel Mroszczyk </p> anonymous https://svn.boost.org/trac10/ticket/8893 https://svn.boost.org/trac10/ticket/8893 Report #8889: Boost.Build MSVC fix building PDBs Tue, 23 Jul 2013 15:03:50 GMT Tue, 23 Jul 2013 15:03:50 GMT <p> Currently emitting debug information to PDBs works with a rather limited set of conditions only. Most importantly, static libs can't be compiled if debug-store=database is requested. The attached patch rectifies this deficiency. </p> <p> The hardest part was to get around problems with precompiled headers. I got it eventually. </p> <p> What's still missing: </p> <ul><li>port the changes over to msvc.py. Python is completely out of my knowledge domain so I decided to stay away from this file. </li><li>No matter what I tried, I found no way to move the generated PDBs from the build directories to the output directory alongside the libraries. </li></ul> Daniela Engert <dani@…> https://svn.boost.org/trac10/ticket/8889 https://svn.boost.org/trac10/ticket/8889 Report #8888: [python] GCC 4.8+ warns about unused local typedef Tue, 23 Jul 2013 14:31:41 GMT Wed, 29 Apr 2015 11:34:30 GMT <p> During the build of Boost, GCC warns about several unused typedefs in Boost.Python. There are many of these that seem like they should be converted to BOOST_STATIC_ASSERT, like this one for example. </p> <pre class="wiki">./boost/python/cast.hpp:73:20: warning: typedef 'must_be_a_complete_type' locally defined but not used [-Wunused-local-typedefs] typedef char must_be_a_complete_type[sizeof(T)]; </pre><p> There's at least one other instance of this problem that I know of. Shall I prepare a patch for this, or is this undesirable for some reason? </p> <p> In the mean time, I'm attaching a patch for another one. </p> Petr Machata <pmachata@…> https://svn.boost.org/trac10/ticket/8888 https://svn.boost.org/trac10/ticket/8888 Report #8886: boost::posix_time::time_from_string has no parameter for ymd order Tue, 23 Jul 2013 12:20:16 GMT Tue, 23 Jul 2013 12:20:16 GMT <p> Function boost::posix_time::time_from_string(const std::string&amp; s) calls parse_date and parse_delimited_time_duration for two parts of datetime string. Function parse_date(const std::string&amp; s, int order_spec = ymd_order_iso) has parameter for ymd order, but time_from_string hasn't. Therefore impossible to parse dates like "11.09.2001 08:46:26". </p> anonymous https://svn.boost.org/trac10/ticket/8886 https://svn.boost.org/trac10/ticket/8886 Report #8885: boost asio epoll reactor method "set_ready_events" not protected by lock Tue, 23 Jul 2013 09:59:10 GMT Tue, 23 Jul 2013 10:30:39 GMT <p> Suggested patch: Index: boost/asio/detail/epoll_reactor.hpp =================================================================== --- boost/asio/detail/epoll_reactor.hpp (Revision 85130) +++ boost/asio/detail/epoll_reactor.hpp (Arbeitskopie) @@ -64,7 +64,12 @@ </p> <blockquote> <p> bool shutdown_; </p> </blockquote> <p> </p> <blockquote> <p> BOOST_ASIO_DECL descriptor_state(); </p> </blockquote> <ul><li> void set_ready_events(uint32_t events) { task_result_ = events; } </li></ul><p> + + void set_ready_events(uint32_t events) { + mutex::scoped_lock lock(mutex_); + task_result_ = events; + } + </p> <blockquote> <p> BOOST_ASIO_DECL operation* perform_io(uint32_t events); BOOST_ASIO_DECL static void do_complete( </p> <blockquote> <p> io_service_impl* owner, operation* base, </p> </blockquote> </blockquote> carsten.becker@… https://svn.boost.org/trac10/ticket/8885 https://svn.boost.org/trac10/ticket/8885 Report #8884: boost asio in posix_event: lock release before condition signaled Tue, 23 Jul 2013 09:47:28 GMT Mon, 30 Jun 2014 14:34:51 GMT <p> valgrind drd warns about a possible race condition ... (possible patch:) </p> <p> Index: boost/asio/detail/posix_event.hpp =================================================================== --- boost/asio/detail/posix_event.hpp (Revision 85130) +++ boost/asio/detail/posix_event.hpp (Arbeitskopie) @@ -58,8 +58,8 @@ </p> <blockquote> <p> { </p> <blockquote> <p> BOOST_ASIO_ASSERT(lock.locked()); signalled_ = true; </p> </blockquote> </blockquote> <p> + ::pthread_cond_signal(&amp;cond_); <em> Ignore EINVAL. </em></p> <blockquote> <p> lock.unlock(); </p> </blockquote> <ul><li> ::pthread_cond_signal(&amp;cond_); <em> Ignore EINVAL. </em></li></ul><blockquote> <p> } </p> </blockquote> <p> </p> <blockquote> <p> <em> Reset the event. </em></p> </blockquote> carsten.becker@… https://svn.boost.org/trac10/ticket/8884 https://svn.boost.org/trac10/ticket/8884 Report #8871: [numeric] GCC 4.8+ warns about unused local typedef Mon, 22 Jul 2013 15:06:20 GMT Mon, 22 Jul 2013 15:06:20 GMT <p> As a side effect of running Boost.Math test suite, I found out that GCC warned about several unused typedefs. None of these appear to serve a purpose, so I propose to remove them. </p> Petr Machata <pmachata@…> https://svn.boost.org/trac10/ticket/8871 https://svn.boost.org/trac10/ticket/8871 Report #8867: Provide socket options for TCP keepalive configuring Sun, 21 Jul 2013 17:24:44 GMT Sun, 21 Jul 2013 17:24:44 GMT <p> Please, provide socket options in asio::ip::tcp to configure TCP keepalive behavior, like described in section 4.2 <a class="ext-link" href="http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/"><span class="icon">​</span>here</a>. E.g. the following typedefs will suffice: </p> <pre class="wiki">typedef boost::asio::detail::socket_option::integer&lt; SOL_TCP, TCP_KEEPIDLE &gt; keepalive_idle_time; typedef boost::asio::detail::socket_option::integer&lt; SOL_TCP, TCP_KEEPINTVL &gt; keepalive_interval; typedef boost::asio::detail::socket_option::integer&lt; SOL_TCP, TCP_KEEPCNT &gt; keepalive_probes; </pre> Andrey Semashev https://svn.boost.org/trac10/ticket/8867 https://svn.boost.org/trac10/ticket/8867 Report #8865: comparison of unsigned expression warning Sat, 20 Jul 2013 17:45:35 GMT Sat, 20 Jul 2013 17:45:35 GMT <p> Building with -Werror and -Wtype-limits gives this warning: </p> <pre class="wiki">boost/property_tree/detail/ptree_utils.hpp:76:13: warning: comparison of unsigned expression &lt; 0 is always false [-Wtype-limits] </pre> alex@… https://svn.boost.org/trac10/ticket/8865 https://svn.boost.org/trac10/ticket/8865 Report #8863: BOOST_ATTRIBUTE_NORETURN causes stack pointer corruption Fri, 19 Jul 2013 21:36:57 GMT Wed, 20 Apr 2016 07:15:52 GMT <p> Hello, i ran into a strange problem with a very small project of mine. Whenever an exception is thrown in a boost package using boost::throw_exception and my program terminates (no exceptions are beeing catched yet) i get a message box saying: </p> <blockquote> <p> Run-Time Check Failure <a class="missing ticket">#0</a> - The value of ESP was not properly saved across a function call ... </p> </blockquote> <p> I was able to track this down to the BOOST_ATTRIBUTE_NORETURN declaration of boost::throw_exception. When i remove this from a copy of this function, the problem disappears. </p> <p> I am compiling with the following settings: </p> <ul><li>Compiler: MS Visual Studio C++ 2010 Express </li><li>Multithreading: yes </li><li>Runtime-linking: static </li><li>Build-type: debug </li></ul><p> My minimal test-program looks like this: </p> <blockquote> <p> #include "boost/throw_exception.hpp" </p> </blockquote> <p> </p> <blockquote> <p> int main(int argc, char* argv[]) { </p> <blockquote> <p> boost::throw_exception(std::exception("foo")); <em> &lt;-- this will produce the problem </em></p> </blockquote> </blockquote> <p> </p> <blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> </blockquote> <p> I originally asked about the problem here: <a class="ext-link" href="http://stackoverflow.com/questions/17599772/boost-exceptions-lead-to-stack-pointer-corruption-run-time-check-failure-0"><span class="icon">​</span>http://stackoverflow.com/questions/17599772/boost-exceptions-lead-to-stack-pointer-corruption-run-time-check-failure-0</a> </p> Janosch <gagabla0@…> https://svn.boost.org/trac10/ticket/8863 https://svn.boost.org/trac10/ticket/8863 Report #8861: boost 1.39 io_service_pool accept hangs Fri, 19 Jul 2013 14:18:07 GMT Fri, 19 Jul 2013 14:26:56 GMT <p> O.S.: Centos 5.4 64 bit Boost version: 1.39 Symptom: With io_service-per-CPU and thread pool size 4, after the sever accepted at 8th connection, it cannot accept any connections afterwards. </p> <p> How to reproduce it: (1) Get the server2 example at <a href="http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/server2/">http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/http/server2/</a> </p> <p> (2) Modify connection.cpp to support persistent connection: void connection::handle_write(const boost::system::error_code&amp; e) { </p> <blockquote> <p> if (!e) { </p> <blockquote> <p> <em> Initiate graceful connection closure. </em>boost::system::error_code ignored_ec; <em>socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec); start(); </em></p> </blockquote> <p> } </p> </blockquote> <p> (3) Modify the server.cpp to use different acceptor_ constructor server::server(const std::string&amp; address, const std::string&amp; port, </p> <blockquote> <p> const std::string&amp; doc_root, std::size_t io_service_pool_size) </p> </blockquote> <blockquote> <p> : io_service_pool_(io_service_pool_size), </p> </blockquote> <p> <em> acceptor_(io_service_pool_.get_io_service()), </em></p> <blockquote> <p> acceptor_( io_service_pool_.get_io_service(), </p> <blockquote> <p> boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), atoi(port.c_str()))), </p> </blockquote> </blockquote> <blockquote> <p> new_connection_(new connection( </p> <blockquote> <p> io_service_pool_.get_io_service(), request_handler_)), </p> </blockquote> </blockquote> <blockquote> <p> request_handler_(doc_root) </p> </blockquote> <p> { </p> <blockquote> <p> <em> Open the acceptor with the option to reuse the address (i.e. SO_REUSEADDR). </em></p> </blockquote> <p> /* </p> <blockquote> <p> boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 1025); acceptor_.open(endpoint.protocol()); acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true)); acceptor_.bind(endpoint); acceptor_.listen(); </p> </blockquote> <p> */ </p> <blockquote> <p> acceptor_.async_accept(new_connection_-&gt;socket(), </p> <blockquote> <p> boost::bind(&amp;server::handle_accept, this, </p> <blockquote> <p> boost::asio::placeholders::error)); </p> </blockquote> </blockquote> </blockquote> <p> } </p> <p> (4) The client test harness create threads each second. In the thread, it will connect to the server, send a request and receive the response (both request/response should be small enough for one read/write). After that, the thread will sleep 1000 seconds without closing the connection. </p> <p> (5) The server cannot accept any connections after 8th requests. </p> bill <shuzhouliu@…> https://svn.boost.org/trac10/ticket/8861 https://svn.boost.org/trac10/ticket/8861 Report #8857: Compile error in boost range when trying to use boost string split Thu, 18 Jul 2013 22:26:23 GMT Mon, 12 Aug 2013 17:20:29 GMT <p> I am trying to replace some old string split code with the string split algorithm, but am getting compile errors. OS <a class="missing wiki">CentOs</a> 6.3, Boost 1.53 and 1.54 gcc 4.8.1 without -std=c++ parameter. I have done an extensive search and tried multiple possible fixes and the error still occurs. </p> <p> Here is the error: </p> <p> In file included from /opt/boost_1_53/boost/range/concepts.hpp:21:0, </p> <blockquote> <p> from XXXX.C:37: </p> </blockquote> <p> /opt/boost_1_53/boost/range/begin.hpp: In instantiation of 'typename boost::range_iterator&lt;C&gt;::type boost::range_detail::range_begin(C&amp;) [with C = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]': /opt/boost_1_53/boost/range/begin.hpp:119:27: required from 'typename boost::range_iterator&lt;const T&gt;::type boost::range_adl_barrier::begin(const T&amp;) [with T = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/iterator_range_core.hpp:56:64: required from 'static IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_begin(<a class="missing wiki">ForwardRange</a>&amp;) [with <a class="missing wiki">ForwardRange</a> = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; IteratorT = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/iterator_range_core.hpp:198:45: required from 'boost::iterator_range&lt;IteratorT&gt;::iterator_range(const Range&amp;, boost::iterator_range_detail::const_range_tag) [with Range = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; IteratorT = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/iterator_range_core.hpp:564:63: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;const T&gt;::type&gt; boost::make_iterator_range(const <a class="missing wiki">ForwardRange</a>&amp;) [with <a class="missing wiki">ForwardRange</a> = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/as_literal.hpp:93:50: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;C&gt;::type&gt; boost::range_detail::make_range(T&amp;, long int) [with T = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/as_literal.hpp:109:74: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;const T&gt;::type&gt; boost::as_literal(const Range&amp;) [with Range = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/algorithm/string/iter_find.hpp:153:115: required from 'SequenceSequenceT&amp; boost::algorithm::iter_split(SequenceSequenceT&amp;, RangeT&amp;, FinderT) [with SequenceSequenceT = std::vector&lt;std::basic_string&lt;char&gt; &gt;; RangeT = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; FinderT = boost::algorithm::detail::token_finderF&lt;boost::algorithm::detail::is_any_ofF&lt;char&gt; &gt;]' /opt/boost_1_53/boost/algorithm/string/split.hpp:149:69: required from 'SequenceSequenceT&amp; boost::algorithm::split(SequenceSequenceT&amp;, RangeT&amp;, PredicateT, boost::algorithm::token_compress_mode_type) [with SequenceSequenceT = std::vector&lt;std::basic_string&lt;char&gt; &gt;; RangeT = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; PredicateT = boost::algorithm::detail::is_any_ofF&lt;char&gt;]' XXXX.C:1287:60: required from here /opt/boost_1_53/boost/range/begin.hpp:49:24: error: 'const struct boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;' has no member named 'begin' </p> <blockquote> <p> return c.begin(); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> make<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>: Leaving directory `/for_blair/workspace/bluemax3/libcommon/src/common' In file included from /opt/boost_1_53/boost/range/concepts.hpp:22:0, </p> <blockquote> <p> from XXXX.C:37: </p> </blockquote> <p> /opt/boost_1_53/boost/range/end.hpp: In instantiation of 'typename boost::range_iterator&lt;C&gt;::type boost::range_detail::range_end(C&amp;) [with C = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]': /opt/boost_1_53/boost/range/end.hpp:113:25: required from 'typename boost::range_iterator&lt;const T&gt;::type boost::range_adl_barrier::end(const T&amp;) [with T = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/iterator_range_core.hpp:62:62: required from 'static IteratorT boost::iterator_range_detail::iterator_range_impl&lt;IteratorT&gt;::adl_end(<a class="missing wiki">ForwardRange</a>&amp;) [with <a class="missing wiki">ForwardRange</a> = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; IteratorT = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' make<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>: Leaving directory `/for_blair/workspace/bluemax3/libcommon/src' /opt/boost_1_53/boost/range/iterator_range_core.hpp:198:74: required from 'boost::iterator_range&lt;IteratorT&gt;::iterator_range(const Range&amp;, boost::iterator_range_detail::const_range_tag) [with Range = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; IteratorT = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/iterator_range_core.hpp:564:63: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;const T&gt;::type&gt; boost::make_iterator_range(const <a class="missing wiki">ForwardRange</a>&amp;) [with <a class="missing wiki">ForwardRange</a> = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/as_literal.hpp:93:50: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;C&gt;::type&gt; boost::range_detail::make_range(T&amp;, long int) [with T = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/range/as_literal.hpp:109:74: required from 'boost::iterator_range&lt;typename boost::range_iterator&lt;const T&gt;::type&gt; boost::as_literal(const Range&amp;) [with Range = boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;const T&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' /opt/boost_1_53/boost/algorithm/string/iter_find.hpp:153:115: required from 'SequenceSequenceT&amp; boost::algorithm::iter_split(SequenceSequenceT&amp;, RangeT&amp;, FinderT) [with SequenceSequenceT = std::vector&lt;std::basic_string&lt;char&gt; &gt;; RangeT = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; FinderT = boost::algorithm::detail::token_finderF&lt;boost::algorithm::detail::is_any_ofF&lt;char&gt; &gt;]' /opt/boost_1_53/boost/algorithm/string/split.hpp:149:69: required from 'SequenceSequenceT&amp; boost::algorithm::split(SequenceSequenceT&amp;, RangeT&amp;, PredicateT, boost::algorithm::token_compress_mode_type) [with SequenceSequenceT = std::vector&lt;std::basic_string&lt;char&gt; &gt;; RangeT = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; PredicateT = boost::algorithm::detail::is_any_ofF&lt;char&gt;]' XXXX.C:1287:60: required from here /opt/boost_1_53/boost/range/end.hpp:50:26: error: 'const struct boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;' has no member named 'end' </p> <blockquote> <p> return c.end(); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /opt/boost_1_53/boost/range/concepts.hpp:21:0, </p> <blockquote> <p> from XXXX.C:37: </p> </blockquote> <p> /opt/boost_1_53/boost/range/begin.hpp: In function 'typename boost::range_iterator&lt;C&gt;::type boost::range_detail::range_begin(C&amp;) [with C = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]': /opt/boost_1_53/boost/range/begin.hpp:50:5: warning: control reaches end of non-void function [-Wreturn-type] </p> <blockquote> <p> } <sup> </sup></p> </blockquote> <p> In file included from /opt/boost_1_53/boost/range/concepts.hpp:22:0, </p> <blockquote> <p> from XXXX.C:37: </p> </blockquote> <p> /opt/boost_1_53/boost/range/end.hpp: In function 'typename boost::range_iterator&lt;C&gt;::type boost::range_detail::range_end(C&amp;) [with C = const boost::sub_match&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt; &gt;; typename boost::range_iterator&lt;C&gt;::type = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]': /opt/boost_1_53/boost/range/end.hpp:51:9: warning: control reaches end of non-void function [-Wreturn-type] </p> <blockquote> <p> } <sup> </sup></p> </blockquote> Blair Jennings <blair.jennings@…> https://svn.boost.org/trac10/ticket/8857 https://svn.boost.org/trac10/ticket/8857 Report #8856: [date_time] GCC 4.8+ warns unused local typedef... Thu, 18 Jul 2013 20:11:35 GMT Wed, 12 Mar 2014 16:46:08 GMT <p> GCC 4.8+ warns unused local typedef... </p> <pre class="wiki">posix_time_io.hpp:50 typedef ‘std_ptime_facet’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">posix_time_io.hpp:117 typedef ‘std_time_facet’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">posix_time_io.hpp:183 typedef ‘std_ptime_facet’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">local_time_io.hpp:39 typedef ‘std_time_facet’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">local_time_io.hpp:126 typedef ‘std_time_facet’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">date_parsing.hpp:116 typedef ‘year_type’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">date_parsing.hpp:163 typedef ‘year_type’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">string_convert.hpp:24 typedef ‘input_type’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">strings_from_facet.hpp:38 typedef ‘ostream_type’ locally defined but not used [-Wunused-local-typedefs] </pre><pre class="wiki">strings_from_facet.hpp:89 typedef ‘ostream_type’ locally defined but not used [-Wunused-local-typedefs] </pre><p> Proposed fix attached. </p> Chris Stylianou <chris5287@…> https://svn.boost.org/trac10/ticket/8856 https://svn.boost.org/trac10/ticket/8856 Report #8853: [tuple] GCC 4.8+ warns unused local typedef... Thu, 18 Jul 2013 19:12:38 GMT Thu, 18 Jul 2013 19:12:38 GMT <p> GCC 4.8+ warns unused local typedef... </p> <pre class="wiki">typedef ‘cons_element’ locally defined but not used [-Wunused-local-typedefs] </pre><p> Proposed fix attached. </p> Chris Stylianou <chris5287@…> https://svn.boost.org/trac10/ticket/8853 https://svn.boost.org/trac10/ticket/8853 Report #8841: Duplicated rules for mpi.so with MPI support when building both single and multi-threaded flavors Thu, 18 Jul 2013 06:19:23 GMT Sun, 26 Jun 2016 00:06:55 GMT <p> When building with all library variants including single and multi-threading as well as static and shared libraries, if "--with-mpi" is specified it will complain about duplicated rules for mpi.so. The build log is attached. </p> Xiyue Deng <manphiz@…> https://svn.boost.org/trac10/ticket/8841 https://svn.boost.org/trac10/ticket/8841 Report #8836: boost::property_tree and BOM Wed, 17 Jul 2013 11:47:58 GMT Wed, 17 Jul 2013 11:47:58 GMT <p> boost::property_tree::ptree can't handle files with BOM (at least for UTF-8). </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; #include &lt;boost/property_tree/ini_parser.hpp&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; int main() { try { boost::filesystem::path path("helper.ini"); boost::property_tree::ptree pt; boost::property_tree::read_ini(path.string(), pt); const std::string foo = pt.get&lt;std::string&gt;("foo"); std::cout &lt;&lt; foo &lt;&lt; '\n'; } catch (const boost::property_tree::ini_parser_error&amp; e) { std::cerr &lt;&lt; "An error occurred while reading config file: " &lt;&lt; e.what() &lt;&lt; '\n'; return EXIT_FAILURE; } catch (const boost::property_tree::ptree_bad_data&amp; e) { std::cerr &lt;&lt; "An error occurred while getting options from config file: " &lt;&lt; e.what() &lt;&lt; '\n'; return EXIT_FAILURE; } catch (const boost::property_tree::ptree_bad_path&amp; e) { std::cerr &lt;&lt; "An error occurred while getting options from config file: " &lt;&lt; e.what() &lt;&lt; '\n'; return EXIT_FAILURE; } catch (...) { std::cerr &lt;&lt; "Unknown error \n"; return EXIT_FAILURE; } } </pre><p> <strong>helper.ini</strong> </p> <p> foo=str </p> <p> <strong>Output</strong> </p> <p> An error occurred while getting options from config file: No such node (foo) </p> nikita.trophimov@… https://svn.boost.org/trac10/ticket/8836 https://svn.boost.org/trac10/ticket/8836 Report #8835: failed to use boost::asio::steady_timer w/ clang 3.3 Wed, 17 Jul 2013 11:24:25 GMT Wed, 17 Jul 2013 11:35:38 GMT <p> boost::asio definitely has incorrect detection of &lt;crono&gt; availability for clang 3.3. despite the attached sample code compiled well, any attempt to use boost::asio::steady_timer (w/ defined -DBOOST_ASIO_DISABLE_BOOST_CHRONO (to force it to use std::chrono instead) leads to a bunch of errors... </p> i.zaufi@… https://svn.boost.org/trac10/ticket/8835 https://svn.boost.org/trac10/ticket/8835 Report #8831: Reuse capacity from user containers in order to prevent superfluous allocations Tue, 16 Jul 2013 20:08:24 GMT Tue, 16 Jul 2013 20:08:24 GMT <p> Inside boost::algorithm::split, new variable of container type is created, and then swapped with result when fully filled. </p> <p> See <a href="http://www.boost.org/doc/libs/1_54_0/boost/algorithm/string/iter_find.hpp">http://www.boost.org/doc/libs/1_54_0/boost/algorithm/string/iter_find.hpp</a> , there is code like: </p> <pre class="wiki">SequenceSequenceT Tmp(itBegin, itEnd); Result.swap(Tmp); </pre><p> Maybe that was done in pursuit of strong exception safety guarantee - but I don't see much value for it in that case, because split is supposed to replace values in original container - <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/5915"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/5915</a> . I think basic guarantee would be enough. </p> <p> Often SequenceSequenceT is container like std::vector, which already has capacity from previous usages, which can be reused avoiding costly allocations. For example: </p> <pre class="wiki">Result.assign(itBegin, itEnd); </pre><p> Maybe that would require stricter requirements on SequenceSequenceT, or maybe overload or traits specialization can be used for common things like std::vector and boost::container::vector or as customization point. </p> <p> Here is proof-of-concept which avoids allocations showing speed difference: <a class="ext-link" href="http://coliru.stacked-crooked.com/view?id=bf5dd9f2d9d20d61470e73a6b2940333-9a9914b3e2b7ed07c206d6accecccdb6"><span class="icon">​</span>http://coliru.stacked-crooked.com/view?id=bf5dd9f2d9d20d61470e73a6b2940333-9a9914b3e2b7ed07c206d6accecccdb6</a> </p> <p> On my machine I have following results: </p> <pre class="wiki">start end 0.85 s 64000000 start end 1.55 s 64000000 </pre><p> I.e. version with allocations is ~1.8x slower. </p> <p> Maybe other algorithms have similar issues - I haven't checked. </p> Evgeny Panasyuk <evgeny.panasyuk@…> https://svn.boost.org/trac10/ticket/8831 https://svn.boost.org/trac10/ticket/8831 Report #8830: fix spelling of "polynomial" in crc library and documentation Tue, 16 Jul 2013 14:45:43 GMT Tue, 16 Jul 2013 14:45:43 GMT <p> The word "polynomial" is incorrectly spelled "polynominal" in quite a number of places in both the code and documentation. This has the unhappy effect of forcing users of the library to misspell a word to use some aspects of the otherwise very useful code. A patch is attached that corrects all occurrences in library, test code and documentation. </p> Ed Beroset <beroset@…> https://svn.boost.org/trac10/ticket/8830 https://svn.boost.org/trac10/ticket/8830 Report #8828: bug in boost_asio/example/cpp03/http/server3/server.cpp Tue, 16 Jul 2013 09:19:38 GMT Sat, 07 Sep 2013 20:06:32 GMT <p> please help check the doc/html/boost_asio/example/cpp03/http/server3/server.cpp I think there is some bug in line 56 and line 69. in line 56, "&amp;boost::asio::io_service::run" is ambitious, because the there are two "run()" function in class "io_service" in line 69, it seems the parameter type is not correct, I can not compile this line. </p> lisendong@… https://svn.boost.org/trac10/ticket/8828 https://svn.boost.org/trac10/ticket/8828 Report #8822: issues compiling regex on SunOS 5.9 sparc Mon, 15 Jul 2013 11:19:39 GMT Sun, 06 Oct 2013 08:02:37 GMT <p> ./b2 toolset=sun -d+2 address-model=64 threading=multi link=static runtime-link=static variant=debug regex </p> <blockquote> <p> "CC" +d -library=stlport4 -g -mt -erroff=%none -m64 -DBOOST_ALL_NO_LIB=1 -DBOOST_HAS_ICU=1 -I"." -I"/usr/include" -c -o "bin.v2/libs/regex/build/sun/debug/address-model-64/link-static/runtime-link-static/stdlib-sun-stlport/threading-multi/cregex.o" "libs/regex/build/../src/cregex.cpp" </p> </blockquote> <p> CC: Warning: Option -m64 passed to ld, if ld is invoked, ignored otherwise "./boost/functional/hash/detail/hash_float.hpp", line 99: Error: complex expression not allowed in dependent template argument expression. "./boost/functional/hash/detail/hash_float.hpp", line 113: Error: complex expression not allowed in dependent template argument expression. "./boost/functional/hash/detail/hash_float.hpp", line 126: Error: complex expression not allowed in dependent template argument expression. "./boost/functional/hash/detail/hash_float.hpp", line 139: Error: complex expression not allowed in dependent template argument expression. 4 Error(s) detected. </p> <p> Other files are also affected. </p> <p> Regards, Gert </p> Gert Grossmann <gert.grossmann@…> https://svn.boost.org/trac10/ticket/8822 https://svn.boost.org/trac10/ticket/8822 Report #8821: bootstrap build.bat fails for vc11 toolset Sun, 14 Jul 2013 20:13:30 GMT Sun, 14 Jul 2013 20:13:30 GMT <p> Changes were made to tools/build/v2/engine/build.bat to support vc12. While I don't see anything obviously wrong with those changes, it causes my vc11 bootstrap to fail. If I update that file to it's previous revision, then bootstrapping succeeds. </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/8821 https://svn.boost.org/trac10/ticket/8821 Report #8820: Reduce debug symbols size Sun, 14 Jul 2013 18:08:47 GMT Mon, 15 Jul 2013 03:48:41 GMT <p> There is <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/242660"><span class="icon">​</span>this </a> discussion on Boost developers mailing list concerning Boost.Log compiled binary sizes. The problem by a large degree is caused by Boost.Spirit generating lots of debug info in the compiled libraries. I came to this conclusion by analyzing the object file sizes of Boost.Log (I've presented the object sizes in <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/242699"><span class="icon">​</span>this</a> post, and you can see that the most part if the libboost_log_setup-vc110-mt-gd-1_55.lib library is occupied by parsers). </p> <p> The parsers in question are implemented in libs/log/src/filter_parser.cpp and formatter_parser.cpp. I'm not sure if there's anything I can do on Boost.Log side to mitigate the problem, other than to just rewrite them without Boost.Spirit. However, this example and my other general experience with Boost.Spirit indicates that Boost.Spirit tends to generate lots of debug info even for parsers of moderate complexity (like the ones in Boost.Log). I would really like something to be done about this. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/8820 https://svn.boost.org/trac10/ticket/8820 Report #8818: Python compilation errors with mingw w64/gcc4.8.1 Sat, 13 Jul 2013 20:38:47 GMT Sat, 13 Jul 2013 21:13:32 GMT <p> wrap_python is suppose to undef the evil hypot def by Python, but it doesn't work for mingw w64. Here's a patch which undefs hypot if it's defined at all. </p> <p> This unfortunately does not fix all boost python compilation errors with Mingw w64/gcc4.8.1 (targetting x64 Windows). </p> Andrew Ho <helloworld922@…> https://svn.boost.org/trac10/ticket/8818 https://svn.boost.org/trac10/ticket/8818 Report #8816: Android: error: fatal error: sys/statvfs.h: No such file or directory Fri, 12 Jul 2013 11:13:48 GMT Fri, 12 Jul 2013 11:13:48 GMT <p> Android doesn't have sys/statvfs.h. instead sys/vfs.h should be used. </p> <p> possible fix (libs/filesystem/src/operations.cpp): </p> <pre class="wiki"># if !defined(__APPLE__) &amp;&amp; !defined(__OpenBSD__) &amp;&amp; !defined(__ANDROID__) # include &lt;sys/statvfs.h&gt; # define BOOST_STATVFS statvfs # define BOOST_STATVFS_F_FRSIZE vfs.f_frsize # else # ifdef __ANDROID__ # include &lt;sys/vfs.h&gt; # endif # ifdef __OpenBSD__ # include &lt;sys/param.h&gt; # endif # include &lt;sys/mount.h&gt; # define BOOST_STATVFS statfs # define BOOST_STATVFS_F_FRSIZE static_cast&lt;boost::uintmax_t&gt;(vfs.f_bsize) # endif </pre> mik01@… https://svn.boost.org/trac10/ticket/8816 https://svn.boost.org/trac10/ticket/8816 Report #8807: set_union adapter Wed, 10 Jul 2013 03:15:20 GMT Wed, 10 Jul 2013 03:15:20 GMT <p> I was looking today for a range adapter that would take two sorted ranges with the same value type and present the union of those sets. Seems like a natural fit for this library. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/8807 https://svn.boost.org/trac10/ticket/8807 Report #8805: Getting error using Shell rule after upgrading to Ubuntu 12.04 Wed, 10 Jul 2013 00:12:33 GMT Tue, 01 Apr 2014 02:30:39 GMT <p> I was happily doing development using bjam under the previous Ubuntu LTS release. I using package manager to upgrade to the 12.04 LTS release. Now my Jamfiles no longer work. example: </p> <p> SHELL "mkdir -vp $(SOLUTION_ROOT)/log $(SOLUTION_ROOT)/conf" ; </p> <p> used to work just fine. Now I get an error </p> <p> "<strong>* argument error </strong></p> <ul><li>rule SHELL ( command : * ) </li><li>called with: ( ) </li><li>missing argument command" </li></ul><p> I'm guessing that the previous bjam parsed the quote characters differently. I've tried various quoting schemes but can't get it to work. Any ideas/ </p> ccervo@… https://svn.boost.org/trac10/ticket/8805 https://svn.boost.org/trac10/ticket/8805 Report #8803: Unused parameter issue Tue, 09 Jul 2013 11:36:57 GMT Thu, 11 Jul 2013 20:00:33 GMT <p> When I set the compiler to the highest warning level and treat warnings as errors, lines 123 and 129 of the file boost/parameter/aux_/tagged_argument.hpp causes compilation failures. </p> lcarreon@… https://svn.boost.org/trac10/ticket/8803 https://svn.boost.org/trac10/ticket/8803 Report #8800: result_of.hpp:174: error: invalid use of incomplete type Mon, 08 Jul 2013 22:37:31 GMT Mon, 08 Jul 2013 22:37:31 GMT <ol><li>On OSX 10.8.4, invoke "./b2 toolset=darwin -j 4" </li><li>Build fails with: </li></ol><p> ./boost/utility/result_of.hpp:174: error: invalid use of incomplete type ‘struct boost::log::v2_mt_posix::expressions::aux::unary_function_terminal&lt;boost::log::v2_mt_posix::expressions::has_attribute&lt;void&gt; &gt;::result&lt;const boost::log::v2_mt_posix::expressions::aux::unary_function_terminal&lt;boost::log::v2_mt_posix::expressions::has_attribute&lt;void&gt; &gt; ()(boost::phoenix::vector2&lt;boost::phoenix::vector2&lt;const boost::phoenix::actor&lt;boost::proto::exprns_::expr&lt;boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term&lt;boost::log::v2_mt_posix::expressions::aux::unary_function_terminal&lt;boost::log::v2_mt_posix::expressions::has_attribute&lt;void&gt; &gt; &gt;, 0l&gt; &gt;*, const boost::log::v2_mt_posix::attribute_value_set&amp;&gt;&amp;, const boost::phoenix::default_actions&amp;&gt;)&gt;’ </p> <ol start="3"><li>According to "l_r" on the #boost IRC channel, he has also reproduced this issue on "xLinux laptop 3.8.0-25-x86_64 x86_64 GNU/Linux, GCC 4.7.3" </li><li>I have set severity to "Showstopper" because there is no known workaround and Boost cannot be built. </li></ol> cowwoc@… https://svn.boost.org/trac10/ticket/8800 https://svn.boost.org/trac10/ticket/8800 Report #8799: named condition notify_all does not wake up waiting process Mon, 08 Jul 2013 13:21:20 GMT Fri, 24 Oct 2014 09:28:58 GMT <p> The underlying snippet never catches the notify_all() signal. Operating System used is Linux 3.5.0-17-generic. </p> <p> Can anybody confirm this as a bug or am I doing something wrong? </p> <h3 class="section" id="Codesnippet">Code snippet</h3> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/interprocess/sync/named_condition.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; #include &lt;boost/interprocess/sync/scoped_lock.hpp&gt; #include &lt;boost/interprocess/shared_memory_object.hpp&gt; #include &lt;boost/interprocess/mapped_region.hpp&gt; #include &lt;boost/version.hpp&gt; #include &lt;sys/types.h&gt; #include &lt;sys/wait.h&gt; using namespace std; using namespace boost::interprocess; void* consumer(void*) { cout &lt;&lt; "Started child" &lt;&lt; endl; named_mutex mtx(create_only, "somemutex"); named_condition signal_empty (create_only, "signal_empty"); for(;;) { cout &lt;&lt; "Child tries to lock" &lt;&lt; endl; scoped_lock&lt;named_mutex&gt; lock(mtx); cout &lt;&lt; "Child got lock and waits" &lt;&lt; endl; signal_empty.wait(lock); cout &lt;&lt; "Child WOKE up" &lt;&lt; endl; } cout &lt;&lt; "Finished child" &lt;&lt; endl; } void* producer(void*) { cout &lt;&lt; "Started parent" &lt;&lt; endl; sleep(1); named_mutex mtx(open_only, "somemutex"); named_condition signal_empty (open_only, "signal_empty"); for(;;) { cout &lt;&lt; "Parent tries to get lock" &lt;&lt; endl; scoped_lock&lt;named_mutex&gt;lock(mtx); cout &lt;&lt; "Parent got lock and notifies" &lt;&lt; endl; sleep(1); cout &lt;&lt; "Parent notifies child" &lt;&lt; endl; signal_empty.notify_all(); } } int main(int argc, char** argv) { pid_t pid = fork(); if(pid == 0) { consumer(NULL); } else { producer(NULL); } } </pre><h3 class="section" id="Applicationoutput">Application output</h3> <pre class="wiki">Started parent Started child Child tries to lock Child got lock and waits Parent tries to get lock Parent got lock and notifies Parent notifies child Parent tries to get lock Parent got lock and notifies ..... </pre> peter.knafl@… https://svn.boost.org/trac10/ticket/8799 https://svn.boost.org/trac10/ticket/8799 Report #8795: async_connect incorrectly reports success on failure Mon, 08 Jul 2013 04:59:35 GMT Fri, 04 Aug 2017 08:25:12 GMT <p> I've found a regression between 1.53 to 1.54; if you compile boost/libs/asio/example/cpp11/chat/chat_client.cpp and point it at a host and port that doesn't exist or refuses the connection, instead of coming back with an error, such as host not found or connection refused, it reports success (on the conversion to bool). (you might want to embellish the example with a std::cout &lt;&lt; error_code.message() &lt;&lt; std::endl;) </p> <p> This appears to be the case across Linux, Darwin, iOS and Android. </p> <p> synchronous connect seems to work correctly (i.e., echo/blocking_tcp_echo_client.cpp) </p> benpope81@… https://svn.boost.org/trac10/ticket/8795 https://svn.boost.org/trac10/ticket/8795 Report #8787: The correct way to Configure Boost 1.54.0 on Mac OS X 10.8.4 Sat, 06 Jul 2013 01:49:29 GMT Tue, 23 Jul 2013 14:20:54 GMT <blockquote> <p> I am a newby to the Boost Library and I have been trying stupidly , i guess ,without asking for help! I managed to compile successfully but could not link to my projects in Xcode 4.6.3. I want to use Clang in the process instead of GCC 4.8.1 which the compilation picks up. I need to use a fool proof way and to learn to do correctly in future upgrades. </p> </blockquote> <p> </p> <blockquote> <blockquote> <p> thank you. </p> </blockquote> </blockquote> zmukwa@… https://svn.boost.org/trac10/ticket/8787 https://svn.boost.org/trac10/ticket/8787 Report #8784: boost.asio.ssl.stream.set_verify_callback use custom verification callback, always succeed. Fri, 05 Jul 2013 14:26:54 GMT Thu, 26 Sep 2013 07:25:52 GMT <p> boost.asio.ssl.stream.set_verify_callback use custom verification callback, always succeed. and in boost::asio::ssl::rfc2818_verification::operator() function, parameter preverified always 0. </p> Jackarain https://svn.boost.org/trac10/ticket/8784 https://svn.boost.org/trac10/ticket/8784 Report #8777: layout=system is always creating symbolic links Thu, 04 Jul 2013 09:55:24 GMT Thu, 04 Jul 2013 09:55:24 GMT <p> Currently, while building boost binary libraries using "layout=system runtime-link=shared target-os=linux", boost build always creates symbolic links without versioning pointing to the real shared libraries. </p> <p> However, some filesystems don't support symbolic links. </p> <p> There is anyway to ask to boost build to not create symbolic links and generate the shared libraries without versioning? </p> <p> I'd like to have the same behavior as cross-building using x86_64-w64-mingw32, but for Linux. </p> Augusto Cesar Righetto <augustorighetto@…> https://svn.boost.org/trac10/ticket/8777 https://svn.boost.org/trac10/ticket/8777 Report #8775: fusion transform and fold not respecting const-ness of the sequence Wed, 03 Jul 2013 21:14:48 GMT Sun, 07 Jul 2013 23:44:29 GMT <p> The following does not compile: </p> <pre class="wiki">#include &lt;boost/fusion/include/vector.hpp&gt; #include &lt;boost/fusion/include/transform.hpp&gt; #include &lt;boost/fusion/include/fold.hpp&gt; #include &lt;boost/fusion/include/copy.hpp&gt; namespace fusion = boost::fusion; struct F { typedef int result_type; int operator()(int state, int &amp; val) const { return state; } }; struct G { typedef int result_type; int operator()(int &amp; val) const { return val; } }; int main() { fusion::vector&lt;int, int&gt; v(1,2); fusion::vector&lt;int, int&gt; v2; // fold does not respect constness fusion::fold(v, 42, F()); // transform does not respect constness fusion::copy(fusion::transform(v, G()), v2); } </pre><p> In my opinion, it should. </p> Eric Niebler https://svn.boost.org/trac10/ticket/8775 https://svn.boost.org/trac10/ticket/8775 Report #8771: Constructor of polymorphic archives Wed, 03 Jul 2013 10:51:35 GMT Wed, 03 Jul 2013 10:51:35 GMT <p> The constructor of polymorphic_iarchive_route assumes that the wrapped archive takes a std::stream argument. While that may be the case for the current archives provided Boost.Serialization, it is not generally the case. I have some archives that takes two iterators (begin/end) instead. </p> <p> Robert has suggested that the constructor should take an already constructed archive instead. That would solve my problem. </p> Bjorn Reese <breese@…> https://svn.boost.org/trac10/ticket/8771 https://svn.boost.org/trac10/ticket/8771 Report #8767: named_function_params.hpp: Unused variable warnings: (weight_map, tag_namespace) Wed, 03 Jul 2013 00:05:49 GMT Tue, 09 Aug 2016 09:18:51 GMT <p> Similar to bug <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6926"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6926</a>, building Boost 1.53 with Xcode 4.6.3 gives many warnings like the following: </p> <p> In file included from ...lib/../../../eos/mesh/face_graph.cpp:1: In file included from ...lib/boost_1_53_0/boost/graph/connected_components.hpp:15: In file included from ...lib/boost_1_53_0/boost/graph/depth_first_search.hpp:21: ...lib/boost_1_53_0/boost/graph/named_function_params.hpp:335:7: warning: unused variable '_weight_map' [-Wunused-variable] </p> <blockquote> <p> BOOST_BGL_DECLARE_NAMED_PARAMS <sup> </sup></p> </blockquote> <p> ...lib/boost_1_53_0/boost/graph/named_function_params.hpp:63:5: note: expanded from macro 'BOOST_BGL_DECLARE_NAMED_PARAMS' </p> <blockquote> <p> BOOST_BGL_ONE_PARAM_CREF(weight_map, edge_weight) \ <sup> </sup></p> </blockquote> <p> ...lib/boost_1_53_0/boost/graph/named_function_params.hpp:334:45: note: expanded from macro 'BOOST_BGL_ONE_PARAM_CREF' #define BOOST_BGL_ONE_PARAM_CREF(name, key) BOOST_PARAMETER_NAME(name) </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> ...lib/boost_1_53_0/boost/parameter/name.hpp:139:9: note: expanded from macro 'BOOST_PARAMETER_NAME' </p> <blockquote> <p> , BOOST_PARAMETER_SIMPLE_NAME \ </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> note: (skipping 6 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) &lt;scratch space&gt;:113:1: note: expanded from macro '_' _weight_map <sup> ...lib/boost_1_53_0/boost/parameter/name.hpp:110:53: note: expanded from macro 'BOOST_PARAMETER_BASIC_NAME' </sup></p> <blockquote> <p> BOOST_PARAMETER_NAME_OBJECT(tag_namespace::tag, name) </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> ...lib/boost_1_53_0/boost/parameter/name.hpp:86:48: note: expanded from macro 'BOOST_PARAMETER_NAME_OBJECT' </p> <blockquote> <p> ::boost::parameter::keyword&lt;tag&gt; const&amp; name \ </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> rmann@… https://svn.boost.org/trac10/ticket/8767 https://svn.boost.org/trac10/ticket/8767 Report #8766: is_iterator_category<Traversal> error Tue, 02 Jul 2013 18:02:39 GMT Tue, 15 Oct 2013 13:21:28 GMT <p> VC12 Preview </p> <pre class="wiki">1&gt; Unknown compiler version - please run the configure tests and report the results 1&gt;c:\vc\include\boost\iterator\detail\facade_iterator_category.hpp(166): error C2039: 'assert_not_arg' : is not a member of 'boost::mpl' 1&gt; c:\vc\include\boost\mpl\eval_if.hpp(41) : see reference to class template instantiation 'boost::detail::facade_iterator_category_impl&lt;CategoryOrTraversal,ValueParam,Reference&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; CategoryOrTraversal=boost::forward_traversal_tag 1&gt; , ValueParam=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , Reference=const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; &amp; 1&gt; ] 1&gt; c:\vc\include\boost\iterator\detail\facade_iterator_category.hpp(193) : see reference to class template instantiation 'boost::mpl::eval_if&lt;boost::detail::is_iterator_category&lt;CategoryOrTraversal&gt;,boost::mpl::identity&lt;boost::forward_traversal_tag&gt;,boost::detail::facade_iterator_category_impl&lt;CategoryOrTraversal,ValueParam,Reference&gt;&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; CategoryOrTraversal=boost::forward_traversal_tag 1&gt; , ValueParam=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , Reference=const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; &amp; 1&gt; ] 1&gt; c:\vc\include\boost\iterator\iterator_facade.hpp(104) : see reference to class template instantiation 'boost::detail::facade_iterator_category&lt;CategoryOrTraversal,ValueParam,Reference&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; CategoryOrTraversal=boost::forward_traversal_tag 1&gt; , ValueParam=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , Reference=const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; &amp; 1&gt; ] 1&gt; c:\vc\include\boost\iterator\iterator_facade.hpp(620) : see reference to class template instantiation 'boost::detail::iterator_facade_types&lt;Value,CategoryOrTraversal,Reference,Difference&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Value=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; , CategoryOrTraversal=boost::forward_traversal_tag 1&gt; , Reference=const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; &amp; 1&gt; , Difference=ptrdiff_t 1&gt; ] 1&gt; c:\vc\include\boost\token_iterator.hpp(40) : see reference to class template instantiation 'boost::iterator_facade&lt;boost::token_iterator&lt;TokenizerFunc,Iterator,Type&gt;,Type,boost::forward_traversal_tag,const Type &amp;,ptrdiff_t&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; TokenizerFunc=char_separator_type 1&gt; , Iterator=std::_String_const_iterator&lt;std::_String_val&lt;std::_Simple_types&lt;char&gt;&gt;&gt; 1&gt; , Type=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; c:\vc\include\boost\date_time\date_parsing.hpp(132) : see reference to class template instantiation 'boost::token_iterator&lt;TokenizerFunc,Iterator,Type&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; TokenizerFunc=char_separator_type 1&gt; , Iterator=std::_String_const_iterator&lt;std::_String_val&lt;std::_Simple_types&lt;char&gt;&gt;&gt; 1&gt; , Type=std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; c:\vc\include\boost\date_time\gregorian\parsers.hpp(30) : see reference to function template instantiation 'date_type boost::date_time::parse_date&lt;boost::gregorian::date&gt;(const std::string &amp;,int)' being compiled 1&gt; with 1&gt; [ 1&gt; date_type=boost::gregorian::date 1&gt; ] </pre> olafvdspek@… https://svn.boost.org/trac10/ticket/8766 https://svn.boost.org/trac10/ticket/8766 Report #8762: Boost.Build engine build fails with MinGW toolset Tue, 02 Jul 2013 12:35:53 GMT Sat, 26 Oct 2013 21:02:16 GMT <p> MinGW toolset and MSYS shell: </p> <pre class="wiki">$ cd boost_1_54_0 $ ./bootstrap.sh --with-toolset=mingw Building Boost.Build engine with toolset mingw... Failed to build Boost.Build build engine Consult 'bootstrap.log' for more details </pre><p> bootstrap.log attached </p> josuegomes@… https://svn.boost.org/trac10/ticket/8762 https://svn.boost.org/trac10/ticket/8762 Report #8756: Boost.MPL VS2013 Preview version bump Mon, 01 Jul 2013 23:25:36 GMT Mon, 01 Jul 2013 23:25:36 GMT <p> The <code>BOOST_WORKAROUND</code> macros at <code>boost/mpl/assert.hpp</code> lines 37 and 247 need to be changed to also consider <code>BOOST_MSVC, == 1800</code>, patch attached. </p> Lars Viklund <zao@…> https://svn.boost.org/trac10/ticket/8756 https://svn.boost.org/trac10/ticket/8756 Report #8755: Boost.-Signals VS2013 compilation error Mon, 01 Jul 2013 23:24:18 GMT Mon, 20 Jan 2014 17:41:07 GMT <p> The <code>BOOST_WORKAROUND</code> macros at <code>boost/signals/detail/named_slot_map.hpp:130</code> and <code>libs/signals/src/named_slot_map.cpp:27 </code>needs to be increased to <code>&lt;= 1800</code> in order to encompass the Visual Studio 2013 Preview compiler. </p> Lars Viklund <zao@…> https://svn.boost.org/trac10/ticket/8755 https://svn.boost.org/trac10/ticket/8755 Report #8749: Accessing type of insert<map<>, pair<A,B> >::type discards inserted elements Sun, 30 Jun 2013 22:04:35 GMT Sat, 21 Feb 2015 22:19:17 GMT <p> The following code sample illustrates the problem </p> <blockquote> <p> typedef insert&lt;map&lt;&gt;, pair&lt;int, int&gt; &gt;::type little_map; </p> </blockquote> <blockquote> <p> BOOST_STATIC_ASSERT(size&lt;little_map&gt;::value == 1); /* Success */ BOOST_STATIC_ASSERT(size&lt;little_map::type&gt;::value == 1); /* Failure */ </p> </blockquote> <p> I have traced the problem to the file boost/mpl/map/aux_/item.hpp in the class definition of m_item. m_item derives from Base (which is a map&lt;...&gt; type) but does not define a "typedef m_item type;" to act as a unary metafunction returning itself. The result is that Base::type is found instead which means that m_item acts as a unary metafunction returning a map with all the inserted elements removed. The class m_item_ at the bottom of the file properly defines a "typedef m_item_ type;" which strengthens my belief that it missing from m_item is a bug. </p> <p> The solution, quite staightforwardly is to simply add the line "typedef m_item type;" to the class' definition. </p> <p> It should be noted that I am running version 1.48 of Boost, but have checked <a href="http://www.boost.org/doc/libs/1_52_0/boost/mpl/map/aux_/item.hpp">http://www.boost.org/doc/libs/1_52_0/boost/mpl/map/aux_/item.hpp</a> and it still lacks the define so I'm convinced that this problem will still be there when I download the latest version of boost. </p> guylaingreer@… https://svn.boost.org/trac10/ticket/8749 https://svn.boost.org/trac10/ticket/8749 Report #8740: Possibly invalid assertion in define_with_defaults() Thu, 27 Jun 2013 16:06:13 GMT Thu, 27 Jun 2013 16:06:37 GMT <p> Hi there, </p> <p> this assertion in <code>boost/python/detail/defaults_def.hpp</code> seems backwards: </p> <pre class="wiki">BOOST_STATIC_ASSERT( (stubs_type::max_args) &lt;= mpl::size&lt;SigT&gt;::value); </pre><p> I.e. I would expect the assertion to be that the actual number of arguments is *smaller* than the max or *larger* than the min. </p> <p> It caused me a compile error like the following on gcc 4.8: </p> <pre class="wiki">In file included from /usr/include/boost/python/overloads.hpp:11:0, from /usr/include/boost/python.hpp:52, from src/wrapper/common.hpp:24, from src/wrapper/id3.cpp:40: /usr/include/boost/python/detail/defaults_def.hpp: In instantiation of ‘void boost::python::detail::define_with_defaults(const char*, const OverloadsT&amp;, NameSpaceT&amp;, const SigT&amp;) [with OverloadsT = {anonymous}::render_overloads; NameSpaceT = boost::python::class_&lt;TagLib::ID3v2::Tag, boost::noncopyable_::noncopyable, boost::python::bases&lt;TagLib::Tag&gt; &gt;; SigT = boost::mpl::vector2&lt;TagLib::ByteVector, TagLib::ID3v2::Tag&amp;&gt;]’: /usr/include/boost/python/class.hpp:598:9: required from ‘void boost::python::class_&lt;T, X1, X2, X3&gt;::def_maybe_overloads(const char*, SigT, const OverloadsT&amp;, const boost::python::detail::overloads_base*) [with OverloadsT = {anonymous}::render_overloads; SigT = TagLib::ByteVector (TagLib::ID3v2::Tag::*)()const; W = TagLib::ID3v2::Tag; X1 = boost::noncopyable_::noncopyable; X2 = boost::python::bases&lt;TagLib::Tag&gt;; X3 = boost::python::detail::not_specified]’ /usr/include/boost/python/class.hpp:245:9: required from ‘boost::python::class_&lt;T, X1, X2, X3&gt;::self&amp; boost::python::class_&lt;T, X1, X2, X3&gt;::def(const char*, A1, const A2&amp;) [with A1 = TagLib::ByteVector (TagLib::ID3v2::Tag::*)()const; A2 = {anonymous}::render_overloads; W = TagLib::ID3v2::Tag; X1 = boost::noncopyable_::noncopyable; X2 = boost::python::bases&lt;TagLib::Tag&gt;; X3 = boost::python::detail::not_specified; boost::python::class_&lt;T, X1, X2, X3&gt;::self = boost::python::class_&lt;TagLib::ID3v2::Tag, boost::noncopyable_::noncopyable, boost::python::bases&lt;TagLib::Tag&gt; &gt;]’ src/wrapper/id3.cpp:221:8: required from here /usr/include/boost/python/detail/defaults_def.hpp:247:1: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE&lt;false&gt;’ </pre> Andreas Kloeckner <inform@…> https://svn.boost.org/trac10/ticket/8740 https://svn.boost.org/trac10/ticket/8740 Report #8737: Notepad++ and MinGW boost/asio ERROR Thu, 27 Jun 2013 03:13:26 GMT Thu, 27 Jun 2013 03:13:26 GMT <p> When compiling the first tutorial using notepad++ as a text editor and MinGW compiler i get this long scary list of errors </p> <p> In file included from c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/ boost/asio/basic_datagram_socket.hpp:18:0, </p> <blockquote> <p> from c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/ </p> </blockquote> <p> boost/asio.hpp:20, </p> <blockquote> <p> from asioOne.cpp:2: </p> </blockquote> <p> c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/boost/asio/detail/conf ig.hpp:207:5: warning: #warning Please define _WIN32_WINNT or _WIN32_WINDOWS app ropriately. [-Wcpp] c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/boost/asio/detail/conf ig.hpp:208:5: warning: #warning For example, add -D_WIN32_WINNT=0x0501 to the co mpiler command line. [-Wcpp] c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/boost/asio/detail/conf ig.hpp:209:5: warning: #warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP ta rget). [-Wcpp] C:\Users\COMPUTER\<a class="missing wiki">AppData</a>\Local\Temp\ccrLdVld.o:asioOne.cpp:(.text+0x188): undef ined reference to `boost::system::generic_category()' C:\Users\COMPUTER\<a class="missing wiki">AppData</a>\Local\Temp\ccrLdVld.o:asioOne.cpp:(.text+0x192): undef ined reference to `boost::system::generic_category()' C:\Users\COMPUTER\<a class="missing wiki">AppData</a>\Local\Temp\ccrLdVld.o:asioOne.cpp:(.text+0x19c): undef ined reference to `boost::system::system_category()' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\Users\C OMPUTER\<a class="missing wiki">AppData</a>\Local\Temp\ccrLdVld.o: bad reloc address 0xe in section `.text$_ ZN5boost6system14error_categoryD2Ev[<span class="underline">ZN5boost6system14error_categoryD2Ev]' collect2.exe: error: ld returned 1 exit status </span></p> anonymous https://svn.boost.org/trac10/ticket/8737 https://svn.boost.org/trac10/ticket/8737 Report #8736: Beta1 tarball includes invalid path Thu, 27 Jun 2013 01:55:19 GMT Thu, 27 Jun 2013 01:55:19 GMT <p> I tried downloading this a couple of times to verify. There appears to be an invalid path, something like "/path/to/boost<em>" in the archive. If you open it in a Windows system using 7-zip, for instance, you'll find a top-level folder "" followed by Sources, or something like that. The tar.bz2, which is probably preferred if only because it is more compact, does not have the same problem. Nor does the 7z, which is preferred also due to size. </em></p> mwpowellhtx@… https://svn.boost.org/trac10/ticket/8736 https://svn.boost.org/trac10/ticket/8736 Report #8729: Library Submission, working with pointer containers Tue, 25 Jun 2013 15:02:20 GMT Thu, 30 Jan 2014 17:58:04 GMT <p> Hey All, </p> <p> I don't even know if this is the right place to submit this, but the website seems to indicate it is. </p> <p> I was reading a book which seems to suggest that working with pointers in containers is harder then it should be. A couple of templates can make it much easier. For instance, to work with pointers(this template assumes that T is derived from unary_function, as std::set Compare types are, and long typenames are there to be an example to make this more understandable, final form could cut back: </p> <p> template &lt;typename T&gt; struct dereference { </p> <blockquote> <p> typename T::result_type operator()(const typename T::first_argument_type* arg1, const typename T::second_argument_type* arg2) const { </p> <blockquote> <p> return T()(*arg1, *arg2); </p> </blockquote> <p> } </p> </blockquote> <p> }; </p> <p> e.x.: std::set&lt;string*, Dereference&lt;std::less&lt;string&gt; &gt; &gt; myset; </p> Charlie Page <charlie.page@…> https://svn.boost.org/trac10/ticket/8729 https://svn.boost.org/trac10/ticket/8729 Report #8720: Fix for boost serialisation, portable binary archive on AIX Fri, 21 Jun 2013 12:10:32 GMT Fri, 21 Jun 2013 12:10:32 GMT <p> On most platforms, char is signed, however on AIX by default char is unsigned. The portable binary archive assumes the char type is signed. </p> <p> The fix is simply to replace 'char' with 'signed char' in the correct places. </p> <p> This is a fairly safe and quick fix, can I please ask the authors of this library to add this fix, for the next version of boost. </p> <p> Here are the changes I made: (flagged under ' <em> changed ' comment </em>-------------------------------------------------------- portable_binary_iarchive.hpp </p> <blockquote> <p> void load(signed char &amp; t){ <em> changed </em></p> <blockquote> <p> this-&gt;primitive_base_t::load(t); </p> </blockquote> <p> } </p> </blockquote> <p> <em>------------------------------------------------------------- portable_binary_iarchive.cpp </em></p> <p> void portable_binary_iarchive::load_impl(boost::intmax_t &amp; l, char maxsize){ </p> <blockquote> <p> signed char size; <em> changed l = 0; this-&gt;primitive_base_t::load(size); </em></p> </blockquote> <blockquote> <p> if(0 == size){ </p> <blockquote> <p> return; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> bool negative = (size &lt; 0); ...... </p> </blockquote> <p> <em> ----------------------------------------------------------------- portable_binary_oarchive.hpp </em></p> <blockquote> <p> void save(const signed char &amp; t){ <em> changed </em></p> <blockquote> <p> this-&gt;primitive_base_t::save(t); </p> </blockquote> <p> } </p> </blockquote> <p> <em> ----------------------------------------------------------- portable_binary_oarchive.cpp </em></p> <p> void portable_binary_oarchive::save_impl( </p> <blockquote> <p> const boost::intmax_t l, const char maxsize </p> </blockquote> <p> ){ </p> <blockquote> <p> signed char size = 0; <em> changed </em></p> </blockquote> <blockquote> <p> if(l == 0){ </p> <blockquote> <p> this-&gt;primitive_base_t::save(size); return; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> .......... </p> </blockquote> avi.bahra@… https://svn.boost.org/trac10/ticket/8720 https://svn.boost.org/trac10/ticket/8720 Report #8719: Not possible to target older iOS major version when using SDK from later version Fri, 21 Jun 2013 10:50:26 GMT Fri, 21 Jun 2013 11:41:28 GMT <p> Current example: I want to build using iOS SDK version 6.1, but with the minimum target OS version set to 5.1. </p> <p> In order to achieve this I set macosx-version-min=5.1, macosx-version=6.1. </p> <p> The code in darwin.jam, however, does not see 5.1 as a valid minimum version when the SDK version is 6.1. The code below appears to permit only 6.0 and 6.1. </p> <pre class="wiki"> if $(version[3]) &gt; 0 { # We have a minor version of an SDK. We want to set up # previous minor versions, plus the current minor version. # So we recurse to set up the previous minor versions, up to # the current version. local minor-minus-1 = [ CALC $(version[3]) - 1 ] ; return [ init-sdk $(condition) : $(root) : $(version[1-2]) $(minor-minus-1) : [ version-to-feature $(version[1-2]) $(minor-minus-1) ] ] $(version-feature) ; } </pre><p> The resulting error when attempting to target 5.1 while using the 6.1 SDK is: </p> <pre class="wiki">/Users/williamg/Projects/Experimenta/universe/boost/boost_1_53_0/tools/build/v2/build/feature.jam:485: in validate-value-string from module feature error: "iphone-5.1" is not a known value of feature &lt;macosx-version-min&gt; error: legal values: "iphone-6.1" "iphone-6.0" "iphonesim-6.1" "iphonesim-6.0" "10.7" "10.6" "10.5" "10.4" "10.3" "10.2" "10.1" "10.0" "10.8" </pre><p> This needs to change so that it's possible to target versions of the OS older than the same major release. </p> <p> Discovered in Boost 1.53, but still present on trunk at time of writing. </p> William Gallafent <william@…> https://svn.boost.org/trac10/ticket/8719 https://svn.boost.org/trac10/ticket/8719 Report #8714: Allow move-only handlers Thu, 20 Jun 2013 10:42:14 GMT Thu, 14 Aug 2014 12:19:13 GMT <p> (See also <a class="ext-link" href="http://stackoverflow.com/questions/17211263"><span class="icon">​</span>http://stackoverflow.com/questions/17211263</a>) </p> <p> The requirement that handlers be copy constructible doesn't allow for the following idiom: </p> <pre class="wiki">void connection::send_response() { // block until previous response is sent std::unique_lock&lt;std::mutex&gt; locker(response_mutex_); // prepare response response_ = "foo"; // send response back to caller. move the unique_lock into the binder // to keep the mutex locked until asio is done sending. asio::async_write(stream_, asio::const_buffers_1(response_.data(), response_.size()), std::bind(&amp;connection::response_sent, shared_from_this(), _1, _2, std::move(locker)) ); } void connection::response_sent(const boost::system::error_code&amp; err, std::size_t len) { if (err) handle_error(err); // the mutex is unlocked when the binder is destroyed } </pre><p> Please remove this restriction, there is no reason for it when using C++11. </p> Marton <marton78@…> https://svn.boost.org/trac10/ticket/8714 https://svn.boost.org/trac10/ticket/8714 Report #8712: [function] Comparison with nullptr differs from std::function<> Wed, 19 Jun 2013 11:04:18 GMT Fri, 27 Jan 2017 11:01:20 GMT <p> Whether or not boost::function&lt;&gt; <em>should</em> support comparison with (C++11) nullptr is another issue, but at the moment it is inconsistent with std::function&lt;&gt;. </p> <p> E.g. </p> <pre class="wiki">boost::function&lt;void ()&gt; bf; bool c1 = (bf == nullptr); // currently false std::function&lt;void ()&gt; sf; bool c2 = (sf == nullptr); // true assert(c1 == c2); </pre><p> Tested with g++ 4.6.3 and Visual Studio 2012. </p> boost@… https://svn.boost.org/trac10/ticket/8712 https://svn.boost.org/trac10/ticket/8712 Report #8708: surprising element segmentation Wed, 19 Jun 2013 03:18:49 GMT Wed, 19 Jun 2013 03:18:49 GMT <p> I was shocked today to find that this fails: </p> <div class="wiki-code"><div class="code"><pre><span class="n">assert</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">starts_with</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">path</span><span class="p">(</span><span class="s">&quot;/website/public_html/&quot;</span><span class="p">),</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">path</span><span class="p">(</span><span class="s">&quot;/website/&quot;</span><span class="p">)));</span> </pre></div></div><p> The reason is that the 2nd path has 3 elements, <code>"/"</code>, <code>"website"</code>, and <code>"."</code>. I found that last one especially surprising. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/8708 https://svn.boost.org/trac10/ticket/8708 Report #8705: BOOST_PP_ENUM_SHIFTED doesn't work with Intel ICC Mon, 17 Jun 2013 20:04:30 GMT Mon, 17 Jun 2013 20:04:30 GMT <p> Consider this example: </p> <pre class="wiki">#include &lt;boost/preprocessor/repetition.hpp&gt; #define F(z, n, p) n #define INNER_NORMAL(z, n, p) f( BOOST_PP_ENUM(n, F, p) ) ; #define INNER_SHIFTED(z, n, p) f( BOOST_PP_ENUM_SHIFTED(n, F, p) ) ; shifted: BOOST_PP_REPEAT(4, INNER_SHIFTED, ~) expected: INNER_SHIFTED(~, 0, ~) INNER_SHIFTED(~, 1, ~) INNER_SHIFTED(~, 2, ~) INNER_SHIFTED(~, 3, ~) normal: BOOST_PP_REPEAT(4, INNER_NORMAL, ~) </pre><p> With <code>clang++ -P -E</code> and <code>g++ -P -E</code> it expands correctly: </p> <pre class="wiki">shifted: f( ) ; f( ) ; f( 1 ) ; f( 1 , 2 ) ; expected: f( ) ; f( ) ; f( 1 ) ; f( 1 , 2 ) ; normal: f( ) ; f( 0 ) ; f( 0 , 1 ) ; f( 0 , 1 , 2 ) ; </pre><p> But <code>icpc -P -E</code> gets stuck: </p> <pre class="wiki">shifted: f( BOOST_PP_ENUM_SHIFTED_1_2(0, F, ~) ); f( BOOST_PP_ENUM_SHIFTED_1_2(1, F, ~) ); f( BOOST_PP_ENUM_SHIFTED_1_2(2, F, ~) ); f( BOOST_PP_ENUM_SHIFTED_1_2(3, F, ~) ); expected: f( ); f( ); f( 1 ); f( 1, 2 ); normal: f( ); f( 0 ); f( 0, 1 ); f( 0, 1, 2 ); </pre><p> I'm using *Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.1.163 Build 20130313*, not sure if it's a bug in ICC or in Boost.Preprocessor; </p> pascal@… https://svn.boost.org/trac10/ticket/8705 https://svn.boost.org/trac10/ticket/8705 Report #8701: wrong empty polygon-linestring intersection with overlapping edges Sun, 16 Jun 2013 09:21:11 GMT Tue, 27 Aug 2013 21:04:08 GMT <p> The returned intersection between these geometries is empty, although they overlap completely and I would expect the full linestring to be returned: </p> <blockquote> <p> POLYGON((137372 104999998,137372 97499999,67175839 97499999,67175839 104999998)) LINESTRING(399872 104971332,399872 97528663,2899872 97528663,2899872 104971332,5399872 104971332,5399872 97528663,7899872 97528663,7899872 104971332,10399872 104971332,10399872 97528663,12899872 97528663,12899872 104971332,15399872 104971332,15399872 97528663,17899872 97528663,17899872 104971332,20399872 104971332,20399872 97528663,22899872 97528663,22899872 104971332,25399872 104971332,25399872 97528663,27899872 97528663,27899872 104971332,30399872 104971332,30399872 97528663,32899872 97528663,32899872 104971332,35399872 104971332,35399872 97528663,37899872 97528663,37899872 104971332,40399872 104971332,40399872 97528663,42899872 97528663,42899872 104971332,45399872 104971332,45399872 97528663,47899872 97528663,47899872 104971332,50399872 104971332,50399872 97528663,52899872 97528663,52899872 104971332,55399872 104971332,55399872 97528663,57899872 97528663,57899872 104971332,60399872 104971332,60399872 97528663,62899872 97528663,62899872 104971332,65399872 104971332,65399872 97528663,67175839 97528663) </p> </blockquote> <p> If I move one of them slightly, I get a correct intersection instead of an empty set. I'm using double for point coordinates. </p> <p> This issue might be related to <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8310" title="#8310: Bugs: Wrong results with overlapping polygons (closed: fixed)">#8310</a> and <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/8183" title="#8183: Bugs: boost::geometry::intersection on two polygons returns incorrect empty ... (assigned)">#8183</a>. </p> aar@… https://svn.boost.org/trac10/ticket/8701 https://svn.boost.org/trac10/ticket/8701 Report #8694: gcc -Wcast-qual warning in boost/function/function_template.hpp Thu, 13 Jun 2013 17:18:05 GMT Thu, 30 Jan 2014 18:03:18 GMT <p> When using boost function library with -Wcast-qual and -Werror flags enabled the following error comes up boost/function/function_template.hpp:628:35 error: cast from type 'const ...*' to type 'void*' casts away qualifiers [-Werror=cast-qual] functor.obj_ref.obj_ptr = (void *)(f.get_pointer()); ..... </p> <p> This warning happens when f.get_pointer() is a const pointer (e.g. it is originating from boost::cref). Which leads to this C-style cast that casts away of constness. I think this can be fixed by replacing C-style cast by const_cast&lt;void*&gt;(static_cast&lt;const void*&gt;(f.get_pointer())) or by adding GCC pragmas to disable -Wcast-qual warning in this header file. </p> Ruben Adamyan <ruboam@…> https://svn.boost.org/trac10/ticket/8694 https://svn.boost.org/trac10/ticket/8694 Report #8689: Solaris: make_shared<const T> compile error Wed, 12 Jun 2013 10:19:47 GMT Wed, 12 Jun 2013 10:19:47 GMT <p> Compile this with Forte 11 (Sun C++ 5.8 Patch 121017-08 2006/12/06): </p> <pre class="wiki">#include &lt;boost/make_shared.hpp&gt; struct Foo { virtual ~Foo() {} }; void f() { boost::make_shared&lt;const Foo&gt;(); } </pre><p> Compiler error is: </p> <pre class="wiki">"/usr/local/include/boost/smart_ptr/make_shared.hpp", line 60: Error: Non-const function Foo::__SLIP.DELETER__C() called for const object. "/usr/local/include/boost/smart_ptr/make_shared.hpp", line 86: Where: While instantiating "boost::detail::sp_ms_deleter&lt;const Foo&gt;::destroy()". "/usr/local/include/boost/smart_ptr/make_shared.hpp", line 86: Where: Instantiated from boost::make_shared&lt;const Foo&gt;(). "test.cpp", line 3: Where: Instantiated from non-template code. </pre><p> Further testing shows the compiler incorrectly refuses to compile an explicit destructor call on any const T* with a virtual destructor. </p> <p> Would it be worth explicitly removing const from sp_ms_deleter's template parameter? </p> matthew.bergin@… https://svn.boost.org/trac10/ticket/8689 https://svn.boost.org/trac10/ticket/8689 Report #8688: boost::filesystem::operations won't compile with bionic library Wed, 12 Jun 2013 06:56:41 GMT Wed, 12 Jun 2013 06:56:41 GMT <p> While porting to using bionic, we saw that operations in the boost::filesystem library won't compile with bionic, as it doesn't have the sys/statvfs.h header file. </p> <p> Attached a patch which fixes it for bionic. </p> Martin Ertsaas <mertsas@…> https://svn.boost.org/trac10/ticket/8688 https://svn.boost.org/trac10/ticket/8688 Report #8687: ABI-breaking workaround unneccesary with recent ICC versions. Tue, 11 Jun 2013 16:58:21 GMT Tue, 11 Jun 2013 16:58:21 GMT <p> Description of the problem is here, with repro and fix: </p> <p> <a class="ext-link" href="http://software.intel.com/en-us/articles/link-error-with-icpc-with-boost-151-mpl-library-and-g"><span class="icon">​</span>http://software.intel.com/en-us/articles/link-error-with-icpc-with-boost-151-mpl-library-and-g</a> </p> lukeocamden@… https://svn.boost.org/trac10/ticket/8687 https://svn.boost.org/trac10/ticket/8687 Report #8684: Provide a map-like container with key derivable from value Mon, 10 Jun 2013 20:21:03 GMT Tue, 06 Aug 2013 23:08:52 GMT <p> It would be nice to have a key-value associative container for which the user can provide a functor to derive a key from a value so that no additional memory to store the key is used. </p> <p> This is different from a set in that the key- and value-types don't have to match. </p> 1zeeky@… https://svn.boost.org/trac10/ticket/8684 https://svn.boost.org/trac10/ticket/8684 Report #8680: seekable_device missing in boost/iostreams/concepts.hpp Sun, 09 Jun 2013 12:58:22 GMT Wed, 08 Nov 2017 12:34:57 GMT <p> The documentation for <a href="http://www.boost.org/doc/libs/1_53_0/libs/iostreams/doc/tutorial/container_device.html">Boost.iosteams:Tutorial:Container_Device</a> refers to seekable_device as existing in <a href="http://www.boost.org/doc/libs/1_53_0/boost/iostreams/concepts.hpp">boost/iostreams/concepts.hpp</a>. However it does not exist. Either the documentation should be update or something along the lines of the following should be added to concepts.hpp.<br /> </p> <pre class="wiki">typedef device&lt;seekable&gt; seekable_device; typedef wdevice&lt;seekable&gt; wseekable_device; </pre><p> Not sure if that should be wseekable_device or seekable_wdevice. The latter seems to better match the filter typedef's. </p> <p> Alternatively the documentation could be updated to refer to device[seekable]. </p> Eric Molitor <eric@…> https://svn.boost.org/trac10/ticket/8680 https://svn.boost.org/trac10/ticket/8680 Report #8675: numpy integers not accepted by Boost.Python Sat, 08 Jun 2013 19:14:17 GMT Sat, 08 Jun 2013 19:14:17 GMT <p> When I pass a numpy integer (or really any object that's not exactly a <a class="missing wiki">PyIntObject</a>) to a BPL-wrapped function, I get errors like the following: </p> <pre class="wiki">ArgumentError: Python argument types in CLAllocator.__call__(CLAllocator, numpy.int64) did not match C++ signature: __call__((anonymous namespace)::cl_allocator {lvalue}, unsigned long) </pre><p> It would be great if, instead of checking for exact types, Boost.Python could use obj.<span class="underline">index</span>() or obj.<span class="underline">int</span>() to just get the integer value. </p> Andreas Kloeckner <inform@…> https://svn.boost.org/trac10/ticket/8675 https://svn.boost.org/trac10/ticket/8675 Report #8673: static libraries compiled without -fPIC using gcc Sat, 08 Jun 2013 15:20:00 GMT Thu, 09 Oct 2014 06:07:08 GMT <p> shared libraries use the static libraries of boost,errors occur: recompile with -fPIC. automake adds -fPIC always. </p> <p> relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC </p> eyjian@… https://svn.boost.org/trac10/ticket/8673 https://svn.boost.org/trac10/ticket/8673 Report #8666: boost::lockfree::spsc_queue::emplace_push Thu, 06 Jun 2013 22:14:59 GMT Sat, 08 Jun 2013 16:12:03 GMT <p> It would be nice to be able to write the following function: </p> <pre class="wiki">void producer_thread() { while(isRunning) { T&amp; item = q.emplace_write(); // This feature avoids the need to create the item write(item); q.emplace_push(); // This feature avoids the need to copy the item } } </pre><p> Implementing this: A slow consumer may be reading the item after the write index so the change is not as easy as exposing the next item. The change would require a gap of 1 item to always exist to avoid a read/write collision. </p> <p> Jason Aubrey </p> aubrey@… https://svn.boost.org/trac10/ticket/8666 https://svn.boost.org/trac10/ticket/8666 Report #8646: vector_indirect: broader support for vector of indices Tue, 04 Jun 2013 07:03:28 GMT Tue, 04 Jun 2013 07:03:28 GMT <p> Hello all, </p> <p> It would be really useful to be able to construct vector_indirect objects using more types of vector of indices, other than indirect_array. Contrary to the documentation, trying to use a std::vector&lt;size_t&gt; or a boost::numeric::ublas::vector&lt;size_t&gt; results in my compiler (GCC 4.7.2) complaining about a preprocess member missing. </p> <p> Similar ideas would of course apply to matrix_indirect as well. Thanks for your time. </p> linuxfever@… https://svn.boost.org/trac10/ticket/8646 https://svn.boost.org/trac10/ticket/8646 Report #8643: 2to3.py Call within python.jam Mon, 03 Jun 2013 14:29:02 GMT Mon, 03 Jun 2013 18:01:09 GMT <p> This is all on windows 2008 R2 Server, using Python3.3 and Boost 1.53.0 </p> <p> Within the file python.jam in ...\tools\build\v2\tools\python.jam I had to change the code in the function "actions 2to3" from </p> <p> actions 2to3 { </p> <blockquote> <p> 2to3 -wn "$(&lt;)" 2to3 -dwn "$(&lt;)" </p> </blockquote> <p> } </p> <p> to </p> <p> actions 2to3 { </p> <blockquote> <p> python.exe C:\Python33\Tools\Scripts\2to3.py -wn "$(&lt;)" python.exe C:\Python33\Tools\Scripts\2to3.py -dwn "$(&lt;)" </p> </blockquote> <p> } </p> <p> Apparently 2to3.py is a python file, and to call it from the windows shell as it seems to do in python.jam, you must run it with the python interpreter, as above. </p> trevor.haba@… https://svn.boost.org/trac10/ticket/8643 https://svn.boost.org/trac10/ticket/8643 Report #8642: Global locale prevents from using Boost.Filesystem in global constructors and destructors Mon, 03 Jun 2013 13:06:50 GMT Tue, 07 Mar 2017 09:17:41 GMT <p> The problem appears in particular with Boost.Log. On program termination, Boost.Log may attempt to perform final log file rotation, which involves calling Boost.Filesystem routines (path construction, in particular). But Boost.Filesystem is not usable at this point because its global locale is already destroyed. </p> <p> Boost.Filesystem should remain usable during global constructors and destructors. The global locale should either be embedded into the path object (preferred solution, IMHO) or the library should ensure its availability during these stages. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/8642 https://svn.boost.org/trac10/ticket/8642 Report #8637: Warnings in boost/parameter/aux_/tagged_argument.hpp Fri, 31 May 2013 02:57:24 GMT Mon, 03 Jun 2013 18:01:43 GMT <p> The boost/parameter/aux_/tagged_argument.hpp in boost 1.54.0-beta1 rc causes the compiler to emit warnings. This was fixed in <a class="changeset" href="https://svn.boost.org/trac10/changeset/83985" title="Parameter: fix minor warnings.">r83985</a> and should be backported to the 1.54 branch. </p> Jim Garrison <jim@…> https://svn.boost.org/trac10/ticket/8637 https://svn.boost.org/trac10/ticket/8637 Report #8634: boost/filesystem/path.hpp is not self-sufficient Thu, 30 May 2013 13:39:29 GMT Fri, 11 Mar 2016 08:49:32 GMT <p> The following code is compiled under VC2012: </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; boost::filesystem::path p("file.txt"); size_t hash = boost::filesystem::hash_value(p); </pre><p> but gives link error: </p> <pre class="wiki">error LNK2019: unresolved external symbol "void __cdecl boost::hash_combine&lt;wchar_t&gt;(unsigned int &amp;,wchar_t const &amp;)" (??$hash_combine@_W@boost@@YAXAAIAB_W@Z) referenced in function "unsigned int __cdecl boost::filesystem::hash_value(class boost::filesystem::path const &amp;)" (?hash_value@filesystem@boost@@YAIABVpath@12@@Z) </pre><p> I fixed it by replacing </p> <pre class="wiki">#include &lt;boost/functional/hash_fwd.hpp&gt; </pre><p> with </p> <pre class="wiki">#include &lt;boost/functional/hash.hpp&gt; </pre> Valentin Shtronda <valiko.ua@…> https://svn.boost.org/trac10/ticket/8634 https://svn.boost.org/trac10/ticket/8634 Report #8631: property_three - use user std::locale Thu, 30 May 2013 03:57:45 GMT Thu, 30 May 2013 03:57:45 GMT <p> property_tree use locale::global(). :(. Unfortunately "std::locale::global" global process property. In multytread programm this problem. </p> <p> Perhaps a small patch will improve the situation: </p> <p> property_tree pt; pt.put_value(12345, locale("")); </p> shirshov evgeny <381677383@…> https://svn.boost.org/trac10/ticket/8631 https://svn.boost.org/trac10/ticket/8631 Report #8628: spsc_queue::pop(OutputIterator it) improperly works with random-access iterators if the read pointer is bigger than the write pointer (stored data consists of 2 blocks) Wed, 29 May 2013 00:40:33 GMT Wed, 29 May 2013 01:23:26 GMT <p> spsc_queue::pop(<a class="missing wiki">OutputIterator</a> it) method improperly works with random-access iterators if the queue's read pointer is bigger than the queue's write pointer (the queue's stored data consists of 2 blocks) </p> <p> The following code will fill dst array improperly if the queue's read pointer is bigger than the queue's write pointer: </p> <p> unsigned char* dst=new unsigned char<a class="changeset" href="https://svn.boost.org/trac10/changeset/100" title="*** empty log message *** ">[100]</a>; </p> <p> count=q.pop(dst); </p> <p> The bug caused by the code in spsc_queue.hpp:224: </p> <p> std::copy(internal_buffer+read_index, internal_buffer+max_size, it); </p> <p> std::copy(internal_buffer, internal_buffer+count1, it); </p> <p> It will copy the second fragment starting from the same point it copied the first ftagment. The problem can be fixed as: </p> <p> it=std::copy(internal_buffer+read_index, internal_buffer+max_size, it); </p> <p> std::copy(internal_buffer, internal_buffer+count1, it); </p> Constantin Fishkin <constantin_fishkin@…> https://svn.boost.org/trac10/ticket/8628 https://svn.boost.org/trac10/ticket/8628 Report #8625: Add function to indicate if `swap` is no-throw Tue, 28 May 2013 14:24:02 GMT Tue, 28 May 2013 14:24:02 GMT <p> While writing a library for Boost, I found the need for this function: </p> <pre class="wiki"> #include &lt;utility&gt; //! Detect if a type's swap (found via ADL for //! non-built-ins) throws. template &lt; typename T, typename U = T &gt; inline constexpr bool is_swap_nothrow() noexcept { using std::swap; return noexcept( swap(std::declval&lt;T &amp;&gt;(), std::declval&lt;U &amp;&gt;()) ); } </pre><p> while writing my container's swap. You would probably use the macros for "inline," "constexpr," operator "noexcept," and the "noexcept" flag, but the function is pretty much useless unless all of those features are fully defined. The function has to be shielded from pre-C++11 compiles, of course. </p> Daryle Walker https://svn.boost.org/trac10/ticket/8625 https://svn.boost.org/trac10/ticket/8625 Report #8623: Remove use of `boost::blank` Tue, 28 May 2013 02:37:12 GMT Tue, 28 May 2013 02:37:12 GMT <p> The attached patch removes the dependency on <code>boost::blank</code>, while incidentally improving error messages when the metafunction preconditions do not hold. </p> K-ballo <kaballo86@…> https://svn.boost.org/trac10/ticket/8623 https://svn.boost.org/trac10/ticket/8623 Report #8612: unused pointers in copying of handlers Thu, 23 May 2013 22:15:28 GMT Thu, 25 Jul 2013 06:22:21 GMT <p> boost/asio/detail/reactive_socket_recv_op.hpp: </p> <pre class="wiki"> 84 static void do_complete(io_service_impl* owner, operation* base, 85 const boost::system::error_code&amp; /*ec*/, 86 std::size_t /*bytes_transferred*/) 87 { 88 // Take ownership of the handler object. 89 reactive_socket_recv_op* o(static_cast&lt;reactive_socket_recv_op*&gt;(base)); CID 11125 (2): Unused pointer value (UNUSED_VALUE) CID 10926 (#1 of 1): Unused pointer value (UNUSED_VALUE) returned_pointer: Pointer "p.h" returned by "addressof(o-&gt;handler_)" is never used. 90 ptr p = { boost::addressof(o-&gt;handler_), o, o }; 91 92 BOOST_ASIO_HANDLER_COMPLETION((o)); 93 94 // Make a copy of the handler so that the memory can be deallocated before 95 // the upcall is made. Even if we're not about to make an upcall, a 96 // sub-object of the handler may be the true owner of the memory associated 97 // with the handler. Consequently, a local copy of the handler is required 98 // to ensure that any owning sub-object remains valid until after we have 99 // deallocated the memory here. 100 detail::binder2&lt;Handler, boost::system::error_code, std::size_t&gt; 101 handler(o-&gt;handler_, o-&gt;ec_, o-&gt;bytes_transferred_); 102 p.h = boost::addressof(handler.handler_); 103 </pre><p> boost/asio/detail/reactive_socket_send_op.hpp: </p> <pre class="wiki"> 81 static void do_complete(io_service_impl* owner, operation* base, 82 const boost::system::error_code&amp; /*ec*/, 83 std::size_t /*bytes_transferred*/) 84 { 85 // Take ownership of the handler object. 86 reactive_socket_send_op* o(static_cast&lt;reactive_socket_send_op*&gt;(base)); CID 11126 (4): Unused pointer value (UNUSED_VALUE) CID 11126 (4): Unused pointer value (UNUSED_VALUE) CID 10927 (#2 of 2): Unused pointer value (UNUSED_VALUE) CID 10927 (#1 of 2): Unused pointer value (UNUSED_VALUE) returned_pointer: Pointer "p.h" returned by "addressof(o-&gt;handler_)" is never used. 87 ptr p = { boost::addressof(o-&gt;handler_), o, o }; 88 89 BOOST_ASIO_HANDLER_COMPLETION((o)); 90 91 // Make a copy of the handler so that the memory can be deallocated before 92 // the upcall is made. Even if we're not about to make an upcall, a 93 // sub-object of the handler may be the true owner of the memory associated 94 // with the handler. Consequently, a local copy of the handler is required 95 // to ensure that any owning sub-object remains valid until after we have 96 // deallocated the memory here. 97 detail::binder2&lt;Handler, boost::system::error_code, std::size_t&gt; 98 handler(o-&gt;handler_, o-&gt;ec_, o-&gt;bytes_transferred_); 99 p.h = boost::addressof(handler.handler_); </pre><p> boost/asio/detail/wait_handler.cpp: </p> <pre class="wiki">43 static void do_complete(io_service_impl* owner, operation* base, 44 const boost::system::error_code&amp; /*ec*/, 45 std::size_t /*bytes_transferred*/) 46 { 47 // Take ownership of the handler object. 48 wait_handler* h(static_cast&lt;wait_handler*&gt;(base)); CID 11127 (2): Unused pointer value (UNUSED_VALUE) CID 10929: Unused pointer value (UNUSED_VALUE) CID 10928 (#1 of 1): Unused pointer value (UNUSED_VALUE) returned_pointer: Pointer "p.h" returned by "addressof(h-&gt;handler_)" is never used. 49 ptr p = { boost::addressof(h-&gt;handler_), h, h }; 50 51 BOOST_ASIO_HANDLER_COMPLETION((h)); 52 53 // Make a copy of the handler so that the memory can be deallocated before 54 // the upcall is made. Even if we're not about to make an upcall, a 55 // sub-object of the handler may be the true owner of the memory associated 56 // with the handler. Consequently, a local copy of the handler is required 57 // to ensure that any owning sub-object remains valid until after we have 58 // deallocated the memory here. 59 detail::binder1&lt;Handler, boost::system::error_code&gt; 60 handler(h-&gt;handler_, h-&gt;ec_); 61 p.h = boost::addressof(handler.handler_); </pre><p> boost/asio/detail/wait_handler.cpp: </p> <pre class="wiki">43 static void do_complete(io_service_impl* owner, operation* base, 44 const boost::system::error_code&amp; /*ec*/, 45 std::size_t /*bytes_transferred*/) 46 { 47 // Take ownership of the handler object. 48 wait_handler* h(static_cast&lt;wait_handler*&gt;(base)); CID 11127 (2): Unused pointer value (UNUSED_VALUE) CID 10928: Unused pointer value (UNUSED_VALUE) CID 10929 (#1 of 1): Unused pointer value (UNUSED_VALUE) returned_pointer: Pointer "p.h" returned by "addressof(h-&gt;handler_)" is never used. 49 ptr p = { boost::addressof(h-&gt;handler_), h, h }; 50 51 BOOST_ASIO_HANDLER_COMPLETION((h)); 52 53 // Make a copy of the handler so that the memory can be deallocated before 54 // the upcall is made. Even if we're not about to make an upcall, a 55 // sub-object of the handler may be the true owner of the memory associated 56 // with the handler. Consequently, a local copy of the handler is required 57 // to ensure that any owning sub-object remains valid until after we have 58 // deallocated the memory here. 59 detail::binder1&lt;Handler, boost::system::error_code&gt; 60 handler(h-&gt;handler_, h-&gt;ec_); 61 p.h = boost::addressof(handler.handler_); </pre><p> boost/asio/ </p> Richard <legalize@…> https://svn.boost.org/trac10/ticket/8612 https://svn.boost.org/trac10/ticket/8612 Report #8611: pthread functions are called without checking return values for error Thu, 23 May 2013 16:09:24 GMT Sun, 09 Jun 2013 20:46:27 GMT <p> This is similar to <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/2681"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/2681</a> </p> <p> The errors are detected by coverity static analysis. </p> <pre class="wiki">58 void lock() 59 { CID 11713: Unchecked return value 60 pthread_mutex_lock(&amp;m_); 61 } 68 void unlock() 69 { CID 11714 (#1 of 1): Unchecked return value (CHECKED_RETURN) 1. check_return: Calling function "pthread_mutex_unlock(pthread_mutex_t *)" without checking return value (as is done elsewhere 6 out of 7 times). 2. unchecked_value: No check of the return value of "pthread_mutex_unlock(&amp;this-&gt;m_)". 70 pthread_mutex_unlock(&amp;m_); 71 } </pre> Richard <legalize@…> https://svn.boost.org/trac10/ticket/8611 https://svn.boost.org/trac10/ticket/8611 Report #8608: Default lambda expression with mpl::equal Wed, 22 May 2013 21:25:01 GMT Wed, 22 May 2013 21:25:01 GMT <p> Summary of the original message posted on the mailing list: </p> <hr /> <p> Some higher order algorithms in the MPL have a default for the lambda expression they accept. A good example is <code>boost::mpl::equal</code>: </p> <pre class="wiki"> template &lt;typename S1, typename S2, typename Pred = is_same&lt;_, _&gt; &gt; struct equal; </pre><p> This works fine most of the time, but I was recently bitten by the following: </p> <pre class="wiki"> template &lt;typename VectorOfVectors, typename Vector&gt; struct find_vector : find_if&lt; VectorOfVectors, equal&lt;Vector, _1&gt; &gt; { }; typedef find_vector&lt; vector&lt; vector&lt;int, int&gt;, vector&lt;char, char&gt; &gt;, vector&lt;char, char&gt; &gt;::type ThisWillBreak; </pre><p> What happens here is that the <code>equal&lt;Vector, _1&gt;</code> expression inside <code>find_vector</code> really is <code>equal&lt;Vector, _1, is_same&lt;_1, _2&gt; &gt;</code> because of the default value for the predicate to <code>equal</code>. When the lambda is evaluated, the placholders inside the inner <code>is_same&lt;_1, _2&gt;</code> expression are replaced too, which yields unexpected results. </p> <hr /> <p> Original thread: <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/241690"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/241690</a> </p> Louis Dionne <ldionne.2@…> https://svn.boost.org/trac10/ticket/8608 https://svn.boost.org/trac10/ticket/8608 Report #8607: Duplicate Symbols when using Parameter or Graph Library on HP-UX Wed, 22 May 2013 20:44:04 GMT Wed, 22 May 2013 20:44:04 GMT <p> On HP-UX 11i v2 (B.11.23), using gcc 4.0.1 and the native linker (ld B.11.59) </p> <p> When linking a shared library which has multiple object files using the Boost Graph library or other code using the Parameter library, the link process fails with several dozen "duplicate symbol" errors, such as: </p> <p> [18:50:06]/usr/ccs/bin/ld: Duplicate symbol "boost::graph::keywords::(anonymous namespace)::_vertices_equivalent" in files .libs/a.o and .libs/b.o </p> <p> Root cause seems to be that the linker has an issue collapsing variables defined with a templated type into a single definition; specifically when boost/parameter/name.hpp is included in multiple files. </p> <p> This also appears to be an issue with versions of MSVC before 1300. </p> <p> The attached patch file corrects the issue by enabling the same fix for MSVC &lt;1300 when compiled on HPPA systems. </p> <p> Note that this issue does not appear on HPUX 11.23 Itanium (ia64), which has a different native linker implementation. </p> James Hugard <james_hugard@…> https://svn.boost.org/trac10/ticket/8607 https://svn.boost.org/trac10/ticket/8607 Report #8601: GCC 4.7.3 prints warning [-Wmaybe-uninitialized] for multi_array.hpp Tue, 21 May 2013 12:39:43 GMT Sat, 25 May 2013 13:38:20 GMT <p> When compiling the attached test case program using Boost 1.53.0 and GCC 4.7.3: </p> <pre class="wiki">g++ -Wall -O2 -DBOOST_DISABLE_ASSERTS -I/path/to/include/dir test_prog.cpp </pre><p> where test_prog.cpp is </p> <pre class="wiki">#include "boost/multi_array.hpp" int main() { boost::multi_array&lt;int,1&gt; A; A.resize(boost::extents[2]); A[0] = 0; A[1] = 0; return(0); } </pre><p> I get the following warning: </p> <pre class="wiki">In file included from test_prog.cpp:1:0: /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array.hpp: In member function ‘boost::multi_array&lt;T, NumDims, Allocator&gt;&amp; boost::multi_array&lt;T, NumDims, Allocator&gt;::resize(const boost::detail::multi_array::extent_gen&lt;NumDims&gt;&amp;) [with T = int; long unsigned int NumDims = 1ul; Allocator = std::allocator&lt;int&gt;; boost::multi_array&lt;T, NumDims, Allocator&gt; = boost::multi_array&lt;int, 1ul&gt;]’: /mn/anatu/cma-u3/tmac/usr/include/boost/multi_array.hpp:401:16: warning: ‘new_strides.boost::array&lt;long int, 1ul&gt;::elems[0ul]’ may be used uninitialized in this function [-Wmaybe-uninitialized] </pre> Torquil Sørensen <torquil@…> https://svn.boost.org/trac10/ticket/8601 https://svn.boost.org/trac10/ticket/8601 Report #8600: wait_for_any hangs, if called with multiple copies of shared_future referencing same task Tue, 21 May 2013 11:50:16 GMT Tue, 04 Jun 2013 06:13:38 GMT <p> The following small test program shows the problem: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/thread.hpp&gt; int calculate_the_answer_to_life_the_universe_and_everything() { return 42; } int main(int argc, char* argv[]) { boost::packaged_task&lt;int&gt; pt(calculate_the_answer_to_life_the_universe_and_everything); boost::shared_future&lt;int&gt; fi1 = boost::shared_future&lt;int&gt;(pt.get_future()); boost::shared_future&lt;int&gt; fi2 = fi1; boost::thread task(boost::move(pt)); // launch task on a thread boost::wait_for_any(fi1, fi2); std::cout &lt;&lt; "Wait for any returned\n"; return (0); } </pre><p> This program hangs infinitely in the call to boost::wait_for_any. From the docs I would expect this to work, because it's allowed to copy shared_futures. If this is not allowed, a possibility would be needed, to find out, if two shared_futures point to the same task or not. Currently wait_for_any is unusable, if there are chances, that multiple shared_futures point to the same result. </p> Martin Apel <martin.apel@…> https://svn.boost.org/trac10/ticket/8600 https://svn.boost.org/trac10/ticket/8600 Report #8599: enable_shared_from_this -- no throw alternative Tue, 21 May 2013 07:00:41 GMT Tue, 21 May 2013 07:00:41 GMT <p> I think that enable_shared_from_this misses one feature, that is accessible for weak_ptr and allows no throw access to the underlying instance to a shared_ptr, by either a valid pointer or a null_ptr (boost::weak_ptr::lock). </p> <p> It would be great to have such a mechanism for enable_shared_from_this as well -- i.e. returning the weak_ptr via member functions weak_this and then chain with lock -- to avoid bad_weak_ptr exception. </p> <p> Background: Combining intrusive container with enable_shared_from_this and auto-unlink option, where the element own the container, the only way to determine if an element is currently unlinking itself in muti threaded execution, is via an exception, rather than just checking for a null_ptr. </p> <p> Where this setup might sound very rare, it is one of the most powerful combinations of shared_ptr aliasing, intrusive-containers and enable_shared_from_this for perfect concurrent lookup containers. </p> <p> And under multi-threading conditions, the exception may get very common and therefore expensive. </p> ingo.loehken@… https://svn.boost.org/trac10/ticket/8599 https://svn.boost.org/trac10/ticket/8599 Report #8597: Add single precision float support for spirit and/or utree Mon, 20 May 2013 16:44:33 GMT Mon, 20 May 2013 17:18:07 GMT <p> Currently there is only double precision floating point support that I know of. However, we are cross compiling to <a class="missing wiki">ArchLinux</a> ARM, and would like to stay in the realm of 32-bit single precision if at all possible, and void ARM hard or soft floating point issues if at all possible. </p> Michael Powell <mwpowellhtx@…> https://svn.boost.org/trac10/ticket/8597 https://svn.boost.org/trac10/ticket/8597 Report #8593: enable std::atomic with clang / libc++ Sun, 19 May 2013 23:50:10 GMT Tue, 21 May 2013 07:36:04 GMT <p> Attatched is a simple patch that checks if we're usng a version of clang / libc++ that has &lt;atomic&gt; support. </p> <p> The: </p> <pre class="wiki">#if defined(_LIBCPP_VERSION) &amp;&amp; __has_include( &lt;atomic&gt; ) </pre><p> is on a second line because I previously had problems with the <span class="underline">has_include( &lt;&gt; ) macro when this code is interpreted by MSVC compiler - it seems to want to process the entire line despite the first check failing. </span></p> reakinator@… https://svn.boost.org/trac10/ticket/8593 https://svn.boost.org/trac10/ticket/8593 Report #8592: Cross compiling on OS X to linux gets the shared object name wrong Sun, 19 May 2013 21:45:47 GMT Thu, 20 Jun 2013 16:46:11 GMT <p> I'm compiling boost for openwrt on my OS X machine, but it fails near the end, because the shared libraries produced are given the extension .dylib instead of .so. It also affect SONAME inside the lib, which stops me from just renaming them. </p> <p> I'm not really sure what the best way of reproduceing is, short of compiling openwrt: </p> <pre class="wiki">svn co svn://svn.openwrt.org/openwrt/tags/attitude_adjustment_12.09 cd attitude_adjustment_12.09 ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig (enable boost_system in libraries) make V=s </pre><p> Here's the command used to build boost if that helps: </p> <p> <code>( cd /Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0 ; echo "using gcc : mipsel : mipsel-openwrt-linux-gcc : &lt;compileflags&gt;\"-Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float\" &lt;cxxflags&gt;\"-Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float\" &lt;linkflags&gt;\"-L/Volumes/data/Unix/openwrt/wl500gp/staging_dir/target-mipsel_uClibc-0.9.33.2/usr/lib -L/Volumes/data/Unix/openwrt/wl500gp/staging_dir/target-mipsel_uClibc-0.9.33.2/lib -L/Volumes/data/Unix/openwrt/wl500gp/staging_dir/toolchain-mipsel_gcc-4.6-linaro_uClibc-0.9.33.2/usr/lib -L/Volumes/data/Unix/openwrt/wl500gp/staging_dir/toolchain-mipsel_gcc-4.6-linaro_uClibc-0.9.33.2/lib -pthread -lrt\" ;" &gt; tools/build/v2/user-config.jam ; bjam '-sBUILD=release &lt;optimization&gt;space &lt;inlining&gt;on &lt;debug-symbols&gt;off' --toolset=gcc-mipsel --build-type=minimal --layout=system --disable-long-double --target=mipsel-openwrt-linux --host=mipsel-openwrt-linux --build=x86_64-apple-darwin12.3.0 --program-prefix="" --program-suffix="" --prefix=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install --exec-prefix=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install --bindir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/bin --sbindir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/sbin --libexecdir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/lib --sysconfdir=/etc --datadir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/share --localstatedir=/var --mandir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/man --infodir=/Volumes/data/Unix/openwrt/wl500gp/build_dir/target-mipsel_uClibc-0.9.33.2/boost_1_49_0/ipkg-install/info --disable-nls --without-chrono --without-date_time --without-exception --without-filesystem --without-graph --without-graph_parallel --without-locale --without-math --without-mpi --without-python --without-random --without-regex --without-serialization --without-signals --without-test --without-thread --without-timer --without-wave -sNO_BZIP2=1 -sZLIB_INCLUDE=/Volumes/data/Unix/openwrt/wl500gp/staging_dir/target-mipsel_uClibc-0.9.33.2/usr/include -sZLIB_LIBPATH=/Volumes/data/Unix/openwrt/wl500gp/staging_dir/target-mipsel_uClibc-0.9.33.2/usr/lib install )</code> </p> per@… https://svn.boost.org/trac10/ticket/8592 https://svn.boost.org/trac10/ticket/8592 Report #8588: program_options eats parameter instead of reporting previous one missing an argument Sat, 18 May 2013 22:03:05 GMT Thu, 12 Nov 2015 10:29:21 GMT <p> If a parameter is specified with a mandatory argument, but the argument is omitted, the following parameter is used as the argument instead. For example: </p> <pre class="wiki"> ./test --dump-firmware Invalid command line syntax: the required argument for option '--firmware' is missing. Use --help for help. ./test --dump-firmware --help dumping firmware to file: --help </pre><p> Here, --dump-firmware requires an argument, and "--help" is passed in as the argument. Instead, "--help" should be treated as a parameter (either valid or not) and --dump-firmware should report a missing parameter instead. </p> Adam Nielsen <a.nielsen@…> https://svn.boost.org/trac10/ticket/8588 https://svn.boost.org/trac10/ticket/8588 Report #8587: Command line response file not being shown in regression tests Sat, 18 May 2013 15:37:52 GMT Sat, 26 Aug 2017 15:50:16 GMT <p> In the online regression test page, when looking at a particular regression test, the compiler command line can be viewed. But when the compiler command line shows a response file being used for compiler options, the contents of the response file are not being shown. </p> Edward Diener https://svn.boost.org/trac10/ticket/8587 https://svn.boost.org/trac10/ticket/8587 Report #8583: tar attempts to change ownership to invalid uid. Sat, 18 May 2013 02:35:03 GMT Sat, 25 May 2013 13:39:07 GMT <p> When running as root, untaring the boost package using gentoo prefix on Interix v3.5 for Windows XP fails with: </p> <blockquote> <p> <em>Cannot change ownership to uid 501, gid 0: Invalid argument</em> </p> </blockquote> <p> This is solved by running tar with flags: </p> <blockquote> <p> "--user root --no-same-owner" </p> </blockquote> <p> This issue is unique to boost .tar.gz files and blocks any installation by gentoo emerge. </p> <p> More information found here: <a class="ext-link" href="http://forums.gentoo.org/viewtopic-t-959612-highlight-.html"><span class="icon">​</span>http://forums.gentoo.org/viewtopic-t-959612-highlight-.html</a> </p> akf@… https://svn.boost.org/trac10/ticket/8583 https://svn.boost.org/trac10/ticket/8583 Report #8582: Improve string algorithm Stacking Fri, 17 May 2013 17:47:12 GMT Fri, 17 May 2013 18:04:32 GMT <p> The documentation for the string algorithm library states: </p> <p> "Algorithm stacking: Copy versions return a transformed input as a result, thus allow a simple chaining of transformations within one expression (i.e. one can write trim_copy(to_upper_copy(s))). Mutable versions have void return, to avoid misuse. " </p> <p> I'm not sure what they mean by misuse but if all of the mutable version returned a reference to the object you are manipulating then you could chain them together without paying the price of copying the string over and over again. </p> rlogel@… https://svn.boost.org/trac10/ticket/8582 https://svn.boost.org/trac10/ticket/8582 Report #8581: Files in C:\ProgramData\boost_interprocess are not accessible. Fri, 17 May 2013 14:43:18 GMT Wed, 07 Sep 2016 20:11:16 GMT <p> When a service running as "Local System" user is using managed_shared_memory the file used for that shared memory is created in C:\<a class="missing wiki">ProgramData</a>\boost_interprocess\*\*. </p> <p> The permissions for this file are such that a regular user starting a process that wants to access that shared memory is not able to access the file and thus access the shared memory. </p> Andreas Neustifter <andreas.neustifter@…> https://svn.boost.org/trac10/ticket/8581 https://svn.boost.org/trac10/ticket/8581 Report #8579: qi::as/qi::attr_cast<container_type> cannot be combined with some other parsers Thu, 16 May 2013 04:02:38 GMT Thu, 16 May 2013 04:02:38 GMT <p> The following code should compile, but it doesn't. If you remove "&gt;&gt; qi::eoi" part from the rule, it compiles. There may be other parsers in place of qi::eoi which don't expose any attribute (qi::lit, qi::eps) - the code won't compile either. qi::as&lt;vector_type&gt; is redundant in this particular example, but it can do the work in a real program. </p> <pre class="wiki">#include &lt;boost/spirit/include/qi.hpp&gt; #include &lt;boost/spirit/include/qi_match.hpp&gt; #include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;vector&gt; namespace qi = boost::spirit::qi; int main() { typedef std::vector&lt;int&gt; vector_type; vector_type vector; std::istringstream is("11 22 33"); is &gt;&gt; std::noskipws &gt;&gt; qi::match(qi::as&lt;vector_type&gt;()[qi::int_ % ' '] &gt;&gt; qi::eoi, vector); // is &gt;&gt; std::noskipws &gt;&gt; qi::match(qi::attr_cast&lt;vector_type&gt;(qi::int_ % ' ') &gt;&gt; qi::eoi, vector); assert(is); for (auto value : vector) std::cout &lt;&lt; value &lt;&lt; ' '; } </pre> Vadim Guchenko <yhw@…> https://svn.boost.org/trac10/ticket/8579 https://svn.boost.org/trac10/ticket/8579 Report #8572: iosteams indirect_streambuf::init_put_area should seek if data has been read from the get buffer Tue, 14 May 2013 15:54:33 GMT Tue, 14 May 2013 15:54:33 GMT <p> The following code with std::fstream prints 0x1801 but with boost::iostream prints 0x2000: </p> <pre class="wiki"> boost::iostreams::stream&lt; boost::iostreams::file &gt; ios( boost::iostreams::file( "test.dat", std::ios_base::binary | std::ios_base::in | std::ios_base::out | std::ios_base::trunc ), 0x800 ); //std::fstream ios( "test.dat", std::ios_base::binary | std::ios_base::in | std::ios_base::out | std::ios_base::trunc ); char buffer[ 0x2000 ]; ios.write( buffer, 0x2000 ); ios.seekg( -0x1000, std::ios_base::cur ); ios.get(); ios.write( buffer, 0x800 ); std::cout &lt;&lt; std::hex &lt;&lt; ios.tellp() &lt;&lt; std::endl; std::cout &lt;&lt; std::hex &lt;&lt; ios.tellg() &lt;&lt; std::endl; </pre><p> I believe the problem lies in indirect_streambuf::init_put_area. The current implementation is: </p> <pre class="wiki"> if (shared_buffer() &amp;&amp; gptr() != 0) setg(0, 0, 0); if (output_buffered()) setp(out().begin(), out().end()); else setp(0, 0); </pre><p> I think it should be: </p> <pre class="wiki"> if (shared_buffer() &amp;&amp; gptr() != 0) { obj().seek(gptr()-egptr(), BOOST_IOS::cur, BOOST_IOS::in, next_); setg(0, 0, 0); } if (output_buffered()) setp(out().begin(), out().end()); else setp(0, 0); </pre> Alan Birtles <alan.birtles@…> https://svn.boost.org/trac10/ticket/8572 https://svn.boost.org/trac10/ticket/8572 Report #8566: Enable writing of CDATA Mon, 13 May 2013 14:28:46 GMT Tue, 26 Jun 2018 14:27:25 GMT <p> If one tries to write a node using write_xml </p> <p> &lt;example&gt;&lt;![CDATA[&lt;&gt;]]&gt;&lt;/example&gt; </p> <p> the characters &lt;&gt; (and probably &amp; etc.) get escaped in HTML style. The output file will contain </p> <p> &lt;example&gt;&amp;lt;![CDATA[&amp;lt;&amp;gt;]]&amp;gt;&lt;/example&gt; </p> <p> Might it be a solution to introduce another sub-key &lt;xmlcdata&gt; (like &lt;xmlcomment&gt;) and write code analogue to function write_xml_comment like </p> <pre class="wiki"> template&lt;class Ch&gt; void write_xml_xcdata(std::basic_ostream&lt;Ch&gt; &amp;stream, const std::basic_string&lt;Ch&gt; &amp;s, int indent, bool separate_line, const xml_writer_settings&lt;Ch&gt; &amp; settings ) { typedef typename std::basic_string&lt;Ch&gt; Str; if (separate_line) write_xml_indent(stream,indent,settings); stream &lt;&lt; Ch('&lt;') &lt;&lt; Ch('!') &lt;&lt; Ch('[') &lt;&lt; Ch('C') &lt;&lt; Ch('D') &lt;&lt; Ch('A') &lt;&lt; Ch('T') &lt;&lt; Ch('A') &lt;&lt; Ch('['); stream &lt;&lt; s; stream &lt;&lt; Ch(']') &lt;&lt; Ch(']') &lt;&lt; Ch('&gt;'); if (separate_line) stream &lt;&lt; Ch('\n'); } </pre> Wolf A. Heidrich <wolf.heidrich@…> https://svn.boost.org/trac10/ticket/8566 https://svn.boost.org/trac10/ticket/8566 Report #8565: Lists in admonitions Mon, 13 May 2013 11:12:38 GMT Sun, 29 Sep 2013 11:35:22 GMT <p> It seems not to be possible to include lists in admonitions. </p> <p> E.g. the following won't work, meaning no list will be displayed but just the stars as characters: </p> <p> [note Some text for my note </p> <ul><li>first point I want to note </li><li>second point I want to note </li></ul><p> ] </p> thomas.moeck@… https://svn.boost.org/trac10/ticket/8565 https://svn.boost.org/trac10/ticket/8565 Report #8564: Variable hiding errors within nested let blocks in Phoenix Sat, 11 May 2013 23:41:08 GMT Sun, 01 Feb 2015 21:50:40 GMT <p> I encounter errors when using nested let blocks in Phoenix whenever an "inner" local variable hides an "outer" local variable. The "Visibility" example from the documentation at <a href="http://www.boost.org/doc/libs/1_53_0/libs/phoenix/doc/html/phoenix/modules/scope/let.html">http://www.boost.org/doc/libs/1_53_0/libs/phoenix/doc/html/phoenix/modules/scope/let.html</a> also fails. Here is that "Visibility" example as a standalone module which fails: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/phoenix.hpp&gt; namespace phoenix = boost::phoenix; using namespace phoenix::local_names; int main(int argc, char *argv[]) { phoenix::let(_x = 1, _y = ", World") [ phoenix::let(_x = "Hello") // hides the outer _x [ std::cout &lt;&lt; _x &lt;&lt; _y // prints "Hello, World" ] ](); return 0; } </pre><p> The errors I receive from GCC 4.7.2, GCC 4.8 snapshot, and Clang 3.2, with any of Boost 1.49, 1.53, or trunk, begin as follows: </p> <blockquote> <p> GCC: "error: function returning an array" </p> </blockquote> <blockquote> <p> Clang: "error: function cannot return array type 'result_type' (aka 'char <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">[6]</a>')" </p> </blockquote> <p> Another failing example provided in Eric Niebler's Stack Overflow answer <a class="ext-link" href="http://stackoverflow.com/questions/16408770/variable-hiding-within-nested-let-blocks-in-boost-phoenix"><span class="icon">​</span>here</a> is: </p> <pre class="wiki">int y = 0; int x = (phoenix::let(_a = 1, _b = 2)[phoenix::let(_b = 3)[ _a ]])(y); </pre><p> ...which contrasts with the following example; which does compile: </p> <pre class="wiki">int y = 0; int x = (phoenix::let(_a = 1, _b = 2)[phoenix::let(_b = _1)[ _a ]])(y); </pre> miremare@… https://svn.boost.org/trac10/ticket/8564 https://svn.boost.org/trac10/ticket/8564 Report #8562: Pool doc lists incorrect header file Fri, 10 May 2013 21:06:59 GMT Fri, 10 May 2013 21:06:59 GMT <p> The pool documentation (<a href="http://www.boost.org/doc/libs/1_53_0/libs/pool/doc/html/boost_pool/pool/conventions.html">http://www.boost.org/doc/libs/1_53_0/libs/pool/doc/html/boost_pool/pool/conventions.html</a>) specifies that users can include </p> <p> #include &lt;boost/pool.hpp&gt; </p> <p> This is incorrect; users must in fact include </p> <p> #include &lt;boost/pool/pool.hpp&gt; </p> <p> in order to get the required functionality. </p> Luis G. Torres <lgtorres42@…> https://svn.boost.org/trac10/ticket/8562 https://svn.boost.org/trac10/ticket/8562 Report #8558: some misspell fixes Thu, 09 May 2013 18:19:38 GMT Wed, 15 May 2013 16:42:44 GMT <p> some misspell fixes </p> vlajos@… https://svn.boost.org/trac10/ticket/8558 https://svn.boost.org/trac10/ticket/8558 Report #8545: Can quickbook support parts and chapters as well as sections? Fri, 03 May 2013 15:56:14 GMT Mon, 06 May 2013 16:38:17 GMT <p> Currently the only "top level" structure supported is the section, but it would be very useful for longer documents have to have support for chapters, parts and appendixes as well. As far as I know these can't be implemented as templates as these get &lt;para&gt;...&lt;/para&gt; wrapped around them even when they're block templates. </p> John Maddock https://svn.boost.org/trac10/ticket/8545 https://svn.boost.org/trac10/ticket/8545 Report #8540: Named Condition Variable hanging. Thu, 02 May 2013 04:06:26 GMT Mon, 13 May 2013 21:32:21 GMT <p> Hi, </p> <p> I am having problems with the shared memory code below. I can get this working on a Windows, MAC and OpenSUSE machine. However this same code does not work on my redhat v5.0 workstation machine. </p> <p> It appears to hang on the wait (condition variable). Any idea why this would be the case on this particular OS? I can't find anything online on the subject. </p> <p> Website of code: <a class="ext-link" href="http://en.highscore.de/cpp/boost/interprocesscommunication.html#interprocesscommunication_managed_shared_memory"><span class="icon">​</span>http://en.highscore.de/cpp/boost/interprocesscommunication.html#interprocesscommunication_managed_shared_memory</a> </p> <p> #include &lt;boost/interprocess/managed_shared_memory.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; #include &lt;boost/interprocess/sync/named_condition.hpp&gt; #include &lt;boost/interprocess/sync/scoped_lock.hpp&gt; #include &lt;iostream&gt; </p> <p> int main() { </p> <blockquote> <p> boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_or_create, "shm", 1024); int *i = managed_shm.find_or_construct&lt;int&gt;("Integer")(0); boost::interprocess::named_mutex named_mtx(boost::interprocess::open_or_create, "mtx"); boost::interprocess::named_condition named_cnd(boost::interprocess::open_or_create, "cnd"); boost::interprocess::scoped_lock&lt;boost::interprocess::named_mutex&gt; lock(named_mtx); while (*i &lt; 10) { </p> <blockquote> <p> if (*i % 2 == 0) { </p> <blockquote> <p> ++(*i); named_cnd.notify_all(); named_cnd.wait(lock); </p> </blockquote> <p> } else { </p> <blockquote> <p> std::cout &lt;&lt; *i &lt;&lt; std::endl; ++(*i); named_cnd.notify_all(); named_cnd.wait(lock); </p> </blockquote> <p> } </p> </blockquote> <p> } named_cnd.notify_all(); boost::interprocess::shared_memory_object::remove("shm"); boost::interprocess::named_mutex::remove("mtx"); boost::interprocess::named_condition::remove("cnd"); </p> </blockquote> <p> } </p> ealfay@… https://svn.boost.org/trac10/ticket/8540 https://svn.boost.org/trac10/ticket/8540 Report #8539: Windows Extended Path Prefix Suggestion Thu, 02 May 2013 03:45:48 GMT Fri, 03 May 2013 20:05:29 GMT <p> With the Windows extended path prefix: </p> <pre class="wiki">\\?\ </pre><p> It might make sense if the path class pre-allocates 4 extra characters for paths and stores the actual path at position m_pathname<a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a> in the string. When a path exceeds MAX_PATH, the path functions could write the extended path prefix at m_pathname<a class="missing changeset" title="No changeset 0 in the repository">[0]</a> and pass that along to the Windows API. It may make sense to return this as something like extended_path() as well. </p> <p> The only problems in dealing with extended paths are that there can be no relative path (. and ..) segments and no forward slashes. </p> <p> I realize this may require alot of logic changes in the code (shifting read/write locations); however it could cut down on additional Windows-specific wrappers around the path class. </p> ascend4nt@… https://svn.boost.org/trac10/ticket/8539 https://svn.boost.org/trac10/ticket/8539 Report #8535: problem with paths that have whitespace in boost::program_options Wed, 01 May 2013 16:45:25 GMT Fri, 13 Jul 2018 04:22:37 GMT <p> This seems to be a known bug since at least 2008. Full description and suggested solution is mentioned in the external link below: </p> <p> [boost.2283326.n4.nabble.com/program-options-Problem-with-paths-that-have-spaces-td2576490.html] </p> <p> In short: when a boost::filesystem::path is used directly to retrieve a path parameter, if the path has a whitespace -- regardless of whether / or \ is used, or the whitespace is escaped, or the path is double-quoted -- a parsing error occurs. </p> <p> The current workaround is to use string and then convert that to boost::filesystem::path using the = operator of the path class, however this looks more of a "bug" in program_options rather than new feature in lexical_cast module since in program_options lexical casting of string to path is obviously failing and should not have been considered. </p> bdahi@… https://svn.boost.org/trac10/ticket/8535 https://svn.boost.org/trac10/ticket/8535 Report #8529: boost/spirit/home/karma/stream/stream.hpp comments about special overload incomplete Tue, 30 Apr 2013 15:45:12 GMT Wed, 09 Apr 2014 02:05:49 GMT <p> The comments here: </p> <blockquote> <p> <em> this is a special overload to detect if the output iterator has been </em> generated by a format_manip object. template &lt; </p> <blockquote> <p> typename T, typename Traits, typename Properties, typename Context </p> </blockquote> <p> , typename Delimiter, typename Attribute </p> <blockquote class="citation"> </blockquote> </blockquote> <blockquote> <p> static bool generate( </p> <blockquote> <p> karma::detail::output_iterator&lt; </p> <blockquote> <p> karma::ostream_iterator&lt;T, Char, Traits&gt;, Properties </p> <blockquote class="citation"> <p> &amp; sink, Context&amp; context, Delimiter const&amp; d </p> </blockquote> </blockquote> </blockquote> <p> , Attribute const&amp; attr) </p> </blockquote> <blockquote> <p> { </p> </blockquote> <p> around line 153 should also indicate that this function is called, at least sometimes, when just a stream operator is used. For example, when the attached is run, the above method is also called despite there being no format_manip object used. </p> cppljevans https://svn.boost.org/trac10/ticket/8529 https://svn.boost.org/trac10/ticket/8529 Report #8523: Python library warning messages Tue, 30 Apr 2013 06:53:08 GMT Mon, 08 Jul 2013 00:55:10 GMT <p> Hi, </p> <p> I built Boost 1.53.0 on Fedora 18 32/64-bit using the following command: </p> <p> ./b2 link=shared runtime-link=shared address-model=32|64 variant=release </p> <p> and received the following messages during the compilation: </p> <p> libs/python/src/object/enum.cpp: In function ‘boost::python::api::object boost::python::objects::{anonymous}::new_enum_type(const char*, const char*)’: libs/python/src/object/enum.cpp:150:44: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/class.cpp: In function ‘<a class="missing wiki">PyObject</a>* boost::python::objects::static_data()’: libs/python/src/object/class.cpp:211:46: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/class.cpp: In function ‘boost::python::type_handle boost::python::objects::class_metatype()’: libs/python/src/object/class.cpp:319:49: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/class.cpp: In function ‘boost::python::type_handle boost::python::objects::class_type()’: libs/python/src/object/class.cpp:473:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/function.cpp: In constructor ‘boost::python::objects::function::function(const boost::python::objects::py_function&amp;, const boost::python::detail::keyword*, unsigned int)’: libs/python/src/object/function.cpp:108:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/function.cpp:110:39: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/life_support.cpp: In function ‘<a class="missing wiki">PyObject</a>* boost::python::objects::make_nurse_and_patient(<a class="missing wiki">PyObject</a>*, <a class="missing wiki">PyObject</a>*)’: libs/python/src/object/life_support.cpp:94:43: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] libs/python/src/object/life_support.cpp:96:43: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] </p> lcarreon@… https://svn.boost.org/trac10/ticket/8523 https://svn.boost.org/trac10/ticket/8523 Report #8522: Using result_of on pure virtual functions lead to compile errors Tue, 30 Apr 2013 05:21:47 GMT Tue, 30 Apr 2013 05:21:47 GMT <p> minimal example: </p> <p> struct Test{ </p> <blockquote> <p> typedef int result_type; virtual int operator()(int)=0; </p> </blockquote> <p> }; typedef boost::result_of&lt;Test(int)&gt;::type type; </p> <p> fails because Test is pure virtual and thus the function pointer is invalid. </p> <p> from the mailing list: </p> <p> "This is supposed to work: </p> <blockquote> <p> typedef boost::result_of&lt;Test&amp;(int)&gt;::type type;" </p> </blockquote> <p> But apparently it does not: </p> <p> /usr/include/boost/utility/result_of.hpp:166:8: Error: »Test&amp;« is no class, structure or union type. </p> oswin.krause@… https://svn.boost.org/trac10/ticket/8522 https://svn.boost.org/trac10/ticket/8522 Report #8520: tuples set_delimiter and Unicode Mon, 29 Apr 2013 12:20:35 GMT Mon, 29 Apr 2013 12:20:35 GMT <p> set_delimiter does not work with unicode characters, e.g.: </p> <p> boost::tuples::set_delimiter(L','); </p> <p> tuple_io.hpp(203): warning C4244: 'argument' : conversion from 'const wchar_t' to 'const char', possible loss of data </p> gast128@… https://svn.boost.org/trac10/ticket/8520 https://svn.boost.org/trac10/ticket/8520 Report #8517: Async: Add a variadic shared_future::then Sun, 28 Apr 2013 21:07:05 GMT Tue, 28 May 2013 19:09:38 GMT <pre class="wiki">template&lt;typename S, typename ...F&gt; shared_future&lt;tuple&lt;typename boost::result_of&lt;F(shared_future&amp;)&gt;::type...&gt; future::then(S&amp;, F&amp;&amp; func ...); </pre> viboes https://svn.boost.org/trac10/ticket/8517 https://svn.boost.org/trac10/ticket/8517 Report #8514: Async: Add a thread_pool executor with work stealing. Sun, 28 Apr 2013 20:57:06 GMT Tue, 30 Apr 2013 22:49:57 GMT <p> See <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8513" title="#8513: Feature Requests: Async: Add a basic thread_pool executor. (closed: fixed)">#8513</a> for the basic thread_pool interface </p> viboes https://svn.boost.org/trac10/ticket/8514 https://svn.boost.org/trac10/ticket/8514 Report #8506: Add a C++11 conforming noexcept to function<> class Sat, 27 Apr 2013 05:56:21 GMT Sat, 27 Apr 2013 07:16:09 GMT <p> Some of the c++11 function&lt;&gt; class functions are noexcept. It would be great if Boost.Function use BOOST_NOEXCEPT in these cases. </p> viboes https://svn.boost.org/trac10/ticket/8506 https://svn.boost.org/trac10/ticket/8506 Report #8504: BOOST_PHOENIX_LIMIT can only be set to a multiple of 10 Fri, 26 Apr 2013 20:21:08 GMT Sun, 02 Feb 2014 17:09:17 GMT <p> Hi, </p> <p> This ticket is a follow-up to <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7165" title="#7165: Bugs: cannot change BOOST_PHOENIX_LIMIT (closed: fixed)">#7165</a>. </p> <p> The following code fails to compile </p> <pre class="wiki">#define BOOST_PHOENIX_LIMIT 9 #include &lt;boost/phoenix.hpp&gt; </pre><p> It also fails for 11 or any number different from 10, 20, 30, etc... but bear in mind that this error is largely hidden by <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7165" title="#7165: Bugs: cannot change BOOST_PHOENIX_LIMIT (closed: fixed)">#7165</a> : only after applying it does it become visible for numbers greater than 10. </p> <p> All in all it looks like the BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) logic in boost/phoenix/core/limits.hpp is partly flawed. </p> <p> I'll try and investigate ! </p> <p> Thanks, </p> <p> MAT. </p> Mathieu Champlon <m.champlon@…> https://svn.boost.org/trac10/ticket/8504 https://svn.boost.org/trac10/ticket/8504 Report #8499: improving pgi support Fri, 26 Apr 2013 04:25:35 GMT Fri, 26 Apr 2013 04:25:35 GMT <p> I have access to PGI 12.2 and 12.5 on a Cray XE6 system. The current boostcpp.jam specifically doesn't build "versioned" .so files on PGI (and there's a comment in the file that indicates they don't work). However, it appears to work for me. To be fair, I don't know if it's due to changes in the compiler versions since pgi.jam was developed or if some of my other pgi.jam changes fascillitated this in some way. I am not very familiar with jamfiles... I modified my changes based on cray.jam and gcc.jam, but this appears to be working for me. </p> <p> My second change is specifically to better support PGI on Cray systems. Cray's compiler wrappers automatically scan the commandline looking for the "-shared", "-static", "-Bshared", and "-Bstatic" to detect if the userswe is attempting to compile dynamically or statically (and adds additional options as necessary). These wrappers consider it an error to find both a "static" and a "shared" flag on the same command line. pgi.jam does this using the -Bst coatic/-Bshared flags to control linking behavior. However, if these options are passed as -Wl,-Bstatic... this won't trigger the error condition in the compiler wrappers, and (of course) passes the option through to ld(1). I believe this is a reasonable changes for non-Cray systems. </p> alan@… https://svn.boost.org/trac10/ticket/8499 https://svn.boost.org/trac10/ticket/8499 Report #8498: cray.jam doesn't build .so files Fri, 26 Apr 2013 04:16:30 GMT Mon, 14 Oct 2013 13:49:35 GMT <p> The current cray.jam file doesn't build dynamic libraries because of the lack of the -fPIC flet ag. On my my system I made the following changes (in attached patch) and was able to get ec.verything to build. I'm not a boostjam expert, I just modelled my changes on the pgi.jam and gcc.jam files. So some of these changes might not be appropriate. </p> alan@… https://svn.boost.org/trac10/ticket/8498 https://svn.boost.org/trac10/ticket/8498 Report #8489: Unnecessary Definition of iterator_adaptor.hpp class Has Dangerous Return of Temporary Object Wed, 24 Apr 2013 00:37:06 GMT Mon, 10 Jun 2013 05:37:29 GMT <p> Change definition of private iterator_adaptor&lt;...&gt;::dereference to a declaration, avoiding illegal return of local temporary object: </p> <blockquote> <p> error: returning reference to local temporary object [-Werror,-Wreturn-stack-address] </p> <blockquote> <p> { return *m_iterator; } </p> </blockquote> </blockquote> <p> Changing to a declaration is semantically acceptable because the preceding comment and a code search shows that the function was made private to ensure it is not used in this base class. </p> <p> This was revealed using Clang++ 3.0.6. It is a showstopper for people required to use Clang with warnings turned in errors. </p> Jeffrey D. Oldham <oldham@…> https://svn.boost.org/trac10/ticket/8489 https://svn.boost.org/trac10/ticket/8489 Report #8488: Code/doc mismatch in iterator_facade distance_to Tue, 23 Apr 2013 18:39:57 GMT Tue, 23 Apr 2013 18:39:57 GMT <p> When creating a random access facade, one must implement the distance_to member function in order for std::distance to work. However, it looks like the arguments passed to this method are reversed from what the documentation states. </p> <p> Specifically, the docs <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> say (paraphrased): a.distance_to(b) is equivalent to distance(a, b). </p> <p> However, when I call std::distance(a, b), I find that b.distance_to(a) is invoked in the facade - the mirror image of what the docs say! </p> <p> A test case demonstrating the problem is attached. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a href="http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/iterator_facade.html#iterator-facade-requirements">http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/iterator_facade.html#iterator-facade-requirements</a> </p> gredner@… https://svn.boost.org/trac10/ticket/8488 https://svn.boost.org/trac10/ticket/8488 Report #8485: Compile error, same as #5431, but Windows Vista (64 bit) Mon, 22 Apr 2013 18:25:53 GMT Wed, 12 Feb 2014 19:01:03 GMT <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/5431"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/5431</a> </p> <pre class="wiki">#ifdef _MSC_VER /* This is Microsoft Visual C compiler specific */ #endif //_MSC_VER </pre><p> Same problem with 1.51.0 and 1.53.0 </p> Martin.problemboost.Maurer@… https://svn.boost.org/trac10/ticket/8485 https://svn.boost.org/trac10/ticket/8485 Report #8484: [ublas] allow user-defined oeprator/ for matrices Mon, 22 Apr 2013 15:00:23 GMT Wed, 22 May 2013 21:30:27 GMT <p> I would like to define the division operator for two matrices, but that is impossible right now as the matrix-skalar operator/ from ublas hides any other operator/ definition. This can be fixed very easily by adding an enable_if (see attached patch). Such enable_if are already used for other operators in ublas (e.g. multiplication) and the patch would hence be consistent with the rest of the code. Thanks </p> mariomulansky https://svn.boost.org/trac10/ticket/8484 https://svn.boost.org/trac10/ticket/8484 Report #8482: Make Boost.iostreams compatible with Clang's -Wimplicit-fallthrough diagnostic. Mon, 22 Apr 2013 14:51:38 GMT Mon, 06 May 2013 10:28:45 GMT <p> Patch that inserts BOOST_FALLTHROUGH to annotate fallthrough between switch cases. Ticket with discussion of BOOST_FALLTHROUGH: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8408" title="#8408: Patches: Boost is not compatible with Clang's -Wimplicit-fallthrough diagnostic (closed: fixed)">#8408</a> </p> Alexander Kornienko <alexfh@…> https://svn.boost.org/trac10/ticket/8482 https://svn.boost.org/trac10/ticket/8482 Report #8477: Make Boost.locale compatible with Clang's -Wimplicit-fallthrough diagnostic. Mon, 22 Apr 2013 14:42:48 GMT Mon, 22 Apr 2013 14:43:41 GMT <p> Patch that inserts BOOST_FALLTHROUGH to annotate fallthrough between switch cases. Ticket with discussion of BOOST_FALLTHROUGH: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8408" title="#8408: Patches: Boost is not compatible with Clang's -Wimplicit-fallthrough diagnostic (closed: fixed)">#8408</a> </p> Alexander Kornienko <alexfh@…> https://svn.boost.org/trac10/ticket/8477 https://svn.boost.org/trac10/ticket/8477 Report #8475: Make Boost.date_time compatible with Clang's -Wimplicit-fallthrough diagnostic. Mon, 22 Apr 2013 14:38:28 GMT Mon, 22 Apr 2013 14:38:28 GMT <p> Patch that inserts BOOST_FALLTHROUGH to annotate fallthrough between switch cases. Ticket with discussion of BOOST_FALLTHROUGH: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8408" title="#8408: Patches: Boost is not compatible with Clang's -Wimplicit-fallthrough diagnostic (closed: fixed)">#8408</a> </p> Alexander Kornienko <alexfh@…> https://svn.boost.org/trac10/ticket/8475 https://svn.boost.org/trac10/ticket/8475 Report #8466: Boost.TR1 misdetects Visual C++ 2012's support as nonexistent Sat, 20 Apr 2013 11:29:39 GMT Sat, 20 Apr 2013 11:29:39 GMT <p> The test in <code>boost/tr1/detail/config.hpp</code> indicates native TR1 support only if the <code>_HAS_TR1</code> macro is set and non-zero. This was set by VC2010, but 2012 no longer defines this symbol. Consequently, Boost's implementation is used and conflicts ensue. </p> <p> <code>_HAS_TR1</code> is a private symbol that shouldn't be checked according to this: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2011/06/182516.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2011/06/182516.php</a> </p> <p> Attached patch fixes this by also checking for VC11+ via <code>_MSC_VER</code>. </p> Vaclav Slavik <vslavik@…> https://svn.boost.org/trac10/ticket/8466 https://svn.boost.org/trac10/ticket/8466 Report #8463: function_output_iterator: MSVC warning C4512 Fri, 19 Apr 2013 18:10:30 GMT Wed, 03 Jul 2013 10:54:35 GMT <p> In <code>boost/function_output_iterator</code> the struct <code>function_output_iterator::output_proxy</code> yields this warning: "assignment operator could not be generated." I see this primarily using signals2, where the iterator class is created using <code>boost::signals2::detail::does_nothing</code> as the iterator template argument. </p> <p> The warning is due to the proxy's const data member, and probably not dependent on the iterator template argument. </p> <p> The struct also has a templated operator= defined, but not of the sort that would work as a copy-assignment. </p> <p> Other libraries (fusion, spirit, statechart in particular) have implemented do-nothing assignment operators (or just declarations) to overcome similar symptoms. If I do the same for this class in my local copy -- simply add a declaration for this particular signature: </p> <pre class="wiki"> private: output_proxy&amp; operator=(output_proxy const &amp;src); </pre><p> the warning goes away; however, I can't be sure this doesn't break something. It seems unlikely, as I can run code with the warning and my signals seem to work just fine. </p> Mike Cowperthwaite <michael.cowperthwaite@…> https://svn.boost.org/trac10/ticket/8463 https://svn.boost.org/trac10/ticket/8463 Report #8461: Name demangling in docstrings broken using Intel Compilers on Linux Fri, 19 Apr 2013 08:45:46 GMT Fri, 19 Apr 2013 08:45:46 GMT <p> Hi, </p> <p> I'm using my system's boost_python library (compiled with GCC) whilst developing an extension module. I thought I'd try compiling it with the Intel Compilers, but when I do, docstring signatures show mangled names. </p> <p> e.g. </p> <pre class="wiki">&gt;&gt;&gt; import test_make_list &gt;&gt;&gt; print test_make_list.IntList.__getitem__.__doc__ __getitem__( (object)arg1, (object)arg2) -&gt; object : C++ signature : N5boost6python3api6objectE __getitem__(N5boost6python14back_referenceIRSt4listIiSaIiEEEE,P7_object) </pre><p> It turns out I can fix this by adding "BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE" to the list of preprocessor definitions, but wondered if a fix could be introduced directly into the headers. </p> <p> Not sure how I can test this without recompiling the entirety of boost, but I thought the following macro clause could be added at line 24 of <a href="http://www.boost.org/doc/libs/1_53_0/boost/python/type_id.hpp">&lt;boost/python/type_id.hpp&gt;</a>, to resolve this: </p> <pre class="wiki"> || (defined(__linux) &amp;&amp; defined(__ICC)) </pre> beamesleach@… https://svn.boost.org/trac10/ticket/8461 https://svn.boost.org/trac10/ticket/8461 Report #8442: Match std::reference_wrapper functionality Mon, 15 Apr 2013 22:26:06 GMT Sat, 05 Oct 2013 10:36:53 GMT <p> boost::reference_wrapper lacks the ability to forward calls the referenced type's operator(), e.g.: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/ref.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;functional&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="k">auto</span> <span class="n">f</span> <span class="o">=</span> <span class="p">[]</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Here&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">};</span> <span class="c1">//auto rf = boost::ref(f); //No operator() overload.</span> <span class="k">auto</span> <span class="n">rf</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">ref</span><span class="p">(</span><span class="n">f</span><span class="p">);</span> <span class="n">f</span><span class="p">();</span> <span class="n">rf</span><span class="p">();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> There are a few other related differences with the standard, e.g. std::reference_wrapper inherits from std::{binary|unary}_function, may have value_type, etc. </p> Nathan Crookston <nathan.crookston+boost@…> https://svn.boost.org/trac10/ticket/8442 https://svn.boost.org/trac10/ticket/8442 Report #8441: Custom allocation and copying of distance values in dijkstra Mon, 15 Apr 2013 19:56:16 GMT Mon, 15 Apr 2013 19:56:16 GMT <p> While the compare, combine, zero, and inf concepts allow for some nice customizable distance types in dijkstra_shortest_paths(), there is still no option to allow for custom allocation and copying of each distance value. </p> <p> For instance, if I'm forced to use an object to allocate new distance values like DistAllocator::allocDist(), it's very difficult to wrap this functionality in a way that only uses default constructors and copy constructors as is currently the case in dijkstra_shortest_paths(). This typically requires creating an auxiliary class with the <a class="missing wiki">DistAllocator</a> as a static class variable, which is restrictive if there are multiple <a class="missing wiki">DistAllocators</a>. </p> Luis G. Torres <lgtorres42@…> https://svn.boost.org/trac10/ticket/8441 https://svn.boost.org/trac10/ticket/8441 Report #8439: Formatting for and-predicate and not-predicate Mon, 15 Apr 2013 13:53:28 GMT Mon, 15 Apr 2013 14:20:22 GMT <p> In the current (1.53) <a href="http://www.boost.org/doc/libs/1_53_0/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html">tutorial</a> as well as <a href="http://www.boost.org/doc/libs/1_53_0/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html">reference</a> chapters, there is a mixture of wording and formatting used for the <strong>and</strong> and <strong>not</strong> predicates. Some of them are hard to distinguish from regular and and not. </p> <p> They could be formatted or suffixed with <strong>-predicate</strong> to make them out from the surrounding text. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/8439 https://svn.boost.org/trac10/ticket/8439 Report #8438: vector & circular_buffer storage misbehave when using compiler optimizations Mon, 15 Apr 2013 12:35:39 GMT Sun, 09 Jun 2013 21:05:23 GMT <p> When compiling the following code without optimizations, it behaves as expected: (compiled with g++-4.7.2 with no flags at all) </p> <pre class="wiki">#include &lt;boost/numeric/ublas/vector.hpp&gt; #include &lt;boost/numeric/ublas/io.hpp&gt; #include &lt;boost/circular_buffer.hpp&gt; int main () { boost::numeric::ublas::vector&lt;double, boost::circular_buffer&lt;double&gt; &gt; v (3, 1); std::cout &lt;&lt; v &lt;&lt; std::endl; v[1] = 5; std::cout &lt;&lt; v &lt;&lt; std::endl; std::cout &lt;&lt; v[1] &lt;&lt; std::endl; return 0; } </pre><p> Output: </p> <pre class="wiki">[3](1,1,1) [3](1,5,1) 5 </pre><p> When compiling the exact same code with O1, O2, and O3 it produces the following output: </p> <pre class="wiki">[3](0,0,0) [3](0,0,0) 5 </pre><p> I noticed that inner_prod() also sees the vector as zeros. </p> ofir https://svn.boost.org/trac10/ticket/8438 https://svn.boost.org/trac10/ticket/8438 Report #8437: /boost/iostreams/stream.hpp possibly wrong detail::stream_base superclass Sun, 14 Apr 2013 20:19:01 GMT Sat, 20 Apr 2013 10:51:50 GMT <p> The file contains: </p> <p> typedef typename stream_traits&lt;Device, Tr&gt;::stream_type stream_type; ... stream_base() : pbase_type(), stream_type(&amp;member) { } </p> <p> Thus stream_type *must* be a supertype of stream_base; however, the only supertypes are: </p> <blockquote> <p> : protected base_from_member&lt; stream_buffer&lt;Device, Tr, Alloc&gt; &gt;, </p> <blockquote> <p> public Base </p> </blockquote> </blockquote> <p> And the default value for template argument, Base, is: </p> <blockquote> <p> typename Base = <em> VC6 Workaround. </em></p> <blockquote> <p> BOOST_DEDUCED_TYPENAME detail::stream_traits&lt;Device, Tr&gt;::stream_type </p> </blockquote> </blockquote> <p> So I would guess type stream_type typedef should be removed and Base substituted for stream_type in the CTOR intialization list. </p> anonymous https://svn.boost.org/trac10/ticket/8437 https://svn.boost.org/trac10/ticket/8437 Report #8436: POSIX cksum CRC Sat, 13 Apr 2013 20:47:55 GMT Sat, 13 Apr 2013 20:47:55 GMT <p> It is impossible to use the current interface of Boost.crc to calculate the POSIX cksum crc. This is unfortunate, and perhaps a worthy addition without too much work. </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/15852845/posix-cksum-and-boost-crc"><span class="icon">​</span>http://stackoverflow.com/questions/15852845/posix-cksum-and-boost-crc</a> </p> vanboxem.ruben@… https://svn.boost.org/trac10/ticket/8436 https://svn.boost.org/trac10/ticket/8436 Report #8433: Algorithm for finding all the elementary circuits in a directed (multi)graph Fri, 12 Apr 2013 14:03:17 GMT Fri, 13 Nov 2015 17:09:15 GMT <p> I have implemented the algorithm described in (1) for finding all the elementary circuits of a directed (multi)graph. I implemented it in a generic fashion, planning to propose it for inclusion in Boost. </p> <p> Boost.Graph currently contains the <code>tiernan_all_cycles</code> algorithm for finding all the cycles in a graph. However, it is undocumented and it has a time bound (for which no precise analysis is provided) that makes it unsuitable even for moderately sized graphs. In fact, I implemented <code>hawick_circuits</code> because <code>tiernan_all_cycles</code> did not cut it for my application. </p> <p> My implementation is available at (2). It is licensed under the Boost license and was tested using the test suite at (3). More information on the test suite can be found at (4). </p> <p> Comments on improvements would be appreciated. </p> <p> (1) <a class="ext-link" href="http://www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf"><span class="icon">​</span>http://www.massey.ac.nz/~kahawick/cstn/013/cstn-013.pdf</a> </p> <p> (2) <a class="ext-link" href="https://github.com/ldionne/hawick_circuits"><span class="icon">​</span>https://github.com/ldionne/hawick_circuits</a> </p> <p> (3) <a class="ext-link" href="https://github.com/josch/cycle_test"><span class="icon">​</span>https://github.com/josch/cycle_test</a> </p> <p> (4) <a class="ext-link" href="http://blog.mister-muffin.de/2012/07/04/enumerating-elementary-circuits-of-a-directed_graph/"><span class="icon">​</span>http://blog.mister-muffin.de/2012/07/04/enumerating-elementary-circuits-of-a-directed_graph/</a> </p> Louis Dionne https://svn.boost.org/trac10/ticket/8433 https://svn.boost.org/trac10/ticket/8433 Report #8430: Positional arguments help output Thu, 11 Apr 2013 18:42:58 GMT Thu, 11 Apr 2013 18:42:58 GMT <p> Currently, there is no way to output positional argument descriptions. This is however often useful as special values of these options may have special results. </p> <p> I originally asked the question on <a class="ext-link" href="http://stackoverflow.com/questions/15863056/how-to-display-commandline-operand-description-in-help-output"><span class="icon">​</span>Stackoverflow</a>. </p> <p> Summarizing the question linked above, I'd like for this kind of output to be readily available: </p> <pre class="wiki">cmp: compare two files Usage: cmp [ -l | -s ] file1 file2 Options: --help Show this help output. -l (Lowercase ell.) Write the byte number (decimal) and the differing bytes (octal) for each difference. -s Write nothing for differing files; return exit status only. Operands: file1 A pathname of the first file to be compared. If file1 is '-', the standard input shall be used. file2 A pathname of the second file to be compared. If file2 is '-', the standard input shall be used. </pre><p> where file1 and file2 are pure positional arguments that have behavior warranting a full description. </p> <p> I propose a simple and backwards-compatible change to the way positional_argument_description works: </p> <pre class="wiki">po::positional_options_description operands("operands"); operands.add("file1", 1, "A pathname of the first file to be compared. If file1 is '-', the standard input shall be used.") operands.add("file2", 1, "A pathname of the second file to be compared. If file2 is '-', the standard input shall be used."); </pre><ol><li>Add an optional string argument to the constructor and store it like for normal program_descriptions </li><li>Add a third optional argument containing the description string of the positional argument </li><li>Provide an operator&lt;&lt; overload that would allow for formatted output like the above. </li></ol> vanboxem.ruben@… https://svn.boost.org/trac10/ticket/8430 https://svn.boost.org/trac10/ticket/8430 Report #8425: [filesystem][documentation] copy_file cannot overwrite executing binary Wed, 10 Apr 2013 10:33:32 GMT Wed, 10 Apr 2013 10:33:32 GMT <p> If trying to copy a binary file over the currently executing program, then the <em>copy_file</em> call fails even though it has the <em>overwrite_if_exists</em> flag. </p> <p> Examining the code, this appears to be because <em>copy_file_api</em> (Linux) uses popen, thus attempts to write to the same file data as distinct from creating a new file node. </p> <p> The peculiar error "Text file busy: &lt;binary&gt;" is reported. </p> <p> Given that the Windows version would not (AFAIK) be able to achieve this anyway, I would say that this behaviour is "by design" but suggest a documentation update for <em>copy_file</em>. </p> boost@… https://svn.boost.org/trac10/ticket/8425 https://svn.boost.org/trac10/ticket/8425 Report #8419: boost::geometry::intersection still broken with integer coordinates Mon, 08 Apr 2013 17:41:02 GMT Mon, 08 Apr 2013 17:49:04 GMT <p> When loading these geometries as integer coordinates, their intersection is equal to the input multilinestring, which is wrong because the line should be clipped to the polygon boundaries instead of being left untouched. </p> <blockquote> <p> POLYGON((500000 853554,146445 500000,500000 146445,853554 500000)) MULTILINESTRING((163696 853553,163696 146446)) </p> </blockquote> <p> If I scale these input coordinates down by 1/1000, the result is correct. Also, no issues when loading the same input as double coordinates. </p> aar@… https://svn.boost.org/trac10/ticket/8419 https://svn.boost.org/trac10/ticket/8419 Report #8404: VC++ 2012 compiler warning C4244: 'initializing' : conversion from '__int64' to 'const double' Fri, 05 Apr 2013 14:58:07 GMT Thu, 04 Jan 2018 14:05:36 GMT <p> I'm using Microsoft Visual Studio 2012 to compile boost 1.52.0. I use compiler flag /W4. The following warnings (which we declared errors for our project) occur in geometry, regardless whether I'm compiling for x64 or x86. <strong>My scalar data type is int.</strong> </p> <pre class="wiki">\boost_1_52_0\boost\geometry\strategies\cartesian\distance_pythagoras.hpp(156): error C4244: 'initializing' : conversion from '__int64' to 'const double', possible loss of data calculation_type const t = comparable_type::apply(p1, p2); </pre><p> Maybe it's possible to eliminate this warning for the next boost version? </p> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/8404 https://svn.boost.org/trac10/ticket/8404 Report #8396: Timer history does not say in what version the new APIs became available Thu, 04 Apr 2013 19:17:18 GMT Sun, 07 Apr 2013 18:28:29 GMT <p> From what I can tell, Boost.Timers changed dramatically going from 1.47 to 1.48 judging from the existence of </p> <blockquote> <p> <a href="http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/index.html">http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/index.html</a> <a href="http://www.boost.org/doc/libs/1_52_0/libs/timer/doc/index.html">http://www.boost.org/doc/libs/1_52_0/libs/timer/doc/index.html</a> ... <a href="http://www.boost.org/doc/libs/1_48_0/libs/timer/doc/index.html">http://www.boost.org/doc/libs/1_48_0/libs/timer/doc/index.html</a> </p> </blockquote> <p> but the nonexistence of </p> <blockquote> <p> <a href="http://www.boost.org/doc/libs/1_47_0/libs/timer/doc/index.html">http://www.boost.org/doc/libs/1_47_0/libs/timer/doc/index.html</a>. </p> </blockquote> <p> I say this because, for example, both of </p> <blockquote> <p> <a href="http://www.boost.org/doc/libs/1_48_0/doc/html/boost/unordered_set.html">http://www.boost.org/doc/libs/1_48_0/doc/html/boost/unordered_set.html</a> <a href="http://www.boost.org/doc/libs/1_47_0/doc/html/boost/unordered_set.html">http://www.boost.org/doc/libs/1_47_0/doc/html/boost/unordered_set.html</a> </p> </blockquote> <p> exist. </p> <p> However, the 1.48 news (<a href="http://www.boost.org/users/history/version_1_48_0.html">http://www.boost.org/users/history/version_1_48_0.html</a>) is totally silent on any changes. </p> <p> The Boost.Timers history is totally silent about when the library landed: <a href="http://www.boost.org/doc/libs/1_48_0/libs/timer/doc/index.html">http://www.boost.org/doc/libs/1_48_0/libs/timer/doc/index.html</a> </p> <p> Please update the history to indicate that the new APIs became available in Boost 1.48. </p> Rhys Ulerich <rhys.ulerich@…> https://svn.boost.org/trac10/ticket/8396 https://svn.boost.org/trac10/ticket/8396 Report #8395: Valgrind error in lockfree::queue Thu, 04 Apr 2013 17:19:22 GMT Sun, 16 Apr 2017 05:31:19 GMT <p> The following code </p> <pre class="wiki">#include &lt;boost/lockfree/queue.hpp&gt; int main() { int i = 0; boost::lockfree::queue&lt;int*&gt; q(128); q.push(&amp;i); q.push(&amp;i); return 0; } </pre><p> compiled with </p> <pre class="wiki">g++ -o test test.cpp -I/opt/boost/include </pre><p> produces the following valgrind output </p> <pre class="wiki">==32040== Memcheck, a memory error detector ==32040== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==32040== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==32040== Command: ./test ==32040== ==32040== Conditional jump or move depends on uninitialised value(s) ==32040== at 0x401E77: boost::atomics::detail::base_atomic&lt;boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;, void, 8u, false&gt;::compare_exchange_strong(boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;&amp;, boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt; const&amp;, boost::memory_order, boost::memory_order) volatile (in /tmp/test) ==32040== by 0x401DD9: boost::atomics::detail::base_atomic&lt;boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;, void, 8u, false&gt;::compare_exchange_weak(boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;&amp;, boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt; const&amp;, boost::memory_order, boost::memory_order) volatile (in /tmp/test) ==32040== by 0x4019E0: boost::atomics::detail::base_atomic&lt;boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;, void, 8u, false&gt;::compare_exchange_weak(boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;&amp;, boost::lockfree::detail::tagged_ptr&lt;boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::node&gt;, boost::memory_order) volatile (in /tmp/test) ==32040== by 0x40121C: bool boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::do_push&lt;false&gt;(int* const&amp;) (in /tmp/test) ==32040== by 0x400CF6: boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::push(int* const&amp;) (in /tmp/test) ==32040== by 0x40097E: main (in /tmp/test) ==32040== ==32040== Conditional jump or move depends on uninitialised value(s) ==32040== at 0x40121F: bool boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::do_push&lt;false&gt;(int* const&amp;) (in /tmp/test) ==32040== by 0x400CF6: boost::lockfree::queue&lt;int*, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::push(int* const&amp;) (in /tmp/test) ==32040== by 0x40097E: main (in /tmp/test) ==32040== ==32040== ==32040== HEAP SUMMARY: ==32040== in use at exit: 0 bytes in 0 blocks ==32040== total heap usage: 129 allocs, 129 frees, 8,256 bytes allocated ==32040== ==32040== All heap blocks were freed -- no leaks are possible ==32040== ==32040== For counts of detected and suppressed errors, rerun with: -v ==32040== Use --track-origins=yes to see where uninitialised values come from ==32040== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 2 from 2) </pre><p> This might be an issue with the atomic library, but I have not been able to track it further. </p> <p> OS is Fedora F18 (3.8.3-203.fc18.x86_64) </p> <p> G++ is g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) </p> <p> Valgrind is valgrind-3.8.1 </p> adam@… https://svn.boost.org/trac10/ticket/8395 https://svn.boost.org/trac10/ticket/8395 Report #8394: py_environment.cpp "list" is ambiguous Thu, 04 Apr 2013 15:18:28 GMT Sat, 06 Apr 2013 13:05:55 GMT <p> I'm seeing the following using PGI 12.2 on Cray Linux 4 (SuSE 11 derivative): </p> <pre class="wiki"> "CC" -INLINE:none --gnu -Kieee -fpic -fPIC -gopt -Minform=warn -DBOOST_ALL_NO_LIB=1 -DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1 -D__need_IOV_MAX -I"." -I"/apps_hpc/epd/default/include/python2.7" -c -o "bin.v2/libs/mpi/build/pgi/debug/boost.locale.icu-off/python/py_environment.o" "libs/mpi/src/python/py_environment.cpp" "/apps_hpc/epd/default/include/python2.7/pyfpe.h", line 8: warning: white space between backslash and newline in line splice ignored / Copyright (c) 1996. \ ^ "libs/mpi/src/python/py_environment.cpp", line 34: error: "list" is ambiguous bool mpi_init(list python_argv, bool abort_on_exception) ^ "libs/mpi/src/python/py_environment.cpp", line 82: error: "list" is ambiguous mpi_init(extract&lt;list&gt;(sys.attr("argv")), true); ^ 2 errors detected in the compilation of "libs/mpi/src/python/py_environment.cpp". </pre><p> Not concerned about the warning from my header (didn't want to edit it out though), but it looks to me like maybe one of the other list classes has found it's way into the namespace? </p> <p> These particuliar builds were bootstrapped and run with </p> <pre class="wiki">./bootstrap.sh --without-icu --with-libraries=mpi,graph_parallel,python --with-python=##EDITED## --with-python-root=##EDITED## --with-python-version=2.7 --with-toolset=pgi ./b2 -d0 -d+2 -j32 --debug-configuration --disable-icu boost.locale.icu=off -sNO_BZIP2=1 --build-type=complete --layout=tagged threading=single variant=debug toolset=pgi install </pre> alan@… https://svn.boost.org/trac10/ticket/8394 https://svn.boost.org/trac10/ticket/8394 Report #8390: type conversion warning in VC11 Thu, 04 Apr 2013 11:31:04 GMT Thu, 04 Apr 2013 11:31:04 GMT <p> +++ b/3rd-party/boost/boost/iostreams/copy.hpp Thu Apr 04 12:53:57 2013 +0200 @@ -125,7 +125,14 @@ </p> <blockquote> <p> mpl::false_, mpl::false_ ) </p> </blockquote> <blockquote> <p> { </p> <blockquote> <p> typedef typename char_type_of&lt;Source&gt;::type char_type; </p> </blockquote> </blockquote> <p> +#ifdef BOOST_WINDOWS_API +#pragma warning(push) +#pragma warning(disable : 4244) +#endif </p> <blockquote> <p> detail::basic_buffer&lt;char_type&gt; buf(buffer_size); </p> </blockquote> <p> +#ifdef BOOST_WINDOWS_API +#pragma warning(pop) +#endif </p> pedro.larroy@… https://svn.boost.org/trac10/ticket/8390 https://svn.boost.org/trac10/ticket/8390 Report #8388: windows_file_codecvt should be allocated with _NEW_CRT Thu, 04 Apr 2013 10:08:14 GMT Sat, 02 Aug 2014 16:16:04 GMT <p> Due to a bug in VC libraries, when allocating windows_file_codecvt it should be done with _NEW_CRT instead of new. Otherwise if operator new is overriden in the userland application it would be a crash since windows_file_codecvt is allocated with the user provided operator new and deallocated with delete from the C runtime. </p> pedro.larroy@… https://svn.boost.org/trac10/ticket/8388 https://svn.boost.org/trac10/ticket/8388 Report #8387: tz_database::load_from_file has wrong function type in manual Thu, 04 Apr 2013 09:39:22 GMT Fri, 05 Apr 2013 11:10:48 GMT <p> boost::local_time::tz_database::load_from_file is a void, while the manual states this being a bool. </p> <p> <a href="http://www.boost.org/doc/libs/1_53_0/doc/html/date_time/local_time.html#tz_database_constr">http://www.boost.org/doc/libs/1_53_0/doc/html/date_time/local_time.html#tz_database_constr</a> </p> frank@… https://svn.boost.org/trac10/ticket/8387 https://svn.boost.org/trac10/ticket/8387 Report #8383: Add noexcept to current_exception() function Thu, 04 Apr 2013 03:09:40 GMT Thu, 04 Apr 2013 03:09:40 GMT <pre class="wiki">exception_ptr current_exception() BOOST_NOEXCEPT; </pre> viboes https://svn.boost.org/trac10/ticket/8383 https://svn.boost.org/trac10/ticket/8383 Report #8382: Add a C++11 conforming make_exception_ptr Thu, 04 Apr 2013 03:07:54 GMT Thu, 04 Apr 2013 03:10:25 GMT <pre class="wiki">template&lt;class E&gt; exception_ptr make_exception_ptr(E e) BOOST_NOEXCEPT; </pre> viboes https://svn.boost.org/trac10/ticket/8382 https://svn.boost.org/trac10/ticket/8382 Report #8380: sym_difference yields bad result for large numbers Wed, 03 Apr 2013 14:46:43 GMT Mon, 21 Sep 2015 14:37:59 GMT <p> Here is an example where using a relatively small number yields the correct result whereas using <em>boost::numeric::bounds&lt;int&gt;::highest()/2</em> yields a bad result when calling boost::geometry::sym_difference. </p> <p> My polygon type is <strong>oriented counter-clockwise</strong> and <strong>not closed</strong>, my point type is based on <strong>int</strong>. Based on using int, can you offer any guidance about the largest possible numbers ("domain of definition") that yield correct results in the boost geometry algorithms? </p> <p> Here is our conversation on the geometry mailing list regarding this issue in 1.48.0:<br /> <a class="ext-link" href="http://lists.boost.org/geometry/2012/02/1849.php"><span class="icon">​</span>http://lists.boost.org/geometry/2012/02/1849.php</a> </p> <p> For readability, I use the <code>^</code> operator to denote the call to sym_difference below. </p> <pre class="wiki">MULTIPOLYGON(((564 2394,1548 2850,2526 2916,2526 32767,564 32767))) ^ MULTIPOLYGON(((564 3252,2526 3252,2526 32767,564 32767))) correct result: MULTIPOLYGON(((564 3252,564 2394,1548 2850,2526 2916,2526 3252))) MULTIPOLYGON(((564 2394,1548 2850,2526 2916,2526 1073741823,564 1073741823))) ^ MULTIPOLYGON(((564 3252,2526 3252,2526 1073741823,564 1073741823))) bad result: MULTIPOLYGON(((564 3252,564 2394,1548 2850,2526 2916,2526 333411))) </pre> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/8380 https://svn.boost.org/trac10/ticket/8380 Report #8366: "Overlay invalid input exception" (3) Tue, 02 Apr 2013 08:19:24 GMT Wed, 19 Nov 2014 15:14:58 GMT <p> Please find below some code that triggers "Overlay invalid input exception" (in the last statement of the example). I have a couple of different reproductions, and since I'm not sure if they all share the same root cause, I'm filing them in separate tickets. </p> <p> As always, my polygon type is oriented <strong>counter-clockwise</strong> and <strong>not closed</strong>, my point type is based on <strong>int</strong>. </p> <p> This is the data that triggers the exception: </p> <pre class="wiki">_intPolygon polygon( "MULTIPOLYGON(((529 998,5337 998,5337 3475,529 3475)))" ); { _intPolygon const polygonB = _intPolygon("MULTIPOLYGON(((528 3314,1734 2054,2934 1670,4140 1754,5340 2072,5340 32767,528 32767)))") ^ _intPolygon("MULTIPOLYGON(((528 3218,1734 1784,2934 1400,4140 2582,5340 1832,5340 32767,528 32767)))"); polygon -= polygonB; } { _intPolygon const polygonB = _intPolygon("MULTIPOLYGON(((528 3218,1734 1784,2934 1400,4140 2582,5340 1832,5340 32767,528 32767)))") ^ _intPolygon("MULTIPOLYGON(((528 2498,1734 1406,2934 1574,4140 3002,5340 1178,5340 32767,528 32767)))"); polygon -= polygonB; } { _intPolygon const polygonB = _intPolygon("MULTIPOLYGON(((528 2498,1734 1406,2934 1574,4140 3002,5340 1178,5340 32767,528 32767)))") ^ _intPolygon("MULTIPOLYGON(((528 2420,1734 2186,2934 2378,4140 2750,5340 1250,5340 32767,528 32767)))"); polygon -= polygonB; } { _intPolygon const polygonB = _intPolygon("MULTIPOLYGON(((528 2420,1734 2186,2934 2378,4140 2750,5340 1250,5340 32767,528 32767)))") ^ _intPolygon("MULTIPOLYGON(((528 1724,1734 2552,2934 1640,4140 2396,5340 1460,5340 32767,528 32767)))"); polygon -= polygonB; } </pre><p> This is my code that wraps boost::geometry to implement the operators used above: </p> <pre class="wiki">template&lt;typename T&gt; template&lt;typename Geometry&gt; _TPolygon&lt; T &gt; _TPolygon&lt; T &gt;::operator-(Geometry const&amp; geometry) const { // should not be necessary //if( boost::geometry::area(geometry)==0 ) return *this; _TPolygon&lt; T &gt; polygonOut; boost::geometry::difference(*this, geometry, polygonOut); // should not be necessary //boost::geometry::correct( polygonOut ); return polygonOut; } template&lt;typename T&gt; template&lt;typename Geometry&gt; _TPolygon&lt;T&gt;&amp; _TPolygon&lt; T &gt;::operator-=(Geometry const&amp; geometry) { // boost::geometry::difference cannot operate in-place // http://lists.boost.org/geometry/2012/02/1796.php *this = *this - geometry; return *this; } template&lt;typename T&gt; template&lt;typename Geometry&gt; _TPolygon&lt; T &gt; _TPolygon&lt; T &gt;::operator^(Geometry const&amp; geometry) const { _TPolygon&lt; T &gt; polygonOut; boost::geometry::sym_difference(*this, geometry, polygonOut); // should not be necessary //boost::geometry::correct( polygonOut ); return polygonOut; } </pre> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/8366 https://svn.boost.org/trac10/ticket/8366 Report #8362: Move ctor or assignment for boost::geometry::model::ring? Tue, 02 Apr 2013 08:00:41 GMT Mon, 21 Sep 2015 15:39:37 GMT <p> Hi, I have this clumsy piece of code: </p> <pre class="wiki">if( !vecpt.empty() ) { emplace_back( polygon_type() ); static_cast&lt; std::vector&lt; _TPoint&lt; T &gt; &gt;&amp; &gt;( back().outer() ) = std::move(vecpt); } </pre><p> which actually should be written like this: </p> <pre class="wiki">boost::geometry::convert( polygon_type::ring_type( std::move(vecpt) ), *this ); </pre><p> but unfortunately this kind of conversion does not work. Did I make a mistake in my above statement, or is this not (yet) supported? If the latter, do you plan on adding support for this at some point? Thanks! </p> <blockquote> <p> Volker </p> </blockquote> Volker Schöch <vschoech@…> https://svn.boost.org/trac10/ticket/8362 https://svn.boost.org/trac10/ticket/8362 Report #8360: Multiplication operator should allow non-commutative version Mon, 01 Apr 2013 15:47:10 GMT Wed, 03 Apr 2013 11:07:56 GMT <p> The multipliable2 template in <code>boost/operators.hpp</code> is defined with the <code>BOOST_BINARY_OPERATOR_COMMUTATIVE</code> macro. This macro defines multiplication of types T and U in both orders in terms of <code>T *= U</code>. </p> <p> This assumes that multiplication is commutative, which is not generally true. For example when T is a nxn matrix type with double entries and U a nxn matrix with integer entries, then <code>T *= U</code> makes sense, but <code>operators.hpp</code> would define <code>U * T</code> using <code>T *= U</code>. Since matrix multiplication is not commutative, this would give wrong results. </p> <p> Suggested solution: make <code>multipliable2</code> use the NONCOMMUTATIVE macro, or add another <code>multipliable2_nc</code> template. </p> Jaap Eldering <eldering@…> https://svn.boost.org/trac10/ticket/8360 https://svn.boost.org/trac10/ticket/8360 Report #8358: queue::push incoherent documentation Sun, 31 Mar 2013 10:14:27 GMT Mon, 01 Apr 2013 16:20:01 GMT <p> The documentation of queue::push states in the postcondition that the object is pushed if the queue if internal node can be allocated, but this in contradiction with Note that states that a new node could be allocated from the OS. </p> <p> I suggest to add a Effects clause to all the documentation to states clearly the effects of each function, as it done for the C++ standard and a lot of Boost libraries. </p> <pre class="wiki">bool push(T const &amp; t); Pushes object t to the queue. Note Thread-safe. If internal memory pool is exhausted and the memory pool is not fixed-sized, a new node will be allocated from the OS. This may not be lock-free. Postconditions: object will be pushed to the queue, if internal node can be allocated Returns: true, if the push operation is successful. </pre> viboes https://svn.boost.org/trac10/ticket/8358 https://svn.boost.org/trac10/ticket/8358 Report #8357: Add noexcept to lockfree operations Sun, 31 Mar 2013 09:43:43 GMT Sun, 31 Mar 2013 09:43:43 GMT <p> C++11 allows to specify when an operation is noexcept improving the performances of the binary code. </p> <p> As the lock-free operations don't throw any exception, it would be great if the BOOST_NOEXCEPT is used for all of them. </p> <p> While this could be seen as an optimization for lockfree operations, if not added this is a problem for users wanting to declare their functions using lockfree as noexcept. </p> viboes https://svn.boost.org/trac10/ticket/8357 https://svn.boost.org/trac10/ticket/8357 Report #8356: Add move semantic push operations to lockfree data structures Sun, 31 Mar 2013 09:35:08 GMT Sun, 15 Nov 2015 15:01:28 GMT <p> Some of the operation in the lockfree data structures could benefit from move semantics when the value_type is movable. </p> <pre class="wiki"> bool push(T &amp;&amp;); </pre><p> The library should use Boost.Move in order to provide these operations on c++ compilers don't providing move semantics. </p> viboes https://svn.boost.org/trac10/ticket/8356 https://svn.boost.org/trac10/ticket/8356 Report #8355: spsc_queue - Incorrect doc for push/pop array operations Sun, 31 Mar 2013 09:26:12 GMT Sun, 31 Mar 2013 09:41:38 GMT <p> The operations </p> <pre class="wiki"> template &lt;size_type size&gt; size_type push(T const (&amp;t)[size]); template &lt;size_type size&gt; size_type pop(T (&amp;ret)[size]); </pre><p> are documented as </p> <pre class="wiki">template&lt;size_type size&gt; size_type push(T const (&amp;) t); template&lt;size_type size&gt; size_type pop(T (&amp;) t); </pre><p> I don't know if this is a doxygen problem, but the doc should be updated to show the real prototype. </p> <p> Adding something like the following would at least warm the user. </p> <pre class="wiki"> * \note Doxygen has some issues generating this prototype. The real prototype is: * \code * template &lt;size_type size&gt; * size_type push(T const (&amp;t)[size]); * \endcode </pre><p> and </p> <pre class="wiki"> * \note Doxygen has some issues generating this prototype. The real prototype is: * \code * template &lt;size_type size&gt; * size_type pop(T (&amp;ret)[size]); * \endcode </pre> viboes https://svn.boost.org/trac10/ticket/8355 https://svn.boost.org/trac10/ticket/8355 Report #8353: Fix a warning in throw_exception.hpp header which causes build breakage Sat, 30 Mar 2013 00:46:41 GMT Thu, 04 Apr 2013 03:07:26 GMT <p> The throw_exception() function within the throw_exception.hpp header produces a warning which in turn causes projects building with the -Werror flag to fail to build. The attached patch fixes the code to no longer produce a warning and fix the build. </p> brad@… https://svn.boost.org/trac10/ticket/8353 https://svn.boost.org/trac10/ticket/8353 Report #8348: asio::detail::epoll_reactor::descriptor_state c'tor doesn't initialize all POD members Wed, 27 Mar 2013 18:49:01 GMT Fri, 24 May 2013 12:20:52 GMT <pre class="wiki">epoll_reactor::descriptor_state::descriptor_state() : operation(&amp;epoll_reactor::descriptor_state::do_complete) { 5. uninit_member: Non-static class member "next_" is not initialized in this constructor nor in any functions that it calls. 7. uninit_member: Non-static class member "prev_" is not initialized in this constructor nor in any functions that it calls. 9. uninit_member: Non-static class member "reactor_" is not initialized in this constructor nor in any functions that it calls. 11. uninit_member: Non-static class member "descriptor_" is not initialized in this constructor nor in any functions that it calls. 13. uninit_member: Non-static class member "registered_events_" is not initialized in this constructor nor in any functions that it calls. CID 10922 (#2 of 2): Uninitialized pointer field (UNINIT_CTOR)15. uninit_member: Non-static class member "shutdown_" is not initialized in this constructor nor in any functions that it calls. } </pre> Richard <legalize@…> https://svn.boost.org/trac10/ticket/8348 https://svn.boost.org/trac10/ticket/8348 Report #8345: 0 bytes after a block of size 8 alloc'd Wed, 27 Mar 2013 16:38:11 GMT Wed, 27 Mar 2013 16:48:19 GMT <p> I was just profiling my appication build with 1.53.0 using valgrind 3.8.1 and have this errors </p> <p> This was build on Ubuntu 12.10 server x64 </p> <p> Here is the source code </p> <blockquote> <p> std::string storePathStr; <em> Set from arg list boost::filesystem::path storePath; </em></p> </blockquote> <blockquote> <p> if( storePathStr.empty() ) </p> <blockquote> <p> storePath /= "./store/"; <em> (boost::filesystem::current_path()); </em></p> </blockquote> <p> else { </p> <blockquote> <p> if( storePathStr[storePathStr.size()-1] != PATH_SEPERATOR ) </p> <blockquote> <p> storePathStr.append(1, PATH_SEPERATOR); </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <p> storePath = boost::filesystem::path(storePathStr); </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> if( storePath.has_extension() ) </p> <blockquote> <p> THROW_APP_EXCEPTION("Invalid Store Path: " + storePath.string()); </p> </blockquote> </blockquote> <p> Here is stack </p> <p> operator new[](unsigned long) std::moneypunct&amp;lt;wchar_t, false&amp;gt;::_M_initialize_moneypunct(<span class="underline">locale_struct*, char const*) std::locale::_Impl::_Impl(char const*, unsigned long) std::locale::locale(char const*) boost::filesystem::path::codecvt() boost::filesystem::path::begin() boost::filesystem::path::compare(boost::filesystem::path const&amp;amp;) const boost::filesystem::path::extension() boost::filesystem::path::has_extension() </span></p> rjgebis@… https://svn.boost.org/trac10/ticket/8345 https://svn.boost.org/trac10/ticket/8345 Report #8343: numeric_conversion: doc: improper rendering of an example Wed, 27 Mar 2013 15:42:47 GMT Wed, 27 Mar 2013 15:51:44 GMT <p> Read the example here (the Example section at the end of this page), and see that the numbered list at the end of obviously an error. </p> <p> <a href="http://www.boost.org/doc/libs/1_53_0/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html">http://www.boost.org/doc/libs/1_53_0/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html</a> </p> <p> See attached patch. I did not try to regen the html output. </p> Akim Demaille <akim.demaille@…> https://svn.boost.org/trac10/ticket/8343 https://svn.boost.org/trac10/ticket/8343 Report #8342: [filesystem] v3 path interface is no longer an abstraction Wed, 27 Mar 2013 10:45:30 GMT Wed, 27 Mar 2013 10:52:55 GMT <p> Some of the changes to Boost.Filesystem in v3 have made it into a string class with utility methods rather than the path abstraction that it used to be. </p> <p> Consider: </p> <p> path p("/a/b"); p /= "c"; cout &lt;&lt; p.string(); </p> <p> In version 2 this would output "/a/b/c" on Windows but now it produces "/a/b\c". </p> <p> Had the behaviour simple changed from using generic path to always using OS path, this would not be a problem; the change would be consistent and the chosen string() method would be the only deciding factor deciding in what format the path was returned. </p> <p> But the behaviour has, instead, changed to return a chimera of generic and OS paths which means the output of the string function is now dependent on the format of the input string and the modifications that were made during its lifetime. The abstraction has been lost. </p> <p> My suggestions: </p> <ul><li>change boost::filesystem::path to have only two string functions: one that returns entirely generic paths, the other entirely OS paths </li><li>make string() be the generic one </li><li>let no part of the path interface betray the exact separators that happen to have been used to construct the string as that is a leaky abstraction. </li></ul><p> See original discussion here: <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/239446"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/239446</a> </p> alexander.lamaison@… https://svn.boost.org/trac10/ticket/8342 https://svn.boost.org/trac10/ticket/8342 Report #8339: Iterator facade does not work for const iterator with array value type Wed, 27 Mar 2013 02:39:58 GMT Wed, 27 Mar 2013 02:39:58 GMT <p> The following code fails to compile: </p> <pre class="wiki">#include &lt;boost/iterator/iterator_facade.hpp&gt; struct iterator : boost::iterator_facade&lt;iterator, char [4], boost::random_access_traversal_tag, char const (&amp;)[4]&gt; { }; </pre><p> (I omitted the body of the derived class, but that's irrelevant, it's not what's causing the error). </p> <p> The error is: </p> <pre class="wiki">In file included from test.cpp:1: In file included from boost/iterator/iterator_facade.hpp:17: boost/iterator/detail/operator_brackets_dispatch.hpp:33:12: error: function cannot return array type 'result_type' (aka 'char [4]') static result_type apply(Iterator const &amp; i) ^ boost/iterator/iterator_facade.hpp:583:16: note: in instantiation of template class 'boost::detail::operator_brackets_value&lt;char [4]&gt;' requested here typename operator_brackets_dispatch_::result_type ^ test.cpp:3:19: note: in instantiation of template class 'boost::iterator_facade&lt;iterator, char [4], boost::random_access_traversal_tag, char const (&amp;)[4], long&gt;' requested here struct iterator : boost::iterator_facade&lt;iterator, ^ In file included from test.cpp:1: boost/iterator/iterator_facade.hpp:583:7: error: function cannot return array type 'typename operator_brackets_dispatch_::result_type' (aka 'char [4]') typename operator_brackets_dispatch_::result_type ^ test.cpp:3:19: note: in instantiation of template class 'boost::iterator_facade&lt;iterator, char [4], boost::random_access_traversal_tag, char const (&amp;)[4], long&gt;' requested here struct iterator : boost::iterator_facade&lt;iterator, ^ </pre><p> It would be great if this use case could be supported. </p> Nathan Ridge https://svn.boost.org/trac10/ticket/8339 https://svn.boost.org/trac10/ticket/8339 Report #8335: [locale] PGI 11.3 build problems () Tue, 26 Mar 2013 14:37:40 GMT Tue, 26 Mar 2013 14:37:40 GMT <p> Hi, </p> <p> Compilation of boost 1.53.0 with the PGI 11.3 compiler on RHEL5 fails for the following source files when using the method in the quickstart guide: </p> <ul><li>libs/locale/src/posix/codecvt.cpp </li><li>libs/locale/src/posix/collate.cpp </li><li>libs/locale/src/posix/converter.cpp </li><li>libs/locale/src/posix/numeric.cpp </li><li>libs/locale/src/posix/posix_backend.cpp </li></ul><p> Most of the errors appear to stem from a claim that locale_t is undefined. Errors are too long to include here, so have attached a build output to this ticket. Hope it doesn't make it too much a pain to read. </p> <p> In addition, detection of icu libraries seems to fail (whereas building against GNU or Intel compilers succeeds). Note the icu/icu (lib64) lines below. I'm told this is to do with the locale component: </p> <pre class="wiki">$ ./b2 Building the Boost C++ Libraries. Performing configuration checks - 32-bit : no - 64-bit : yes - x86 : yes - has_icu builds : no warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam - iconv (libc) : yes - icu : no - icu (lib64) : no - gcc visibility : no - long double support : yes warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message. </pre> Mark Dixon <m.c.dixon@…> https://svn.boost.org/trac10/ticket/8335 https://svn.boost.org/trac10/ticket/8335 Report #8324: Add treap to Boost.Container Fri, 22 Mar 2013 12:42:34 GMT Wed, 06 May 2015 12:38:40 GMT <p> I think it would be helpful to create a boost::container::treap, i.e. a non-intrusive treap container, implemented using the intrusive version. That could make this useful data structure available to users who wouldn't otherwise need to learn how to use Boost.Intrusive. </p> Phil Endecott https://svn.boost.org/trac10/ticket/8324 https://svn.boost.org/trac10/ticket/8324 Report #8311: progress.hpp incompatible with timer/timer.hpp Tue, 19 Mar 2013 23:56:21 GMT Wed, 20 Mar 2013 21:42:36 GMT <p> Hi, </p> <p> If I want to use boost::progress_display and boost::timer::cpu_timer for example, I have to modify boost/progress.hpp to prevent it from including the old boost::timer class, otherwise class boost::timer conflicts with namespace boost::timer. </p> <p> Alex </p> alex.burton@… https://svn.boost.org/trac10/ticket/8311 https://svn.boost.org/trac10/ticket/8311 Report #8309: [iostreams] bad handling of non-blocking writes for ‘indirect_streambuf’ class Tue, 19 Mar 2013 09:26:26 GMT Tue, 19 Mar 2013 09:26:26 GMT <p> When a non-blocking write is done, the <code>indirect_streambuf</code> class sets the pointer to the start of the put area (<code>pbase()</code>) to the start of his own internal buffer (<code>out().buffer()</code>) offset by the number of bytes consumed. </p> <p> This algorithm works with a single non-blocking write but fails with multiple successive non-blocking writes. </p> <p> Imagine the following scenario: </p> <ol><li>Initially, <code>pbase()</code>, <code>pptr()</code> and <code>out().begin()</code> point to address <code>0x1000</code>. </li><li>8 characters/bytes are written (assuming char as char_type). </li><li><code>pptr()</code> is set to <code>0x1008</code>. </li><li>Only 2 characters are consumed downstream. </li><li><code>pbase()</code> is correctly set to <code>0x1002</code>. <code>pptr()</code> remains at <code>0x1008</code>. </li><li>2 more characters are consumed downstream. </li><li><strong><code>pbase()</code> is wrongly set to <code>0x1002</code></strong>. It should be set to <code>0x1004</code>. </li></ol><p> I have attached a <a class="attachment" href="https://svn.boost.org/trac10/attachment/ticket/8309/nonblocking_indirect_streambuf_write.cpp" title="Attachment 'nonblocking_indirect_streambuf_write.cpp' in Ticket #8309">file containing a sample unit-test</a><a class="trac-rawlink" href="https://svn.boost.org/trac10/raw-attachment/ticket/8309/nonblocking_indirect_streambuf_write.cpp" title="Download">​</a> that reproduces this scenario. </p> <p> The fix looks easy as the <code>pbase()</code> pointer needs to be set to its previous value offset by the number of bytes consumed. I have attached a <a class="attachment" href="https://svn.boost.org/trac10/attachment/ticket/8309/indirect_streambuf.hpp.patch" title="Attachment 'indirect_streambuf.hpp.patch' in Ticket #8309">patch</a><a class="trac-rawlink" href="https://svn.boost.org/trac10/raw-attachment/ticket/8309/indirect_streambuf.hpp.patch" title="Download">​</a> that implements this fix and makes the unit-test pass. However I am unable to assess the impact or correctness of this fix. </p> fpascutti@… https://svn.boost.org/trac10/ticket/8309 https://svn.boost.org/trac10/ticket/8309 Report #8307: additional archetypes request Mon, 18 Mar 2013 20:45:19 GMT Mon, 18 Mar 2013 20:45:19 GMT <p> Currently, incidence_graph_archetype, adjacency_graph_archetype, and vertex_list_graph_archetype are defined in graph_archetypes.hpp. </p> <p> According to the following document, those archetypes correspond to <a class="missing wiki">IncidenceGraph</a>, <a class="missing wiki">AdjacencyGraph</a>, and <a class="missing wiki">VertexListGraph</a> concepts: <a href="http://www.boost.org/doc/libs/1_53_0/libs/graph/doc/graph_concepts.html">http://www.boost.org/doc/libs/1_53_0/libs/graph/doc/graph_concepts.html</a> </p> <p> It seems that there are no archetypes correspond to <a class="missing wiki">EdgeListGraph</a>, <a class="missing wiki">AdjacencyMatrix</a>, <a class="missing wiki">VertexAndEdgeListGraph</a>, and <a class="missing wiki">BidirectionalGraph</a> concepts. </p> <p> I attached the patch that adds those additional archetypes and their tests. </p> redboltz@… https://svn.boost.org/trac10/ticket/8307 https://svn.boost.org/trac10/ticket/8307 Report #8305: Allow interprocess to work with big files on x32 POSIX systems Mon, 18 Mar 2013 15:13:07 GMT Tue, 11 Aug 2015 09:01:22 GMT <p> This patch adds <code>O_LARGEFILE</code> to file open mode (if it is supported). </p> <p> Some info about defining <code>-D_FILE_OFFSET_BITS=64</code> on x32 POSIX systems shall be added to official documentation and maybe to <code>mapped_region</code> doxygen documentation. </p> <p> (patch was tested on x32 Linux on boost 1.53 and adopted for trunk version) </p> Antony Polukhin https://svn.boost.org/trac10/ticket/8305 https://svn.boost.org/trac10/ticket/8305 Report #8301: filesystem::canonical() has a race condition on Windows 7/10 Mon, 18 Mar 2013 02:43:58 GMT Tue, 26 Sep 2017 09:29:26 GMT <p> read_symlink() often throws a exception. </p> <p> to confirm this problem, please compile and run the attached file. </p> <p> i think it caused by read_symlink() opening a file exclusively. </p> <pre class="wiki"> handle_wrapper h( create_file_handle(p.c_str(), GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0)); </pre><p> FILE_SHARE_READ argument resolves this problem, isn't it? </p> y.hoshizuki https://svn.boost.org/trac10/ticket/8301 https://svn.boost.org/trac10/ticket/8301 Report #8300: class_name_type is not bitwise serializable Sun, 17 Mar 2013 21:43:03 GMT Wed, 21 Aug 2013 16:12:41 GMT <p> class_name_type is defined to be bitwise serializable, but it contains a char pointer meant to be a string. in the archive types that come with boost there is an explicit save_override to convert it to a std::string, but if you implement an own archive and determine how to save a type using is_bitwise_serializable, you end up saving a pointer bitwise. </p> anonymous https://svn.boost.org/trac10/ticket/8300 https://svn.boost.org/trac10/ticket/8300 Report #8298: Clang error with Boost Phoenix Local Name Assignment using C++11 Sat, 16 Mar 2013 21:49:19 GMT Fri, 07 Feb 2014 22:37:47 GMT <p> The attached minimal main file (also shown below) will fail to compile with Clang++ version 3.2 under 64-bit Ubuntu, and also Arch Linux. It will however only fail when the <strong>-std=c++11</strong> flag is used. </p> <p> I noticed that the default Boost version on Ubuntu (1.49.0) did not give the error, so I tried Boost 1.53.0, 1.52.0 and also boost-trunk from svn, all of which give the same error. Boost 1.51.0 does not give the error. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/phoenix.hpp&gt;</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">phoenix</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">phoenix</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">phoenix</span><span class="o">::</span><span class="n">local_names</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="n">phoenix</span><span class="o">::</span><span class="n">lambda</span><span class="p">(</span><span class="n">_a</span><span class="o">=</span><span class="mi">17</span><span class="p">)[</span> <span class="n">_a</span> <span class="o">=</span> <span class="mi">18</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">_a</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span> <span class="p">]()();</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> Paul Keir <pkeir@…> https://svn.boost.org/trac10/ticket/8298 https://svn.boost.org/trac10/ticket/8298 Report #8293: Unused Variable Warnings in Boost.Units due to BOOST_UNITS_STATIC_CONSTANT Fri, 15 Mar 2013 15:45:12 GMT Fri, 15 Mar 2013 15:45:12 GMT <p> In clang every globally declared unit using BOOST_UNITS_STATIC_CONSTANT produces an unused variable warning, resulting in hundreds of warnings. </p> <p> Compiler version: c++ --version Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.2.0 Thread model: posix </p> <p> Here is one sample: </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /opt/local/include/boost/units/static_constant.hpp:27:24: note: expanded from macro 'BOOST_UNITS_STATIC_CONSTANT' </p> <blockquote> <p> static const type&amp; name = name##_instance_t&lt;true&gt;::instance; \ </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from redacted.cpp:18: In file included from redacted2.h:20: In file included from redacted3.h:25: In file included from /opt/local/include/boost/units/systems/si.hpp:24: /opt/local/include/boost/units/systems/si/acceleration.hpp:27:29: warning: unused variable 'metre_per_second_squared' [-Wunused-variable] BOOST_UNITS_STATIC_CONSTANT(metre_per_second_squared,acceleration); </p> <blockquote> <p> <sup> </sup></p> </blockquote> ahundt https://svn.boost.org/trac10/ticket/8293 https://svn.boost.org/trac10/ticket/8293 Report #8290: Python GIL not acquired before freeing shared_ptr, causes crash Wed, 13 Mar 2013 12:05:02 GMT Wed, 30 Sep 2015 04:44:22 GMT <p> We're successfully using boost::python with Python on multiple threads that lock and release the GIL as appropriate, and correctly set the Python thread state, etc. </p> <p> One thing we don't have control over, however, is the freeing of shared_ptr objects which were created by boost::python. This may happen on a different thread than the previous Python execution and/or without the GIL being locked. To fix this, the following patch is required: </p> <pre class="wiki">--- builtin_converters.cpp 2011-06-07 06:15:33.000000000 +0200 +++ builtin_converters.cpp.fixed 2013-03-13 12:57:29.346638173 +0100 @@ -32,7 +32,9 @@ void shared_ptr_deleter::operator()(void const*) { + PyGILState_STATE gil = PyGILState_Ensure(); owner.reset(); + PyGILState_Release(gil); } namespace </pre><p> This fix can be applied externally to boost::python, but requires a few header files that re-implement shared_ptr_to_python.hpp and shared_ptr_from_python.hpp. </p> team@… https://svn.boost.org/trac10/ticket/8290 https://svn.boost.org/trac10/ticket/8290 Report #8285: These is no statvfs.h in android NDK Tue, 12 Mar 2013 11:13:49 GMT Tue, 12 Mar 2013 11:15:39 GMT <p> Boost.Filesystem fails to compile with Android NDK r8d, due to lack of statvfs.h on this platform. This issue can be sorted out using the attached patch. </p> boost.lists@… https://svn.boost.org/trac10/ticket/8285 https://svn.boost.org/trac10/ticket/8285 Report #8281: interprocess docs refer to non-existant basic_managed_shared_memory::remove Tue, 12 Mar 2013 07:05:08 GMT Tue, 12 Mar 2013 07:06:01 GMT <p> The reference docs for <code>~basic_managed_shared_memory</code> here (www.boost.org/doc/libs/1_53_0/doc/html/boost/interprocess/basic_managed<span class="underline">idp56460464.html) say: </span></p> <blockquote class="citation"> <p> Destroys *this and indicates that the calling process is finished using the resource. The destructor function will deallocate any system resources allocated by the system for use by this process for this resource. The resource can still be opened again calling the open constructor overload. To erase the resource from the system use remove(). </p> </blockquote> <p> There is no member <code>remove</code>. </p> Eric Niebler https://svn.boost.org/trac10/ticket/8281 https://svn.boost.org/trac10/ticket/8281 Report #8280: missing reference docs for members of basic_managed_shared_memory Tue, 12 Mar 2013 06:05:38 GMT Tue, 12 Mar 2013 06:05:38 GMT <p> The reference docs say that <code>managed_shared_memory</code> is a typedef for an instantiation of the <code>basic_managed_shared_memory</code> template. The reference docs for that are here: <a href="http://www.boost.org/doc/libs/1_53_0/doc/html/boost/interprocess/basic_managed__idp56460464.html">http://www.boost.org/doc/libs/1_53_0/doc/html/boost/interprocess/basic_managed__idp56460464.html</a> </p> <p> The members <code>find</code>, <code>construct</code>, <code>construct_it</code> and <code>destroy</code> are not documented here, despite being used in the example here: <a href="http://www.boost.org/doc/libs/1_53_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_named_interprocess">http://www.boost.org/doc/libs/1_53_0/doc/html/interprocess/quick_guide.html#interprocess.quick_guide.qg_named_interprocess</a> </p> Eric Niebler https://svn.boost.org/trac10/ticket/8280 https://svn.boost.org/trac10/ticket/8280 Report #8278: BOOST_ASSERT_MSG prerocessed out if NDEBUG is defined regardless of BOOST_ENABLE_ASSERT_HANDLER Mon, 11 Mar 2013 22:55:50 GMT Thu, 14 Mar 2013 22:01:10 GMT <p> There is an inconsistency in boost/assert.hpp. The macros <code>BOOST_ASSERT</code> and <code>BOOST_VERIFY</code> are *not* preprocessed out when <code>BOOST_ENABLE_ASSERT_HANDLER</code> is defined, but <code>BOOST_ASSERT_MSG</code> is. The inconsistency should be resolved one way or the other, and I think making <code>BOOST_ASSERT_MSG</code> behave like the other two makes the most sense. </p> <p> Assigning to you, Peter, since you created this file. Please reassign as appropriate. </p> Eric Niebler https://svn.boost.org/trac10/ticket/8278 https://svn.boost.org/trac10/ticket/8278 Report #8276: Shared Memory Access by 32-bit and 64-bit Processes Mon, 11 Mar 2013 17:12:17 GMT Thu, 07 Apr 2016 14:14:10 GMT <p> Problem: Exception raised in Segment.find_or_construct&lt;&gt;() call. </p> <pre class="wiki">Problem: Exception raised in Segment.find_or_construct&lt;&gt;() call. The system operates if all of the the processes are 64-bit, or if all of the processes are 32-bit. If the shared memory segment has been constructed by a 64-bit process, attempting to find_or_construct it with a 32-bit process fails. Similary, if the shared memory segment has been constructed by a 32-bit process, attempting to find_of_construct it with a 64-bit process fails. I have determined that the actual objects in shared memory report different sizes when compiled for 32-bit or 64-bit. This is a multi-cast PubSub program. It constructs the following complex data structure in shared memory: // Boost includes #include &lt;boost\interprocess\managed_shared_memory.hpp&gt; #include &lt;boost\interprocess\containers\map.hpp&gt; #include &lt;boost\unordered_map.hpp&gt; #include &lt;boost\interprocess\allocators\allocator.hpp&gt; #include &lt;boost\interprocess\containers\vector.hpp&gt; #include &lt;boost\interprocess\containers\string.hpp&gt; #include &lt;boost\interprocess\sync\interprocess_mutex.hpp&gt; #include &lt;boost\interprocess\sync\interprocess_semaphore.hpp&gt; #include &lt;boost\interprocess\sync\scoped_lock.hpp&gt; #include &lt;boost\interprocess\detail\move.hpp&gt; #include &lt;boost\thread.hpp&gt; #include &lt;boost\foreach.hpp&gt; #include &lt;boost\format.hpp&gt; #include &lt;functional&gt; #include &lt;boost/functional/hash.hpp&gt; typedef managed_shared_memory::segment_manager segment_manager_t; // this is the segment_manager // Define the allocators. typedef boost::interprocess::allocator&lt;void, segment_manager_t&gt; void_allocator; // void_allocator is convertible to any other allocator&lt;T&gt;. typedef boost::interprocess::allocator&lt;int, segment_manager_t&gt; int_allocator; // allocator for allocating ints. typedef boost::interprocess::vector&lt;int, int_allocator&gt; int_vector; // an int_vector is a vector of ints. typedef boost::interprocess::allocator&lt;int_vector, segment_manager_t&gt; int_vector_allocator; // an allocator for allocating vectors of ints. typedef boost::interprocess::vector&lt;int_vector, int_vector_allocator&gt; int_vector_vector; // an int_vector_vector is a vecctor of (vectors of ints) typedef boost::interprocess::allocator&lt;interprocess_semaphore, segment_manager_t&gt; semaphore_allocator; // an allocator for interprocess_semaphore typedef boost::interprocess::allocator&lt;WCHAR, segment_manager_t&gt; wchar_allocator; // an allocator for wide chars. typedef boost::interprocess::basic_string&lt;WCHAR, std::char_traits&lt;WCHAR&gt;, wchar_allocator&gt; wchar_string; // a basic_string (which supports formatting). This is built on a collection of wide chars, allocated by wchar_alloctor. class EventMessage { EnumEventType EventType_; // an enum EnumEventSubType EventSubType; // an enum ULONG32 ProcessId_; ULONG32 ThreadId_; EnumMyType MyType_; // an enum wchar_string FullPath_; GUID GuidPublisher_; } // Event allocators typedef boost::interprocess::allocator&lt;EventMessage, segment_manager_t&gt; EventMessage_allocator; // allocator for allocating EventMessage typedef boost::interprocess::vector&lt;EventMessage, EventMessage_allocator&gt; EventMessage_vector; // vector of EventMessage objects. class Subscription { ULONG32 uSignature_; ULONG32 uSubscribingProcessId_; ULONG32 uSubscribingThreadId_; EnumEventType nEventType_ // an enum offset_ptr&lt;interprocess_semaphore&gt; pSemaphoreSubscription_; GUID guidSubscriber_; BOOL fDestructed; BOOL fWaiting_; BOOL fCancelled_; EventMessage_vector events_; // a shared memory vector of EventMessage } // Define the types related to Subscription typedef boost::interprocess::allocator&lt;Subscription, segment_manager_t&gt; subscription_allocator; // allocator for allocating Subscription typedef boost::interprocess::allocator&lt;GUID, segment_manager_t&gt; guid_allocator; // allocator for allocating GUID typedef std::pair&lt;const GUID, Subscription&gt; pair_guid_subscription; // a pair of GUID, Subscription typedef boost::interprocess::allocator&lt;EnumEventType, segment_manager_t&gt; eventtype_allocator; // allocator for allocating EnumEventType typedef boost::interprocess::allocator&lt;pair_guid_subscription, segment_manager_t&gt; pair_guid_subscription_allocator; // allocator for pair_guid_subscription typedef boost::unordered_map&lt;GUID, Subscription, boost::hash&lt;GUID&gt;, std::equal_to&lt;GUID&gt;, pair_guid_subscription_allocator&gt; guid_subscription_map; // a map of GUID =&gt; Subscription typedef std::pair&lt;const EnumEventType, guid_subscription_map&gt; pair_eventtype_pair_guid_subscription; // a pair(EnumEventType, pair(GUID, Subscription)) typedef boost::interprocess::allocator&lt;pair_eventtype_pair_guid_subscription, segment_manager_t&gt; pair_eventtype_pair_guid_subscription_allocator; // allocator for pair(EnumEventType, pair(GUID, Subscription)) typedef boost::unordered_map&lt;EnumEventType, guid_subscription_map, boost::hash&lt;int&gt;, std::equal_to&lt;int&gt;, pair_eventtype_pair_guid_subscription_allocator&gt; eventtype_map_guid_subscription_map; // a map(EnumEventType, map&lt;GUID, Subscription)&gt; typedef boost::interprocess::vector&lt;Subscription, subscription_allocator&gt; subscription_vector; // a vector of Subscriptions typedef boost::interprocess::allocator&lt;subscription_vector, segment_manager_t&gt; subscription_vector_allocator; // allocator for allocating a vector of Subscription. typedef boost::interprocess::allocator&lt;guid_subscription_map, segment_manager_t&gt; guid_subscription_map_allocator; // allocator for allocating a map of GUID =&gt; Subscription typedef boost::interprocess::allocator&lt;eventtype_map_guid_subscription_map, segment_manager_t&gt; eventtype_map_guid_subscription_map_allocator; // allocator for allocating map&lt;EnumEventType, map&lt;GUID, Subscription&gt;&gt; // This is the single item defined in the segment class Base { uint64_t reserved1_; uint64_t reserved2_; ULONG32 uSignature_; interprocess_mutex mutexSharedMemory_ eventtype_map_guid_subscription_map subscriptions_; // a shared memory map of [GUID, Subscription] (the active subscriptions) } The following sizes are reported: 64-bit sizeof(IntPtr): 8 sizeof(ULONG32): 4 sizeof(BOOL): 4 sizeof(EnumEventType): 4 sizeof(EnumEventSubType): 4 sizeof(EnumCloudAppIconBadgeType): 4 sizeof(GUID): 16 sizeof(EventMessage): 72 sizeof(Subscription): 88 sizeof(Base): 104 sizeof(size_t): 8 32-bit: sizeof(IntPtr): 4 sizeof(ULONG32): 4 sizeof(BOOL): 4 sizeof(EnumEventType): 4 sizeof(EnumEventSubType): 4 sizeof(EnumCloudAppIconBadgeType): 4 sizeof(GUID): 16 sizeof(EventMessage): 60 sizeof(Subscription): 64 sizeof(Base): 72 sizeof(size_t): 4 Note that all of the fundamental types are the same size, but the Boost interprocess sizes are different. I thought that as of Boost 1.48 all of the sizes were normalized to use the same shared memory sizes whether compiled for 32- or 64-bit. Perhaps I am doing something wrong. Suggestions will be welcome. Thanks. </pre> Bob Stevens <bob@…> https://svn.boost.org/trac10/ticket/8276 https://svn.boost.org/trac10/ticket/8276 Report #8275: conversion_traits::super/subtype incorrect for UDT's Mon, 11 Mar 2013 16:54:45 GMT Mon, 11 Mar 2013 16:54:45 GMT <p> The following static assertion fails: </p> <pre class="wiki">#include &lt;boost/numeric/conversion/conversion_traits.hpp&gt; #include &lt;boost/multiprecision/cpp_dec_float.hpp&gt; using namespace boost::multiprecision; BOOST_STATIC_ASSERT(boost::numeric::convdetail::get_is_subranged&lt;cpp_dec_float_50, cpp_dec_float_100&gt;::type::value); </pre><p> Which causes all sorts of other failures in clients of this class - it looks like UDT conversions are treated as always non-narrowing (?) where as use of numeric_limits would quickly reveal otherwise. </p> John Maddock https://svn.boost.org/trac10/ticket/8275 https://svn.boost.org/trac10/ticket/8275 Report #8273: Add externally locked streams Mon, 11 Mar 2013 07:21:19 GMT Fri, 05 Sep 2014 06:11:53 GMT <p> Based on N3354: C++ Stream Mutexes <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3354.html"><span class="icon">​</span>http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3354.html</a> add thread safe streams that gets its protecting mutex externally instead of internally as in the proposal so that several streams can share the same protecting mutex. </p> <p> This will be useful to take in account coherency when working with cout and cin. </p> viboes https://svn.boost.org/trac10/ticket/8273 https://svn.boost.org/trac10/ticket/8273 Report #8259: ICU is used but not cleaned up, leaking memory. Thu, 07 Mar 2013 00:57:19 GMT Wed, 10 Apr 2013 11:25:07 GMT <p> So ICU is used in Boost.Locale, but not cleaned up, which leaks memory. </p> <p> I've attached a patch that fixes this, but has some setbacks: </p> <ul><li>It's not thread safe (that I know of). </li><li>ICU may be used in other Boost libraries (like Regex) and it will break their data. </li><li>ICU may be used in user applications and it will break their data. </li></ul><p> A solution would be to make an interface for the application users to use that cleans up ICU specifically, but that'd break encapsulation would it not? </p> 166291@… https://svn.boost.org/trac10/ticket/8259 https://svn.boost.org/trac10/ticket/8259 Report #8258: Wave: unexpected pre-processing error Wed, 06 Mar 2013 18:55:52 GMT Thu, 07 Mar 2013 13:41:17 GMT <p> Pre-processing the following file with the wave tool (v2.3.2.4101) on OSX 10.8.2 built from Boost 1.53.0 with GCC 4.2.1 produces an unexpected error. </p> <p> File PPError1.txt: </p> <pre class="wiki">#if 0 "\U0000x" #endif </pre><p> Error: </p> <pre class="wiki">/path-to-file/PPError1.txt:2:2: error: universal character name specifies an invalid character: \U0000x" </pre><p> Wave was invoked with:<br /> </p> <blockquote> <p> /path-to-boost/dist/bin/wave PPError1.txt </p> </blockquote> <p> Wave was built with:<br /> </p> <blockquote> <p> cd boost_1_53_0/tools/wave/build<br /> b2 variant=debug </p> </blockquote> <p> Strangely, deleting any (or all) of the 0's in the second line causes wave to produce no error.<br /> [GNU cpp-4.2.1 produces no errors in all cases.] </p> chris0@… https://svn.boost.org/trac10/ticket/8258 https://svn.boost.org/trac10/ticket/8258 Report #8256: Wave tests fail to build on OSX+GCC Wed, 06 Mar 2013 18:20:01 GMT Thu, 07 Mar 2013 16:21:24 GMT <p> When attempting to build &amp; run the Boost (1.53.0) wave tests on OSX 10.8.2 with GCC 4.2.1 the build fails at the link stage. </p> <p> I built with:<br /> </p> <blockquote> <p> cd boost_1_53_0/libs/wave/test/build<br /> b2 variant=debug </p> </blockquote> <p> The invocation: </p> <pre class="wiki">g++-4.2 -o "../../../../../build/libs/wave/test/build/test_re2c_lexer.test/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/test_re2c_lexer" "../../../../../build/libs/wave/test/build/test_re2c_lexer.test/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/test_re2c_lexer.o" "../../../../../build/libs/date_time/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_date_time.a" "../../../../../build/libs/thread/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_thread.a" "../../../../../build/libs/filesystem/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_filesystem.a" "../../../../../build/libs/system/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_system.a" "../../../../../build/libs/program_options/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_program_options.a" "../../../../../build/libs/wave/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_wave.a" "../../../../../build/libs/chrono/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_chrono.a" "../../../../../build/libs/date_time/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_date_time.a" "../../../../../build/libs/thread/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_thread.a" "../../../../../build/libs/filesystem/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_filesystem.a" "../../../../../build/libs/system/build/gcc-4.2/debug/link-static/runtime-link-static/threading-multi/libboost_system.a" -g -static -isysroot /Developer/SDKs/MacOSX10.5.sdk </pre><p> produces the message: </p> <pre class="wiki">ld_classic: can't locate file for: -lcrt0.o collect2: ld returned 1 exit status </pre><p> However, removing the '-static' flag fixes the problem.<br /> (On OSX 'man ld' reports "-static Produces a mach-o file that does not use the dyld. Only used building the kernel.".) </p> <p> The problem appears to be in boost_1_53_0/tools/build/v2/tools/gcc.jam. Due to these lines (767): </p> <pre class="wiki">if [ os.name ] != HPUX { toolset.flags gcc.link OPTIONS &lt;runtime-link&gt;static : -static ; } </pre><p> I was forced to change this, like so, to work around the problem: </p> <pre class="wiki">#if [ os.name ] != HPUX &amp;&amp; [ os.name ] != darwin # Doesn't work #if [ os.name ] != HPUX &amp;&amp; [ os.name ] != posix # Doesn't work if [ os.name ] != HPUX { # toolset.flags gcc.link OPTIONS &lt;runtime-link&gt;static : -static ; # Had to comment out above line for OSX/darwin } </pre><p> Once built the tests all run successfully. </p> chris0@… https://svn.boost.org/trac10/ticket/8256 https://svn.boost.org/trac10/ticket/8256 Report #8250: Bug deleting self loop edges in parallel code Tue, 05 Mar 2013 13:58:30 GMT Fri, 20 Dec 2013 11:51:41 GMT <p> Hello, </p> <p> I think I found a bug in the graph parallel library. I have a bidirectional adjacency list which has some self loop edges. When I try to delete them with remove_edge_if (or remove_out_edge_if or remove_in_edge_if) the edges are deleted, but it seems that some reference gets broken in the graph. If I iterate over the in_edges a reference to a self loop is found. But it does not happen if I iterate over the out_edges. If the graph is written in a graphviz file the self loop edges does not appear. </p> <p> I think there is some broken reference into the adjacency list that keeps the in_edges. </p> <p> I have two different pieces of code (one with pbgl and the other with bgl). They do the same, create a graph, delete the self-edges and print the in_edges. </p> <p> Could someone have a look at this problem? </p> <p> Thank you </p> Borja Miñano <bminyano@…> https://svn.boost.org/trac10/ticket/8250 https://svn.boost.org/trac10/ticket/8250 Report #8244: strerror is not thread-safe on all platforms Tue, 05 Mar 2013 09:04:23 GMT Tue, 05 Mar 2013 09:04:23 GMT <p> boost/iostreams/detail/system_failure.hpp uses strerror function which is not thread-safe on many platforms (e.g. Linux). Its use should be replaced with strerror_r, when possible. </p> <p> As a hint for implementation see libs/system/src/error_code.cpp. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/8244 https://svn.boost.org/trac10/ticket/8244 Report #8243: strerror is not thread-safe on all platforms Tue, 05 Mar 2013 09:00:19 GMT Sat, 09 Mar 2013 00:13:31 GMT <p> boost/exception/errinfo_errno.hpp uses strerror function which is not thread-safe on many platforms (e.g. Linux). Its use should be replaced with strerror_r, when possible. </p> <p> As a hint for implementation see libs/system/src/error_code.cpp. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/8243 https://svn.boost.org/trac10/ticket/8243 Report #8242: strerror is not thread-safe on all platforms Tue, 05 Mar 2013 08:54:25 GMT Tue, 05 Mar 2013 08:54:25 GMT <p> boost/interprocess/errors.hpp uses strerror function which is not thread-safe on many platforms (e.g. Linux). Its use should be replaced with strerror_r, when possible. </p> <p> As a hint for implementation see libs/system/src/error_code.cpp. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/8242 https://svn.boost.org/trac10/ticket/8242 Report #8235: Toolset “intel-win” fails on .asm files Sun, 03 Mar 2013 15:06:47 GMT Wed, 22 Oct 2014 14:26:19 GMT <p> Building boost v1.53.0 using intel-win fails because assembler (masm or ml/ml64) doesn’t set: </p> <p> intel-win.compile.asm bin.v2\libs\context\build\intel-win\debug\link-static\threading-multi\asm\make_x86_64_ms_pe_masm.obj '-c' is not recognized as an internal or external command, operable program or batch file. </p> <blockquote> <p> -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1 -DBOOST_ALL_NO_LIB=1 /Zi /Zd /W3 -Fo "bin.v2\libs\context\build\intel-win\debug\link-static\threadingmulti\asm\make_x86_64_ms_pe_masm.obj" "libs\context\src\asm\make_x86_64_ms_pe_masm.asm" </p> </blockquote> <p> ...failed intel-win.compile.asm bin.v2\libs\context\build\intel-win\debug\link-static\threading-multi\asm\make_x86_64_ms_pe_masm.obj... intel-win.compile.asm bin.v2\libs\context\build\intel-win\debug\link-static\threading-multi\asm\jump_x86_64_ms_pe_masm.obj '-c' is not recognized as an internal or external command, operable program or batch file. </p> elmira.a.semenova@… https://svn.boost.org/trac10/ticket/8235 https://svn.boost.org/trac10/ticket/8235 Report #8205: MinGW can't find ICU libraries Thu, 28 Feb 2013 18:07:57 GMT Thu, 28 Feb 2013 18:07:57 GMT <p> ICU uses MSVC naming schemes in MinGW (at least on Linux when cross-compiling), so the names aren't picked up. </p> <p> I've attached a patch that fixes the issue with 32bit libraries. This hasn't been tested in Windows, and still requires 64bit library support (stuff in lib64) but I don't have either of those setups to work on. Sorry. </p> 166291@… https://svn.boost.org/trac10/ticket/8205 https://svn.boost.org/trac10/ticket/8205 Report #8203: filtering_ostream fails to write 0xFF characters with XCode Thu, 28 Feb 2013 12:30:06 GMT Mon, 23 Sep 2013 09:00:45 GMT <p> I originally found the problem using the zlib_compressor to write to an ofstream. It worked correctly on Windows but in Xcode 4.6 occasionally a 0xFF character was not written to the stream. </p> <p> I managed to reduce the code required to reproduce it down to: </p> <p> <em> filtering stream fails to write 0xFF chars to ostream. Have </em> reproduced with ofstream too std::ostringstream ostm(std::ios_base::out | std::ios_base::binary); </p> <p> <em> Use empty filtering stream. Problem was originally found with </em>zlib_compressor boost::iostreams::filtering_ostream filterStream; filterStream.push( ostm ); </p> <p> const unsigned fileSize = 30000; </p> <p> for( unsigned nWritten = 0; nWritten &lt; fileSize; ++nWritten) { </p> <blockquote> <p> const char eofTest = -1; <em> Only fails with 0xFF character any other value fine </em></p> </blockquote> <blockquote> <p> filterStream.write( &amp;eofTest, sizeof eofTest); </p> </blockquote> <p> } filterStream.flush(); </p> <p> <em> This assert fails with Xcode 4.6 assert( ostm.str().size() == fileSize); </em></p> <p> The number of missing characters is equal to the number of times overflow gets called. I suspect it's something to do with EOF character detection as the problem doesn't happen with other character values. </p> <p> I was unable to find the exact reason for the problem but was able to get it work by changing this code in write.hpp: </p> <p> static std::streamsize write(T&amp; t, const typename char_type_of&lt;T&gt;::type* s, std::streamsize n) { </p> <blockquote> <p> return t.rdbuf()-&gt;sputn(s, n); </p> </blockquote> <p> } </p> <p> to: </p> <p> static std::streamsize write(T&amp; t, const typename char_type_of&lt;T&gt;::type* s, std::streamsize n) { </p> <blockquote> <p> t.write(s, n); return n; </p> </blockquote> <p> } </p> <p> It looks like bypassing the ofstream in Xcode and going to the lower level rdbuf::sputn causes the issue. </p> support@… https://svn.boost.org/trac10/ticket/8203 https://svn.boost.org/trac10/ticket/8203 Report #8183: boost::geometry::intersection on two polygons returns incorrect empty intersection Tue, 26 Feb 2013 09:24:56 GMT Sun, 17 Mar 2013 17:47:02 GMT <p> Hi </p> <p> The code snippet intersects 2 2D polygons resulting in an empty intersection. I'm including an image of the two polygons and they are overlapping. There may be a problem because the polygons share an overlapping edge? </p> <p> Thanks </p> <p> Matthew Danielsen </p> <pre class="wiki"> polygon_2d triangle2D; { const double triangle2Dcoor[] = {{0.891747, 2.28756}, {0.490911, -1.52549}, {-1.72945, -1.52549}, {0.891747, 2.28756}}; assign(triangle2D, triangle2Dcoor); } polygon_2d box2D; { const double box2Dcoor[] = {{-1.6744, -1.52549}, {-1.70498, -1.52549}, {-1.70052, -1.49155}, {-1.67049, -1.49579}, {-1.6744, -1.52549}}; assign(box2D, box2Dcoor); } boost::geometry::model::multi_polygon&lt; boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;T&gt; &gt; &gt; intersectionPolygons; boost::geometry::intersection(triangle2D, box2D, intersectionPolygons); assert(intersectionPolygons.size() != 0); // Assert fails </pre> matthewd@… https://svn.boost.org/trac10/ticket/8183 https://svn.boost.org/trac10/ticket/8183 Report #8174: Add serialization support to Boost.Container Mon, 25 Feb 2013 20:20:29 GMT Fri, 03 Jan 2014 10:16:55 GMT <p> The containers from Boost.Container are not currently serializable with Boost.Serialize. It would be very convenient if this functionality were provided. Boost.Serialize already has code for serializing standard containers, which should be pretty easy to adapt to Boost.Container. </p> Erik.Jensen@… https://svn.boost.org/trac10/ticket/8174 https://svn.boost.org/trac10/ticket/8174 Report #8172: Boost ASIO async connect false fail on HP-UX Mon, 25 Feb 2013 13:15:16 GMT Mon, 25 Feb 2013 13:15:16 GMT <p> HP-UX migs01a B.11.31 U ia64 aCC: HP C/aC++ B3910B A.06.20 [May 13 2008] </p> <p> Im getting weird and unexpected error using socket::async_connect Handle is called with error_code set to: 22 - system - Invalid argument (value - category - message) Even though the socket is actualy connected, because if I force to ignore this particular error, everything goes perfectly fine. I can even use the socket to transfer whole 400MB file to another server. Maybe a mismatch in code? Because there are other applications running there that are using POSIX sockets (not asio) If files are needed I can create some, but I dont see a point in that, since its 4 lines of code. I even tryed using endpoint constructor with ip address or resolver using query. Localhost works btw. Without calling handler with error. </p> <p> Thx </p> pinkerik88@… https://svn.boost.org/trac10/ticket/8172 https://svn.boost.org/trac10/ticket/8172 Report #8150: gzip_compressor produces corrupt data when used with filtering_ostream Sat, 23 Feb 2013 00:00:11 GMT Mon, 25 Feb 2013 15:07:55 GMT <p> In some cases, the USE_CORRUPTING_OSTREAM path in the following program will produce corrupt gzip output (fails CRC and the de-gzipped file differs slightly from the original input). This does not occur for all data, so I will attach an input data file that triggers the error. </p> <p> This bug only affects gzip_stream when used with filtering_ostream. It does not affect filtering_istream usage. </p> <p> Bug reproduced on Mac 10.8.2, 64-bit, Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn), zlib 1.2.5 (dylib as shipped with Mac OS X), boost 1.53.0. </p> <p> Bug does not appear to be affected by compiler optimizations (-O0 and -Os tested). </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;boost/iostreams/filter/gzip.hpp&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/device/back_inserter.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; #include &lt;boost/iostreams/device/array.hpp&gt; #include &lt;boost/iostreams/stream.hpp&gt; #include &lt;boost/iostreams/device/file_descriptor.hpp&gt; int main(int argc, char *argv[]) { std::vector&lt;char&gt; input; std::vector&lt;char&gt; output; boost::iostreams::file_descriptor_source source("inputdata"); boost::iostreams::copy(source, boost::iostreams::back_inserter(input)); #define USE_CORRUPTING_OSTREAM 1 #if USE_CORRUPTING_OSTREAM boost::iostreams::filtering_ostream gzip_stream; gzip_stream.push(boost::iostreams::gzip_compressor()); gzip_stream.push(boost::iostreams::back_inserter(output)); gzip_stream.write(&amp;input[0], input.size()); boost::iostreams::close(gzip_stream); #else boost::iostreams::filtering_istream gzip_stream; boost::iostreams::stream&lt;boost::iostreams::array_source&gt; input_array(&amp;input[0], input.size()); gzip_stream.push(boost::iostreams::gzip_compressor()); gzip_stream.push(input_array); boost::iostreams::copy(gzip_stream, boost::iostreams::back_inserter(output)); #endif boost::iostreams::file_descriptor_sink destination("inputdata.gz"); destination.write(&amp;output[0], output.size()); } </pre> matt@… https://svn.boost.org/trac10/ticket/8150 https://svn.boost.org/trac10/ticket/8150 Report #8148: mpl::is_lambda_expression bug Fri, 22 Feb 2013 23:03:45 GMT Fri, 22 Feb 2013 23:03:45 GMT <p> The metafunction boost::mpl::is_lambda_expression does not work correctly. </p> <p> My attached code example give a metafunction class for which is_lambda_expression evaluates as false. </p> <p> While is_lambda_expression is not a documented feature of boost::mpl, it is available in the boost::mpl namespace. Moreover, it is used in the implementation of boost::mpl::transform, and presumably results in unintended behaviour there. </p> <p> The package boost::tti (in the boost/trunk) has boost::tti::detail::is_lambda_expression. I have confirmed that this works correctly on my example (see attached file). The tti author has informed me that tti depends on mpl. Perhaps then, boost::mpl::is_lambda_expression should be replaced by tti's. </p> James Hirschorn <James.Hirschorn@…> https://svn.boost.org/trac10/ticket/8148 https://svn.boost.org/trac10/ticket/8148 Report #8134: Compiler error using boost::foreach with boost::bimap Thu, 21 Feb 2013 05:39:28 GMT Mon, 25 Mar 2013 23:30:35 GMT <p> boost_1_52_0\boost\multi_index\ordered_index.hpp(1399) : error C3083: 'BOOST_FOREACH': the symbol to the left of a '::' must be a type boost_1_52_0\boost\multi_index\ordered_index.hpp(1399) : error C2039: 'tag' : is not a member of 'boost' boost_1_52_0\boost\multi_index\ordered_index.hpp(1399) : error C2061: syntax error : identifier 'tag' </p> <p> This occurs when using boost::bimap and boost::foreach. Seen first in 1.52, also in 1.53. OK in 1.49, with Visual tudio 2008 and 2010 </p> <p> Very simple VS2008 project included. Need to set environment variable BOOST_DIR to the boost directory, or change the project settings explicitly. </p> john.x.foster@… https://svn.boost.org/trac10/ticket/8134 https://svn.boost.org/trac10/ticket/8134 Report #8125: Failure compiling data_members.hpp with i386-mingw32 under OS X Wed, 20 Feb 2013 18:15:48 GMT Wed, 20 Feb 2013 18:34:16 GMT <p> I'm using boost to compile Python support for libRocket (librocket.com). I compile my engine across a variety of platforms and compilers, and I've only come across this issue with the i386-mingw32 compiler obtained from Mac Ports (macports.org), on OS X. The mingw compiler for Ubuntu seems to work just fine, as well as the native compilers for each system, for Android, iOS, etc. </p> <p> The error I get is the following: </p> <pre class="wiki">In file included from /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/Rocket/Core/Python/precompiled.h:32, from /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/cython_src/Rocket+Core+Python+ElementChildrenProxy.cpp:28: /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/Rocket/Core/Python/Python.h:38: warning: ignoring #pragma warning /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/Rocket/Core/Python/Python.h:39: warning: ignoring #pragma warning In file included from /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/Rocket/Core/Python/precompiled.h:32, from /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/cython_src/Rocket+Core+Python+ElementAttributeProxy.cpp:28: /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/Rocket/Core/Python/Python.h:49: warning: ignoring #pragma warning /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/boost/python/data_members.hpp: In function `boost::python::api::object boost::python::make_getter(const D&amp;) [with D = const char*(Rocket::Core::Python::ElementAttributeProxy::AttributeProxy::*)()]': /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/boost/python/class.hpp:484: instantiated from `boost::python::class_&lt;T, X1, X2, X3&gt;&amp; boost::python::class_&lt;T, X1, X2, X3&gt;::def_readonly_impl(const char*, D&amp;, const char*) [with D = const char*(Rocket::Core::Python::ElementAttributeProxy::AttributeProxy::*const)(), W = Rocket::Core::Python::ElementAttributeProxy::AttributeProxy, X1 = boost::python::detail::not_specified, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]' /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/boost/python/class.hpp:283: instantiated from `boost::python::class_&lt;T, X1, X2, X3&gt;&amp; boost::python::class_&lt;T, X1, X2, X3&gt;::def_readonly(const char*, const D&amp;, const char*) [with D = const char*(Rocket::Core::Python::ElementAttributeProxy::AttributeProxy::*)(), W = Rocket::Core::Python::ElementAttributeProxy::AttributeProxy, X1 = boost::python::detail::not_specified, X2 = boost::python::detail::not_specified, X3 = boost::python::detail::not_specified]' /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/cython_src/Rocket+Core+Python+ElementAttributeProxy.cpp:49: instantiated from here /Users/gabo/ignifuga/tmp/intel_mingw32/ignifuga/boost/python/data_members.hpp:279: error: no matching function for call to `make_getter(const char*(Rocket::Core::Python::ElementAttributeProxy::AttributeProxy::*const&amp;)(), boost::python::detail::not_specified&amp;, boost::is_member_pointer&lt;const char*(Rocket::Core::Python::ElementAttributeProxy::AttributeProxy::*)()&gt;, long int)' make: *** [Modules/Rocket+Core+Python+ElementAttributeProxy.o] Error 1 </pre> gabomdq@… https://svn.boost.org/trac10/ticket/8125 https://svn.boost.org/trac10/ticket/8125 Report #8095: Invalid XML is produced by write_xml when there is a special character in the key Mon, 18 Feb 2013 16:23:13 GMT Sat, 30 Jun 2018 09:20:05 GMT <p> I have the following property tree, dumped in INFO format: </p> <pre class="wiki">CudbAppServiceId=1 { userLabel "" sqlAppSrvPlSchema identities-pl.sql CudbAppServiceId CudbAppServiceId=1 } </pre><p> When I dump it in XML format, I got the following: </p> <pre class="wiki">&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;CudbAppServiceId=1&gt; &lt;userLabel/&gt; &lt;sqlAppSrvPlSchema&gt;identities-pl.sql&lt;/sqlAppSrvPlSchema&gt; &lt;CudbAppServiceId&gt;CudbAppServiceId=1&lt;/CudbAppServiceId&gt; &lt;/CudbAppServiceId=1&gt; </pre><p> This is not a valid XML, because we have a tag "<a class="missing wiki">CudbAppServiceId</a>=1". Of course, any other xml parser like xmllint will fail to parse it, because of the equality sign in the tag. </p> <p> Is there any solution to this problem? Like somehow emitting &amp;#61; instead of the raw '=' inside the tag and in the text? </p> <p> This is a possible problem in 1.53 as well, since property tree was not updated. </p> martongabesz@… https://svn.boost.org/trac10/ticket/8095 https://svn.boost.org/trac10/ticket/8095 Report #8094: hierarchical_mutex for lock hierarchies (to avoid deadlocks) Sun, 17 Feb 2013 21:24:36 GMT Sun, 26 Oct 2014 20:41:49 GMT <p> It would be great if boost::thread could be extended with a "hierarchical" mutex to facilitate lock hierarchies. Lock hierarchies is a construct that associates mutexes with software layer numbers, and enforces the application to only lock "downwards" in the software hierarchy <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>. This effectively translates potential deadlocks into deterministic run-time failures that be detected during testing. </p> <p> An example draft implementation is attached. The attachment also includes a BOOST_THREAD_LOCAL work-around for missing "thread_local" support that should probably be moved to more neutral ground. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="http://www.drdobbs.com/parallel/use-lock-hierarchies-to-avoid-deadlock/204801163"><span class="icon">​</span>http://www.drdobbs.com/parallel/use-lock-hierarchies-to-avoid-deadlock/204801163</a> </p> Fredrik Orderud <forderud@…> https://svn.boost.org/trac10/ticket/8094 https://svn.boost.org/trac10/ticket/8094 Report #8088: Limited Forward Compatibility Sun, 17 Feb 2013 15:32:09 GMT Mon, 27 Nov 2017 10:56:08 GMT <p> We use xml serialization for saving and loading several types of metadata and we have to support possibility of reading new versions of files with old versions of soft. Boost::serialization is very good at backward compatibility but does not provide anything with opposite problem. </p> <p> So, This patch introduces new flag boost::archive::skip_unknown_tail_tags. When this flag is set and basic_xml_iarchive is faced with unknown tags at the end of element it will skip them (include nested). E.g., the first version of some file was: </p> <pre class="wiki">&lt;Test class_id="0" tracking_level="0" version="0"&gt; &lt;a&gt;31&lt;/a&gt; &lt;t2 class_id="1" tracking_level="0" version="0"&gt; &lt;a&gt;11&lt;/a&gt; &lt;b&gt;12&lt;/b&gt; &lt;/t2&gt; &lt;b&gt;32&lt;/b&gt; &lt;/Test&gt; </pre><p> After a while, the second version could be: </p> <pre class="wiki">&lt;Test class_id="0" tracking_level="0" version="0"&gt; &lt;a&gt;31&lt;/a&gt; &lt;t2 class_id="1" tracking_level="0" version="1"&gt; &lt;a&gt;11&lt;/a&gt; &lt;b&gt;12&lt;/b&gt; &lt;c&gt;13&lt;/c&gt; &lt;d&gt;14&lt;/d&gt; &lt;t1 class_id="2" tracking_level="0" version="0"&gt; &lt;a&gt;1&lt;/a&gt; &lt;b&gt;2&lt;/b&gt; &lt;/t1&gt; &lt;/t2&gt; &lt;b&gt;32&lt;/b&gt; &lt;/Test&gt; </pre><p> Therefore, if the first version software set skip_unknown_tail_tags it can read second version of file (if does not set then exception will be thrown). </p> Dmitry Shesterkin <dfb@…> https://svn.boost.org/trac10/ticket/8088 https://svn.boost.org/trac10/ticket/8088 Report #8064: Comment handling in <boost/property_tree/ini_parser.hpp> Thu, 14 Feb 2013 13:33:27 GMT Thu, 14 Feb 2013 13:50:43 GMT <p> Hello! </p> <p> I'd like to propose a patch to the ini_parser.hpp which allowes to handle inline comments like: </p> <p> key=0.55 ;this comment describing "key" would result in an exception when using read_ini() </p> <p> Patch is attached to this ticket. </p> stefan.jenisch@… https://svn.boost.org/trac10/ticket/8064 https://svn.boost.org/trac10/ticket/8064 Report #8054: Where is the PageRank algorithm? Wed, 13 Feb 2013 14:45:45 GMT Tue, 09 Aug 2016 09:22:51 GMT <p> Hello, </p> <p> It seems that once where was a <a class="missing wiki">PageRank</a> implementation for Boost, which is referenced here </p> <p> <a class="ext-link" href="http://osl.iu.edu/~dgregor/bgl-python/reference/boost.graph.html#-page_rank"><span class="icon">​</span>http://osl.iu.edu/~dgregor/bgl-python/reference/boost.graph.html#-page_rank</a> </p> <p> which refers to <a href="http://www.boost.org/libs/graph/doc/page_rank.html">http://www.boost.org/libs/graph/doc/page_rank.html</a> which does not exist. A search in the SVN <a class="ext-link" href="https://svn.boost.org/trac/boost/changeset/29931/trunk/boost/libs/graph/src/python/page_rank.cpp"><span class="icon">​</span>https://svn.boost.org/trac/boost/changeset/29931/trunk/boost/libs/graph/src/python/page_rank.cpp</a> showed me that there once was a file "page_rank.cpp" which seems to no longer exist <a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/libs/graph/src/python/page_rank.cpp"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/libs/graph/src/python/page_rank.cpp</a> gives an error. </p> <p> (Why) Has the implementation been removed? </p> <p> Robert </p> anonymous https://svn.boost.org/trac10/ticket/8054 https://svn.boost.org/trac10/ticket/8054 Report #8035: Warning fixes in parameter Tue, 12 Feb 2013 09:29:26 GMT Tue, 12 Feb 2013 09:29:26 GMT <p> We have a zero warning policy in our development projects and experience lots of warnings in several boost libraries. With every new boost version we need to apply a set of warning fixes. </p> <p> It would help a lot if you could integrate these warning fixes into future boost releases. </p> <p> Please find attached a patch file against boost 1.53.0 which fixes several warnings in boost::parameter. </p> Franz Detro <franz.detro@…> https://svn.boost.org/trac10/ticket/8035 https://svn.boost.org/trac10/ticket/8035 Report #8021: gcc: ptree_utils.hpp:76: warning: comparison is always false due to limited range of data type [-Wtype-limits] Sat, 09 Feb 2013 20:00:59 GMT Thu, 18 Jul 2013 09:04:13 GMT <p> gcc version 4.7.2 (Built by MinGW-builds project) i686-w64-mingw32 </p> <p> yields </p> <pre class="wiki">boost/property_tree/detail/ptree_utils.hpp: In instantiation of 'std::string boost::property_tree::detail::narrow(const Ch*) [with Ch = wchar_t; std::string = std::basic_string&lt;char&gt;]': boost/property_tree/string_path.hpp:64:36: required from here boost/property_tree/detail/ptree_utils.hpp:76:13: warning: comparison is always false due to limited range of data type [-Wtype-limits] 76: if (*text &lt; 0 || *text &gt; (std::numeric_limits&lt;char&gt;::max)()) </pre> anonymous https://svn.boost.org/trac10/ticket/8021 https://svn.boost.org/trac10/ticket/8021 Report #8013: Fusion sequence attribute compatibility Sat, 09 Feb 2013 03:03:03 GMT Sun, 17 Dec 2017 01:31:26 GMT <p> From Spirit point of view, two fusion sequences are compatible if one of them is a prefix of the other. This is unintentional. </p> K-ballo <kaballo86@…> https://svn.boost.org/trac10/ticket/8013 https://svn.boost.org/trac10/ticket/8013 Report #8012: Inconsistency in linearize() Fri, 08 Feb 2013 17:41:28 GMT Thu, 24 Oct 2013 21:35:39 GMT <p> Assume two equivalent non-empty circular buffers A and B, with A reporting as linearized and B as not linearized. After calling <em>clear()</em> on them, they will both still report the same linearized state as before; the linearized state applies to all buffers, whether empty or not. However, calling <em>linearize()</em> on the non-linearized empty buffer B will <strong>not</strong> linearize it, which is inconsistent. </p> <p> One option to fix this would be to automatically linearize a buffer when it becomes empty, but that would force some overhead even in cases where it is unnecessary. A better solution would be to make <em>linearize()</em> work normally even on empty buffers. </p> Serge Meynard <serge.meynard@…> https://svn.boost.org/trac10/ticket/8012 https://svn.boost.org/trac10/ticket/8012 Report #8010: Iterator adaptor and facade are not in TR1 Fri, 08 Feb 2013 12:15:12 GMT Fri, 08 Feb 2013 12:15:12 GMT <p> <a href="http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/#iterator-facade-and-adaptor">http://www.boost.org/doc/libs/1_53_0/libs/iterator/doc/#iterator-facade-and-adaptor</a> says </p> <blockquote class="citation"> <p> Both iterator_facade and iterator_adaptor as well as many of the specialized adaptors mentioned below have been proposed for standardization, and accepted into the first C++ technical report; </p> </blockquote> <p> Assuming this is referring to TR1 it's incorrect and very out of date, neither was included in TR1. </p> Jonathan Wakely <jwakely.boost@…> https://svn.boost.org/trac10/ticket/8010 https://svn.boost.org/trac10/ticket/8010 Report #7996: phoenix::bind does not protoify the bound arguments Wed, 06 Feb 2013 18:10:14 GMT Thu, 17 Jul 2014 21:09:48 GMT <p> I have a problem with Boost.Phoenix v3 bind implementation when used with attribute keywords from Boost.Log. For some reason phoenix::bind does not apply proto::detail::protoify to the bound arguments which breaks compilation of some formatting expressions in Boost.Log. </p> <p> Here's an example: </p> <pre class="wiki">#include &lt;boost/phoenix.hpp&gt; #include &lt;boost/log/trivial.hpp&gt; #include &lt;boost/log/expressions.hpp&gt; #include &lt;boost/log/utility/value_ref.hpp&gt; namespace logging = boost::log; namespace expr = boost::log::expressions; namespace phoenix = boost::phoenix; // Custom severity level formatting function std::string severity_level_as_urgency( logging::value_ref&lt; logging::trivial::severity_level, logging::trivial::tag::severity &gt; const&amp; level) { if (!level || level.get() == logging::trivial::info) return "normal"; logging::trivial::severity_level lvl = level.get(); if (lvl &lt; logging::trivial::info) return "low"; else return "critical"; } int main(int, char*[]) { logging::formatter fmt = expr::stream &lt;&lt; boost::phoenix::bind(&amp;severity_level_as_urgency, logging::trivial::severity); return 0; } </pre><p> The example creates a formatter function object that should call severity_level_as_urgency function to convert the severity level to string and put its result into a stream. </p> <p> trivial::severity is a keyword of type expr::attribute_keyword&lt; ... &gt;. Keywords themselves should never actually be embedded into phoenix expressions, instead I have attribute_actor that implements all the necessary work to extract attribute values. I have specialized proto::detail::protoify template for attribute_keyword (including references and reference_wrappers thereof) so that it is automatically converted to attribute_actor whenever it participates in expressions. But it doesn't work with the above code, Boost.Phoenix embeds attribute_keyword as is into the expression. This results in the error I attached to the ticket. </p> <p> I realize that proto::detail::protoify is not for public use and may not be intended for my use case but I did not find any other way to implement what I described. Anyway, I think bind should treat bound arguments as child subexpressions and protoify them. </p> <p> To compile the test code you will have to checkout Boost.Log from SVN: </p> <pre class="wiki">svn co https://boost-log.svn.sourceforge.net/svnroot/boost-log/branches/bleeding-edge -r 822 boost-log </pre><p> Then the relevant directories have to be linked/copied into the Boost tree. </p> <p> PS: The issue came from the mailing list: </p> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2013/02/200701.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2013/02/200701.php</a> </p> Andrey Semashev https://svn.boost.org/trac10/ticket/7996 https://svn.boost.org/trac10/ticket/7996 Report #7991: Many warnings with uBlas while compiling with clang/libc++ Wed, 06 Feb 2013 15:14:35 GMT Sun, 10 Feb 2013 22:06:34 GMT <p> I am currently compiling a project which uses mostly uBLAS library, and the problem is that I am crippled with many warnings, most of them from exterior libraries, among which Boost uBlas. </p> <p> Granted, I am very though with my compilation options (only an handful of warnings were deleted from clang's -Weverything), but the warnings obtained went from harmless (-Wmissing-noreturn, -Wweak-tables, -Wunused-parameter) to some a lot more worrying (-Wshadow). </p> <p> Do you intend to get rid of these warnings ? The page for this library indicates it is check against quite old compilers (gcc 4.0, Visual Studio 6, no trace of clang) </p> <p> Best regards, </p> <p> Sebastien Gilles </p> sebastien.gilles@… https://svn.boost.org/trac10/ticket/7991 https://svn.boost.org/trac10/ticket/7991 Report #7986: iostreams fails to compile on AIX7 XLC11 with _LARGE_FILES Tue, 05 Feb 2013 22:31:49 GMT Mon, 13 Jan 2014 22:30:06 GMT <p> AIX version: 7100.01.05.1228 VACPP version: 11.1.0.12 </p> <p> Compiling iostreams library with _LARGE_FILES support causes the below compilation errors. </p> <p> I was able to resolve the compilation error by moving the inclusion of fcntl so that it's _LARGE_FILES macro definitions affects all of the source instead of just part. Patch for 1.52.0 attached. </p> <p> common.mkdir ../../../bin.v2 common.mkdir ../../../bin.v2/libs common.mkdir ../../../bin.v2/libs/iostreams common.mkdir ../../../bin.v2/libs/iostreams/build common.mkdir ../../../bin.v2/libs/iostreams/build/vacpp common.mkdir ../../../bin.v2/libs/iostreams/build/vacpp/debug vacpp.compile.c++ ../../../bin.v2/libs/iostreams/build/vacpp/debug/file_descriptor.o "../../../libs/iostreams/src/file_descriptor.cpp", line 400.6: 1540-1140 (S) The member "void open64(handle_type, file_descriptor_flags)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 404.6: 1540-1140 (S) The member "void open64(handle_type, bool)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 424.6: 1540-1140 (S) The member "void open64(const std::string &amp;, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 427.6: 1540-1140 (S) The member "void open64(const char *, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 447.6: 1540-1140 (S) The member "void open64(const path &amp;, std::ios::openmode, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 493.6: 1540-1140 (S) The member "void open64(handle_type, file_descriptor_flags)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 497.6: 1540-1140 (S) The member "void open64(handle_type, bool)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 513.6: 1540-1140 (S) The member "void open64(const std::string &amp;, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 517.6: 1540-1140 (S) The member "void open64(const char *, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 521.6: 1540-1140 (S) The member "void open64(const path &amp;, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 565.6: 1540-1140 (S) The member "void open64(handle_type, file_descriptor_flags)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 569.6: 1540-1140 (S) The member "void open64(handle_type, bool)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 585.6: 1540-1140 (S) The member "void open64(const std::string &amp;, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 589.6: 1540-1140 (S) The member "void open64(const char *, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 593.6: 1540-1140 (S) The member "void open64(const path &amp;, std::ios::openmode)" must be declared in its containing class definition. "../../../libs/iostreams/src/file_descriptor.cpp", line 364.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 364.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 369.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 369.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 389.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "const std::_LFS_ON::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt;". "../../../libs/iostreams/src/file_descriptor.cpp", line 389.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 460.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor_source::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 460.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 465.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor_source::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 465.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 482.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "const std::_LFS_ON::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt;". "../../../libs/iostreams/src/file_descriptor.cpp", line 482.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 533.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor_sink::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 533.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 538.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "boost::iostreams::file_descriptor_sink::handle_type". "../../../libs/iostreams/src/file_descriptor.cpp", line 538.8: 1540-1205 (I) The error occurred while converting to parameter 1 of "open64(const char *, int, ...)". "../../../libs/iostreams/src/file_descriptor.cpp", line 555.8: 1540-0256 (S) A parameter of type "const char *" cannot be initialized with an expression of type "const std::_LFS_ON::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt;". </p> Kevin Burge <kevin.burge@…> https://svn.boost.org/trac10/ticket/7986 https://svn.boost.org/trac10/ticket/7986 Report #7984: In very rare cases, boost::polygon crashed or generate bad polygon when substracting 2 sets of polygons Tue, 05 Feb 2013 19:25:06 GMT Mon, 26 Jan 2015 19:53:36 GMT <p> I am using boost:: polygon to calculate sum or difference of sets of polygons. Recently, When calcualting the difference of 2 sets of polygons, I found 2 cases creating a serious issue: Depending on the shape of polygons ( a slight change "fix" the bug) I have one case which create no polygon and one (in fact 2 samples) which crashes. </p> <p> In the sample which calculate the difference between 2 polygon sets, there are 2 polygon sets: one creates no polygon, and the other crashes. </p> <p> This it reproducible under Linux or Windows-gcc-mingw, with different gcc versions and boost version. (I tried to make the polygons as simple as possible) (see comments inside the sample). </p> <p> I have used a lot boost:: polygon, and I have only 2 cases which fails (Seems related to a particular shape, not to a polygon complexity) </p> <p> Thanks to the developpers. </p> jp.charras@… https://svn.boost.org/trac10/ticket/7984 https://svn.boost.org/trac10/ticket/7984 Report #7975: mpl::insert<...>::type::type returns empty map when inserting into an mpl::map Mon, 04 Feb 2013 19:59:24 GMT Mon, 04 Feb 2013 19:59:24 GMT <p> The following code: </p> <pre class="wiki">using namespace boost::mpl; insert&lt;map&lt;&gt;, pair&lt;int_&lt;1&gt;, int_&lt;2&gt; &gt; &gt;::type::type </pre><p> gives </p> <pre class="wiki">boost::mpl::map0&lt;&gt; </pre> Ábel Sinkovics <abel@…> https://svn.boost.org/trac10/ticket/7975 https://svn.boost.org/trac10/ticket/7975 Report #7968: swap: Add noexcept to conform with C++11 on compilers supporting it. Sun, 03 Feb 2013 07:10:58 GMT Wed, 06 Feb 2013 17:30:24 GMT <pre class="wiki"> template&lt;class T&gt; void swap(T&amp; a, T&amp; b) noexcept(see below ); 1 Remark: The expression inside noexcept is equivalent to: is_nothrow_move_constructible&lt;T&gt;::value &amp;&amp; is_nothrow_move_assignable&lt;T&gt;::value template&lt;class T, size_t N&gt; void swap(T (&amp;a)[N], T (&amp;b)[N]) noexcept(noexcept(swap(*a, *b))); </pre> viboes https://svn.boost.org/trac10/ticket/7968 https://svn.boost.org/trac10/ticket/7968 Report #7963: bootstrap.sh uses echo -n, which is not portable Sat, 02 Feb 2013 00:43:31 GMT Sat, 02 Feb 2013 00:43:31 GMT <p> The echo builtin in OS X's sh does not support any command line switches, which results in bootstrap.sh's output being somewhat ugly (but still working; this is purely cosmetic). The attach patch simply replaces all of the uses of echo -n with printf, which works on all unix-like systems. </p> anonymous https://svn.boost.org/trac10/ticket/7963 https://svn.boost.org/trac10/ticket/7963 Report #7953: phoenix & std::valarray leads to a segfault Wed, 30 Jan 2013 22:20:20 GMT Wed, 30 Jan 2013 22:20:20 GMT <p> A phoenix expression <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> applied to valarray&lt;double&gt; <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> leads to a segfault. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> boost::phoenix::at_c&lt;0&gt;(arg1) += boost::phoenix::at_c&lt;1&gt;(arg1) / val(mass) * arg2 </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> std::tuple&lt;std::valarray&lt;double&gt;, std::valarray&lt;double&gt;&gt; </p> <p> A simple example is attached triggering the problem. (When compiled with gcc 4.6 or 4.7) </p> Philipp Schwaha <philipp@…> https://svn.boost.org/trac10/ticket/7953 https://svn.boost.org/trac10/ticket/7953 Report #7945: Inhibit inclusion of headers not present in vxWorks Mon, 28 Jan 2013 17:02:00 GMT Mon, 28 Jan 2013 17:02:00 GMT <p> Attached a patch inhibiting the inclusion of headers unpresent in vxWorks </p> p.brockamp@… https://svn.boost.org/trac10/ticket/7945 https://svn.boost.org/trac10/ticket/7945 Report #7944: Adapt filesystem for vxWorks 6.9 Mon, 28 Jan 2013 16:58:29 GMT Mon, 28 Jan 2013 16:58:29 GMT <p> Attached a small patch to inhibit inclusion of headers not present in vxWorks 6.9 </p> p.brockamp@… https://svn.boost.org/trac10/ticket/7944 https://svn.boost.org/trac10/ticket/7944 Report #7941: fpos.hpp may not define BOOST_IOSTREAMS_HAS_DINKUMWARE_FPOS for vxworks Mon, 28 Jan 2013 16:00:35 GMT Mon, 28 Jan 2013 16:00:35 GMT <p> in fpos.hpp, l. 26 </p> <pre class="wiki">#define BOOST_IOSTREAMS_HAS_DINKUMWARE_FPOS </pre><p> must not be enabled for vxWorks </p> p.brockamp@… https://svn.boost.org/trac10/ticket/7941 https://svn.boost.org/trac10/ticket/7941 Report #7937: local_time_types.hpp tries to typedef local_microsec_clock on system without BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK Mon, 28 Jan 2013 12:24:39 GMT Mon, 28 Jan 2013 12:24:39 GMT <p> On platforms that don't define </p> <pre class="wiki">BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK </pre><p> (e.g. due to a missing gettimeofday()), in file local_time_types.hpp date_time tries to </p> <pre class="wiki">typedef date_time::second_clock&lt;local_date_time&gt; local_sec_clock </pre><p> This obvioulsy results in a compile error on such systems. This typedef should be embraced by an </p> <pre class="wiki">#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK </pre><p> A patch is attached. </p> p.brockamp@… https://svn.boost.org/trac10/ticket/7937 https://svn.boost.org/trac10/ticket/7937 Report #7934: tuples::element returns wrong typesss for bolatile tuples Mon, 28 Jan 2013 01:01:27 GMT Mon, 28 Jan 2013 03:34:46 GMT <p> Hi, </p> <p> according to c++11, volatile tuples should return volatile elements. I think, boost tuple should behave similarly, however it doesn't. </p> <p> Below is an example with two tests, one test for boost tuple and one for standard tuple. The boost tuple test fails. </p> <pre class="wiki">// file a.cpp #define BOOST_TEST_MODULE example #include &lt;boost/test/included/unit_test.hpp&gt; #include &lt;boost/type_traits.hpp&gt; #include &lt;boost/tuple/tuple.hpp&gt; #include &lt;tuple&gt; BOOST_AUTO_TEST_CASE( boost_tuple ) { using boost::is_same; using boost::tuple; using boost::tuples::element; typedef element&lt;0, volatile tuple&lt;int&gt; &gt; VElement; typedef element&lt;0, const volatile tuple&lt;int&gt; &gt; CVElement; BOOST_CHECK((is_same&lt;typename VElement::type, volatile int&gt;::value)); BOOST_CHECK((is_same&lt;typename CVElement::type, const volatile int&gt;::value)); } BOOST_AUTO_TEST_CASE( std_tuple ) { using boost::is_same; using std::tuple; using std::tuple_element; typedef tuple_element&lt;0, volatile tuple&lt;int&gt; &gt; VElement; typedef tuple_element&lt;0, const volatile tuple&lt;int&gt; &gt; CVElement; BOOST_CHECK((is_same&lt;typename VElement::type, volatile int&gt;::value)); BOOST_CHECK((is_same&lt;typename CVElement::type, const volatile int&gt;::value)); } </pre><pre class="wiki">ptomulik@barakus$ g++ -ansi -std=c++11 -Werror -Wall -Wextra -pedantic a.cpp ptomulik@barakus$ ./a.out Running 2 test cases... a.cpp(15): error in "boost_tuple": check (is_same&lt;typename VElement::type, volatile int&gt;::value) failed a.cpp(16): error in "boost_tuple": check (is_same&lt;typename CVElement::type, const volatile int&gt;::value) failed *** 2 failures detected in test suite "example" </pre><p> my gcc version </p> <pre class="wiki">ptomulik@barakus:$ g++ --version g++ (Debian 4.7.2-5) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. </pre> ptomulik@… https://svn.boost.org/trac10/ticket/7934 https://svn.boost.org/trac10/ticket/7934 Report #7933: Enable population of a map with options described using "*" wildcard Sun, 27 Jan 2013 15:56:56 GMT Sun, 27 Jan 2013 15:56:56 GMT <p> Enable population of a map with options described using "*" wildcard. </p> <blockquote> <p> map&lt;string, int&gt; itemsMap; options_description items("items options"); </p> <blockquote> <p> items.add_options() </p> <blockquote> <p> ("item_*",value&lt;map&lt;string, int&gt;&gt;(&amp;itemsMap)-&gt;multitoken(), "items") </p> </blockquote> </blockquote> <p> ; </p> </blockquote> smntov@… https://svn.boost.org/trac10/ticket/7933 https://svn.boost.org/trac10/ticket/7933 Report #7932: Document the "*" wildcard feature in option keys Sun, 27 Jan 2013 15:51:31 GMT Sun, 27 Jan 2013 15:51:31 GMT <p> Document the "*" wildcard feature in option keys. </p> smntov@… https://svn.boost.org/trac10/ticket/7932 https://svn.boost.org/trac10/ticket/7932 Report #7929: boost::lexical_cast< std::string, std::wstring > gives a compiler error. Sat, 26 Jan 2013 01:44:35 GMT Wed, 12 Jun 2013 19:07:09 GMT <p> This causes a problem with <code>boost::program_options::typed_value&lt; std::wstring, wchar_t &gt;::default_value( const std::wstring&amp; v )</code> which attempts to use lexical_cast to convert <code>v</code> into a <code>std::string</code>. Using <code>lexical_cast</code> to convert a wide string to a normal one may be debatable, but program_options should not give a compiler error on a valid use case such as the one shown below. Luckily you can work around this by providing an explicit <code>std::string</code> version or not using the <code>default_value</code> method at all. </p> <h4 class="section" id="lexical_casterror">lexical_cast error</h4> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/lexical_cast.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">wchar_t</span><span class="o">*</span> <span class="n">argv</span><span class="p">[]</span> <span class="p">){</span> <span class="n">std</span><span class="o">::</span><span class="n">wstring</span> <span class="n">wstr</span> <span class="o">=</span> <span class="sa">L</span><span class="s">&quot;some string&quot;</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">str</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">lexical_cast</span><span class="o">&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="o">&gt;</span><span class="p">(</span> <span class="n">wstr</span> <span class="p">);</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><h4 class="section" id="program_optionserror">program_options error</h4> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/program_options.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;string&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">wchar_t</span><span class="o">*</span> <span class="n">argv</span><span class="p">[]</span> <span class="p">){</span> <span class="k">namespace</span> <span class="n">po</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">program_options</span><span class="p">;</span> <span class="n">po</span><span class="o">::</span><span class="n">options_description</span> <span class="n">opts</span><span class="p">(</span> <span class="s">&quot;Some opts&quot;</span> <span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">wstring</span> <span class="n">str</span> <span class="o">=</span> <span class="sa">L</span><span class="s">&quot;&quot;</span><span class="p">;</span> <span class="n">opts</span><span class="p">.</span><span class="n">add_options</span><span class="p">()</span> <span class="p">(</span> <span class="s">&quot;o&quot;</span><span class="p">,</span> <span class="n">po</span><span class="o">::</span><span class="n">wvalue</span><span class="o">&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">wstring</span> <span class="o">&gt;</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">str</span> <span class="p">)</span> <span class="o">-&gt;</span><span class="n">default_value</span><span class="p">(</span> <span class="sa">L</span><span class="s">&quot;default value&quot;</span> <span class="p">),</span> <span class="c1">// This line causes error.</span> <span class="s">&quot;an option&quot;</span> <span class="p">);</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> nate@… https://svn.boost.org/trac10/ticket/7929 https://svn.boost.org/trac10/ticket/7929 Report #7927: boost::bimap not boost::interprocess compatible. Fri, 25 Jan 2013 16:33:49 GMT Fri, 25 Jan 2013 16:33:49 GMT <p> I've been trying to get boost::bimap to work in a boost::interprocess::managed_mapped_file. </p> <p> According to Matias Capeletto in this thread on the boost devel mailing list: <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/238100/"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/238100/</a> </p> <blockquote> <p> Bimap is just given your allocator to <a class="missing wiki">MultiIndex</a>. The issue is that the map views (left, right and relation set) are initialized with a reference to the multiindex core in construction time... when interprocess read it from memory the second time this references are garbage. A direct solution will be to use interprocess offset_ptr, but that will have a performance hit so I will have to rethink how the views are accessing the core, probably using CRTP. </p> </blockquote> <p> I've attached two small programs. Both compile with g++ 4.7. One (multiindex.c++) puts a multi_index into the managed_mapped_file. On the first run, it creates the data structure puts some stuff in it, then reopens the data structure and outputs the stuff. On the second run, it does the same thing, but it uses the data stored in the mapped file. </p> <p> The other program (bimap.c++) does exactly the same thing, but when run the second time it crashes. My guess is because bimap isn't quite interprocess compatible---that is, it isn't using the provided allocator for EVERYTHING. </p> <p> Compiled with: </p> <pre class="wiki">g++ -o multiindex multiindex.c++ -lpthread </pre><p> and </p> <pre class="wiki">g++ -g -o bimap bimap.c++ -lpthread </pre><p> Joel </p> jdy@… https://svn.boost.org/trac10/ticket/7927 https://svn.boost.org/trac10/ticket/7927 Report #7912: boost:thread documentation for 1.50 does not mention BOOST_THREAD_WAIT_BUG Mon, 21 Jan 2013 11:25:12 GMT Sun, 09 Jun 2013 20:12:37 GMT <p> As I understood from the trac ticket <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7089"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7089</a> and sources for boost 1.50, boost::thread 1.50 implicitly adds 100 ms to the sleep time of boost::this_thread::sleep and boost::thread_sleep on linux. If the fix for 7089 cannot be backported into 1.50, the warning about broken functionality must be present in the documentation for 1.50. </p> Viatcheslav.Sysoltsev@… https://svn.boost.org/trac10/ticket/7912 https://svn.boost.org/trac10/ticket/7912 Report #7910: MSVC-11 can't find some symbols in Boost::System static library Sun, 20 Jan 2013 21:30:09 GMT Sun, 07 Jul 2013 16:32:24 GMT <pre class="wiki">#ifndef BOOST_SYSTEM_ERROR_CATEGORY_DIRTY_WORKAROUND #define BOOST_SYSTEM_ERROR_CATEGORY_DIRTY_WORKAROUND // I have not had a chance to investigate the root cause of this problem, // but it happens when I use boost::asio on MSVC-11 (Visual Studio 2012). // The problem seems to be that boost::system defines generic_error_category and system_error_category, // but then somehow doesn't have these symbols in the libboost_system-vc110-mt-1_52.lib library when you build boost // with just "/b2" with and toolset=msvc-11.0 // For me the problem happened when I was trying to use boost::asio from something I compiled with MSVC-11.0. // I got linker errors, so it's a showstopper. // Feel free to contact me at MyName.MyLastName@Gmail.com for more detail. // Now, I found that if you build boost on your machine with /b2 and then specifically do these two steps: // &gt; b2 --with-system threading=multi link=static runtime-link=shared clean // &gt; b2 --with-system threading=multi link=static runtime-link=shared // then magicaly the problem goes away and you don't need this workaround below it seems. // But since the root cause is not clear to me, the problem may not go away for you after the steps above. // So, if it didn't go away for you indeed, feel free to add this piece of source code into your application. // Two ways to do it: // 1. if you are adding this piece of code as an include file, uncomment these two lines: // #undef BOOST_SYSTEM_ERROR_CATEGORY_DIRTY_WORKAROUND // #define BOOST_SYSTEM_ERROR_CATEGORY_DIRTY_WORKAROUND inline // 2. but if you are adding it as a separate compilation unit (source file), then don't uncomment anything #if defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1700 #include &lt;system_error&gt; // looks like implementations of three error categories are defined in MSVC 11 include files in 'std' namespace #include &lt;boost/system/error_code.hpp&gt; // interfaces for those error categories required by boost in 'boost' namespace, but somehow implementations cannot be found in the library files // glue that hooks up the implementations from MSVC11 to the interfaces required by boost // (this glue code is **unsafe** in case MSVC or Boost change interfaces for these error categories, because reinterpret_cast is used, // so a safer way to go about it would be to wrap std::error_category&amp; as a field of some wrapper class that inherits from boost::system::error_category, // but it works with these versions, because boost and std interfaces are the same ("binary compatible"!) now and I don't yet have time to do it properly) namespace boost { namespace system { error_category const&amp; system_category() { return reinterpret_cast&lt;const error_category&amp;&gt;(std::system_category()); } error_category const&amp; generic_category() { return reinterpret_cast&lt;const error_category&amp;&gt;(std::generic_category()); } error_category const&amp; iostream_category() { return reinterpret_cast&lt;const error_category&amp;&gt;(std::iostream_category()); } }} #endif // defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1700 #endif // BOOST_SYSTEM_ERROR_CATEGORY_DIRTY_WORKAROUND </pre> Gene Panov https://svn.boost.org/trac10/ticket/7910 https://svn.boost.org/trac10/ticket/7910 Report #7904: doc: bad qbk macro __boost__ptr_map__ Fri, 18 Jan 2013 19:02:28 GMT Fri, 18 Jan 2013 19:02:28 GMT <p> see <a href="http://www.boost.org/doc/libs/1_52_0/libs/functional/factory/doc/html/index.html">http://www.boost.org/doc/libs/1_52_0/libs/functional/factory/doc/html/index.html</a> </p> <p> search for <code>__boost__ptr_map__</code>. It is probably meant to be <code>boost::ptr_map</code>. </p> Eric Niebler https://svn.boost.org/trac10/ticket/7904 https://svn.boost.org/trac10/ticket/7904 Report #7902: Division by scalar should use enable_if<> (matrix_expression) Fri, 18 Jan 2013 02:55:55 GMT Wed, 01 Jul 2015 13:44:01 GMT <p> Bug <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6511" title="#6511: Bugs: Division by scalar should use enable_if&lt;&gt; (closed: fixed)">#6511</a> added enable_if&lt;&gt; to file: vector_expression.hpp function: operator/( vector, scalar). The same feature needs to be add to matrix_expression's operator/( matrix, scalar). See attached e-mail </p> campreilly@… https://svn.boost.org/trac10/ticket/7902 https://svn.boost.org/trac10/ticket/7902 Report #7901: jam's hash.c misaligns hashed entries Thu, 17 Jan 2013 16:05:56 GMT Thu, 09 Oct 2014 05:59:52 GMT <p> On platforms where a void* is smaller (e.g. 32bit) than a time_t (e.g. 64bit) and where the cpu requires strict alignment, jam bus errors already during bootstrap. NetBSD/sparc is an example for such a platform. </p> <p> This is because the hash_item_data macro () casts to char* and adds sizeof a struct only containing a pointer, while later filesys code stores file_info_t structures in a hash (which include time_t members and need greater alignment). </p> <p> Since this is all needed very early, the easiest and most portable solution is to force sizeof(ITEM) to be great enough for the required alignment by making it a union including a dummy time_t member. This has the benefit of beeing a no-op for non affected architectures. </p> <p> I have a patch tested against the 1.52 release, but the idea should be obvious and applying it to the (a bit different) trunk code should be straighforward. Please let me know if you need a real patch against trunk. </p> martin@… https://svn.boost.org/trac10/ticket/7901 https://svn.boost.org/trac10/ticket/7901 Report #7897: Add timeout parameter to all Boost::ASIO socket operations Wed, 16 Jan 2013 00:48:35 GMT Wed, 16 Jan 2013 00:48:35 GMT <p> Right now the user has to implement some code in order to implement timeouts to be used with ASIO. </p> <p> A better way is if ASIO could handle timeouts internally. </p> <p> For example, take the method async_connect. A new 4-byte integer parameter could be added to the function signature that when greater than zero, would specify the number of milliseconds to wait before timing out. If the value specified was set to zero, then the code would use whatever default timeout that the raw socket was set to use. If it was set to less than zero, then it would set the timeout to the maximum value or not use a timeout. </p> <p> A timeout parameter should be added to any ASIO method call that uses or may use a socket read, write, or connection function. If a method is buried that uses a socket connection, then the class it is in should provide a way to specify the timeout value. </p> RobertGBryan@… https://svn.boost.org/trac10/ticket/7897 https://svn.boost.org/trac10/ticket/7897 Report #7896: boost::numeric::ublas::unbounded_array::operator= can call std::copy(0, 0, x) Tue, 15 Jan 2013 13:30:06 GMT Tue, 15 Jan 2013 13:30:06 GMT <p> This causes an assertion failure with Visual Studio 2008+2010 when _ITERATOR_DEBUG_LEVEL == 2 </p> lukeocamden@… https://svn.boost.org/trac10/ticket/7896 https://svn.boost.org/trac10/ticket/7896 Report #7893: Unresolved link errors when building 64 bit ASIO with 64 bit OpenSSL under Windows Mon, 14 Jan 2013 22:55:35 GMT Mon, 04 Feb 2013 13:43:29 GMT <p> According to this link: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/9357751/boost-ssl-with-visual-studio-2010-and-openssl"><span class="icon">​</span>http://stackoverflow.com/questions/9357751/boost-ssl-with-visual-studio-2010-and-openssl</a> </p> <p> There is a problem when trying to build a very simple program which includes 3 include files from Boost::ASIO. The program fails to build when linking with the 64 bit version of the Boost library as well as the 64 bit version of the OpenSSL library. </p> <p> The build succeeds when the 32 bit version of the Boost library is used in conjunction with the 32 bit version of the OpenSSL library. </p> <p> I have tried building it for Boost versions 1.51 and 1.52. Have also tried the c and j versions of the 64 bit OpenSSL library for Windows which results in the same error. </p> <p> The link above is for building with VS2010. The same error results for me when I try to build with VS2008. I have also written a description of the problem in <a class="missing wiki">StackOverflow</a>.com as well which involved building one of the ASIO example programs: </p> <p> <a class="ext-link" href="http://stackoverflow.com/questions/14286346/link-unresolved-error-with-vs2008-boost-asio-and-openssl"><span class="icon">​</span>http://stackoverflow.com/questions/14286346/link-unresolved-error-with-vs2008-boost-asio-and-openssl</a> </p> <p> The work around to the problem right now is to build it with 32 bit libraries. </p> <p> If you can successfully build using VS2010 or VS2008 with the 64 bit versions, then please advise on what you think the problem might be. This problem has been reported by several individuals. </p> RobertGBryan@… https://svn.boost.org/trac10/ticket/7893 https://svn.boost.org/trac10/ticket/7893 Report #7884: unused parameter warnings Fri, 11 Jan 2013 17:27:57 GMT Fri, 11 Jan 2013 17:27:57 GMT <p> Hello, </p> <blockquote> <p> I've noticed a few 'unused parameter' warnings in the spirit library, as discussed in the related bug <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/7880"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/7880</a>. After suggestion, I'm submitting a new bug against the specific project. </p> </blockquote> <blockquote> <p> Attached is a patch that fixes those ones that I've found (by not naming the parameters). </p> </blockquote> alex@… https://svn.boost.org/trac10/ticket/7884 https://svn.boost.org/trac10/ticket/7884 Report #7881: ASIO - don't use Winsock when compiling with Cygwin Fri, 11 Jan 2013 09:49:54 GMT Thu, 17 Jan 2013 07:40:02 GMT <p> It's not necessarily a bug, but an improvement. I checked why i can compile with the integrated boost library in normal Cygwin distribution and i cannot do the same with some other boost variant. The main difference is the <span class="underline">CYGWIN</span> compile switch. In the Cygwin integration, the compile switch is removed and it will use linux sockets. The boost distributions force the usage of Winsock which clearly cause compile problems with Cygwin. </p> <p> Please remove the compile switch and just let it use the linux sockets. </p> Ionut Craioveanu <mosteaca@…> https://svn.boost.org/trac10/ticket/7881 https://svn.boost.org/trac10/ticket/7881 Report #7879: Optimize equality comparison Thu, 10 Jan 2013 23:22:58 GMT Fri, 11 Oct 2013 13:07:14 GMT <p> Comparing two numbers for equality should be trivial. However, current implementation uses one or two less-then operators. For rational numbers this is very inefficient because less-then operator is both complex and slow. </p> Stepan Podoskin <stepik-777@…> https://svn.boost.org/trac10/ticket/7879 https://svn.boost.org/trac10/ticket/7879 Report #7865: error: unknown target CPU 'i386' for the boost b2 build using architecture=x86 address-model=32 Mon, 07 Jan 2013 19:33:56 GMT Mon, 20 May 2013 12:58:33 GMT <p> Trying to build boost 1.52 for 32 bit architecture on OS X 10.7.5, using clang: </p> <p> ./b2 toolset=clang cxxflags="-std=c++11 -stdlib=libc++" linkflags="-stdlib=libc++" architecture=x86 address-model=32 </p> <p> Get a lot of errors of this type: </p> <pre class="wiki"> "clang++" -x c++ -O3 -std=c++11 -stdlib=libc++ -O3 -finline-functions -Wno-inline -Wall -march=i386 -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "bin.v2/libs/date_time/build/clang-darwin-4.2.1/release/address-model-32/architecture-x86/threading-multi/gregorian/greg_month.o" "libs/date_time/src/gregorian/greg_month.cpp" ...failed clang-darwin.compile.c++ bin.v2/libs/date_time/build/clang-darwin-4.2.1/release/address-model-32/architecture-x86/threading-multi/gregorian/greg_month.o... clang-darwin.compile.c++ bin.v2/libs/date_time/build/clang-darwin-4.2.1/release/address-model-32/architecture-x86/threading-multi/gregorian/greg_weekday.o error: unknown target CPU 'i386' </pre> anonymous https://svn.boost.org/trac10/ticket/7865 https://svn.boost.org/trac10/ticket/7865 Report #7858: boost should not blindly assume that MinGW installation is in c:\ directory Sat, 05 Jan 2013 10:09:20 GMT Sat, 05 Jan 2013 10:09:20 GMT <p> instead it should search the directory in which main boost dir lies and then if not found should withdraw to defauld directory </p> <p> so in file : boost\tools\build\v2\engine\build.bat </p> <pre> if EXIST &#34;C:\MinGW\bin\gcc.exe&#34; ( set &#34;BOOST_JAM_TOOLSET=mingw&#34; set &#34;BOOST_JAM_TOOLSET_ROOT=C:\MinGW\&#34; goto :eof) call :Clear_Error </pre> <p> &lt;/pre&gt; }}} </p> <p> should instead be: </p> <pre> if EXIST &#34;..\MinGW\bin\gcc.exe&#34; ( set &#34;BOOST_JAM_TOOLSET=mingw&#34; set &#34;BOOST_JAM_TOOLSET_ROOT=..\MinGW\&#34; goto :eof) call :Clear_Error </pre> <p> to catch that mingw installation which lies along with boost in the same parent directory. This is needed in case both of them are run from removable drive or there are different pairs of boost and mingw for testing. </p> anonymous https://svn.boost.org/trac10/ticket/7858 https://svn.boost.org/trac10/ticket/7858 Report #7854: Boost 1.49 compilation warnings [FreeBSD] - timer Fri, 04 Jan 2013 18:32:54 GMT Fri, 04 Jan 2013 18:32:54 GMT <p> These are the compilation warnings from Boost 1.49 on this platform: FreeBSD RELENG_8 i386 gcc 4.2.2/4.6.3 </p> <p> libs/timer/src/cpu_timer.cpp:139: warning: comparison between signed and unsigned integer expressions </p> grarpamp@… https://svn.boost.org/trac10/ticket/7854 https://svn.boost.org/trac10/ticket/7854 Report #7852: Boost 1.49 compilation warnings [FreeBSD] - python Fri, 04 Jan 2013 18:30:31 GMT Sat, 05 Jan 2013 19:27:49 GMT <p> These are the compilation warnings from Boost 1.49 on this platform: FreeBSD RELENG_8 i386 gcc 4.2.2/4.6.3 </p> <p> libs/python/src/list.cpp:16: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/long.cpp:12: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/long.cpp:19: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/long.cpp:26: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/dict.cpp:32: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/tuple.cpp:12: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/str.cpp:16: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/enum.cpp:150: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/class.cpp:211: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/class.cpp:319: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/class.cpp:473: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/class.cpp:621: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/class.cpp:631: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/function.cpp:108: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/function.cpp:110: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/life_support.cpp:94: warning: dereferencing type-punned pointer will break strict-aliasing rules libs/python/src/object/life_support.cpp:96: warning: dereferencing type-punned pointer will break strict-aliasing rules </p> grarpamp@… https://svn.boost.org/trac10/ticket/7852 https://svn.boost.org/trac10/ticket/7852 Report #7848: [enhancement] supply download tarballs as tar.xz instead of .bz2 Fri, 04 Jan 2013 11:46:35 GMT Sun, 24 Jul 2016 00:41:41 GMT <p> you already have .gz tarballs, which is perfect for systems that don't yet support .xz (which at this time are little, any linux system i know supports it and probably even current macOS X releases) </p> <p> so the only reason for supplying bzip2 downloads must be for smaller storage/download time requirements. </p> <p> however, xz packs a lot better than bzip2, and bzip2 is a very slow (highly CPU-bound) to unpack algorithm. </p> <p> on average, extracting .xz is about 3.5 times faster than bzip2. </p> <p> /dev/shm $ time tar xf boost_1_52_0.tar.bz2 </p> <p> real 0m10.939s user 0m10.747s sys 0m1.390s /dev/shm $ tar cJf boost_1_52_0.tar.xz boost_1_52_0 boost_1_52_0/ boost_1_52_0.tar.bz2 /dev/shm $ time tar cJf boost_1_52_0.tar.xz boost_1_52_0 </p> <p> real 2m12.790s user 2m10.255s sys 0m3.822s /dev/shm $ rm -rf boost_1_52_0 /dev/shm $ time tar xf boost_1_52_0.tar.xz </p> <p> real 0m4.940s user 0m4.762s sys 0m1.232s /dev/shm $ la boost_1_52_0.tar.xz -rw-r--r-- 1 user users 47673912 Jan 4 10:17 boost_1_52_0.tar.xz /dev/shm $ la boost_1_52_0.tar.bz2 -rw-r--r-- 1 user users 54421709 Jan 4 10:14 boost_1_52_0.tar.bz2 </p> <p> this testing was done on a high-end 3.1 GHZ machine, and here the difference is that xz is more than 2 times faster, and the tarball 7 MB smaller. when using 2 distinct steps to create the .xz archive and invoking the xz compressor with -E (extreme), makes the tarball even smaller. </p> <p> i also build software regularly on mips and arm platforms in qemu. as an example, untarring the linux kernel sources provides as .bzip2 takes roughly 2 hours, but untarring the .xz archive "only" 30 minutes. </p> <p> so imo it makes much sense to deprecate .bz2 downloads and replace them with .xz. the .gz files need to stay in order to have a fallback for outdated platforms. </p> anonymous https://svn.boost.org/trac10/ticket/7848 https://svn.boost.org/trac10/ticket/7848 Report #7840: Failure in posix_time_zone when specifying start date as Jn Wed, 02 Jan 2013 02:10:13 GMT Wed, 02 Jan 2013 02:10:13 GMT <p> If you use the time zone specification "CST-2CDT,J365/00,J1/00" to create a boost::local_time::posix_time_zone, it fails with an exception. </p> <p> The problem appears to be in boost\date_time\local_time\posix_time_zone.hpp, julian_no_leap(...). The conversion of the start date uses this loop which has a "less than or equal" clause: </p> <blockquote> <p> while(sd &gt;= calendar::end_of_month_day(year,sm)){ </p> <blockquote> <p> sd -= calendar::end_of_month_day(year,sm++); </p> </blockquote> <p> } </p> </blockquote> <p> sd is the converted start specifier (365 in this case); sm is the current month (initialized to 1). The loop continues until sd=0 and sm=13, at which point end_of_month_day() throws an exception. </p> <p> Conversion of the end date uses an almost identical loop except that its while clause is "strictly less than": </p> <blockquote> <p> while(ed &gt; calendar::end_of_month_day(year,em)){ </p> <blockquote> <p> ed -= calendar::end_of_month_day(year,em++); </p> </blockquote> <p> } </p> </blockquote> <p> So the specifier "CST-2CDT,J1/00,J365/00" leaves ed=31 and em=12 as you would hope. </p> <p> In fact any start specifier at the end of a month (J31, J59,...J334) will fail later because it will result in sd=0 which is outside the range of 1..31. </p> <p> This code is identical in boost 1.52.0. The fix appears to be just to use "strictly less than" in both loops. </p> andrew.lang@… https://svn.boost.org/trac10/ticket/7840 https://svn.boost.org/trac10/ticket/7840 Report #7838: Exposing hander sizes of each call as constants. Sat, 29 Dec 2012 20:11:41 GMT Sat, 29 Dec 2012 20:14:07 GMT <p> Hello! </p> <p> This feature request is related to the <a class="missing wiki">CustomHandler</a> api. </p> <p> As the internal handler storage size is fixed for each async api call (I think...), would it be possible to add constants that inform about the maximum size requirements of each async call? </p> <p> That would ease the implementation of segregated storage pools storing custom handlers, making it more suitable for realtime use. </p> <p> For example of what I'm using on x86 linux, I found that an "async_wait" takes 40 bytes, an "async_receive_from" 72, and an "async_send_to" 92. </p> <p> What I'm doing now is "fake calls" in initialization time, retreiving the requested sizes through a <a class="missing wiki">CustomHandler</a> that traces the sizes, and then initializing the segregated storage pools with the results. </p> <p> That could easily be avoided exposing the size constants in some way. </p> <p> The current custom handler API wouldn't need to change. </p> <p> I must say that it was very wise to add the block size to the deallocation call, it eased things a lot, it allowed me to write safety code to forward the allocation/deallocation calls to the heap in case that the size requested wasn't the one. </p> <p> Best regards! Rafa. </p> rafael_gago_81@… https://svn.boost.org/trac10/ticket/7838 https://svn.boost.org/trac10/ticket/7838 Report #7836: Add GIL RAII module to Boost.Python Sat, 29 Dec 2012 16:51:53 GMT Sat, 29 Dec 2012 16:51:53 GMT <p> This ticket follows a recent discussion I started on the Python C++ SIG mailing list (which in turn followed a brief topic on the Boost developers list). </p> <p> I would like to submit for inclusion in Boost.Python a pair of classes for releasing and acquiring the Python Global Interpreter Lock (GIL) using RAII semantics. </p> <p> Please see three files attached to this ticket: gil.hpp, gil.cpp, and gil_test.cpp, which implement and (lightly) test this new feature. They are modified from versions I maintain on <a class="missing wiki">GitHub</a> in order to make them more compatible with existing code style in Boost.Python. </p> <p> This code (with different naming conventions but the same logic) has been used successfully by me "in production" and the releaser class is inspired by several examples online that others have until now copy-pasted when needed. </p> John Zwinck <jzwinck@…> https://svn.boost.org/trac10/ticket/7836 https://svn.boost.org/trac10/ticket/7836 Report #7822: waveidl sample does not use the IDL lexer, but the default lexer Fri, 21 Dec 2012 19:38:17 GMT Fri, 21 Dec 2012 19:38:17 GMT <p> Dear Boost developpers, </p> <p> The waveidl sample from the wave lib does not use the included IDL lexer. Instead it uses the default cpp lexer. This can be easily tested by setting a breakpoint in the scan function in idl_re.cpp. The reason is that it is explicitly set up like this in the lex_iterator constructor. The #if 0 branch below is the original code, the #else branch is modified to use the IDL lexer. </p> <blockquote> <p> template &lt;typename IteratorT&gt; lex_iterator(IteratorT const &amp;first, IteratorT const &amp;last, </p> <blockquote> <p> typename TokenT::position_type const &amp;pos, boost::wave::language_support language) </p> </blockquote> <p> : base_type( </p> <blockquote> <p> functor_data_type( </p> <blockquote> <p> unique_functor_type(), </p> </blockquote> </blockquote> </blockquote> <p> #if 0 </p> <blockquote> <p> cpplexer::lex_input_interface_generator&lt;TokenT&gt; </p> <blockquote> <p> ::new_lexer(first, last, pos, language) </p> </blockquote> </blockquote> <p> #else </p> <blockquote> <p> boost::wave::idllexer::new_lexer_gen&lt; std::string::iterator&gt;::new_lexer( first, last, pos, language ) </p> </blockquote> <p> #endif </p> <blockquote> <p> ) </p> </blockquote> <blockquote> <p> ) </p> </blockquote> <blockquote> <p> {} </p> </blockquote> <p> Now if I do the above modification, the preprocessor stops after the first include file with this warning: </p> <p> "warning: last line of file ends without a newline" </p> <p> Somehow the function which checks if there is a return from an include always returns false. </p> <p> Btw.: What I want to achieve is a preprocessor for Verilog-A, which is a simplified variant of a C preprocessor with ` instaed of #. It should be easy, but I cannot get it to work. </p> <p> Thanks &amp; best regards, </p> <p> Michael </p> Michael Soegtrop <michael.soegtrop@…> https://svn.boost.org/trac10/ticket/7822 https://svn.boost.org/trac10/ticket/7822 Report #7821: Cannot user tuple in unordered_set Fri, 21 Dec 2012 18:58:40 GMT Sat, 22 Dec 2012 09:37:34 GMT <p> Compiling this program: </p> <p> #include "boost/tuple/tuple.hpp" #include "boost/unordered_set.hpp" </p> <p> int main() { </p> <blockquote> <p> boost::unordered_set&lt;boost::tuple::tuple&lt;char&gt; &gt; tuples; </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> using g++ (GCC) 4.8.0 20121216 (experimental) and boost 1.52.0 fails with this error: </p> <p> In file included from /usr/include/boost/unordered/detail/table.hpp:10:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: Jäsenfunktio ”void boost::unordered::detail::node_constructor&lt;<a class="missing wiki">NodeAlloc</a>&gt;::construct_with_value(const Args&amp;)”: /usr/include/boost/unordered/detail/buckets.hpp:338:13: virhe: ”construct_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::construct_value_impl( <sup> </sup></p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: Jäsenfunktio ”void boost::unordered::detail::node_constructor&lt;<a class="missing wiki">NodeAlloc</a>&gt;::construct_with_value2(const A0&amp;)”: /usr/include/boost/unordered/detail/buckets.hpp:347:13: virhe: ”construct_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::construct_value_impl( <sup> </sup></p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: In destructor ”boost::unordered::detail::node_constructor&lt;<a class="missing wiki">NodeAlloc</a>&gt;::~node_constructor()”: /usr/include/boost/unordered/detail/buckets.hpp:377:17: virhe: ”destroy_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::destroy_value_impl(alloc_, <sup> </sup></p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: Jäsenfunktio ”void boost::unordered::detail::node_constructor&lt;<a class="missing wiki">NodeAlloc</a>&gt;::construct()”: /usr/include/boost/unordered/detail/buckets.hpp:409:17: virhe: ”destroy_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::destroy_value_impl(alloc_, <sup> </sup></p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: In destructor ”boost::unordered::detail::node_holder&lt;<a class="missing wiki">NodeAlloc</a>&gt;::~node_holder()”: /usr/include/boost/unordered/detail/buckets.hpp:526:13: virhe: ”destroy_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::destroy_value_impl(this-&gt;alloc_, <sup> </sup></p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp: At global scope: /usr/include/boost/unordered/detail/buckets.hpp:775:12: virhe: ”struct boost::unordered::detail::please_ignore_this_overload” uudelleenmääritelty </p> <blockquote> <p> struct please_ignore_this_overload { </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/buckets.hpp:15:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/table.hpp:10, from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/allocate.hpp:177:12: virhe: previous definition of ”struct boost::unordered::detail::please_ignore_this_overload” </p> <blockquote> <p> struct please_ignore_this_overload { </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/table.hpp:10:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp:780:12: virhe: ”struct boost::unordered::detail::rv_ref_impl&lt;T&gt;” uudelleenmääritelty </p> <blockquote> <p> struct rv_ref_impl { </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/buckets.hpp:15:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/table.hpp:10, from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/allocate.hpp:182:12: virhe: previous definition of ”struct boost::unordered::detail::rv_ref_impl&lt;T&gt;” </p> <blockquote> <p> struct rv_ref_impl { </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/table.hpp:10:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/buckets.hpp:785:12: virhe: ”struct boost::unordered::detail::rv_ref&lt;T&gt;” uudelleenmääritelty </p> <blockquote> <p> struct rv_ref : </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/buckets.hpp:15:0, </p> <blockquote> <p> from /usr/include/boost/unordered/detail/table.hpp:10, from /usr/include/boost/unordered/detail/equivalent.hpp:14, from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/allocate.hpp:187:12: virhe: previous definition of ”struct boost::unordered::detail::rv_ref&lt;T&gt;” </p> <blockquote> <p> struct rv_ref : </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /usr/include/boost/unordered/detail/equivalent.hpp:14:0, </p> <blockquote> <p> from /usr/include/boost/unordered/unordered_set.hpp:17, from /usr/include/boost/unordered_set.hpp:16, from boost_tuple_hash.cpp:2: </p> </blockquote> <p> /usr/include/boost/unordered/detail/table.hpp: Jäsenfunktio ”void boost::unordered::detail::table&lt;Types&gt;::delete_node(boost::unordered::detail::table&lt;Types&gt;::c_iterator)”: /usr/include/boost/unordered/detail/table.hpp:505:13: virhe: ”destroy_value_impl” is not a member of ”boost::unordered::detail” </p> <blockquote> <p> boost::unordered::detail::destroy_value_impl(node_alloc(), <sup> </sup></p> </blockquote> <p> boost_tuple_hash.cpp: Funktio ”int main()”: boost_tuple_hash.cpp:6:49: virhe: template argument 1 is invalid </p> <blockquote> <p> boost::unordered_set&lt;boost::tuple::tuple&lt;char&gt; &gt; tuples; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> boost_tuple_hash.cpp:6:49: virhe: template argument 2 is invalid boost_tuple_hash.cpp:6:49: virhe: template argument 3 is invalid boost_tuple_hash.cpp:6:49: virhe: template argument 4 is invalid boost_tuple_hash.cpp:6:57: virhe: invalid type in declaration before ”;” token </p> <blockquote> <p> boost::unordered_set&lt;boost::tuple::tuple&lt;char&gt; &gt; tuples; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> boost_tuple_hash.cpp:6:51: varoitus: käyttämätön muuttuja ”tuples” [-Wunused-variable] </p> <blockquote> <p> boost::unordered_set&lt;boost::tuple::tuple&lt;char&gt; &gt; tuples; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> ilja.honkonen@… https://svn.boost.org/trac10/ticket/7821 https://svn.boost.org/trac10/ticket/7821 Report #7811: interprocess/synchronization_mechanisms.html message_queue example bug Wed, 19 Dec 2012 16:17:40 GMT Thu, 03 Jan 2013 19:18:29 GMT <p> <a href="http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.message_queue.message_queue_example">http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.message_queue.message_queue_example</a> </p> <p> See the second example here (after "This is the second process:"): </p> <pre class="wiki"> //Open a message queue. message_queue mq (open_only //only create ,"message_queue" //name ); </pre><p> The first arguments of the constructor conradicts comment message. It seems that "only create" should be replaced by "only open". </p> sarum9in@… https://svn.boost.org/trac10/ticket/7811 https://svn.boost.org/trac10/ticket/7811 Report #7810: zlib_error::check throws on Z_BUF_ERROR Wed, 19 Dec 2012 11:53:51 GMT Fri, 09 Dec 2016 01:17:31 GMT <p> zlib_error::check has a line that checks for Z_BUF_ERROR but it is commented out. Now the documentation for zlib states that Z_BUF_ERROR is not a fatal error and so I think the commented code should actually be activated since it now happens to me that io::zlib_decompressor fails on one of my files. </p> m.hekkelman@… https://svn.boost.org/trac10/ticket/7810 https://svn.boost.org/trac10/ticket/7810 Report #7807: message_queue do_send and do_receive blocked for interprocess_mutex Tue, 18 Dec 2012 08:35:43 GMT Mon, 04 Jan 2016 23:00:20 GMT <p> Sending program A send information to the receiving program B, if the program B quit unexpectedly. Starting the program again B,Program A and B will block in “scoped_lock&lt;interprocess_mutex&gt; lock(p_hdr-&gt;m_mutex)” </p> zyt1013@… https://svn.boost.org/trac10/ticket/7807 https://svn.boost.org/trac10/ticket/7807 Report #7803: [program_options] boost/program_options/errors.hpp:253: warning: unused parameter ‘option_name’ Tue, 18 Dec 2012 01:42:28 GMT Thu, 17 Jan 2013 20:01:34 GMT <p> The following warning is present in boost.program_options, and the boost/program_options/errors.hpp:253: warning: unused parameter ‘option_name’ </p> Andrew Hundt <ATHundt@…> https://svn.boost.org/trac10/ticket/7803 https://svn.boost.org/trac10/ticket/7803 Report #7793: Not needed code for mapped files in windows Thu, 13 Dec 2012 23:40:11 GMT Thu, 13 Dec 2012 23:40:11 GMT <p> The exchange below took place on the boost developer list, it describes the request. Thank you. </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> When you grow a managed mapped file, the current implementation fills all the new space with zeroes. This is less efficient than just resizing the file. The comments in the code implies there is a reason, so what is it? </p> </blockquote> </blockquote> </blockquote> <blockquote class="citation"> <blockquote class="citation"> <p> Interprocess tries to simulate as much as possible POSIX guarantees. truncate() POSIX system call guarantees that "If the file is </p> </blockquote> <p> extended, </p> <blockquote class="citation"> <p> the extended area appears as if it were zero-filled". In windows, <a class="missing wiki">SetFileValidData/SetEndOfFile</a> does not zero-fill the extended size so Interprocess needs to write it. </p> </blockquote> </blockquote> <blockquote class="citation"> <p> Given that the mapped file content is not part of the library interface, and the only expected user of the mapped file is the library itself, why waste time in Windows? Seems to me that a requirement that files should be identical is too strong, as long as they work and perhaps don't affect platform portability. File portability between platforms should be warranted? What about platforms with different endianness? </p> </blockquote> <p> I need to investigate it, but I tried to support similar behaviour for internal file-handling functions. I'll need to think it again. Please fill a ticket so this doesn't get lost when reviewing pending issues. </p> lodos@… https://svn.boost.org/trac10/ticket/7793 https://svn.boost.org/trac10/ticket/7793 Report #7792: Boost serialization is incompatible with final keyword Thu, 13 Dec 2012 18:58:00 GMT Thu, 13 Dec 2012 19:12:34 GMT <p> When a class is marked as final using the C++11 final keyword it is not possible to serialize it using boost::serialization, because compilation fails while instantiating boost::detail::is_polymorphic_imp1&lt;...&gt;. </p> <p> A minimal example is attached in main.cpp. The output of Visual Studio 2012 SP1 attempting to compile this example can be found in <a class="missing wiki">BoostSerializationBugReport</a>.log. </p> Marco Wannemaker <marco.wannemaker@…> https://svn.boost.org/trac10/ticket/7792 https://svn.boost.org/trac10/ticket/7792 Report #7790: Length check for destination buffer Thu, 13 Dec 2012 09:53:00 GMT Thu, 13 Dec 2012 09:53:00 GMT <p> In file boost/asio/detail/impl/socket_ops.ipp </p> <p> In case of IPV6, length of dest is not verified while doing strcat at line no:1883 This is required to validate argument length passed by user. </p> <p> Attached patch is proposed fix for this. </p> Gaurav Gupta <g.gupta@…> https://svn.boost.org/trac10/ticket/7790 https://svn.boost.org/trac10/ticket/7790 Report #7786: Add support for RTTI-disabled environments Tue, 11 Dec 2012 13:18:17 GMT Tue, 26 Aug 2014 11:33:54 GMT <p> Boost.Iostreams does not compile when -fno-rtti is defined. There are lots of environments where it is not possible to activate RTTI. It would be useful if it could support non-RTTI settings even if it means a smaller set of functionality. </p> Adam Romanek <romanek.adam@…> https://svn.boost.org/trac10/ticket/7786 https://svn.boost.org/trac10/ticket/7786 Report #7777: at() member function required for program_options::variables_map Sun, 09 Dec 2012 18:36:39 GMT Sun, 09 Dec 2012 18:36:39 GMT <p> variables_map provides operator[] which sets an empty value to the option, if the specified key does not exist.<br /> I think it would be nice and more robust to also provide an overrided member function at() which throws an exception for such circumstances. </p> <p> Related ticket: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7495" title="#7495: Feature Requests: Support for boost::optional in boost::program_options (closed: fixed)">#7495</a>. If implementing <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7495" title="#7495: Feature Requests: Support for boost::optional in boost::program_options (closed: fixed)">#7495</a>, it will be also required to handle boost::optional values for at(). </p> Nana Sakisaka <n.sakisaka@…> https://svn.boost.org/trac10/ticket/7777 https://svn.boost.org/trac10/ticket/7777 Report #7769: BOOST_MPL_LIMIT_METAFUNCTION_ARITY > 8 causes compilation error on gcc Wed, 05 Dec 2012 20:50:25 GMT Sun, 08 Feb 2015 23:30:37 GMT <pre class="wiki">#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 9 #include &lt;boost/mpl/lambda.hpp&gt; int main() { return 0; } </pre><p> The above code fails to compile on g++ (4.6.3 and 4.7.2 checked). Visual Compiler(VS 2010) compiles this correctly even with BOOST_MPL_LIMIT_METAFUNCTION_ARITY == 100. </p> <p> See also <a class="ext-link" href="http://boost.2283326.n4.nabble.com/boost-mpl-bimap-BOOST-MPL-LIMIT-METAFUNCTION-ARITY-issue-on-g-4-6-3-and-boost-1-50-td4639407.html#a4639506"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/boost-mpl-bimap-BOOST-MPL-LIMIT-METAFUNCTION-ARITY-issue-on-g-4-6-3-and-boost-1-50-td4639407.html#a4639506</a> </p> Adam Lach <salvage@…> https://svn.boost.org/trac10/ticket/7769 https://svn.boost.org/trac10/ticket/7769 Report #7763: Boost.Parameter functions no longer accept non-moveable types as arguments Tue, 04 Dec 2012 04:00:23 GMT Tue, 04 Dec 2012 04:00:23 GMT <p> Boost.Parameter suffered a regression because of a change to the semantics of boost::is_convertible. It used to be possible to pass a non-movable type to a Boost.Parameter function, but that no longer works as of Boost 1.47 (at least on certain compilers; gcc continued to work for some more Boost versions but doesn't in 1.52). </p> <p> The issue with is_convertible was discussed in more detail in this thread: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/type-traits-parameter-Inconsistent-boost-is-convertible-between-gcc-and-clang-td4634162.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/type-traits-parameter-Inconsistent-boost-is-convertible-between-gcc-and-clang-td4634162.html</a> </p> <p> It first manifested in clang, but now also appears in gcc thanks to the bugfix discussed that thread. </p> <p> I attach an example demonstrating the problem. </p> <p> I have worked around the problem locally by editing boost/parameter/preprocessor.hpp and changing </p> <blockquote> <p> typedef is_convertible&lt;mpl::_, Target&gt; type; </p> </blockquote> <p> to </p> <blockquote> <p> typedef is_convertible&lt;mpl::_, const Target&amp;&gt; type; </p> </blockquote> <p> I make no claim that this is exactly the correct fix, but I believe something along these lines is required. </p> John Bytheway <jbytheway+boost@…> https://svn.boost.org/trac10/ticket/7763 https://svn.boost.org/trac10/ticket/7763 Report #7759: Support ; as comment character in config file Mon, 03 Dec 2012 17:09:12 GMT Mon, 03 Dec 2012 17:09:12 GMT <p> Currently # is hardcoded as comment character, but for ini file, both # and ; are widely used as comment characters. </p> <p> Because program_options doesn't allow a non-section line without =, the config file parsing will fail if there are ; comments which doesn't have = in it. </p> <p> For example, this line will fail to parse: </p> <p> ; This is a comment </p> <p> The easiest fix will be adding check of ; in common_config_file_iterator::get() </p> <p> Thanks. </p> uniwangshan@… https://svn.boost.org/trac10/ticket/7759 https://svn.boost.org/trac10/ticket/7759 Report #7756: Boost.HS install instructions outdated Sun, 02 Dec 2012 10:21:38 GMT Wed, 09 Apr 2014 02:18:45 GMT <p> The install instructions and install.sh for Boost.HS are outdated with regard to KDE 4.x. The katepart syntax files are stored in /usr/share/kde4/apps/katepart/syntax rather than /usr/share/apps/katepart/syntax. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/7756 https://svn.boost.org/trac10/ticket/7756 Report #7750: iostreams & thread cancellation issue Thu, 29 Nov 2012 12:59:19 GMT Thu, 29 Nov 2012 13:01:52 GMT <p> In NPTL thread cancellation is implemented using exceptions. The iostreams functions contains a catch-all clause which does not rethrow the exception. This is possible to expect but should really never happen in any code. The rules C++ experts developed state that catch-all cases must rethrow. If not then strange things can happen since one doesn't always know exactly what exceptions are thrown. </p> <p> Simple patch for sync functions attached. </p> Oleg.Dolgov@… https://svn.boost.org/trac10/ticket/7750 https://svn.boost.org/trac10/ticket/7750 Report #7747: Wrong header file information in ptr_container documentation Wed, 28 Nov 2012 15:29:29 GMT Tue, 18 Dec 2012 17:09:15 GMT <p> <a href="http://www.boost.org/doc/libs/1_52_0/libs/ptr_container/doc/ptr_container.html">http://www.boost.org/doc/libs/1_52_0/libs/ptr_container/doc/ptr_container.html</a> says "Serialization has now been made optional thanks to Sebastian Ramacher. You simply include &lt;boost/ptr_container/serialize.hpp&gt; or perhaps just one of the more specialized headers." This serialize.hpp does not exist (at least in 1.52), the more specialized headers do. </p> anonymous https://svn.boost.org/trac10/ticket/7747 https://svn.boost.org/trac10/ticket/7747 Report #7742: tie like functionality for ranges Tue, 27 Nov 2012 11:56:41 GMT Mon, 03 Mar 2014 01:50:10 GMT <p> The Graph library uses std::pair to pass ranges and this allows a nice pattern to use old-fashioned for-loops: </p> <blockquote> <p> Graph g; boost::graph_traits&lt;Graph&gt;::vertex_iterator b, e; for(boost::tie(b, e) = vertices(g); b != e; ++b) { </p> </blockquote> <p> </p> <blockquote> <p> } </p> </blockquote> <p> This works without any modifications with pair. </p> <p> The functionality would be great for all ranges as it provides users that don't want to use Boost.Range algorithms with a simple way to use their preferred style or algorithms from std. </p> philipp.moeller@… https://svn.boost.org/trac10/ticket/7742 https://svn.boost.org/trac10/ticket/7742 Report #7737: Minor comment typo in boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp Tue, 27 Nov 2012 02:55:13 GMT Tue, 27 Nov 2012 02:55:13 GMT <p> Patch attached for fixing it. </p> oss.2012.team+E4@… https://svn.boost.org/trac10/ticket/7737 https://svn.boost.org/trac10/ticket/7737 Report #7736: Boost.Units io.hpp always includes Boost.serialization and an unwanted Clang warning Mon, 26 Nov 2012 18:01:47 GMT Mon, 26 Nov 2012 18:01:47 GMT <p> I note that Boost.Units io.hpp<strong> always</strong> #includes serialization (a not inconsiderable amount of code to parse etc). It would be nice if Serialization could only be included when required (but perhaps this is troublesome?) </p> <p> This became apparent when compiling using Clang 3.1 (Ruben van Boxem's mingw32) on Netbeans 7.2 on Windows 7 when this ugly warning appeared: </p> <pre class="wiki"> In file included from i:/boost-trunk\boost/units/io.hpp:27: In file included from i:/boost-trunk\boost/serialization/nvp.hpp:34: In file included from i:/boost-trunk\boost/serialization/base_object.hpp:39: i:/boost-trunk\boost/serialization/void_cast_fwd.hpp:29:1: warning: dllexport attribute ignored BOOST_DLLEXPORT ^ i:/boost-trunk\boost/serialization/force_include.hpp:37:43: note: expanded from macro 'BOOST_DLLEXPORT' # define BOOST_DLLEXPORT __declspec(dllexport) ^ &lt;built-in&gt;:150:38: note: expanded from macro '__declspec' #define __declspec(a) __attribute__((a)) ^ 1 warning generated. </pre><p> This also suggests that inappropriate dllexport attribute is being generated for Clang? </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/7736 https://svn.boost.org/trac10/ticket/7736 Report #7735: Ability to provide option_description name as Regex Mon, 26 Nov 2012 13:18:29 GMT Sun, 20 Jan 2013 06:17:39 GMT <p> It would be nice to have the ability to provide option_description name as Regex in order to parse open-end options like this: item1 = 234 item2 = 345 ... itemN = 564 </p> smntov@… https://svn.boost.org/trac10/ticket/7735 https://svn.boost.org/trac10/ticket/7735 Report #7732: Spirit Karma calls compile unqualified, which causes it to use compile functions found by ADL Sun, 25 Nov 2012 15:23:10 GMT Sun, 25 Nov 2012 15:23:10 GMT <p> In boost/spirit/home/karma/generate.hpp, the function generate and generate_delimited calls compile without qualification. Which allows finding compile functions by ADL if the expression contains terminals not defined in the spirit namespace. </p> <p> The call should be qualified. </p> felipe.m.almeida@… https://svn.boost.org/trac10/ticket/7732 https://svn.boost.org/trac10/ticket/7732 Report #7730: Generic specializations of is_nullary for custom terminals are not possible Sat, 24 Nov 2012 12:34:14 GMT Wed, 12 Mar 2014 06:51:51 GMT <p> The is_nullary trait is specialized for all custom_terminal&lt;T&gt; to be true (see phoenix/code/is_nullary.hpp). </p> <pre class="wiki">template &lt;typename T&gt; struct is_nullary&lt;custom_terminal&lt;T&gt; &gt; : mpl::true_ {}; </pre><p> This is not true with regard to multiple terminals I define in Boost.Log. This forces me to specialize is_nullary for all my custom terminals, and I cannot provide a single blanket specialization for all my terminals. </p> <p> The is_nullary trait has a second template parameter which is intended to be used exactly for this purpose. A nested tag void typedef can be used to match the trait for a set of types. I could create the following specialization: </p> <pre class="wiki">template &lt;typename T&gt; struct is_nullary&lt;custom_terminal&lt;T&gt;, typename T::_is_my_terminal &gt; : mpl::false_ {}; </pre><p> However this extension mechanism does not work because the two specializations are considered equally specialized and the compiler reports ambiguity. </p> <p> I suggest to limit the first specialization to only match the default custom terminals, e.g.: </p> <pre class="wiki">template &lt;typename T&gt; struct is_nullary&lt;custom_terminal&lt;T&gt;, typename custom_terminal&lt;T&gt;::_is_default_custom_terminal &gt; : mpl::true_ {}; </pre><p> Where typedef void _is_default_custom_terminal will be added to the generic custom_terminal template. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/7730 https://svn.boost.org/trac10/ticket/7730 Report #7729: concept_def.hpp multiple inclusion prevention macro bug Fri, 23 Nov 2012 14:35:43 GMT Fri, 21 Feb 2014 09:35:24 GMT <p> In boost/concept/detail/concept_def.hpp, the BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP macro does not apply to the whole include file (search for its pending endif). </p> <p> As a consequence, the following warning appearing e.g. when including boost/graph/adjacency_list.hpp: </p> <pre class="wiki">"BOOST_concept" redefined [...] </pre> moala@… https://svn.boost.org/trac10/ticket/7729 https://svn.boost.org/trac10/ticket/7729 Report #7727: Gettext information retriever Thu, 22 Nov 2012 18:43:27 GMT Mon, 07 Jan 2013 12:08:04 GMT <p> So I figured it'd be nice if we were able to see things about which Gettext catalog is loaded. So I worked up this patch. </p> <p> The unit test kind of explains how to use it, it's much like locale::info but it requires an object to be created (and deleted by the user, which is a bit shoddy) </p> <p> If the patch is any good I'm willing to work up some documentation and examples for it. </p> 166291@… https://svn.boost.org/trac10/ticket/7727 https://svn.boost.org/trac10/ticket/7727 Report #7723: prune include directives Thu, 22 Nov 2012 12:04:58 GMT Mon, 26 Nov 2012 11:34:17 GMT <p> I was trying to figure out what was still including boost/foreach.hpp after removing every include of it in my own code, so I used the /showIncludes MSVC compiler option and it turns out it is some "deep" Spirit header finally included by boost/spirit/home/karma/generate.hpp. It also showed that boost/spirit/home/karma/generate.hpp includes an enormous amount of other headers while I include it only for a simple boost::spirit::karma::generate() (with real_generator) call. Please do prune/clean up the included headers in Boost.Spirit (and/or provide more fine grained versions of the current ones)... </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/7723 https://svn.boost.org/trac10/ticket/7723 Report #7721: [utility] want get() member function to boost::initialized Thu, 22 Nov 2012 08:45:55 GMT Thu, 22 Nov 2012 08:45:55 GMT <p> I am using boost::initialized together boost::optional usually. So, I want get() member function to boost::initialized class for unified interface. </p> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/7721 https://svn.boost.org/trac10/ticket/7721 Report #7715: Fractional seconds are parsed as timezone Tue, 20 Nov 2012 08:25:52 GMT Tue, 20 Nov 2012 08:25:52 GMT <p> We're trying to use Boost's excellent date time functionality, but we've hit a snag. The formatting we require is "%Y-%m-%dT%H:%M:%S.%F%ZP", which results in for example "2012-11-19T23:44:23.122344UTC+1". We use this to store dates and time in our database as a string. </p> <p> The problem seems to be that the %F and %ZP flags don't work well together. The following code generates an exception: </p> <pre class="wiki">std::string serialized = "2012-11-19T23:44:23.122344UTC+1"; std::stringstream ss(serialized); std::string format = "%Y-%m-%dT%H:%M:%S.%F%ZP"; boost::local_time::local_time_facet* facet_output = new boost::local_time::local_time_facet(); facet_output-&gt;format(format.c_str()); ss.imbue(std::locale(std::locale::classic(), facet_output)); boost::local_time::local_time_input_facet* facet_input = new boost::local_time::local_time_input_facet(); facet_input-&gt;format(format.c_str()); ss.imbue(std::locale(ss.getloc(), facet_input)); boost::local_time::local_date_time result(boost::local_time::not_a_date_time); ss &gt;&gt; result; // exception </pre><p> What happens when you trace the stack to the exception is that the tokenizer doesn't see the "122344" bit as fractional seconds and instead thinks it's the timezone. This results in an invalid timezone and thus an exception. </p> <p> We can circumvent the problem by removing the %F flag, but that is an unacceptable workaround, because we need the precision of the fractional seconds. Removing the %F flag solves the problem. </p> <p> The problem was found in 1.48.0, but has not yet been fixed in 1.52.0. </p> knight666@… https://svn.boost.org/trac10/ticket/7715 https://svn.boost.org/trac10/ticket/7715 Report #7709: Exception library always built as static library. Sun, 18 Nov 2012 11:46:58 GMT Thu, 03 Jan 2013 16:40:28 GMT <p> Flag link=shared does not influence on building type of exception library. The exception library always built as static library. </p> asoudarikov@… https://svn.boost.org/trac10/ticket/7709 https://svn.boost.org/trac10/ticket/7709 Report #7700: remove_if with Placeholder Expression as predicate causes instantiation of PlaceHolder Expression before argument binding in GCC 4.7.2 Thu, 15 Nov 2012 15:48:10 GMT Fri, 06 Jul 2018 16:46:38 GMT <p> The following code instantiates meta_func&lt;mpl::arg&lt;1&gt; &gt;, which causes a compile error. </p> <p> The problem seems to be with the mpl::not_ which involves the predicate with remove_if. The same error doesn't happen with filter_if. The equivalent code in MPL-only doesn't cause the same error (mpl::remove_if). </p> <p> #include &lt;boost/fusion/include/as_vector.hpp&gt; #include &lt;boost/fusion/include/remove_if.hpp&gt; </p> <p> namespace mpl = boost::mpl; namespace fusion = boost::fusion; </p> <p> struct element { </p> <blockquote> <p> typedef mpl::false_ type; </p> </blockquote> <p> }; </p> <p> template &lt;typename T&gt; struct meta_func { </p> <blockquote> <p> typedef typename T::type type; </p> </blockquote> <p> }; </p> <p> int main() { </p> <blockquote> <p> fusion::vector&lt;element, element&gt; e; fusion::as_vector(fusion::remove_if&lt;meta_func&lt;mpl::_1&gt; &gt;(e)); </p> </blockquote> <p> } </p> felipe.m.almeida@… https://svn.boost.org/trac10/ticket/7700 https://svn.boost.org/trac10/ticket/7700 Report #7698: Boost directory iterator constructor crashes when folder gives input/output error Thu, 15 Nov 2012 13:34:43 GMT Tue, 23 Jan 2018 14:21:59 GMT <p> By using the directory iterator on a non accessible forlder under Linux, the following crash happens: </p> <p> <a class="missing ticket">#0</a> 0x0000003064a329a5 in raise () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x0000003064a34185 in abort () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x0000003064a2b935 in <span class="underline">assert_fail () from /lib64/libc.so.6 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x000000000043a7b5 in boost::shared_ptr&lt;boost::filesystem3::detail::dir_itr_imp&gt;::operator-&gt; (this=0x7fffd216cf30) </span></p> <blockquote> <p> at /usr/include/boost/smart_ptr/shared_ptr.hpp:414 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x00000000005e89f2 in boost::filesystem3::detail::directory_iterator_increment (it=..., ec=0x0) at libs/filesystem/v3/src/operations.cpp:1947 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x00000000004363af in boost::filesystem3::directory_iterator::increment (this=0x7fffd216cf30) at /usr/include/boost/filesystem/v3/operations.hpp:630 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x00000000005e8810 in boost::filesystem3::detail::directory_iterator_construct (it=..., p=..., ec=0x7fffd216cf40) </p> <blockquote> <p> at libs/filesystem/v3/src/operations.cpp:1918 </p> </blockquote> <p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x000000000054a120 in boost::filesystem3::directory_iterator::directory_iterator (this=0x7fffd216cf30, p=..., ec=...) </p> <blockquote> <p> at /usr/include/boost/filesystem/v3/operations.hpp:598 </p> </blockquote> <p> A sample code that generates the crash is the following: </p> <p> boost::system::error_code ec; boost::filesystem3::directory_iterator itr(dir_path, ec); </p> <p> Where the dir_path is a folder that is not accessible. Using the ls command from terminal on the same folder returns: </p> <p> input/output error </p> <p> If the error returned is permission denied, everything works fine. I triggered the input/output error using the curlftpfs library which mounts a ftp as a folder on the system. The permission denied error can be generated on the same folder using nfs share. </p> cpl https://svn.boost.org/trac10/ticket/7698 https://svn.boost.org/trac10/ticket/7698 Report #7692: Missing documentation for variables_map::count Wed, 14 Nov 2012 13:55:25 GMT Wed, 14 Nov 2012 13:55:25 GMT <p> Neither <code>variables_map</code> documentation nor <code>abstract_variables_map</code> documentation mentions function <code>count</code>. </p> abadura@… https://svn.boost.org/trac10/ticket/7692 https://svn.boost.org/trac10/ticket/7692 Report #7687: [date_time] implicit conversion loses integer precision Tue, 13 Nov 2012 07:53:12 GMT Tue, 01 Dec 2015 09:11:50 GMT <p> Compiling with Apple/clang-421.11.66, including boost/date_time.hpp, gives multiple warnings about implicite long64 to int32 conversions: </p> <p> main.cpp:9 </p> <pre class="wiki">#include &lt;boost/date_time.hpp&gt; </pre><pre class="wiki">clang -x c++ -stdlib=libstdc++ -Iboost_1_52_0 -Wshorten-64-to-32 -c main.cpp In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:24: In file included from boost_1_52_0/boost/date_time/posix_time/time_formatters.hpp:16: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_types.hpp:16: boost_1_52_0/boost/date_time/posix_time/posix_time_duration.hpp:24:21: warning: implicit conversion loses integer precision: 'long' to 'hour_type' (aka 'int') [-Wshorten-64-to-32] time_duration(h,0,0) ~~~~~~~~~~~~~ ^ boost_1_52_0/boost/date_time/posix_time/posix_time_duration.hpp:35:23: warning: implicit conversion loses integer precision: 'long' to 'min_type' (aka 'int') [-Wshorten-64-to-32] time_duration(0,m,0) ~~~~~~~~~~~~~ ^ boost_1_52_0/boost/date_time/posix_time/posix_time_duration.hpp:46:25: warning: implicit conversion loses integer precision: 'long' to 'sec_type' (aka 'int') [-Wshorten-64-to-32] time_duration(0,0,s) ~~~~~~~~~~~~~ ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:18: In file included from boost_1_52_0/boost/date_time/gregorian/gregorian_types.hpp:19: In file included from boost_1_52_0/boost/date_time/gregorian/greg_calendar.hpp:15: In file included from boost_1_52_0/boost/date_time/gregorian_calendar.hpp:63: boost_1_52_0/boost/date_time/gregorian_calendar.ipp:82:12: warning: implicit conversion loses integer precision: 'unsigned long' to 'date_int_type' (aka 'unsigned int') [-Wshorten-64-to-32] return d; ~~~~~~ ^ boost_1_52_0/boost/date_time/date.hpp:71:25: note: in instantiation of member function 'boost::date_time::gregorian_calendar_base&lt;boost::date_time::year_month_day_base&lt;boost::gregorian::greg_year, boost::gregorian::greg_month, boost::gregorian::greg_day&gt;, unsigned int&gt;::day_number' requested here : days_(calendar::day_number(ymd_type(y, m, d))) ^ boost_1_52_0/boost/date_time/gregorian/greg_date.hpp:56:9: note: in instantiation of member function 'boost::date_time::date&lt;boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration&gt;::date' requested here : date_time::date&lt;date, gregorian_calendar, date_duration&gt;(y, m, d) ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:18: In file included from boost_1_52_0/boost/date_time/gregorian/gregorian_types.hpp:19: In file included from boost_1_52_0/boost/date_time/gregorian/greg_calendar.hpp:15: In file included from boost_1_52_0/boost/date_time/gregorian_calendar.hpp:63: boost_1_52_0/boost/date_time/gregorian_calendar.ipp:47:14: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] return week; ~~~~~~ ^~~~ boost_1_52_0/boost/date_time/gregorian/greg_date.hpp:111:34: note: in instantiation of member function 'boost::date_time::gregorian_calendar_base&lt;boost::date_time::year_month_day_base&lt;boost::gregorian::greg_year, boost::gregorian::greg_month, boost::gregorian::greg_day&gt;, unsigned int&gt;::week_number' requested here return gregorian_calendar::week_number(ymd); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:18: In file included from boost_1_52_0/boost/date_time/gregorian/gregorian_types.hpp:19: In file included from boost_1_52_0/boost/date_time/gregorian/greg_calendar.hpp:15: In file included from boost_1_52_0/boost/date_time/gregorian_calendar.hpp:63: boost_1_52_0/boost/date_time/gregorian_calendar.ipp:52:16: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] return week; //under these circumstances week == 53. ~~~~~~ ^~~~ boost_1_52_0/boost/date_time/gregorian_calendar.ipp:63:14: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] return week; ~~~~~~ ^~~~ boost_1_52_0/boost/date_time/gregorian_calendar.ipp:66:12: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32] return week; //not reachable -- well except if day == 5 and is_leap_year != true ~~~~~~ ^~~~ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:15: boost_1_52_0/boost/date_time/time_system_counted.hpp:57:52: warning: implicit conversion loses integer precision: 'unsigned long' to 'typename calendar_type::date_int_type' (aka 'unsigned int') [-Wshorten-64-to-32] typename calendar_type::date_int_type dc = day_count(); ~~ ^~~~~~~~~~~ boost_1_52_0/boost/date_time/time_system_counted.hpp:170:18: note: in instantiation of member function 'boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt;::date' requested here return val.date(); ^ boost_1_52_0/boost/date_time/time.hpp:72:27: note: in instantiation of member function 'boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt; &gt;::get_date' requested here return time_system::get_date(time_); ^ boost_1_52_0/boost/date_time/posix_time/date_duration_operators.hpp:33:31: note: in instantiation of member function 'boost::date_time::base_time&lt;boost::posix_time::ptime, boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt;&gt; &gt;::date' requested here return t + m.get_offset(t.date()); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:18: In file included from boost_1_52_0/boost/date_time/gregorian/gregorian_types.hpp:17: boost_1_52_0/boost/date_time/date.hpp:180:47: warning: implicit conversion loses integer precision: 'duration_rep_type' (aka 'long') to 'int_type' (aka 'unsigned int') [-Wshorten-64-to-32] return date_type(date_rep_type(days_) + dd.days()); ~~~~~~~~~~~~~ ^~~~~~~~~ boost_1_52_0/boost/date_time/time.hpp:145:49: note: in instantiation of member function 'boost::date_time::date&lt;boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration&gt;::operator+' requested here time_ = (time_system::get_time_rep(date() + dd, time_of_day())); ^ boost_1_52_0/boost/date_time/posix_time/date_duration_operators.hpp:44:14: note: in instantiation of member function 'boost::date_time::base_time&lt;boost::posix_time::ptime, boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt;&gt; &gt;::operator+=' requested here return t += m.get_offset(t.date()); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:17: In file included from boost_1_52_0/boost/date_time/time_resolution_traits.hpp:15: boost_1_52_0/boost/date_time/int_adapter.hpp:233:41: warning: implicit conversion loses integer precision: 'long' to 'int_type' (aka 'unsigned int') [-Wshorten-64-to-32] return int_adapter&lt;int_type&gt;(value_ + rhs.as_number()); ~~~~~~~~~~~ ~~~~~~~^~~~~~~~~~~~~~~~~ boost_1_52_0/boost/date_time/date.hpp:178:47: note: in instantiation of function template specialization 'boost::date_time::int_adapter&lt;unsigned int&gt;::operator+&lt;long&gt;' requested here return date_type(date_rep_type(days_) + dd.get_rep()); ^ boost_1_52_0/boost/date_time/time.hpp:145:49: note: in instantiation of member function 'boost::date_time::date&lt;boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration&gt;::operator+' requested here time_ = (time_system::get_time_rep(date() + dd, time_of_day())); ^ boost_1_52_0/boost/date_time/posix_time/date_duration_operators.hpp:44:14: note: in instantiation of member function 'boost::date_time::base_time&lt;boost::posix_time::ptime, boost::date_time::counted_time_system&lt;boost::date_time::counted_time_rep&lt;boost::posix_time::millisec_posix_time_system_config&gt;&gt; &gt;::operator+=' requested here return t += m.get_offset(t.date()); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:18: In file included from boost_1_52_0/boost/date_time/gregorian/gregorian_types.hpp:17: boost_1_52_0/boost/date_time/date.hpp:162:47: warning: implicit conversion loses integer precision: 'duration_rep_type' (aka 'long') to 'int_type' (aka 'unsigned int') [-Wshorten-64-to-32] return date_type(date_rep_type(days_) - dd.days()); ~~~~~~~~~~~~~ ^~~~~~~~~ boost_1_52_0/boost/date_time/period.hpp:93:21: note: in instantiation of member function 'boost::date_time::date&lt;boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration&gt;::operator-' requested here last_(end_point - duration_rep::unit()) ^ boost_1_52_0/boost/date_time/date_parsing.hpp:308:14: note: in instantiation of member function 'boost::date_time::period&lt;boost::gregorian::date, boost::gregorian::date_duration&gt;::period' requested here return period&lt;date_type, typename date_type::duration_type&gt;(d1, d2); ^ boost_1_52_0/boost/date_time/gregorian/parsers.hpp:79:12: note: in instantiation of function template specialization 'boost::date_time::from_simple_string_type&lt;boost::gregorian::date, char&gt;' requested here return date_time::from_simple_string_type&lt;date,char&gt;(s); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:15: In file included from boost_1_52_0/boost/date_time/posix_time/ptime.hpp:12: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_system.hpp:13: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_config.hpp:17: In file included from boost_1_52_0/boost/date_time/time_resolution_traits.hpp:15: boost_1_52_0/boost/date_time/int_adapter.hpp:282:41: warning: implicit conversion loses integer precision: 'long' to 'int_type' (aka 'unsigned int') [-Wshorten-64-to-32] return int_adapter&lt;int_type&gt;(value_ - rhs.as_number()); ~~~~~~~~~~~ ~~~~~~~^~~~~~~~~~~~~~~~~ boost_1_52_0/boost/date_time/date.hpp:160:47: note: in instantiation of function template specialization 'boost::date_time::int_adapter&lt;unsigned int&gt;::operator-&lt;long&gt;' requested here return date_type(date_rep_type(days_) - dd.get_rep()); ^ boost_1_52_0/boost/date_time/period.hpp:93:21: note: in instantiation of member function 'boost::date_time::date&lt;boost::gregorian::date, boost::gregorian::gregorian_calendar, boost::gregorian::date_duration&gt;::operator-' requested here last_(end_point - duration_rep::unit()) ^ boost_1_52_0/boost/date_time/date_parsing.hpp:308:14: note: in instantiation of member function 'boost::date_time::period&lt;boost::gregorian::date, boost::gregorian::date_duration&gt;::period' requested here return period&lt;date_type, typename date_type::duration_type&gt;(d1, d2); ^ boost_1_52_0/boost/date_time/gregorian/parsers.hpp:79:12: note: in instantiation of function template specialization 'boost::date_time::from_simple_string_type&lt;boost::gregorian::date, char&gt;' requested here return date_time::from_simple_string_type&lt;date,char&gt;(s); ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:24: In file included from boost_1_52_0/boost/date_time/posix_time/time_formatters.hpp:16: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_types.hpp:20: boost_1_52_0/boost/date_time/dst_rules.hpp:57:49: warning: implicit conversion loses integer precision: 'long' to 'min_type' (aka 'int') [-Wshorten-64-to-32] if (time_of_day &gt;= time_duration_type(0,offset,0)) { ~~~~~~~~~~~~~~~~~~ ^~~~~~ boost_1_52_0/boost/date_time/dst_rules.hpp:164:18: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::process_local_dst_start_day' requested here return process_local_dst_start_day(time_of_day, ^ boost_1_52_0/boost/date_time/dst_rules.hpp:116:16: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::local_is_dst' requested here return local_is_dst(current_day, time_of_day, ^ boost_1_52_0/boost/date_time/local_time/local_date_time.hpp:196:16: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::local_is_dst' requested here return dst_calculator::local_is_dst( ^ boost_1_52_0/boost/date_time/local_time/local_date_time.hpp:241:16: note: in instantiation of member function 'boost::local_time::local_date_time_base&lt;boost::posix_time::ptime, boost::date_time::time_zone_base&lt;boost::posix_time::ptime, char&gt; &gt;::check_dst' requested here switch(check_dst(lt.date(), lt.time_of_day(), zone_)){ ^ boost_1_52_0/boost/date_time/local_time/conversion.hpp:23:9: note: in instantiation of member function 'boost::local_time::local_date_time_base&lt;boost::posix_time::ptime, boost::date_time::time_zone_base&lt;boost::posix_time::ptime, char&gt; &gt;::is_dst' requested here if(lt.is_dst()){ ^ In file included from main.cpp:9: In file included from boost_1_52_0/boost/date_time.hpp:15: In file included from boost_1_52_0/boost/date_time/local_time/local_time.hpp:11: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time.hpp:24: In file included from boost_1_52_0/boost/date_time/posix_time/time_formatters.hpp:16: In file included from boost_1_52_0/boost/date_time/posix_time/posix_time_types.hpp:20: boost_1_52_0/boost/date_time/dst_rules.hpp:78:44: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32] int offset = dst_end_offset_minutes-dst_length_minutes; ~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ boost_1_52_0/boost/date_time/dst_rules.hpp:170:18: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::process_local_dst_end_day' requested here return process_local_dst_end_day(time_of_day, ^ boost_1_52_0/boost/date_time/dst_rules.hpp:116:16: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::local_is_dst' requested here return local_is_dst(current_day, time_of_day, ^ boost_1_52_0/boost/date_time/local_time/local_date_time.hpp:196:16: note: in instantiation of member function 'boost::date_time::dst_calculator&lt;boost::gregorian::date, boost::posix_time::time_duration&gt;::local_is_dst' requested here return dst_calculator::local_is_dst( ^ boost_1_52_0/boost/date_time/local_time/local_date_time.hpp:241:16: note: in instantiation of member function 'boost::local_time::local_date_time_base&lt;boost::posix_time::ptime, boost::date_time::time_zone_base&lt;boost::posix_time::ptime, char&gt; &gt;::check_dst' requested here switch(check_dst(lt.date(), lt.time_of_day(), zone_)){ ^ boost_1_52_0/boost/date_time/local_time/conversion.hpp:23:9: note: in instantiation of member function 'boost::local_time::local_date_time_base&lt;boost::posix_time::ptime, boost::date_time::time_zone_base&lt;boost::posix_time::ptime, char&gt; &gt;::is_dst' requested here if(lt.is_dst()){ ^ 15 warnings generated. </pre> crueegg@… https://svn.boost.org/trac10/ticket/7687 https://svn.boost.org/trac10/ticket/7687 Report #7682: boost 1.52 named_mutex/named_condition pairing broken Tue, 13 Nov 2012 00:00:48 GMT Wed, 23 Dec 2015 23:35:03 GMT <p> The following program works in boost 1.47, however in 1.52 it does not. To test it, run 2 instances. The 2nd instance should output the numbers 1, 3, 5, 7, 9. </p> <p> Under 1.52, the program outputs the number 1, and then does nothing. The fault appears to be with the named_condition and named_mutex classes. </p> <p> Tested under Windows 7 Pro, SP1, using Visual Studio 2010 v10.0.40219.1 SP1Rel. The test was done with a statically linked boost date time, with Platform Toolset set to v90, i.e. linked with the library 'libboost_date_time-vc90-mt-sgd-1_47.lib'. </p> <pre class="wiki">#include &lt;boost/interprocess/managed_shared_memory.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; #include &lt;boost/interprocess/sync/named_condition.hpp&gt; #include &lt;boost/interprocess/sync/scoped_lock.hpp&gt; #include &lt;iostream&gt; int main() { boost::interprocess::managed_shared_memory managed_shm(boost::interprocess::open_or_create, "shm", 1024); int *i = managed_shm.find_or_construct&lt;int&gt;("Integer")(0); boost::interprocess::named_mutex named_mtx(boost::interprocess::open_or_create, "mtx"); boost::interprocess::named_condition named_cnd(boost::interprocess::open_or_create, "cnd"); boost::interprocess::scoped_lock&lt;boost::interprocess::named_mutex&gt; lock(named_mtx); while (*i &lt; 10) { if (*i % 2 == 0) { ++(*i); named_cnd.notify_all(); named_cnd.wait(lock); } else { std::cout &lt;&lt; *i &lt;&lt; std::endl; ++(*i); named_cnd.notify_all(); named_cnd.wait(lock); } } named_cnd.notify_all(); boost::interprocess::shared_memory_object::remove("shm"); boost::interprocess::named_mutex::remove("mtx"); boost::interprocess::named_condition::remove("cnd"); } </pre> damian.coventry@… https://svn.boost.org/trac10/ticket/7682 https://svn.boost.org/trac10/ticket/7682 Report #7681: Bug in indirect_streambuf::seek_impl Mon, 12 Nov 2012 12:10:29 GMT Mon, 12 Nov 2012 12:10:29 GMT <p> Currently indirect_streambuf::seek_impl always modifies input and output pointers with code: </p> <p> setg(0, 0, 0); setp(0, 0); </p> <p> See detail/indirect_streambuf.hpp. However, this is incorrect for dual seekable streams buffers which only modifies one set of pointers on each seek (in or out). As a consequence, dual seekable devices cannot be correctly seek. Those 2 lines should be replaced by: </p> <p> if (is_convertible&lt;category, dual_seekable&gt;::value) { </p> <blockquote> <p> if (which == BOOST_IOS::in) { </p> <blockquote> <p> setg(0, 0, 0); </p> </blockquote> <p> } if (which == BOOST_IOS::out) { </p> <blockquote> <p> setp(0, 0); </p> </blockquote> <p> } </p> </blockquote> <p> } else { </p> <blockquote> <p> setg(0, 0, 0); setp(0, 0); </p> </blockquote> <p> } </p> lodos@… https://svn.boost.org/trac10/ticket/7681 https://svn.boost.org/trac10/ticket/7681 Report #7680: Poor choice of difference_type for zip_iterator Sun, 11 Nov 2012 04:37:06 GMT Wed, 21 Nov 2012 22:41:14 GMT <p> Hi, </p> <p> the following program results in an integer overflow on my system (Linux g++ 4.7.2): </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/iterator/zip_iterator.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/iterator/counting_iterator.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/tuple/tuple.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">counting_iterator</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="o">&gt;</span> <span class="n">i1</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">counting_iterator</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">long</span> <span class="kt">long</span><span class="o">&gt;</span> <span class="n">i2</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> <span class="k">auto</span> <span class="n">i3</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_zip_iterator</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">make_tuple</span><span class="p">(</span><span class="n">i1</span><span class="p">,</span> <span class="n">i2</span><span class="p">));</span> <span class="n">i3</span> <span class="o">+=</span> <span class="mi">3221225472u</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">boost</span><span class="o">::</span><span class="n">get</span><span class="o">&lt;</span><span class="mi">1</span><span class="o">&gt;</span><span class="p">(</span><span class="o">*</span><span class="n">i3</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> It prints 18446744072635809792, but I'd expect it to print 3221225472. boost::zip_iterator seems to use the first underlying iterator's difference_type as its own difference_type, which isn't necessarily the right choice. </p> matthias_berndt@… https://svn.boost.org/trac10/ticket/7680 https://svn.boost.org/trac10/ticket/7680 Report #7679: unhex level 4 compile warning in visual studio Sat, 10 Nov 2012 15:56:10 GMT Thu, 07 Apr 2016 13:36:30 GMT <p> The following code generates a level 4 compiler warning in Visual Studio 2010 and 2012: </p> <pre class="wiki">#include &lt;string&gt; #include &lt;boost/algorithm/hex.hpp&gt; int main() { std::string base = "now is the time"; std::string hstr = boost::algorithm::hex(base); std::string cstr = boost::algorithm::unhex(hstr); } </pre><p> The warnings are: </p> <pre class="wiki">1&gt;d:\development\libs\boost_1_52_0\boost/algorithm/hex.hpp(137): warning C4244: '=' : conversion from 'unsigned int' to 'T', possible loss of data 1&gt; d:\development\libs\boost_1_52_0\boost/algorithm/hex.hpp(204) : see reference to function template instantiation 'std::back_insert_iterator&lt;_Container&gt; boost::algorithm::detail::decode_one&lt;InputIterator,OutputIterator,bool(__cdecl *)(Iterator,Iterator)&gt;(InputIterator &amp;,InputIterator,OutputIterator,EndPred)' being compiled 1&gt; with 1&gt; [ 1&gt; _Container=std::string, 1&gt; InputIterator=std::_String_const_iterator&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;, 1&gt; OutputIterator=std::back_insert_iterator&lt;std::string&gt;, 1&gt; Iterator=std::_String_const_iterator&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;, 1&gt; EndPred=bool (__cdecl *)(std::_String_const_iterator&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;,std::_String_const_iterator&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;) 1&gt; ] 1&gt; d:\development\libs\boost_1_52_0\boost/algorithm/hex.hpp(237) : see reference to function template instantiation 'OutputIterator boost::algorithm::unhex&lt;std::_String_const_iterator&lt;_Elem,_Traits,_Alloc&gt;,OutputIterator&gt;(InputIterator,InputIterator,OutputIterator)' being compiled 1&gt; with 1&gt; [ 1&gt; OutputIterator=std::back_insert_iterator&lt;std::string&gt;, 1&gt; _Elem=char, 1&gt; _Traits=std::char_traits&lt;char&gt;, 1&gt; _Alloc=std::allocator&lt;char&gt;, 1&gt; InputIterator=std::_String_const_iterator&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt; 1&gt; ] 1&gt; d:\development\libs\boost_1_52_0\boost/algorithm/hex.hpp(263) : see reference to function template instantiation 'OutputIterator boost::algorithm::unhex&lt;String,std::back_insert_iterator&lt;_Container&gt;&gt;(const Range &amp;,OutputIterator)' being compiled 1&gt; with 1&gt; [ 1&gt; OutputIterator=std::back_insert_iterator&lt;std::string&gt;, 1&gt; String=std::string, 1&gt; _Container=std::string, 1&gt; Range=std::string 1&gt; ] 1&gt; unhex_bug.cpp(10) : see reference to function template instantiation 'String boost::algorithm::unhex&lt;std::string&gt;(const String &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; String=std::string 1&gt; ] </pre> Gary Sanders <lex21@…> https://svn.boost.org/trac10/ticket/7679 https://svn.boost.org/trac10/ticket/7679 Report #7670: Failed to compile boost 1.48.0 using Xcode 4.5.2 Fri, 09 Nov 2012 11:49:05 GMT Sat, 12 Oct 2013 13:20:21 GMT <p> I was trying to build boost 1.48.0 using xcode 4.5.2(LLVM 4.1) on Mac OS X 10.7.5 but got some compilation issues, I was building boost with c++11 and libc++ support </p> <p> Command: ./bjam toolset=clang debug-symbols=on cxxflags="-std=c++11 -stdlib=libc++ -arch x86_64 -fvisibility=hidden" linkflags="-stdlib=libc++ -arch x86_64" variant=debug link=static,shared threading=multi --layout=versioned --build-dir=./universal --stagedir=./boost_stage_universal/debug stage --with-filesystem </p> <p> Build Log: </p> <p> Component configuration: </p> <ul><li>chrono : not building </li><li>date_time : not building </li><li>exception : not building </li><li>filesystem : building </li><li>graph : not building </li><li>graph_parallel : not building </li><li>iostreams : not building </li><li>locale : not building </li><li>math : not building </li><li>mpi : not building </li><li>program_options : not building </li><li>python : not building </li><li>random : not building </li><li>regex : not building </li><li>serialization : not building </li><li>signals : not building </li><li>system : not building </li><li>test : not building </li><li>thread : not building </li><li>timer : not building </li><li>wave : not building </li></ul><p> ...patience... ...found 524 targets... ...updating 34 targets... clang-darwin.compile.c++ universal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi/error_code.o In file included from libs/system/src/error_code.cpp:18: In file included from ./boost/system/config.hpp:13: In file included from ./boost/config.hpp:40: In file included from ./boost/config/select_stdlib_config.hpp:37: In file included from ./boost/config/no_tr1/utility.hpp:21: In file included from /usr/bin/../lib/c++/v1/utility:125: In file included from /usr/bin/../lib/c++/v1/<span class="underline">tuple:16: /usr/bin/../lib/c++/v1/type_traits:737:2: error: #error is_base_of not implemented. #error is_base_of not implemented. </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:13: error: use of undeclared identifier 'is_base_of' </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:24: error: '_Class' does not refer to a value </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1697:28: note: declared here template &lt;class _Rp, class _Class, class _Tp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:62: error: expected class name </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from libs/system/src/error_code.cpp:19: In file included from ./boost/system/error_code.hpp:16: In file included from ./boost/assert.hpp:82: In file included from /usr/bin/../lib/c++/v1/iostream:38: In file included from /usr/bin/../lib/c++/v1/ios:216: In file included from /usr/bin/../lib/c++/v1/<span class="underline">locale:15: In file included from /usr/bin/../lib/c++/v1/string:434: In file included from /usr/bin/../lib/c++/v1/algorithm:594: In file included from /usr/bin/../lib/c++/v1/memory:590: In file included from /usr/bin/../lib/c++/v1/typeinfo:61: /usr/bin/../lib/c++/v1/exception:194:20: error: use of undeclared identifier 'is_base_of' </span></p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:194:31: error: 'nested_exception' does not refer to a value </p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:166:29: note: declared here class _LIBCPP_EXCEPTION_ABI nested_exception </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:194:81: error: parameter declarator cannot be qualified </p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <del><sup> </sup></del></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:194:85: error: expected ')' </p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:192:18: note: to match this '(' throw_with_nested(_Tp&amp;&amp; <span class="underline">t, typename enable_if&lt; </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:213:19: error: use of undeclared identifier 'is_base_of' </p> <blockquote> <p> is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:213:30: error: 'nested_exception' does not refer to a value </p> <blockquote> <p> is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:166:29: note: declared here class _LIBCPP_EXCEPTION_ABI nested_exception </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:213:80: error: parameter declarator cannot be qualified </p> <blockquote> <p> is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <del><sup> </sup></del></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:213:84: error: expected ')' </p> <blockquote> <p> is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:211:18: note: to match this '(' throw_with_nested(_Tp&amp;&amp; <span class="underline">t, typename enable_if&lt; </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> In file included from libs/system/src/error_code.cpp:19: In file included from ./boost/system/error_code.hpp:16: In file included from ./boost/assert.hpp:82: In file included from /usr/bin/../lib/c++/v1/iostream:38: In file included from /usr/bin/../lib/c++/v1/ios:216: In file included from /usr/bin/../lib/c++/v1/<span class="underline">locale:18: In file included from /usr/bin/../lib/c++/v1/mutex:176: In file included from /usr/bin/../lib/c++/v1/</span>mutex_base:16: /usr/bin/../lib/c++/v1/system_error:247:1: error: C++ requires a type specifier for all declarations _LIBCPP_DECLARE_STRONG_ENUM(errc) <sup><del></del><del></del><del></del><del></del><del></del><del></del><del> /usr/bin/../lib/c++/v1/system_error:247:29: error: use of undeclared identifier 'errc' _LIBCPP_DECLARE_STRONG_ENUM(errc) </del></sup></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/system_error:247:34: error: expected ';' after top level declarator _LIBCPP_DECLARE_STRONG_ENUM(errc) </p> <blockquote> <p> <sup> ; </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/system_error:344:1: error: C++ requires a type specifier for all declarations _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) <sup><del></del><del></del><del></del><del></del><del></del><del></del><del></del><del></del>~ /usr/bin/../lib/c++/v1/system_error:344:36: error: use of undeclared identifier 'errc' _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) </sup></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/system_error:344:41: error: expected ';' after top level declarator _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc) </p> <blockquote> <p> <sup> ; </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/system_error:457:1: error: 'inline' can only appear on functions inline _LIBCPP_INLINE_VISIBILITY <sup> fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. </sup></p> <blockquote> <p> "clang++" -x c++ -O0 -g -std=c++11 -stdlib=libc++ -arch x86_64 -fvisibility=hidden -O0 -fno-inline -Wall -g -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -I"." -c -o "universal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi/error_code.o" "libs/system/src/error_code.cpp" </p> </blockquote> <p> ...failed clang-darwin.compile.c++ universal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi/error_code.o... ...skipped &lt;puniversal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi&gt;libboost_system-clang-darwin42-mt-d-1_48.a(clean) for lack of &lt;puniversal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi&gt;error_code.o... ...skipped &lt;puniversal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi&gt;libboost_system-clang-darwin42-mt-d-1_48.a for lack of &lt;puniversal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi&gt;error_code.o... ...skipped &lt;pboost_stage_universal/debug/lib&gt;libboost_system-clang-darwin42-mt-d-1_48.a for lack of &lt;puniversal/boost/bin.v2/libs/system/build/clang-darwin-4.2.1/debug/link-static/threading-multi&gt;libboost_system-clang-darwin42-mt-d-1_48.a... clang-darwin.compile.c++ universal/boost/bin.v2/libs/filesystem/build/clang-darwin-4.2.1/debug/link-static/threading-multi/v2/src/v2_operations.o In file included from libs/filesystem/v2/src/v2_operations.cpp:45: In file included from ./boost/filesystem/v2/operations.hpp:17: In file included from ./boost/filesystem/v2/config.hpp:30: In file included from ./boost/config.hpp:40: In file included from ./boost/config/select_stdlib_config.hpp:37: In file included from ./boost/config/no_tr1/utility.hpp:21: In file included from /usr/bin/../lib/c++/v1/utility:125: In file included from /usr/bin/../lib/c++/v1/<span class="underline">tuple:16: /usr/bin/../lib/c++/v1/type_traits:737:2: error: #error is_base_of not implemented. #error is_base_of not implemented. </span></p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:13: error: use of undeclared identifier 'is_base_of' </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:24: error: '_Class' does not refer to a value </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1697:28: note: declared here template &lt;class _Rp, class _Class, class _Tp&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /usr/bin/../lib/c++/v1/type_traits:1700:62: error: expected class name </p> <blockquote> <p> is_base_of&lt;_Class, typename remove_reference&lt;_Tp&gt;::type&gt;::value&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from libs/filesystem/v2/src/v2_operations.cpp:45: In file included from ./boost/filesystem/v2/operations.hpp:18: In file included from ./boost/filesystem/v2/path.hpp:21: In file included from ./boost/system/system_error.hpp:11: In file included from /usr/bin/../lib/c++/v1/string:434: In file included from /usr/bin/../lib/c++/v1/algorithm:594: In file included from /usr/bin/../lib/c++/v1/memory:590: In file included from /usr/bin/../lib/c++/v1/typeinfo:61: /usr/bin/../lib/c++/v1/exception:194:20: error: use of undeclared identifier 'is_base_of' </p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /usr/bin/../lib/c++/v1/exception:194:31: error: 'nested_exception' does not refer to a value </p> <blockquote> <p> !is_base_of&lt;nested_exception, typename remove_reference&lt;_Tp&gt;::type&gt;::value </p> </blockquote> <p> </p> amol_ghatge@… https://svn.boost.org/trac10/ticket/7670 https://svn.boost.org/trac10/ticket/7670 Report #7658: Ambiguity error with function overloads Wed, 07 Nov 2012 16:11:48 GMT Wed, 07 Nov 2012 16:11:48 GMT <p> The following code (relevant for a convenient thread-callback API) fails to compile with VC2010 due to a C2668 error: </p> <pre class="wiki">typedef boost::function&lt;void (int i)&gt; fooCallback; typedef boost::function&lt;void (int i, int k)&gt; barCallback; void TestBF(fooCallback fc) {} void TestBF(barCallback bc) {} void MyFunc (int a, int b) {} int main(int argc, char **argv) { TestBF (&amp;MyFunc); return 0; } </pre><p> Without calling TestBF in main, everything is fine, there is no multiple definition error. A (most likely) related discussion thread can be found here: <a class="ext-link" href="http://boost.2283326.n4.nabble.com/Boost-Function-detecting-ignored-arguments-td4631919.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/Boost-Function-detecting-ignored-arguments-td4631919.html</a>. </p> Ulrich Brandstätter <ulien@…> https://svn.boost.org/trac10/ticket/7658 https://svn.boost.org/trac10/ticket/7658 Report #7655: signed/unsigned mismatch warning in inplace_solver Wed, 07 Nov 2012 13:51:01 GMT Mon, 06 Oct 2014 14:08:24 GMT <p> MSVC 9 emits a warning "C4018: '&lt;' : signed/unsigned mismatch" in line 2165 (inplace_solve) in triangular.hpp </p> Tobias Loew https://svn.boost.org/trac10/ticket/7655 https://svn.boost.org/trac10/ticket/7655 Report #7652: compile-time checked access Tue, 06 Nov 2012 06:56:56 GMT Tue, 12 Feb 2013 18:11:23 GMT <p> Since code like </p> <p> boost::array&lt;int,2&gt; test; test<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> = 1; test[-1] = 1; </p> <p> compiles correctly on some compilers (even without warnings). I suggest adding compile checked functions for static access to arrays like: </p> <blockquote> <p> template&lt;size_type i&gt; reference at() { </p> <blockquote> <p> BOOST_STATIC_ASSERT( (i &lt; N) ); return elems[i]; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> template&lt;size_type i&gt; const_reference at() const { </p> <blockquote> <p> BOOST_STATIC_ASSERT( (i &lt; N) ); return elems[i]; </p> </blockquote> <p> } </p> </blockquote> <p> then code like: </p> <p> boost::array&lt;int,2&gt; test; test.at&lt;2&gt; = 1; test.at&lt;-1&gt; = 1; </p> <p> would result in the expected errors. </p> Tobias Loew https://svn.boost.org/trac10/ticket/7652 https://svn.boost.org/trac10/ticket/7652 Report #7647: b2 incompatible with _STLP_LIB_NAME_MOTIF in stlport (no library names flexibility) - fatal error LNK1181: cannot open input file 'stlportstld.5.2.lib Tue, 06 Nov 2012 03:37:10 GMT Thu, 03 Jan 2013 16:42:25 GMT <p> B2 seems too rigid with the searched libraries names used for stlport. It causes problems for someone who needs to use names a suffix _STLP_LIB_NAME_MOTIF that is not empty (see stlport/stl/config/user-config.h). </p> <p> Here I explain the context the context. I've tried (succcessfully) to build boost_1_52 with stlport.5.2.1 with Microsoft vs 2010 (vc10) </p> <p> I've essentially used what suggested in <a class="ext-link" href="http://www.lenholgate.com/blog/2010/07/stlport-521-and-vs2010-and-x64.html"><span class="icon">​</span>http://www.lenholgate.com/blog/2010/07/stlport-521-and-vs2010-and-x64.html</a>. <br /> The author of the pages uses _STLP_LIB_NAME_MOTIF in order to specify the compiler's name in the library name, which is what I need too. </p> <p> To build with stlport I've followed the usual procedure: </p> <p> 1- added in tools/build/v2/user-config.jam the lines<br /> </p> <blockquote> <p> using msvc : 10.0 ; using stlport : 5.2.1 : &lt;my_path_to_stlport&gt;/STLport-5.2.1/stlport : &lt;my_path_to_stlport&gt;/STLport-5.2.1/lib/vc10 ; </p> </blockquote> <p> 2- and issued the command:<br /> .\tools\build\v2\b2.exe stdlib=stlport-5.2.1 toolset=msvc-10.0 debug/define=_STLP_DEBUG release --build-type=complete stage </p> <p> What I get is a linking error to the stlport libraries when doing link=shared threading=multi (for example with --with-system)<br /> the message error is: LINK : fatal error LNK1181: cannot open input file 'stlportstld.5.2.lib' </p> <p> This is because stlport.jam ((probably this jam file) <strong>forces</strong> the link to the stlport with its own names, therefore <strong>bypassing</strong> what is specified in the file STLport-5.2.1\stlport\stl\config\_auto_link.h </p> <p> I wonder why this choice, considering that life was beautiful years ago when this everything was delegated to stlport\stl\config\_auto_link.h. I imagine you had your own reasons. </p> <p> <br /> <br /> </p> <p> Things therefore work if I do:<br /> </p> <p> tools/build/v2/user-config.jam:<br /> </p> <blockquote> <p> using msvc : 10.0 ; using stlport : vc10.5.2.1 : &lt;my_path_to_stlport&gt;/STLport-5.2.1/stlport : &lt;my_path_to_stlport&gt;/STLport-5.2.1/lib/vc10 ; </p> </blockquote> <p> and issue the command:<br /> </p> <blockquote> <p> .\tools\build\v2\b2.exe stdlib=stlport-vc10.5.2.1 toolset=msvc-10.0 debug/define=_STLP_DEBUG release --build-type=complete stage </p> </blockquote> <p> But still there is one strange behaviour which is problematic.<br /> </p> <p> Let's take tools/build/v2/user-config.jam again<br /> </p> <blockquote> <p> with<br /> </p> <blockquote> <p> using stlport : 5.2.1 : ....<br /> the library searched was stlportstld.5.2.lib </p> </blockquote> </blockquote> <p> <br /> </p> <blockquote> <p> with<br /> </p> <blockquote> <p> using stlport : vc10.5.2.1 : ....<br /> the library searched was stlportstldvc10.5.2.lib </p> </blockquote> </blockquote> <p> <br /> </p> <blockquote> <p> with<br /> </p> <blockquote> <p> using stlport : xyz.5.2.1 : ....<br /> the library searched was stlportstldvc10.5.2.lib i.e. not stlportstldxyz.5.2.lib <br /> </p> </blockquote> </blockquote> <p> And this is a problem, as people may want to build to the stlport libraries also when their name name is modified according to the _STLP_LIB_NAME_MOTIF macro in stlport/stl/config/user-config.h. Hope this will be fixed, if you agree this is a limitation. Again, I wish everything would be left to what is specified in STLport-5.2.1\stlport\stl\config\_auto_link.h </p> Marcello Pietrobon <marcello.pietrobon@…> https://svn.boost.org/trac10/ticket/7647 https://svn.boost.org/trac10/ticket/7647 Report #7637: Karma allow integrals as type for real_generator Sun, 04 Nov 2012 01:12:04 GMT Sun, 04 Nov 2012 01:12:04 GMT <p> The attached patch allows Karma <code>real_generator</code> to be instantiated with fundamental integral types, which will otherwise result in an error when calling <code>modf</code> due to its pointer argument. The remaining requirements (fmod, floor, et.al.) are satisfied by implicit conversion, though they could be specially handled as well. </p> K-ballo <kaballo86@…> https://svn.boost.org/trac10/ticket/7637 https://svn.boost.org/trac10/ticket/7637 Report #7636: Detection of ICU fails Sun, 04 Nov 2012 00:37:18 GMT Sat, 12 Oct 2013 13:20:54 GMT <p> Detection of ICU fails: </p> <pre class="wiki">Building the Boost C++ Libraries. Performing configuration checks - 32-bit : no - 64-bit : yes - x86 : yes - has_icu builds : no - iconv (libc) : yes - icu : no - icu (lib64) : no - gcc visibility : yes - long double support : yes </pre><p> Build system should use <code>'icu-config --cflags'</code> (for C) and <code>'icu-config --cxxflags'</code> (for C++) to get flags required for compilation with ICU. </p> Arfrever.FTA@… https://svn.boost.org/trac10/ticket/7636 https://svn.boost.org/trac10/ticket/7636 Report #7633: Wanted: a way to force a nested result_type Fri, 02 Nov 2012 23:53:36 GMT Fri, 02 Nov 2012 23:53:36 GMT <p> For example, I had to use this: </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">F</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="nl">void_function</span> <span class="p">:</span> <span class="n">F</span> <span class="p">{</span> <span class="k">typedef</span> <span class="kt">void</span> <span class="n">result_type</span><span class="p">;</span> <span class="n">void_function</span><span class="p">(</span><span class="n">F</span> <span class="n">x</span><span class="p">)</span> <span class="o">:</span> <span class="n">F</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="p">{}</span> <span class="p">};</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">F</span><span class="o">&gt;</span> <span class="n">void_function</span><span class="o">&lt;</span><span class="n">F</span><span class="o">&gt;</span> <span class="n">make_void</span><span class="p">(</span><span class="n">F</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">void_function</span><span class="o">&lt;</span><span class="n">F</span><span class="o">&gt;</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> in order to get the following to work: </p> <div class="wiki-code"><div class="code"><pre><span class="kr">inline</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span> <span class="n">s</span><span class="p">,</span> <span class="n">my_variant</span> <span class="k">const</span><span class="o">&amp;</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">phoenix</span><span class="o">::</span><span class="n">placeholders</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">phoenix</span><span class="p">;</span> <span class="n">boost</span><span class="o">::</span><span class="n">apply_visitor</span><span class="p">(</span> <span class="n">make_void</span><span class="p">(</span><span class="n">s</span> <span class="o">&lt;&lt;</span> <span class="n">arg1</span><span class="p">),</span> <span class="n">x</span> <span class="p">);</span> <span class="c1">// ^^^^^^^^^ HERE</span> <span class="k">return</span> <span class="n">s</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> Some libraries, like Boost.Variant, don't follow the <code>result_of</code> protocol. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/7633 https://svn.boost.org/trac10/ticket/7633 Report #7630: Range adaptors do not play nicely with range-based for loops Fri, 02 Nov 2012 18:37:22 GMT Thu, 02 Jun 2016 23:18:04 GMT <p> Consider the following C++11 code, adapted from the Range documentation: </p> <pre class="wiki">std::vector&lt;int&gt; vec; for (int val : vec | boost::adaptors::reversed | boost::adaptors::uniqued) { // Do stuff with val } </pre><p> The behavior of this natural-seeming code is actually undefined, due to a dangling reference: per the C++ standard, it is equivalent to </p> <pre class="wiki">{ auto &amp;&amp; __range = (vec | boost::adaptors::reversed | boost::adaptors::uniqued); for ( auto __begin = __range.begin(), __end = __range.end(); __begin != __end; ++__begin ) { int val = *__begin; // Do stuff with val } } </pre><p> The problem is that the value returned by the subexpression <code>vec | boost::adaptors::reversed</code> is a temporary, so its lifetime ends at the end of the statement containing it, namely the declaration of <code>__range</code>. Thus, <code>__range</code> is left holding a dangling reference to the range it's adapting. </p> <p> The fix is for each range adaptor to use an rvalue-reference overload to detect whether the input range is a temporary, and if so, move it into the adaptor (i.e. with <code>std::move</code>) in order to extend its lifetime. </p> gromer@… https://svn.boost.org/trac10/ticket/7630 https://svn.boost.org/trac10/ticket/7630 Report #7629: Implement the algorithm deadlock detection "lockdep" Fri, 02 Nov 2012 16:24:53 GMT Sun, 04 Nov 2012 00:28:06 GMT <p> Implement the algorithm deadlock detection "lockdep" (<a class="ext-link" href="http://ceph.com/dev-notes/lockdep-for-pthreads/"><span class="icon">​</span>http://ceph.com/dev-notes/lockdep-for-pthreads/</a>) </p> anonymous https://svn.boost.org/trac10/ticket/7629 https://svn.boost.org/trac10/ticket/7629 Report #7625: container.hpp should get reference, etc., from the iterator types Fri, 02 Nov 2012 02:08:27 GMT Fri, 02 Nov 2012 02:08:27 GMT <p> Because container.hpp reaches into so many of the "container's" typedefs, it doesn't work with iterator_range. For example, try <code>front(arg1)(boost::as_literal("foo"))</code> </p> Dave Abrahams https://svn.boost.org/trac10/ticket/7625 https://svn.boost.org/trac10/ticket/7625 Report #7622: filesystem - minor documentation issues Thu, 01 Nov 2012 20:17:05 GMT Thu, 01 Nov 2012 20:17:05 GMT <p> .../filesystem/doc/reference.html#path-decomposition </p> <p> shows </p> <p> path stem(const path&amp; p) const; path extension(const path&amp; p) const; </p> <p> I believe they should show </p> <p> path stem() const; path extension() const; </p> <p> as is shown at: </p> <p> .../filesystem/doc/reference.html#class-path </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/7622 https://svn.boost.org/trac10/ticket/7622 Report #7621: Stateful policies support for Qi bool parsers Thu, 01 Nov 2012 19:26:22 GMT Thu, 01 Nov 2012 19:26:22 GMT <p> The attached patch implements the missing pieces needed for Qi bool parsers to support stateful policies. </p> K-ballo <kaballo86@…> https://svn.boost.org/trac10/ticket/7621 https://svn.boost.org/trac10/ticket/7621 Report #7617: msvc 9.0 (64-bit): warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data Wed, 31 Oct 2012 12:40:15 GMT Wed, 31 Oct 2012 12:40:15 GMT <p> Warnings occured when using boost::asio::ssl implementation in 64-bit configuration: </p> <p> 1&gt;C:\builds\boost_1_51_0\boost/asio/ssl/impl/context.ipp(513) : warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data </p> <p> 1&gt;C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(169) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data </p> <p> 1&gt;C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(180) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data </p> <p> 1&gt;C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(299) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data </p> <p> 1&gt;C:\builds\boost_1_51_0\boost/asio/ssl/detail/impl/engine.ipp(304) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data </p> anonymous https://svn.boost.org/trac10/ticket/7617 https://svn.boost.org/trac10/ticket/7617 Report #7614: duplicate dosctring is generated for pure virtual methods Wed, 31 Oct 2012 07:41:34 GMT Wed, 31 Oct 2012 07:41:34 GMT <p> When defining a method through "def" and using "pure_virtual" (see below) the given docstring is duplicated in the result python definition. </p> <p> C++ class with pure-virtual method: =================================== class IOperation { public: </p> <blockquote> <p> virtual string <a class="missing wiki">AsString</a>() = 0; </p> </blockquote> <p> } </p> <p> The wrapper to expose it to Python: =================================== class_&lt;IOperation, boost::noncopyable, boost::shared_ptr&lt;IOperation&gt; &gt;("IOperation", </p> <blockquote> <p> "docstring for class", no_init) </p> </blockquote> <blockquote> <p> .def("<a class="missing wiki">AsString</a>", </p> <blockquote> <p> pure_virtual(&amp;IOperation::<a class="missing wiki">AsString</a>), "docstring for method <a class="missing wiki">AsString</a>") </p> </blockquote> </blockquote> <p> ; </p> <p> Result python class definition: =============================== class IOperation(instance): </p> <blockquote> <p> """ docstring for class """ </p> </blockquote> <blockquote> <p> def <a class="missing wiki">AsString</a>(self): </p> <blockquote> <p> """ docstring </p> </blockquote> </blockquote> <p> </p> <blockquote> <blockquote> <p> docstring """ pass </p> </blockquote> </blockquote> tomer.spector@… https://svn.boost.org/trac10/ticket/7614 https://svn.boost.org/trac10/ticket/7614 Report #7612: Compile fails when including <boost/units/systems/si/codata_constants.hpp> Tue, 30 Oct 2012 20:53:06 GMT Tue, 30 Oct 2012 20:53:06 GMT <p> I found that adding "#include &lt;boost/units/systems/si/codata_constants.hpp&gt;" to my program will cause it to fail compilation with a huge amount of template errors. This used to work on version 1.46 but fails on version 1.47 and every version after including 1.52.beta. I am using gcc 4.7.1 on OpenSUSE 12.2. The test program is used to determine which version works is: </p> <p> #include &lt;boost/units/systems/si/codata_constants.hpp&gt; </p> <p> #include &lt;iostream&gt; </p> <p> int main(int argc, char<strong> argv) { </strong></p> <blockquote> <p> std::cout &lt;&lt; "Hello." &lt;&lt; std::endl; return 0; </p> </blockquote> <p> } </p> Adam Shrader <adam.shrader@…> https://svn.boost.org/trac10/ticket/7612 https://svn.boost.org/trac10/ticket/7612 Report #7611: segfault in epoll_reactor.ipp Tue, 30 Oct 2012 18:15:27 GMT Tue, 31 Jul 2018 12:54:45 GMT <p> During testing of versions 1.46.1 and 1.51 on a 64-bit Ubuntu 12.04 I have found a seg fault condition in epoll_reactor.ipp. </p> <p> The function is </p> <p> void epoll_reactor::deregister_descriptor(socket_type descriptor, </p> <blockquote> <p> epoll_reactor::per_descriptor_data&amp; descriptor_data, bool closing) </p> </blockquote> <p> { </p> <blockquote> <p> if (!descriptor_data) </p> <blockquote> <p> return; </p> </blockquote> </blockquote> <blockquote> <p> mutex::scoped_lock descriptor_lock(descriptor_data-&gt;mutex_); </p> </blockquote> <blockquote> <p> if (!descriptor_data-&gt;shutdown_) { </p> </blockquote> <p> The member descriptor_data is checked for NULL before the mutex is locked, in rare conditions, when the if-statement is reached, descriptor_data is NULL. </p> <p> I have solved this by adding a second check after the mutex is locked, i.e. </p> <blockquote> <p> if (!descriptor_data) </p> <blockquote> <p> return; </p> </blockquote> </blockquote> <blockquote> <p> mutex::scoped_lock descriptor_lock(descriptor_data-&gt;mutex_); </p> </blockquote> <blockquote> <p> if (!descriptor_data) </p> <blockquote> <p> return; </p> </blockquote> </blockquote> <blockquote> <p> if (!descriptor_data-&gt;shutdown_) { </p> </blockquote> <p> Best regards, Fredrik Jansson </p> Fredrik Jansson <fredrik.jansson.se@…> https://svn.boost.org/trac10/ticket/7611 https://svn.boost.org/trac10/ticket/7611 Report #7610: Add support for PSK authentication to boost::asio:ssl Tue, 30 Oct 2012 16:51:39 GMT Fri, 06 Mar 2015 20:58:00 GMT <p> boost::asio:ssl provides methods to set up PKI authentication. But TLS can also use PSK for authentication. This patch adds methods to set a PSK callback on ssl::context. </p> Roman Bovsunovskiy <a2k0001@…> https://svn.boost.org/trac10/ticket/7610 https://svn.boost.org/trac10/ticket/7610 Report #7608: Custom service of boost::asio hangs after being interrupted Tue, 30 Oct 2012 15:43:33 GMT Tue, 30 Oct 2012 15:48:20 GMT <p> Custom service like logger_service that presented in boost::asio's example hangs after being added async_wait on signal_set. i.e. One has to hit Ctrl-C twice to stop a program. </p> <p> FYI, my workaround is <a class="ext-link" href="http://stackoverflow.com/questions/13024711/extension-of-boostasio-hangs-after-being-interrupted/13064012#13064012"><span class="icon">​</span>here</a>. </p> Acer Yang <yangacer@…> https://svn.boost.org/trac10/ticket/7608 https://svn.boost.org/trac10/ticket/7608 Report #7606: u32regex causes bus error Tue, 30 Oct 2012 11:43:49 GMT Thu, 20 Dec 2012 16:50:53 GMT <p> The Unicode regular expression </p> <blockquote> <p> boost::make_u32regex ("[pq]<br />.<br />.[xy]"); </p> </blockquote> <p> causes a Bus Error. The same r.e. as a boost::regex is fine. </p> <p> The r.e. "[pq]<a class="new ticket" href="https://svn.boost.org/trac10/ticket/7606" title="#7606: Bugs: u32regex causes bus error (new)">.</a><a class="new ticket" href="https://svn.boost.org/trac10/ticket/7606" title="#7606: Bugs: u32regex causes bus error (new)">.</a>[xy]" seems to be okay, so it looks like the repeated "<br />." is at least part of the problem. </p> <p> The following program Bus Errors on Solaris 10 with gcc 4.6.1 and Boost 1.51. (and all previous versions of Boost as far as I can tell.) </p> <hr /> <p> # include &lt;boost/regex/icu.hpp&gt; </p> <p> int main (int, char<strong>) { </strong></p> <blockquote> <p> const boost::u32regex re = boost::make_u32regex ("[pq]<br />.<br />.[xy]"); return 0; </p> </blockquote> <p> } </p> <hr /> a.sanders@… https://svn.boost.org/trac10/ticket/7606 https://svn.boost.org/trac10/ticket/7606 Report #7597: transform_output_iterator Mon, 29 Oct 2012 01:23:17 GMT Wed, 21 Nov 2012 22:40:45 GMT <p> Hello, </p> <p> This ticket is related to the proposal that I made in the mailing list some weeks ago. The proposal is about adding a new iterator, the transform_output_iterator (initially called chained_output_iterator). Please see the code, unit tests and documentation attached for details. Everything is also available on github: github.com/ldionne/boost-submissions </p> <p> I was not able to generate the documentation as a whole, so only the rst documents are attached. Please do not hesitate to contact me for any issues/comments. </p> <p> Thanks, </p> <p> Louis Dionne </p> <p> Note: Regarding the mean for composing iterators (using the and_then method), I am open for discussion if another solution would be more desirable. However, this is the result of several attempts to reduce the requirements on the <a class="missing wiki">UnaryFunction</a> type and it is the only way I found not to require <a class="missing wiki">UnaryFunction</a> to have member typedefs. </p> louis.dionne92@… https://svn.boost.org/trac10/ticket/7597 https://svn.boost.org/trac10/ticket/7597 Report #7596: process_jam_log - --locate-root doesn't work as advertised Sun, 28 Oct 2012 20:50:41 GMT Fri, 29 Mar 2013 17:27:28 GMT <p> Beman, </p> <p> I've found that --locate-root doesn't permit one to build/test a library outside the boost root directory. I've made changes to support this and tested it locally on my own projects. I can't really test it on the whole boost regression testing on my equipment. So I'm a little bit in a quandary. </p> <p> I'm attaching the patch with my changes. I hope you can consider rolling them in. </p> <p> The intention is that it the changes don't change the functioning of the code for current usage. However, I'm a little at a loss with the library name function. The problem occurs when there is a "sublibrary" file. I'm still looking at this. </p> <p> My motivation is that I really, really need to be able to run this program from outside the boost directory. This is to support the current project I'm trying to finish - "Help for Boost Library Authors - Simple Tools - Build and Test". www.blincubator.com . Basically this is a effort to make it easier to make quality C++ and Boost libraries and support "modularization" of boost. I've invested a lot of effort and hope to be able to finish up these sticky bits. I've shown my effort to a few cohorts, and response has been unenthusiastic. As always, I'm not disuaded and have invested too much effort to bail now. So I hope you can help me with this one sticky detail. </p> <p> Thanks for any help you can provide on this critical point. </p> <p> Robert Ramey </p> <p> </p> Robert Ramey https://svn.boost.org/trac10/ticket/7596 https://svn.boost.org/trac10/ticket/7596 Report #7595: Implement interruptible threads on top of non-interruptible threads Sun, 28 Oct 2012 20:05:07 GMT Sun, 28 Oct 2012 20:06:01 GMT <p> Once we will be able to disable thread interruption it would be great if we can provide interruptible threads on top of non-interruptible threads so that the user don't pay for what they don't use, but has yet a mechanism that allows work with interruptible and non-interruptible threads on the same executable. </p> <p> See <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7594" title="#7594: Feature Requests: Allow to disable thread interruptions (closed: fixed)">#7594</a> Allow to disallow thread interruptions </p> viboes https://svn.boost.org/trac10/ticket/7595 https://svn.boost.org/trac10/ticket/7595 Report #7589: Add polymorphic lockables Sun, 28 Oct 2012 19:43:12 GMT Fri, 05 Sep 2014 06:11:43 GMT <p> Mutex are generic classes that work well when generic programming. Sometimes, in a OOP context, it is useful to be able to use polymorphically any model of a lockable. </p> <p> A poly_lockable class that defines the lockable interface could be added as well as an poly_lockable_adapter to make any Lockable inherit from poly_lockable. </p> viboes https://svn.boost.org/trac10/ticket/7589 https://svn.boost.org/trac10/ticket/7589 Report #7586: Add a testable_mutex Sun, 28 Oct 2012 19:22:13 GMT Fri, 05 Sep 2014 06:11:32 GMT <p> Based on Associate Mutexes with Data to Prevent Races, By Herb Sutter, May 13, 2010 - <a class="ext-link" href="http://www.drdobbs.com/windows/associate-mutexes-with-data-to-prevent-r/224701827?pgno=3"><span class="icon">​</span>http://www.drdobbs.com/windows/associate-mutexes-with-data-to-prevent-r/224701827?pgno=3</a> </p> <p> "Make our mutex testable if it isn't already. </p> <p> Many mutex services (including boost::mutex) don't provide a way to ask, "Do I already hold a lock on this mutex?" </p> <p> Sometimes it is needed to know if a method like is_held to be available. </p> <p> This wrapper associates an arbitrary lockable type with a thread id that stores the ID of the thread that currently holds the lockable. The thread id initially holds an invalid value that means no threads own the mutex. </p> <p> When we acquire a lock, we set the thread id; and when we release a lock, we reset it back to its default no id state." </p> viboes https://svn.boost.org/trac10/ticket/7586 https://svn.boost.org/trac10/ticket/7586 Report #7584: boost::interprocess::unique_ptr ambiguous overload for ‘operator=’ Sun, 28 Oct 2012 01:52:00 GMT Sun, 28 Oct 2012 01:52:00 GMT <p> Attached code fails to compile on MSVC2005 and MSVC2008: </p> <p> error C2593: 'operator =' is ambiguous main.cpp:23 </p> <p> It also fails on gcc-4.3.4 - <a class="ext-link" href="http://ideone.com/p4EXFS"><span class="icon">​</span>http://ideone.com/p4EXFS</a> (but with older Boost version). </p> Evgeny Panasyuk <evgeny.panasyuk@…> https://svn.boost.org/trac10/ticket/7584 https://svn.boost.org/trac10/ticket/7584 Report #7583: Missing file? Sat, 27 Oct 2012 23:25:28 GMT Mon, 29 Oct 2012 02:06:10 GMT <p> Build on Windows 7 using Cygwin. </p> <p> Is there libboost_system.a on the latest Boost build? I can't find it anywhere. Any difference between libboost_system.a and libboost_system-mt.a? </p> anon https://svn.boost.org/trac10/ticket/7583 https://svn.boost.org/trac10/ticket/7583 Report #7580: boost::asio::tcp SEGV after ioservice stopped, restarted and new Sat, 27 Oct 2012 12:34:52 GMT Sat, 27 Oct 2012 13:42:34 GMT <p> For solarpowerlog <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> I use boost::asio for the communication via TCP/IP. During an implementation of an new feature I experienced an reproducible segfault when during ioservice-&gt;poll() </p> <p> I hope to give enough information to dig into, but if you need some additional information, please let me know. </p> <p> Please let me also know if I am (unknowingly) misuse or use the library wrongly. </p> <p> Thanks coldtobi </p> <p> <strong>What I am doing:</strong> </p> <p> The feature is for sharing a TCP/IP connection within several data sources/sinks in the programm. For this implementation every data source can write and receive at abitrary times where sends have priority over receives. This is realized in the way that receives are interrupted if another data source request a write and then the receive is resumed. The handling of the TCP/IP i/o is done in an dedicated thread (I mark this "[T]" below) , the interruption in the "main" process (marked [M]) </p> <p> So basically the programm does: [T] socket-&gt;connect() [T] socket-&gt;async_write(); (in parallel running a deadline_timer to catch timeouts) [T] socket-&gt;read_some(); (in parallel running a deadline_timer to catch timeouts. Later we will socket-&gt;read_some again after we know the amount of pending bytes. and read those. But for this report: The interruption (next step) is usually at the first read_some() ) [M] ioservice-&gt;stop(); (this aborts the read_some, ) </p> <p> Here the thread making the IO detects that the ioservice has been stopped via ioservice-&gt;stopped() and will then abort the current operation, wait for the next request adn before executing this new request it will call ioservice-&gt;reset(): </p> <p> [t] ioservice-&gt;reset() </p> <p> As we now close to the crash, I will elabaroate as precise as possible what is done. (This all now is in the I/O thread) </p> <p> Note: You can find the code at <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a>. I add line numbers for better orientation </p> <p> creating the deadline-timer: (lines 684+) </p> <pre class="wiki"> deadline_timer timer(*(this-&gt;ioservice)); boost::posix_time::time_duration td = boost::posix_time::millisec(timeout); timer.expires_from_now(td); timer.async_wait(boost::bind(&amp;boosthelper_set_result, (int*) &amp;result_timer, 1)); </pre><p> (boosthelper_set_result is defined in line 451 and just set result_timer to 1 if called) </p> <p> write the bytes: (line 692+) </p> <pre class="wiki"> boost::asio::async_write(*sockt, boost::asio::buffer(s), write_handler); </pre><p> s is a std::string and contains the data to be sent. max 255 bytes ASCII) </p> <p> run the ioservice once to either finish the write or the timeout (line 695) </p> <pre class="wiki"> size_t num = ioservice-&gt;run_one(ec); </pre><p> run_once returns and the evaluation shows that async_write completed -- num!=0 is checked and the result_timer also </p> <p> Observation: Wireshark shows that the bytes are not transmitted Then the timer is cancelled and its completion handler catched: (line 703+) </p> <pre class="wiki"> timer.cancel(); LOGTRACE(logger, __PRETTY_FUNCTION__ &lt;&lt; ": still alive 2f"); ioservice-&gt;poll(); LOGTRACE(logger, __PRETTY_FUNCTION__ &lt;&lt; ": still alive 3"); </pre><blockquote> <p> ioservice-&gt;poll() is never returning, SEGV is raised here. Unfortunatly the backtrace is also corrupted. </p> </blockquote> <p> When not calling the ioservice-&gt;stop(), the SEGFAULT is gone too. (Confirmed by working around the need to stop the ioservice by just polling with short timeouts) </p> <p> <strong>Testcase</strong> Providing a destilled testcase is unfortuantly difficult. However, you can use solarpowerlog to see the issue. I commmited also sample configuration which allows a easy reproduction of the issue. See the git tree here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>. </p> <p> If you have debian, you can install the build-dependencies by <strong>apt-get build-dep solarpowerlog</strong> Otherwise configure will tell you about missing deps :-) </p> <pre class="wiki">git clone git://solarpowerlog.git.sourceforge.net/gitroot/solarpowerlog/solarpowerlog cd solarpowerlog git checkout 47c079d3409c867287888f47bedb4f05b1c353b5 ./bootstrap.sh ./configure --enable-sharedcomms --enable-sputniksimulator --enable-dummyinverter make # in one shell (this one will not crash) src/solarpowerlog -c tools/sputnik_simulator/solarpowerlog_shared.conf # in another shell: (this one which will crash) src/solarpowerlog -c example_confs/solarpowerlog_shared_sim.conf </pre><p> After some seconds youl'll see the SEGV: </p> <pre class="wiki">12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null - virtual void CSharedConnectionSlave::Send(ICommand*): work: 0x7f2cb8003550 12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null - Not atomic 0x7f2cb8003550 12839 [0x7f2cc3345760] DEBUG inverter.Simulator2.Comms_SharedConnection.SharedTarget null - virtual void CSharedConnectionSlave::Send(ICommand*): submitting work: 0x7f2cb8003550 12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - virtual bool CConnectTCPAsio::AbortAll() Aborting 0 backlog entries 12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - virtual bool CConnectTCPAsio::AbortAll() Done 12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - Ticket for this command is: 0 (current ticket is 0) 12839 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - CSharedConnectionMaster::Send() ICmd: 0x7f2cb8003550 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - ioservice stopped (1) 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - Waiting for work 12964 [0x7f2cbfea1700] DEBUG inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - ioservice stopped 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): now handling: 0x7f2cb8003550 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 1 12964 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - virtual void CSharedConnectionMaster::ExecuteCommand(const ICommand*) now handling: 0x7f2cb8004460 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2 12964 [0x7f2cc3345760] DEBUG inverter.Simulator.Comms_SharedConnection. null - virtual void CSharedConnectionMaster::ExecuteCommand(const ICommand*) rescheduling read: 0x7f2cb8003e30 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2e 12964 [0x7f2cbfea1700] TRACE inverter.Simulator.Comms_SharedConnection..Comms_TCP_ASIO null - void CConnectTCPAsio::HandleSend(CAsyncCommand*): still alive 2f src/solarpowerlog Segmentation fault. </pre><p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="http://sourceforge.net/projects/solarpowerlog/"><span class="icon">​</span>http://sourceforge.net/projects/solarpowerlog/</a> </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> <a class="ext-link" href="http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=commit;h=47c079d3409c867287888f47bedb4f05b1c353b5"><span class="icon">​</span>http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=commit;h=47c079d3409c867287888f47bedb4f05b1c353b5</a> </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a> <a class="ext-link" href="http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=blob;f=src/Connections/CConnectTCPAsio.cpp;h=5e3b0a1b13b66cc07e491ed98ad7dfe1f3cc5277;hb=47c079d3409c867287888f47bedb4f05b1c353b5"><span class="icon">​</span>http://solarpowerlog.git.sourceforge.net/git/gitweb.cgi?p=solarpowerlog/solarpowerlog;a=blob;f=src/Connections/CConnectTCPAsio.cpp;h=5e3b0a1b13b66cc07e491ed98ad7dfe1f3cc5277;hb=47c079d3409c867287888f47bedb4f05b1c353b5</a> </p> tobi@… https://svn.boost.org/trac10/ticket/7580 https://svn.boost.org/trac10/ticket/7580 Report #7579: whole numbers => natural numbers Sat, 27 Oct 2012 12:30:24 GMT Sat, 16 Feb 2013 12:54:13 GMT <blockquote class="citation"> <p> A numeric type is integer if the abstract values it represent are whole numbers. </p> </blockquote> <p> Should say "natural numbers" </p> Dave Abrahams https://svn.boost.org/trac10/ticket/7579 https://svn.boost.org/trac10/ticket/7579 Report #7574: Boost iostreams documentation has too many spell misses Thu, 25 Oct 2012 22:26:39 GMT Thu, 25 Oct 2012 22:26:39 GMT <p> I have listed the spell misses I found in the boost iostreams documentation below (I tried e-mailing Jonathan Turkanis directly, but the e-mail address on the website seems to be not used anymore): </p> <p> I know this may sound trivial, but I think the overall quality of the site can be improved by fixing spelling errors. </p> <blockquote class="citation"> <p> 2.1.4. Writing a container_device </p> </blockquote> <p> indicates how off is <em> interpretted: </em></p> <p> characters in the conatiner </p> <p> The implementation of seek is striaghforward. </p> <blockquote class="citation"> <p> 2.2.10. Finite State Filters </p> </blockquote> <p> Boost Metaprogamming library </p> <blockquote class="citation"> <p> 3.1 Concepts </p> </blockquote> <p> Boost.Iostreams prvides several </p> <blockquote class="citation"> <p> 3.3 Generic Streams and Stream Buffers </p> </blockquote> <p> A C++ standard library charatcer traits type </p> <p> Assocaites the given instance of T </p> <blockquote class="citation"> <p> 3.5 Code Conversion </p> </blockquote> <p> encapulates code conversion </p> <p> store charatcres </p> <blockquote class="citation"> <p> 3.6 Asynchronous and Non-Blocking I/O </p> </blockquote> <p> synchronous and asynychronous </p> <p> with both aynchronous and non-blocking i/o </p> <blockquote class="citation"> <p> 3.8 Pipelines </p> </blockquote> <blockquote> <p> filter-or-device consiting of </p> </blockquote> <blockquote class="citation"> <p> 3.9 Views </p> </blockquote> <p> represnt the component </p> <blockquote class="citation"> <p> 3.10 Exceptions </p> </blockquote> <p> thrown are propogated by the public </p> <p> the implementor has a choice </p> <p> convey aditional information </p> <p> exception is rasied due </p> <p> propogated as-is </p> spe56nw9@… https://svn.boost.org/trac10/ticket/7574 https://svn.boost.org/trac10/ticket/7574 Report #7573: Missing operator++, --, % Thu, 25 Oct 2012 17:27:40 GMT Fri, 13 Sep 2013 11:12:28 GMT <p> As reported on the boost-users list &lt;<a class="ext-link" href="https://groups.google.com/forum/?fromgroups=#!msg/boost-list/-8COkmhO_0w/10IGPCxOe4AJ"><span class="icon">​</span>https://groups.google.com/forum/?fromgroups=#!msg/boost-list/-8COkmhO_0w/10IGPCxOe4AJ</a>&gt;, </p> <p> It would be nice if quantity&lt;incrementable type&gt; could increment that type -- same for decrement and modulus. </p> <p> The attached patch seems to work in my local copy -- it would be nice to get rolled into a future release, however. </p> nathan.crookston@… https://svn.boost.org/trac10/ticket/7573 https://svn.boost.org/trac10/ticket/7573 Report #7572: boost::gregorian::to_tm() does not fill in tm_gmtoff and tm_zone fields of the resulting std::tm structure Thu, 25 Oct 2012 14:55:10 GMT Thu, 25 Oct 2012 14:55:10 GMT <p> On Fedora 15 (and maybe on other OSes), std::tm contains fields describing the time zone: </p> <pre class="wiki">#ifdef __USE_BSD long int tm_gmtoff; /* Seconds east of UTC. */ __const char *tm_zone; /* Timezone abbreviation. */ #else long int __tm_gmtoff; /* Seconds east of UTC. */ __const char *__tm_zone; /* Timezone abbreviation. */ #endif </pre><p> boost::gregorian::to_tm() (and boost::posix_time::to_tm() respectively) does not fill in these fields. So these fields contain garbage. Other code can be misleaded with values of these uninitialized fields. </p> izimenkov@… https://svn.boost.org/trac10/ticket/7572 https://svn.boost.org/trac10/ticket/7572 Report #7568: Unused parameter and shadowed member warnings in errors.hpp Wed, 24 Oct 2012 21:24:06 GMT Wed, 24 Oct 2012 21:33:26 GMT <p> This code </p> <pre class="wiki">#include &lt;boost/program_options/errors.hpp&gt; int main(int, char *[]) { return 0; } </pre><p> compiled with </p> <pre class="wiki">gcc -I/path/to/boost -c -Wunused-parameter -Wshadow test.cxx </pre><p> produces a warning about an unused parameter and several warnings about shadowed class members: </p> <pre class="wiki">/opt/local/include/boost/program_options/errors.hpp:253: warning: unused parameter 'option_name' /opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_syntax::invalid_syntax(boost::program_options::invalid_syntax::kind_t, const std::string&amp;, const std::string&amp;, int)': /opt/local/include/boost/program_options/errors.hpp:311: warning: declaration of 'kind' shadows a member of 'this' /opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_config_file_syntax::invalid_config_file_syntax(const std::string&amp;, boost::program_options::invalid_syntax::kind_t)': /opt/local/include/boost/program_options/errors.hpp:331: warning: declaration of 'kind' shadows a member of 'this' /opt/local/include/boost/program_options/errors.hpp: In constructor 'boost::program_options::invalid_command_line_syntax::invalid_command_line_syntax(boost::program_options::invalid_syntax::kind_t, const std::string&amp;, const std::string&amp;, int)': /opt/local/include/boost/program_options/errors.hpp:350: warning: declaration of 'kind' shadows a member of 'this' </pre><p> This was compile on Mac Snow Leopard, gcc 4.2.1 with the boost distribution from macports (although I doubt any of that matters). </p> Kenneth Moreland <kmorel@…> https://svn.boost.org/trac10/ticket/7568 https://svn.boost.org/trac10/ticket/7568 Report #7567: Shadow warnings in timer.hpp Wed, 24 Oct 2012 20:48:50 GMT Wed, 24 Oct 2012 20:48:50 GMT <p> This code </p> <pre class="wiki">#include &lt;boost/timer/timer.hpp&gt; int main(int, char *[]) { return 0; } </pre><p> compiled with </p> <pre class="wiki">gcc -I/path/to/boost -c -Wshadow test.cxx </pre><p> produces several warnings about shadowed class members: </p> <pre class="wiki">/opt/local/include/boost/timer/timer.hpp: In member function 'std::string boost::timer::cpu_timer::format(short int, const std::string&amp;) const': /opt/local/include/boost/timer/timer.hpp:74: warning: declaration of 'format' shadows a member of 'this' /opt/local/include/boost/timer/timer.hpp: In constructor 'boost::timer::auto_cpu_timer::auto_cpu_timer(std::ostream&amp;, short int, const std::string&amp;)': /opt/local/include/boost/timer/timer.hpp:103: warning: declaration of 'format' shadows a member of 'this' /opt/local/include/boost/timer/timer.hpp:103: warning: declaration of 'places' shadows a member of 'this' /opt/local/include/boost/timer/timer.hpp: In constructor 'boost::timer::auto_cpu_timer::auto_cpu_timer(std::ostream&amp;, const std::string&amp;)': /opt/local/include/boost/timer/timer.hpp:107: warning: declaration of 'format' shadows a member of 'this' </pre><p> This was compile on Mac Snow Leopard, gcc 4.2.1 with the boost distribution from <a class="missing wiki">MacPorts</a> (although I doubt any of that matters). </p> Kenneth Moreland <kmorel@…> https://svn.boost.org/trac10/ticket/7567 https://svn.boost.org/trac10/ticket/7567 Report #7565: BOOST_MPL_CFG_HAS_TYPEOF should be defined for recent ICC versions Wed, 24 Oct 2012 16:38:36 GMT Tue, 11 Jun 2013 17:10:59 GMT <p> Attached are: </p> <p> 1) A program listing that fails to compile with 'icc -DBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -DBOOST_MPL_LIMIT_VECTOR_SIZE=50 z.cpp'. It would pass if BOOST_MPL_CFG_HAS_TYPEOF were defined. </p> <p> 2) A proposed patch. </p> lukeocamden@… https://svn.boost.org/trac10/ticket/7565 https://svn.boost.org/trac10/ticket/7565 Report #7564: filesystem::path passed to GTest's assertion leads to stack overflow Wed, 24 Oct 2012 16:25:22 GMT Tue, 30 Oct 2012 14:44:27 GMT <p> The following code: </p> <pre class="wiki">boost::filesystem::path p1("c:\\123"), p2("c:\\987"); ASSERT_EQ(p1, p2); </pre><p> leads to stack overflow. It's because when GTest prints the assertion values it examines <code>path</code> as a container and try to print its items which are also <code>path</code> instances. This leads to recursion and stack overflow. </p> <p> Most probably, the problem should be solved at Gtest side, but personal I think the design when <code>path</code> consist of <code>path</code>s (infinite recursion) is not very good and should be fixed. </p> oliora@… https://svn.boost.org/trac10/ticket/7564 https://svn.boost.org/trac10/ticket/7564 Report #7563: slex CONTLINE options parse keyword with backslash Wed, 24 Oct 2012 14:42:43 GMT Wed, 24 Oct 2012 14:42:43 GMT <p> I'm using the slex, wrapped by boost::wave library, and it's very very cool. but I got a problem when using it. that is it seems slex cannot process the following macro correctly: </p> <p> #define M else\ </p> <blockquote> <p> +1 </p> </blockquote> <p> the macro content is irrelevant, the point is slex treats "else\" as a whole as code detailed in the attachment. </p> gongyiling3468@… https://svn.boost.org/trac10/ticket/7563 https://svn.boost.org/trac10/ticket/7563 Report #7561: bzip2_compressor does not play nicely with either direction of filtering_stream Wed, 24 Oct 2012 08:38:43 GMT Wed, 24 Oct 2012 08:38:43 GMT <p> With boost::iostreams::filtering_stream&lt;boost::iostreams::input&gt;, bzip2_compressor's output is always empty. With boost::iostreams::filtering_stream&lt;boost::iostreams::output&gt;, bzip2_compressor segfaults on an empty input. </p> <p> I'm attaching a program that on my machine reproduces this issue. </p> <p> Bugs that seem related: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2411" title="#2411: Bugs: bzip2_compressor does not work with filtering_istream (closed: fixed)">#2411</a>, <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3348" title="#3348: Bugs: SEGV in ~bzip2_decompressor() (closed: fixed)">#3348</a>, <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5237" title="#5237: Bugs: filtering_ostream produce incorrect empty files with gzip_compressor ... (closed: fixed)">#5237</a> </p> Alexander van Gessel (AI0867) <ai0867@…> https://svn.boost.org/trac10/ticket/7561 https://svn.boost.org/trac10/ticket/7561 Report #7558: MPI missing symbols using serialization's static library design Tue, 23 Oct 2012 16:01:52 GMT Tue, 01 Jan 2013 11:26:28 GMT <p> On Mac OS X Lion, we're seeing errors when linking our application using Boost.MPI. The application is rather large and uses Boost.Serialization for both checkpoint/restart and MPI communication. The checkpoint/restart bits made serialization a bit of a disaster in terms of compile times (due to headers including basically every other header in the project). To solve that problem, we followed the Boost.Serialization advice on static libraries. </p> <p> On Lion (and possibly elsewhere, but definitely on Lion) using the gcc front-end (i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)), we're seeing link failures due to serialization calls for MPI archivers not being found when compiling with -O2 or higher on Boost 1.50.0 and 1.51.0: </p> <blockquote> <p> CXXLD sst.x </p> </blockquote> <p> Undefined symbols for architecture x86_64: </p> <blockquote> <p> "void SST::Introspector::serialize&lt;boost::mpi::packed_iarchive&gt;(boost::mpi::packed_iarchive&amp;, unsigned int)", referenced from: </p> <blockquote> <p> boost::archive::detail::iserializer&lt;boost::mpi::packed_iarchive, </p> </blockquote> </blockquote> <p> SST::Introspector&gt;::load_object_data(boost::archive::detail::basic_iarchive &amp;, void*, unsigned int) const in introspectedComponent.o </p> <blockquote> <p> boost::archive::detail::iserializer&lt;boost::mpi::packed_iarchive, </p> </blockquote> <p> SST::Introspector&gt;::load_object_data(boost::archive::detail::basic_iarchive &amp;, void*, unsigned int) consti n simulation.o </p> <p> While I could simply explicitly instantiate the missing archivers, that seems like a bad idea for something in the detail namespace and it appears that the list of archivers I'd need to instantiate has changed over time. The mailing list suggested that this sounded like a bug and that I should file a bug report. </p> <p> I've attached a test case that shows the problem. It's essentially the Boost.Serialization demo_pimpl example, but using MPI instead of a text archiver. </p> Brian Barrett <bwbarre@…> https://svn.boost.org/trac10/ticket/7558 https://svn.boost.org/trac10/ticket/7558 Report #7551: unused local variable in_str in tz_db_base.hpp Mon, 22 Oct 2012 08:09:20 GMT Thu, 01 Jan 1970 00:00:00 GMT <p> trivial unused in_str variable </p> Caolán McNamara <caolanm@…> https://svn.boost.org/trac10/ticket/7551 https://svn.boost.org/trac10/ticket/7551 Report #7549: uBLAS banded storage does not match common BLAS layout (from netlib) Sun, 21 Oct 2012 20:38:11 GMT Wed, 02 Apr 2014 14:52:36 GMT <p> A banded_matrix stores the elements in an unusual way. This makes it impossible to call standard BLAS-libraries with these matrix type. </p> <p> Example data taken from <a class="ext-link" href="http://www.netlib.org/lapack/lug/node124.html"><span class="icon">​</span>http://www.netlib.org/lapack/lug/node124.html</a> </p> <pre class="wiki">Running banded_matrix &lt; column_major &gt; test Full matrix [5,5]((11,12,0,0,0),(21,22,23,0,0),(31,32,33,34,0),(0,42,43,44,45),(0,0,53,54,55)) data() of matrix 0 12 23 34 45 11 22 33 44 55 21 32 43 54 0 31 42 53 0 0 Expected data() of matrix 0 11 21 31 12 22 32 42 23 33 43 53 34 44 54 0 45 55 0 0 </pre><pre class="wiki">Running banded_matrix &lt; row_major &gt; test Full matrix [5,5]((11,12,0,0,0),(21,22,23,0,0),(31,32,33,34,0),(0,42,43,44,45),(0,0,53,54,55)) data() of matrix 0 11 21 31 12 22 32 42 23 33 43 53 34 44 54 0 45 55 0 0 Expected data() of matrix 0 0 11 12 0 21 22 23 31 32 33 34 42 43 44 45 53 54 55 0 </pre> Gunter https://svn.boost.org/trac10/ticket/7549 https://svn.boost.org/trac10/ticket/7549 Report #7548: Impossible to query for std::vector<double> converter registration Sun, 21 Oct 2012 19:20:18 GMT Sun, 02 Jun 2013 18:02:16 GMT <p> I have been hitting this wall for some months now and produced some minimalistic code that shows the problem: </p> <pre class="wiki">#include &lt;boost/python.hpp&gt; #include &lt;vector&gt; #include &lt;iostream&gt; std::vector&lt;double&gt; list_of_doubles() { std::vector&lt;double&gt; retval; retval.push_back(3); retval.push_back(2); return retval; } // Instantiate the core module. BOOST_PYTHON_MODULE(boost_debug) { //We check if a converter for std::vector has been registered boost::python::type_info info = boost::python::type_id&lt;std::vector&lt;double&gt; &gt;(); const boost::python::converter::registration* reg = boost::python::converter::registry::query(info); //We output to screen the result (should be NULL) std::cout &lt;&lt; reg &lt;&lt; " "; //We also expose a function that needs such a conversion (to_python) using namespace boost::python; def("list_of_doubles",list_of_doubles); } </pre><p> in python: </p> <pre class="wiki">import boost_debug </pre><p> and the result (which should be zero) is instead an address: 0x7f9bc3c4c600 </p> <p> Even more absurdly, if we comment the line "def("list_of_doubles",list_of_doubles);" things actually go back to normality. </p> Dario Izzo <dario.izzo@…> https://svn.boost.org/trac10/ticket/7548 https://svn.boost.org/trac10/ticket/7548 Report #7545: filesystem::path::filename() specification wrong? Sun, 21 Oct 2012 15:12:14 GMT Sun, 21 Oct 2012 15:12:14 GMT <p> According to the <a href="http://www.boost.org/doc/libs/1_51_0/libs/filesystem/doc/reference.html#Definitions">definition</a> section of the boost::filesystem documentation, </p> <ul><li>a <strong>path</strong> consists of a root-name, a root-directory and (as relative-path) a sequence of filenames (all optional) </li><li>a <strong>filename</strong> is the name of a file, with slashes explicitly forbidden as part of the filename </li></ul><p> With these definitions, paths consisting entirely of root-name and/or root-directory parts (like <code> "//net"</code>, <code> "//net/" </code> and <code> "/"</code>) do not contain filenames. </p> <p> On the other hand, the specification of path::filename() says </p> <blockquote> <p> <em> Returns: </em> <code> empty() ? path() : *--end() </code> </p> </blockquote> <p> without discrimination between the different parts. Consequently, </p> <ul><li><code> Path("//net").filename() == Path("//net") </code> </li><li><code> Path("/").filename() == Path("/") </code> </li></ul><p> instead of the expected empty <code>Path()</code>, and containing the forbidden slash. </p> <p> <strong>Proposed fix:</strong> <br /> To become consistent with the definitions, path::filename() should be specified as follows: </p> <blockquote> <p> <em> Returns: </em> <code> relative_path().empty() ? path() : *--end() </code> </p> </blockquote> Stefan Große Pawig <boost@…> https://svn.boost.org/trac10/ticket/7545 https://svn.boost.org/trac10/ticket/7545 Report #7543: Expose range protocol for boost::iostreams::mapped_file Sun, 21 Oct 2012 09:59:31 GMT Sun, 21 Oct 2012 09:59:31 GMT <p> It will be convenience that <code>boost::iostreams::mapped_file</code> expose a <code>boost::range</code> protocol using either member function or free function </p> zhuo.qiang@… https://svn.boost.org/trac10/ticket/7543 https://svn.boost.org/trac10/ticket/7543 Report #7538: boost::spirit::istream_iterator does not handle incrememt correctly at the end Sun, 21 Oct 2012 03:12:10 GMT Sat, 09 May 2015 23:08:23 GMT <p> <code>boost::spirit::istream_iterator</code> (or its super class <code>multi_pass</code> )does not handle incrememt correctly at the end position. One more end char will be yielded which is incorrect: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;sstream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/spirit/include/support_istream_iterator.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/test/minimal.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">test_main</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span><span class="p">[])</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">istringstream</span> <span class="n">in</span><span class="p">(</span><span class="s">&quot;12&quot;</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">spirit</span><span class="o">::</span><span class="n">istream_iterator</span> <span class="n">it</span><span class="p">(</span><span class="n">in</span><span class="p">),</span> <span class="n">end</span><span class="p">;</span> <span class="n">BOOST_CHECK</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="o">++</span> <span class="o">==</span> <span class="sc">&#39;1&#39;</span><span class="p">);</span> <span class="n">BOOST_CHECK</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="o">++</span> <span class="o">==</span> <span class="sc">&#39;2&#39;</span><span class="p">);</span> <span class="c1">// it should be end now, however it failed</span> <span class="n">BOOST_CHECK</span><span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">end</span><span class="p">);</span> <span class="c1">// !failed here</span> <span class="c1">// and yield the last char once more</span> <span class="n">BOOST_CHECK</span><span class="p">(</span><span class="o">*</span><span class="n">it</span> <span class="o">!=</span> <span class="sc">&#39;2&#39;</span><span class="p">);</span> <span class="c1">// !failed here</span> <span class="c1">// only after another dereference will it really equal to end</span> <span class="n">BOOST_CHECK</span><span class="p">(</span><span class="n">it</span> <span class="o">==</span> <span class="n">end</span><span class="p">);</span> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> The output is: </p> <pre class="wiki">test.cpp(14): test it == end failed in function: 'int test_main(int, char **)' test.cpp(16): test *it != '2' failed in function: 'int test_main(int, char **)' **** 2 errors detected </pre><p> <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6750" title="#6750: Bugs: istream_iterator in spirit might have defect (closed: fixed)">#6750</a> may be a duplicated issue. </p> <p> Reproducable under: </p> <ul><li>Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn) </li><li>Target: x86_64-apple-darwin12.2.0 </li><li>With C++ 11 turn on: "-std=c++11 -stdlib=libc++" </li><li>Boost 1.52 and Boost Trunk rev.81030 </li></ul><p> </p> zhuo.qiang@… https://svn.boost.org/trac10/ticket/7538 https://svn.boost.org/trac10/ticket/7538 Report #7536: Fails to Compile under OSX 10.8 Fri, 19 Oct 2012 20:52:58 GMT Tue, 09 Aug 2016 00:13:18 GMT <p> I am trying to install the Boost libraries on a <a class="missing wiki">MacBook</a> Pro running 10.8. This produces compiler errors. Any help you can give me would be appreciated. The output of ./b2 is below: </p> <p> Building the Boost C++ Libraries. </p> <p> Performing configuration checks </p> <ul><li>32-bit : no </li><li>64-bit : yes </li><li>x86 : yes </li><li>has_icu builds : no </li></ul><p> warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam </p> <ul><li>iconv (libc) : no </li><li>iconv (separate) : yes </li><li>icu : no </li><li>icu (lib64) : no </li><li>gcc visibility : yes </li><li>long double support : yes </li></ul><p> warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message. </p> <p> Component configuration: </p> <ul><li>chrono : building </li><li>context : building </li><li>date_time : building </li><li>exception : building </li><li>filesystem : building </li><li>graph : building </li><li>graph_parallel : building </li><li>iostreams : building </li><li>locale : building </li><li>math : building </li><li>mpi : building </li><li>program_options : building </li><li>python : building </li><li>random : building </li><li>regex : building </li><li>serialization : building </li><li>signals : building </li><li>system : building </li><li>test : building </li><li>thread : building </li><li>timer : building </li><li>wave : building </li></ul><p> ...patience... ...patience... ...patience... ...patience... ...found 8764 targets... ...updating 8 targets... darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o In file included from ./boost/property_tree/xml_parser.hpp:19:0, </p> <blockquote> <p> from libs/graph/src/graphml.cpp:20: </p> </blockquote> <p> ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp: In function ‘void boost::property_tree::xml_parser::read_xml_internal(std::basic_istream&lt;typename Ptree::key_type::value_type&gt;&amp;, Ptree&amp;, int, const std::string&amp;) [with Ptree = boost::property_tree::basic_ptree&lt;std::basic_string&lt;char&gt;, std::basic_string&lt;char&gt; &gt;, typename Ptree::key_type::value_type = char, typename Ptree::key_type::value_type = char, std::string = std::basic_string&lt;char&gt;]’: ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp:89:10: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See &lt;<a class="ext-link" href="http://gcc.gnu.org/bugs.html"><span class="icon">​</span>http://gcc.gnu.org/bugs.html</a>&gt; for instructions. </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -gdwarf-2 -fexceptions -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_GRAPH_DYN_LINK=1 -DNDEBUG -I"." -I"libs/graph/src" -c -o "bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o" "libs/graph/src/graphml.cpp" </p> </blockquote> <p> ...failed darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi/graphml.o... ...skipped &lt;pstage/lib&gt;libboost_graph.dylib for lack of &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/threading-multi&gt;graphml.o... darwin.link.dll bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib ld: warning: ignoring file <a class="missing wiki">/Library/Frameworks/Python</a>.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib, missing required architecture x86_64 in file <a class="missing wiki">/Library/Frameworks/Python</a>.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib (2 slices) Undefined symbols for architecture x86_64: </p> <blockquote> <p> "_PyCallable_Check", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::objects::class_base::make_method_static(char const*) in class.o </p> </blockquote> <p> "_PyDict_New", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::dict_base() in dict.o boost::python::detail::dict_base::dict_base() in dict.o _instance_get_dict in class.o </p> </blockquote> <p> "_PyType_Ready", referenced from: </p> <blockquote> <p> boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o _class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_metatype() in class.o boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;) in class.o ... </p> </blockquote> <p> "_PyLong_FromUnsignedLong", referenced from: </p> <blockquote> <p> boost::python::objects::class_base::set_instance_size(unsigned long) in class.o boost::python::objects::function_doc_signature_generator::parameter_string(boost::python::objects::py_function const&amp;, unsigned long, boost::python::api::object, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::pretty_signature(boost::python::objects::function const*, unsigned long, bool) in function_doc_signature.o </p> </blockquote> <p> "_PyObject_RichCompare", referenced from: </p> <blockquote> <p> boost::python::api::operator&gt;(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o boost::python::api::operator&gt;=(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o boost::python::api::operator&lt;(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o boost::python::api::operator&lt;=(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o boost::python::api::operator==(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o boost::python::api::operator!=(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyExc_ValueError", referenced from: </p> <blockquote> <p> boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o </p> </blockquote> <p> "_PyDict_Update", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::update(boost::python::api::object const&amp;) in dict.o </p> </blockquote> <p> "_PyExc_StopIteration", referenced from: </p> <blockquote> <p> boost::python::objects::stop_iteration_error() in iterator.o </p> </blockquote> <p> "<span class="underline">PyObject_New", referenced from: </span></p> <blockquote> <p> boost::python::objects::make_nurse_and_patient(_object*, _object*) in life_support.o </p> </blockquote> <p> "_PyObject_SetAttr", referenced from: </p> <blockquote> <p> boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o boost::python::api::setattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::delattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyDict_GetItemString", referenced from: </p> <blockquote> <p> boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o </p> </blockquote> <p> "_PyNumber_InPlaceRemainder", referenced from: </p> <blockquote> <p> boost::python::api::operator%=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyArg_ParseTupleAndKeywords", referenced from: </p> <blockquote> <p> _property_init in class.o </p> </blockquote> <p> "_PyMethod_New", referenced from: </p> <blockquote> <p> _function_descr_get in function.o </p> </blockquote> <p> "_PyObject_Size", referenced from: </p> <blockquote> <p> boost::python::objects::enum_base::export_values() in enum.o boost::python::objects::function::signature(bool) const in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::basic_string&lt;wchar_t, std::char_traits&lt;wchar_t&gt;, std::allocator&lt;wchar_t&gt; &gt;, boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::objects::function_doc_signature_generator::parameter_string(boost::python::objects::py_function const&amp;, unsigned long, boost::python::api::object, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::pretty_signature(boost::python::objects::function const*, unsigned long, bool) in function_doc_signature.o boost::python::objects::function_doc_signature_generator::function_doc_signatures(boost::python::objects::function const*) in function_doc_signature.o ... </p> </blockquote> <p> "_PyList_Sort", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::sort() in list.o </p> </blockquote> <p> "_PyCFunction_Type", referenced from: </p> <blockquote> <p> _function_get_class in function.o </p> </blockquote> <p> "_PyDict_Values", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::values() const in dict.o </p> </blockquote> <p> "_PyNumber_InPlaceSubtract", referenced from: </p> <blockquote> <p> boost::python::api::operator-=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyTuple_GetItem", referenced from: </p> <blockquote> <p> boost::python::objects::function::argument_error(_object*, _object*) const in function.o </p> </blockquote> <p> "_PyString_Size", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::python::converter::(anonymous namespace)::string_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyMem_Malloc", referenced from: </p> <blockquote> <p> boost::python::instance_holder::allocate(_object*, unsigned long, unsigned long) in class.o </p> </blockquote> <p> "_PyErr_Occurred", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::insert(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in list.o boost::python::detail::str_base::endswith(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;, boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::index(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::index(boost::python::api::object const&amp;, boost::python::api::object const&amp;) const in str.o ... </p> </blockquote> <p> "_PyInt_FromLong", referenced from: </p> <blockquote> <p> boost::python::numeric::aux::array_base::argmax(long) in numeric.o boost::python::numeric::aux::array_base::argmin(long) in numeric.o boost::python::numeric::aux::array_base::argsort(long) in numeric.o boost::python::numeric::aux::array_base::diagonal(long, long, long) const in numeric.o boost::python::numeric::aux::array_base::trace(long, long, long) const in numeric.o boost::python::numeric::aux::array_base::repeat(boost::python::api::object const&amp;, long) in numeric.o boost::python::numeric::aux::array_base::swapaxes(long, long) in numeric.o ... </p> </blockquote> <p> "_PyNumber_Subtract", referenced from: </p> <blockquote> <p> boost::python::api::operator-(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyErr_WarnEx", referenced from: </p> <blockquote> <p> boost::python::converter::registry::insert(_object* (*)(void const*), boost::python::type_info, _typeobject const* (*)()) in registry.o </p> </blockquote> <p> "_PySequence_SetSlice", referenced from: </p> <blockquote> <p> boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o </p> </blockquote> <p> "_Py_InitModule4_64", referenced from: </p> <blockquote> <p> boost::python::detail::init_module(char const*, void (*)()) in module.o </p> </blockquote> <p> "_PyString_FromString", referenced from: </p> <blockquote> <p> boost::python::detail::str_base::str_base() in str.o boost::python::detail::str_base::str_base() in str.o boost::python::detail::str_base::str_base(char const*) in str.o boost::python::detail::str_base::str_base(char const*) in str.o boost::python::converter::do_return_to_python(char const*) in builtin_converters.o </p> </blockquote> <p> "_PyType_IsSubtype", referenced from: </p> <blockquote> <p> boost::python::objects::find_instance_impl(_object*, boost::python::type_info, bool) in class.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;float, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;long double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o ... </p> </blockquote> <p> "_PyLong_AsLongLong", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;long long, boost::python::converter::(anonymous namespace)::long_long_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyLong_AsUnsignedLongLong", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned long long, boost::python::converter::(anonymous namespace)::unsigned_long_long_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyRun_FileExFlags", referenced from: </p> <blockquote> <p> boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o </p> </blockquote> <p> "_PyObject_IsInstance", referenced from: </p> <blockquote> <p> boost::python::numeric::aux::array_object_manager_traits::check(_object*) in numeric.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o _class_setattro in class.o boost::python::objects::module_prefix() in class.o </p> </blockquote> <p> "_PyErr_Clear", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o _instance_new in class.o boost::python::objects::function::call(_object*, _object*) const in function.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o boost::python::api::getattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyMethod_Type", referenced from: </p> <blockquote> <p> boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o </p> </blockquote> <p> "_PyNumber_InPlaceAdd", referenced from: </p> <blockquote> <p> boost::python::api::operator+=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyString_InternFromString", referenced from: </p> <blockquote> <p> _function_get_name in function.o </p> </blockquote> <p> "_PyFile_AsFile", referenced from: </p> <blockquote> <p> boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o </p> </blockquote> <p> "_PyObject_GetItem", referenced from: </p> <blockquote> <p> boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o boost::python::api::getitem(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&amp;, boost::python::handle&lt;_object&gt; const&amp;, boost::python::handle&lt;_object&gt; const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyType_GenericAlloc", referenced from: </p> <blockquote> <p> boost::python::objects::class_type_object in class.o </p> </blockquote> <p> "_PyImport_Import", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o </p> </blockquote> <p> "_PyClass_Type", referenced from: </p> <blockquote> <p> boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o </p> </blockquote> <p> "_PyLong_AsUnsignedLong", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned char&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned short, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned short&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned int, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned int&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned long, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned long&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "<span class="underline">PyType_Lookup", referenced from: </span></p> <blockquote> <p> _class_setattro in class.o </p> </blockquote> <p> "_PyNumber_InPlaceLshift", referenced from: </p> <blockquote> <p> boost::python::api::operator&lt;&lt;=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyLong_Type", referenced from: </p> <blockquote> <p> boost::python::detail::long_base::call(boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::call(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::long_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in long.o ... </p> </blockquote> <p> "_PyNumber_InPlaceDivide", referenced from: </p> <blockquote> <p> boost::python::api::operator/=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyDict_Size", referenced from: </p> <blockquote> <p> boost::python::objects::function::call(_object*, _object*) const in function.o </p> </blockquote> <p> "_PyObject_ClearWeakRefs", referenced from: </p> <blockquote> <p> _instance_dealloc in class.o </p> </blockquote> <p> "_PyExc_RuntimeError", referenced from: </p> <blockquote> <p> _no_init in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o boost::python::detail::pure_virtual_called() in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o </p> </blockquote> <p> "_PyList_New", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::list_base() in list.o boost::python::detail::list_base::list_base() in list.o </p> </blockquote> <p> "_PyNumber_Lshift", referenced from: </p> <blockquote> <p> boost::python::api::operator&lt;&lt;(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyTuple_Type", referenced from: </p> <blockquote> <p> boost::python::detail::tuple_base::call(boost::python::api::object const&amp;) in tuple.o boost::python::detail::tuple_base::tuple_base(boost::python::api::object const&amp;) in tuple.o boost::python::detail::tuple_base::tuple_base(boost::python::api::object const&amp;) in tuple.o global constructors keyed to tuple.cpp in tuple.o boost::python::detail::converter_target_type&lt;boost::python::to_python_value&lt;boost::python::tuple const&amp;&gt; &gt;::get_pytype() in pickle_support.o </p> </blockquote> <p> "_PyNumber_Divide", referenced from: </p> <blockquote> <p> boost::python::api::operator/(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyErr_ExceptionMatches", referenced from: </p> <blockquote> <p> boost::python::api::getattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "<span class="underline">Py_NoneStruct", referenced from: </span></p> <blockquote> <p> global constructors keyed to numeric.cpp in numeric.o global constructors keyed to list.cpp in list.o global constructors keyed to long.cpp in long.o boost::python::detail::dict_base::get(boost::python::api::object const&amp;) const in dict.o global constructors keyed to dict.cpp in dict.o global constructors keyed to tuple.cpp in tuple.o global constructors keyed to str.cpp in str.o ... </p> </blockquote> <p> "_PyRun_StringFlags", referenced from: </p> <blockquote> <p> boost::python::eval(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_statement(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o </p> </blockquote> <p> "_PyString_FromStringAndSize", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::detail::str_base::str_base(char const*, char const*) in str.o boost::python::detail::str_base::str_base(char const*, char const*) in str.o boost::python::detail::str_base::str_base(char const*, unsigned long) in str.o boost::python::detail::str_base::str_base(char const*, unsigned long) in str.o boost::python::converter::do_return_to_python(char) in builtin_converters.o boost::python::tuple boost::python::make_tuple&lt;boost::python::str, boost::python::api::object, boost::python::str, boost::python::str, boost::python::str, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;(boost::python::str const&amp;, boost::python::api::object const&amp;, boost::python::str const&amp;, boost::python::str const&amp;, boost::python::str const&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) in function_doc_signature.o ... </p> </blockquote> <p> "_PyList_Append", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::append(boost::python::api::object const&amp;) in list.o </p> </blockquote> <p> "_PyTuple_New", referenced from: </p> <blockquote> <p> boost::python::detail::tuple_base::tuple_base() in tuple.o boost::python::detail::tuple_base::tuple_base() in tuple.o boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::function::function(boost::python::objects::py_function const&amp;, boost::python::detail::keyword const*, unsigned int) in function.o boost::python::objects::function::function(boost::python::objects::py_function const&amp;, boost::python::detail::keyword const*, unsigned int) in function.o boost::python::objects::function::signature(bool) const in function.o ... </p> </blockquote> <p> "_PyNumber_InPlaceRshift", referenced from: </p> <blockquote> <p> boost::python::api::operator&gt;&gt;=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyDict_GetItem", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::get(boost::python::api::object const&amp;) const in dict.o boost::python::objects::function::call(_object*, _object*) const in function.o </p> </blockquote> <p> "_PyObject_DelItem", referenced from: </p> <blockquote> <p> boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::delitem(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyNumber_InPlaceAnd", referenced from: </p> <blockquote> <p> boost::python::api::operator&amp;=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyObject_GetAttr", referenced from: </p> <blockquote> <p> boost::python::api::getattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyType_Type", referenced from: </p> <blockquote> <p> boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o _class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_metatype() in class.o boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;) in class.o ... </p> </blockquote> <p> "_PyExc_ImportError", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o </p> </blockquote> <p> "_PyEval_GetGlobals", referenced from: </p> <blockquote> <p> boost::python::eval(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_statement(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o </p> </blockquote> <p> "_PyNumber_Rshift", referenced from: </p> <blockquote> <p> boost::python::api::operator&gt;&gt;(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyList_Reverse", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::reverse() in list.o </p> </blockquote> <p> "_PyMem_Free", referenced from: </p> <blockquote> <p> _instance_dealloc in class.o boost::python::instance_holder::deallocate(_object*, void*) in class.o </p> </blockquote> <p> "_PyString_Type", referenced from: </p> <blockquote> <p> boost::python::detail::str_base::call(boost::python::api::object const&amp;) in str.o boost::python::detail::str_base::str_base(boost::python::api::object const&amp;) in str.o boost::python::detail::str_base::str_base(boost::python::api::object const&amp;) in str.o global constructors keyed to str.cpp in str.o boost::python::converter::(anonymous namespace)::string_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::wrap_pytype&lt;&amp;PyString_Type&gt;::get_pytype() in builtin_converters.o </p> </blockquote> <p> "_PyExc_TypeError", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&amp;, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o boost::python::converter::registration::get_class_object() const in registry.o ... </p> </blockquote> <p> "_PyUnicodeUCS2_FromEncodedObject", referenced from: </p> <blockquote> <p> _encode_string_unaryfunc in builtin_converters.o </p> </blockquote> <p> "_PyNumber_InPlaceXor", referenced from: </p> <blockquote> <p> boost::python::api::operator<sup>=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </sup></p> </blockquote> <p> "_PyProperty_Type", referenced from: </p> <blockquote> <p> _class_setattro in class.o boost::python::objects::static_data() in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&amp;, char const*) in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&amp;, boost::python::api::object const&amp;, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in class.o </p> </blockquote> <p> "_PyBool_FromLong", referenced from: </p> <blockquote> <p> boost::python::numeric::aux::array_base::factory(boost::python::api::object const&amp;, boost::python::api::object const&amp;, bool, bool, boost::python::api::object, boost::python::api::object) in numeric.o boost::python::objects::class_base::enable_pickling_(bool) in class.o </p> </blockquote> <p> "_PyNumber_Add", referenced from: </p> <blockquote> <p> boost::python::api::operator+(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyErr_NoMemory", referenced from: </p> <blockquote> <p> boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o </p> </blockquote> <p> "_PyFile_FromString", referenced from: </p> <blockquote> <p> boost::python::exec_file(boost::python::str, boost::python::api::object, boost::python::api::object) in exec.o </p> </blockquote> <p> "_PyInt_Type", referenced from: </p> <blockquote> <p> _enum_str in enum.o boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::converter::(anonymous namespace)::signed_int_rvalue_from_python_base::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python_base::get_pytype() in builtin_converters.o </p> </blockquote> <p> "_PyNumber_InPlaceMultiply", referenced from: </p> <blockquote> <p> boost::python::api::operator*=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PySequence_GetSlice", referenced from: </p> <blockquote> <p> boost::python::api::getslice(boost::python::api::object const&amp;, boost::python::handle&lt;_object&gt; const&amp;, boost::python::handle&lt;_object&gt; const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyBool_Type", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::bool_rvalue_from_python::get_pytype() in builtin_converters.o </p> </blockquote> <p> "_PyExc_ReferenceError", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&amp;, char const*) in from_python.o </p> </blockquote> <p> "_PyDict_Copy", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::copy() in dict.o </p> </blockquote> <p> "<span class="underline">Py_NotImplementedStruct", referenced from: </span></p> <blockquote> <p> boost::python::objects::(anonymous namespace)::not_implemented(_object*, _object*) in function.o </p> </blockquote> <p> "_PyModule_Type", referenced from: </p> <blockquote> <p> boost::python::objects::module_prefix() in class.o </p> </blockquote> <p> "_PyComplex_Type", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::complex_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o ... </p> </blockquote> <p> "_PyObject_IsTrue", referenced from: </p> <blockquote> <p> boost::python::objects::(anonymous namespace)::new_enum_type(char const*, char const*) in enum.o boost::python::objects::enum_base::to_python(_typeobject*, long) in enum.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o _function_get_doc in function.o boost::python::objects::function::signature(bool) const in function.o boost::python::objects::function::add_overload(boost::python::handle&lt;boost::python::objects::function&gt; const&amp;) in function.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o ... </p> </blockquote> <p> "_PyNumber_Remainder", referenced from: </p> <blockquote> <p> boost::python::api::operator%(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyComplex_ImagAsDouble", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyWeakref_NewRef", referenced from: </p> <blockquote> <p> boost::python::objects::make_nurse_and_patient(_object*, _object*) in life_support.o </p> </blockquote> <p> "_PyList_Insert", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::insert(long, boost::python::api::object const&amp;) in list.o </p> </blockquote> <p> "_PyNumber_Multiply", referenced from: </p> <blockquote> <p> boost::python::api::operator*(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyImport_ImportModule", referenced from: </p> <blockquote> <p> boost::python::import(boost::python::str) in import.o </p> </blockquote> <p> "_PyExc_OverflowError", referenced from: </p> <blockquote> <p> boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned char&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned short, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned short&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned int, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned int&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned long, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned long&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyErr_SetString", referenced from: </p> <blockquote> <p> _no_init in class.o _static_data_descr_set in class.o _function_get_module in function.o boost::python::detail::pure_virtual_called() in function.o boost::python::(anonymous namespace)::instance_reduce(boost::python::api::object) in pickle_support.o boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;unsigned char, boost::python::converter::(anonymous namespace)::unsigned_int_rvalue_from_python&lt;unsigned char&gt; &gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o ... </p> </blockquote> <p> "_PyInt_AsLong", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::index(boost::python::api::object const&amp;) const in list.o boost::python::detail::list_base::insert(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::count(boost::python::api::object const&amp;) const in list.o boost::python::detail::str_base::endswith(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;, boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::find(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) const in str.o ... </p> </blockquote> <p> "_PySequence_DelSlice", referenced from: </p> <blockquote> <p> boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o </p> </blockquote> <p> "_PyIter_Next", referenced from: </p> <blockquote> <p> boost::python::objects::stl_input_iterator_impl::stl_input_iterator_impl(boost::python::api::object const&amp;) in stl_iterator.o boost::python::objects::stl_input_iterator_impl::stl_input_iterator_impl(boost::python::api::object const&amp;) in stl_iterator.o boost::python::objects::stl_input_iterator_impl::increment() in stl_iterator.o </p> </blockquote> <p> "_PyErr_SetObject", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&amp;, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::registration::to_python(void const volatile*) const in registry.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o ... </p> </blockquote> <p> "_PyDict_Keys", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::keys() const in dict.o </p> </blockquote> <p> "_PyBaseObject_Type", referenced from: </p> <blockquote> <p> boost::python::objects::class_type() in class.o boost::python::objects::(anonymous namespace)::new_class(char const*, unsigned long, boost::python::type_info const*, char const*) in class.o </p> </blockquote> <p> "_PyString_FromFormat", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::lvalue_result_from_python(_object*, boost::python::converter::registration const&amp;, char const*) in from_python.o boost::python::converter::rvalue_result_from_python(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;) in from_python.o boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&amp;, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::throw_no_reference_from_python(_object*, boost::python::converter::registration const&amp;) in from_python.o boost::python::converter::registration::to_python(void const volatile*) const in registry.o _enum_repr in enum.o ... </p> </blockquote> <p> "_PyExc_AttributeError", referenced from: </p> <blockquote> <p> _static_data_descr_set in class.o _function_get_module in function.o boost::python::api::getattr(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyObject_CallMethod", referenced from: </p> <blockquote> <p> boost::python::detail::str_base::capitalize() const in str.o boost::python::detail::str_base::center(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::expandtabs() const in str.o boost::python::detail::str_base::expandtabs(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::join(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::ljust(boost::python::api::object const&amp;) const in str.o boost::python::detail::str_base::lower() const in str.o ... </p> </blockquote> <p> "_PyStaticMethod_New", referenced from: </p> <blockquote> <p> boost::python::objects::class_base::make_method_static(char const*) in class.o </p> </blockquote> <p> "_PyErr_Format", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o boost::python::pytype_check(_typeobject*, _object*) in from_python.o boost::python::converter::registration::get_class_object() const in registry.o boost::python::objects::class_base::make_method_static(char const*) in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o </p> </blockquote> <p> "_PyObject_SetItem", referenced from: </p> <blockquote> <p> boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::setitem(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyFloat_Type", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::float_rvalue_from_python::get_pytype() in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;float, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;long double, boost::python::converter::(anonymous namespace)::float_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::convertible(_object*) in builtin_converters.o ... </p> </blockquote> <p> "<span class="underline">PyEval_SliceIndex", referenced from: </span></p> <blockquote> <p> boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&amp;, boost::python::handle&lt;_object&gt; const&amp;, boost::python::handle&lt;_object&gt; const&amp;) in object_protocol.o </p> </blockquote> <p> "_PyObject_CallFunction", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::call(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&amp;) in list.o boost::python::detail::long_base::call(boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::call(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in long.o boost::python::detail::long_base::long_base() in long.o boost::python::detail::long_base::long_base() in long.o ... </p> </blockquote> <p> "_PyNumber_Or", referenced from: </p> <blockquote> <p> boost::python::api::operator|(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyUnicodeUCS2_AsWideChar", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::basic_string&lt;wchar_t, std::char_traits&lt;wchar_t&gt;, std::allocator&lt;wchar_t&gt; &gt;, boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyDict_Items", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::items() const in dict.o </p> </blockquote> <p> "_PyDict_Type", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::call(boost::python::api::object const&amp;) in dict.o boost::python::detail::dict_base::dict_base(boost::python::api::object const&amp;) in dict.o boost::python::detail::dict_base::dict_base(boost::python::api::object const&amp;) in dict.o boost::python::detail::dict_base::clear() in dict.o boost::python::detail::dict_base::copy() in dict.o boost::python::detail::dict_base::get(boost::python::api::object const&amp;) const in dict.o boost::python::detail::dict_base::items() const in dict.o ... </p> </blockquote> <p> "_PyObject_SetAttrString", referenced from: </p> <blockquote> <p> boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&amp;, char const*) in class.o boost::python::objects::class_base::add_property(char const*, boost::python::api::object const&amp;, boost::python::api::object const&amp;, char const*) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;) in class.o boost::python::objects::class_base::add_static_property(char const*, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in class.o boost::python::objects::class_base::setattr(char const*, boost::python::api::object const&amp;) in class.o boost::python::objects::class_base::def_no_init() in class.o boost::python::objects::class_base::enable_pickling_(bool) in class.o ... </p> </blockquote> <p> "_PyExc_IndexError", referenced from: </p> <blockquote> <p> boost::python::handle_exception_impl(boost::function0&lt;void&gt;) in errors.o </p> </blockquote> <p> "_PyNumber_And", referenced from: </p> <blockquote> <p> boost::python::api::operator&amp;(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PyObject_GetAttrString", referenced from: </p> <blockquote> <p> boost::python::numeric::(anonymous namespace)::load(bool) in numeric.o _enum_repr in enum.o _instance_new in class.o boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o boost::python::api::getattr(boost::python::api::object const&amp;, char const*) in object_protocol.o boost::python::api::getattr(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;) in object_protocol.o boost::python::detail::wrapper_base::get_override(char const*, _typeobject*) const in wrapper.o ... </p> </blockquote> <p> "_PyString_AsString", referenced from: </p> <blockquote> <p> _enum_repr in enum.o boost::python::converter::(anonymous namespace)::convert_to_cstring(_object*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::python::converter::(anonymous namespace)::string_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyStaticMethod_Type", referenced from: </p> <blockquote> <p> boost::python::objects::function::add_to_namespace(boost::python::api::object const&amp;, char const*, boost::python::api::object const&amp;, char const*) in function.o </p> </blockquote> <p> "_PyCFunction_NewEx", referenced from: </p> <blockquote> <p> boost::python::objects::class_base::def_no_init() in class.o </p> </blockquote> <p> "_PyList_Type", referenced from: </p> <blockquote> <p> boost::python::detail::list_base::call(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::list_base(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::append(boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::insert(long, boost::python::api::object const&amp;) in list.o boost::python::detail::list_base::reverse() in list.o boost::python::detail::list_base::sort() in list.o ... </p> </blockquote> <p> "_PyErr_NewException", referenced from: </p> <blockquote> <p> boost::python::objects::function::argument_error(_object*, _object*) const in function.o </p> </blockquote> <p> "_PyDict_Clear", referenced from: </p> <blockquote> <p> boost::python::detail::dict_base::clear() in dict.o </p> </blockquote> <p> "_PyUnicode_Type", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python::get_pytype() in builtin_converters.o </p> </blockquote> <p> "_PyComplex_RealAsDouble", referenced from: </p> <blockquote> <p> boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;float&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::complex&lt;long double&gt;, boost::python::converter::(anonymous namespace)::complex_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*) in builtin_converters.o </p> </blockquote> <p> "_PyTuple_Size", referenced from: </p> <blockquote> <p> boost::python::objects::function::argument_error(_object*, _object*) const in function.o boost::python::objects::function::call(_object*, _object*) const in function.o </p> </blockquote> <p> "_PyNumber_Xor", referenced from: </p> <blockquote> <p> boost::python::api::operator<sup>(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in object_operators.o </sup></p> </blockquote> <p> "_PyEval_CallFunction", referenced from: </p> <blockquote> <p> boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in numeric.o boost::python::numeric::aux::array_base::array_base(boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;, boost::python::api::object const&amp;) in numeric.o ... </p> </blockquote> <p> "_PyNumber_InPlaceOr", referenced from: </p> <blockquote> <p> boost::python::api::operator|=(boost::python::api::object&amp;, boost::python::api::object const&amp;) in object_operators.o </p> </blockquote> <p> "_PySlice_New", referenced from: </p> <blockquote> <p> boost::python::detail::slice_base::slice_base(_object*, _object*, _object*) in slice.o boost::python::detail::slice_base::slice_base(_object*, _object*, _object*) in slice.o boost::python::api::(anonymous namespace)::assign_slice(_object*, _object*, _object*, _object*) in object_protocol.o boost::python::api::getslice(boost::python::api::object const&amp;, boost::python::handle&lt;_object&gt; const&amp;, boost::python::handle&lt;_object&gt; const&amp;) in object_protocol.o </p> </blockquote> </blockquote> <p> ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status </p> <blockquote> <p> "g++" -dynamiclib -Wl,-single_module -install_name "libboost_python.dylib" -L"<a class="missing wiki">/Library/Frameworks/Python</a>.framework/Versions/2.6/lib" -L"<a class="missing wiki">/Library/Frameworks/Python</a>.framework/Versions/2.6/lib/python2.6/config" -o "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/numeric.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/list.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/long.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/dict.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/tuple.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/str.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/slice.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/from_python.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/registry.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/type_id.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/enum.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/class.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/function.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/inheritance.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/life_support.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/pickle_support.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/errors.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/module.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/builtin_converters.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/converter/arg_to_python_base.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/iterator.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/stl_iterator.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object_protocol.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object_operators.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/wrapper.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/import.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/exec.o" "bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/object/function_doc_signature.o" -lpython2.6 -headerpad_max_install_names -Wl,-dead_strip -no_dead_strip_inits_and_terms </p> </blockquote> <p> ...failed darwin.link.dll bin.v2/libs/python/build/darwin-4.5.0/release/threading-multi/libboost_python.dylib... ...skipped &lt;pstage/lib&gt;libboost_python.dylib for lack of &lt;pbin.v2/libs/python/build/darwin-4.5.0/release/threading-multi&gt;libboost_python.dylib... darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o In file included from ./boost/property_tree/xml_parser.hpp:19:0, </p> <blockquote> <p> from libs/graph/src/graphml.cpp:20: </p> </blockquote> <p> ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp: In function ‘void boost::property_tree::xml_parser::read_xml_internal(std::basic_istream&lt;typename Ptree::key_type::value_type&gt;&amp;, Ptree&amp;, int, const std::string&amp;) [with Ptree = boost::property_tree::basic_ptree&lt;std::basic_string&lt;char&gt;, std::basic_string&lt;char&gt; &gt;, typename Ptree::key_type::value_type = char, typename Ptree::key_type::value_type = char, std::string = std::basic_string&lt;char&gt;]’: ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp:89:10: internal compiler error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See &lt;<a class="ext-link" href="http://gcc.gnu.org/bugs.html"><span class="icon">​</span>http://gcc.gnu.org/bugs.html</a>&gt; for instructions. </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -I"libs/graph/src" -c -o "bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o" "libs/graph/src/graphml.cpp" </p> </blockquote> <p> ...failed darwin.compile.c++ bin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi/graphml.o... ...skipped &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi&gt;libboost_graph.a(clean) for lack of &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi&gt;graphml.o... ...skipped &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi&gt;libboost_graph.a for lack of &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi&gt;graphml.o... ...skipped &lt;pstage/lib&gt;libboost_graph.a for lack of &lt;pbin.v2/libs/graph/build/darwin-4.5.0/release/link-static/threading-multi&gt;libboost_graph.a... ...failed updating 3 targets... ...skipped 5 targets... </p> roberts@… https://svn.boost.org/trac10/ticket/7536 https://svn.boost.org/trac10/ticket/7536 Report #7535: filesystem::path::iterator inconsistency with multiple leading separators Fri, 19 Oct 2012 19:31:16 GMT Fri, 19 Oct 2012 19:31:16 GMT <p> Iterating backwards through a filesystem::path does not terminate at path::begin() if the path starts with several leading directory separators. </p> <p> For example: </p> <pre class="wiki">#include &lt;boost/filesystem.hpp&gt; #include &lt;iostream&gt; int main() { boost::filesystem::path p("/////foo"); boost::filesystem::path::iterator i = p.begin(); ++i; --i; std::cout &lt;&lt; ((i == p.begin()) ? "same" : "different") &lt;&lt; std::endl; } </pre><p> Expected output: <code>same</code> <br /> Actual output: <code>different</code> </p> <p> Looking at the source (filesystem/src/path.cpp), it seems that in path::begin() the iterator's m_pos member is set to the position of the last leading directory separator. </p> <p> During backward iteration, m_pos is set to 0, though, so the iterator comparison (which involves comparing the m_pos members) yields false. </p> Stefan Große Pawig <boost@…> https://svn.boost.org/trac10/ticket/7535 https://svn.boost.org/trac10/ticket/7535 Report #7534: Iostreams filter for LZMA2 (XZ) Fri, 19 Oct 2012 18:22:50 GMT Sun, 08 Apr 2018 07:55:22 GMT <p> I propose a standard LZMA2 (XZ) filter implementation for the Iostreams library. </p> <p> LZMA2 provides much better compression than gz and bzip2. XZ is the default package format in Slackware GNU/Linux. 7-Zip, the most popular file compressor for Windows also uses LZMA2. </p> <p> The source code of liblzma is found <a class="ext-link" href="http://tukaani.org/xz/"><span class="icon">​</span>here</a>. </p> <p> A sample implementation of a Boost Iostream filter for lzma can be found in the <a class="ext-link" href="http://fusecompress.sourcearchive.com/documentation/2.6.git913897f4-1ubuntu1/files.html"><span class="icon">​</span>fusecompress source</a>. </p> <p> I think it would be a big advantage because XZ is an upcoming file format which is used more and more in areas and by applications where saving bandwidth, memory or physical storage is important. </p> spixxi https://svn.boost.org/trac10/ticket/7534 https://svn.boost.org/trac10/ticket/7534 Report #7533: Quickbook build fails without bjam --hash if filenames are too long Fri, 19 Oct 2012 14:11:34 GMT Fri, 19 Oct 2012 17:44:16 GMT <p> Quickbook documentation (usually when using both Doxygen and auto-indexing)can cause filenames to become too long so xsltproc fails to process correctly. </p> <p> A sample of the format of an error message is shown below. </p> <p> The issue can be triggered by deep nesting of folders, creating very long filename, and will often only occur when autoindex is added with --enable-index (thereby increasing folder depth). The problem was very puzzling to diagnose because it occured with apparently identical files on different systems! </p> <p> The 'cure' is to use the undocumented bjam --hash option (which compresses the filename). </p> <p> This ticket is to provide a record of this in Trac and to request that the --hash option be documented. </p> <p> Building the Odeint docs with automatic index generation enabled. ...patience... ...patience... ...found 1925 targets... ...updating 8 targets... doxygen-action bin\msvc-10.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\reference-xml.xml-dir </p> <p> &lt;snip&gt; </p> <p> finished... xslt-xsltproc.windows bin\msvc-10.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\reference-xml.doxygen <a class="ext-link" href="file:///I%3A/boost-sandbox/odeint-v2/libs/numeric/odeint/doc/bin/msvc-10.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/reference-xml/index.xml:2067"><span class="icon">​</span>file:///I%3A/boost-sandbox/odeint-v2/libs/numeric/odeint/doc/bin/msvc-10.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/reference-xml/index.xml:2067</a>: parser error : Opening and ending tag mismatch: compound line 1792 and doxygenindex &lt;/doxygenindex&gt; </p> <blockquote> <p> <sup> </sup></p> </blockquote> Paul A. Bristow https://svn.boost.org/trac10/ticket/7533 https://svn.boost.org/trac10/ticket/7533 Report #7526: zip_iterator does not support std::tuple and std::pair Thu, 18 Oct 2012 10:05:27 GMT Fri, 16 Mar 2018 18:40:55 GMT <p> The boost zip_iterator is not compatible with std::tuple and std::pair </p> <p> The proposed patch solves this problem. </p> <p> Note that I copied some more general tuple algorithms I created for another project. These are all included in the newly introduced namespace helper. Maybe they can be rewritten using boost::mpl, but since I am not familiar with it I used the existing code. </p> <p> Furthermore I encountered the problem, that a specialisation of the template functions in namespace tuple_impl_specific does not work, if this is done outside zip_iterator.hpp. The reason appears to be, that the user overloads are not known to the compiler, when the functions are called. This may be a problem, if users want to specialise for their own tuple class. To overcome this difficulty, I replaced the template functions by template classes, which seem to work even if specialisations are made outside zip_iterator.hpp </p> claas.koehler@… https://svn.boost.org/trac10/ticket/7526 https://svn.boost.org/trac10/ticket/7526 Report #7524: Assertion Fail: map/set iterators incompatible (msvc-8) Wed, 17 Oct 2012 21:32:39 GMT Fri, 01 Nov 2013 20:15:17 GMT <p> Two regression tests fail in msvc-8 with this error: </p> <p> Debug Assertion Failed: </p> <blockquote> <p> xtree line 293: Expression: map/set iterators incompatible </p> </blockquote> <p> Tests failing: </p> <blockquote> <p> test3_mvov </p> </blockquote> <blockquote> <p> test_inplace_solve_mvov </p> </blockquote> jim@… https://svn.boost.org/trac10/ticket/7524 https://svn.boost.org/trac10/ticket/7524 Report #7522: bootstrap.bat fails when TMP/TEMP folder contains a space in the path on Windows Wed, 17 Oct 2012 16:36:26 GMT Wed, 17 Oct 2012 17:52:46 GMT <p> To reproduce: (on Windows 7 x64 machine with vs2010) </p> <ol><li>set TEMP=C:\Program Files\Temp </li><li>set TMP=%TEMP% </li><li>bootstrap </li></ol><p> Gives error. Bootstrap.log shows that "Files\Temp\_CL_xxxx.obj" not found, indicating a problem with ' ' in path. </p> David Hait <dhait@…> https://svn.boost.org/trac10/ticket/7522 https://svn.boost.org/trac10/ticket/7522 Report #7520: boost::interprocess::ipcdetail::truncate_file does not support 64bit size Wed, 17 Oct 2012 14:53:16 GMT Wed, 17 Oct 2012 14:53:16 GMT <p> As far as truncate_file accepts size_t variable, it will be impossible to re-size file to size greater than 2GB in the x32 application. </p> <p> Here is signature: inline bool truncate_file (file_handle_t hnd, std::size_t size) </p> Dmytro Ovdiienko <dmitriyovdienko@…> https://svn.boost.org/trac10/ticket/7520 https://svn.boost.org/trac10/ticket/7520 Report #7517: indirect_streambuf: invalid state change if write() writes less data then requested Wed, 17 Oct 2012 10:07:03 GMT Wed, 17 Oct 2012 10:07:03 GMT <p> Currently indirect_streambuf::sync_impl() calls setp() to update pbase() without any regard to current pbase() value. With unreliable write() it will lead to buffer consistency loss and data duplication if write() doesn't satisfy request fully two or more times in a row. </p> <p> As a solution setp() should use pbase() as current buffer begin instead of out().begin(). See patch. </p> Oleg Liatte <oleg.liatte@…> https://svn.boost.org/trac10/ticket/7517 https://svn.boost.org/trac10/ticket/7517 Report #7508: Boost timezonedb incorrect Brazil DST specification Mon, 15 Oct 2012 17:14:11 GMT Mon, 15 Oct 2012 17:14:11 GMT <p> Today our applications running in Brazil have the incorrect time. We tracked it down to an error in the boost date_time_zonespec.csv specification for America/Sao_Paulo. It specifies that the DST change starts on the second Sunday of October (yesterday). However, it actually starts on the third Sunday (see the attached document from exchange). I downloaded the latest version of boost (1.51), and it is also incorrect there. Also note that Linux does have the correct time. I intend to submit a bug report to Boost, but I don’t know if you prefer if the external communication to go through your team. </p> <p> Incorrect: "America/Sao_Paulo","BRT","BRT","BRST","BRST","-03:00:00","+01:00:00","2;0;10","+00:00:00","3;0;2","+00:00:00" </p> <p> Should be (for all BRST): "America/Sao_Paulo","BRT","BRT","BRST","BRST","-03:00:00","+01:00:00","3;0;10","+00:00:00","3;0;2","+00:00:00" </p> anonymous https://svn.boost.org/trac10/ticket/7508 https://svn.boost.org/trac10/ticket/7508 Report #7507: BGL subgraph copy constructor buggy Mon, 15 Oct 2012 14:45:45 GMT Tue, 16 Oct 2012 08:59:02 GMT <p> Hello, </p> <p> I store subgraph objects in a std::list. </p> <p> After this, most of the data contained in subgraphs are lost. </p> <p> Attached is a minimalist code that creates a root graph and two childen, and then displays them directly, then insert them into a (copy-on-write) list, then displays them again. </p> <p> The root redisplays too much, and children lose data. </p> <p> I am on MacOSX with gcc 6; maybe on other platforms the copy would not happen, since I don't modify the graphs between insertion and display. </p> <p> Here is my output: </p> <pre class="wiki"> From the stack: (root) graph: 6(0,2) 4(1,2) num_edges= 2 subgraph: 0(0,1) num_edges= 1 subgraph: 0(0,1) num_edges= 1 From list: graph: 0(0,1) 1(1,2) 2(1,3) 6(2,5) 3(4,1) 4(4,5) 5(5,3) num_edges= 7 graph: num_edges= 0 graph: num_edges= 0 </pre> Amyn Bennamane <amynbe@…> https://svn.boost.org/trac10/ticket/7507 https://svn.boost.org/trac10/ticket/7507 Report #7504: boost::interprocess::basic_vectorbuf calls std::char_traits<char>::pbump() with potentially mismatching data type Sun, 14 Oct 2012 22:57:17 GMT Sun, 14 Oct 2012 22:57:17 GMT <p> <code>boost::interprocess::basic_vectorbuf::seekoff()</code> makes a call to <code>base_t::pbump()</code>, but the datatypes (may) mismatch for the parameter (and do on my system). <code>std::char_traits&lt;char&gt;::pbump()</code> takes an <code>int</code> (according to the standard), but <code>basic_vectorbuf()</code> is passing it a value of type <code>CharTraits::off_type</code>, which is implementation defined. Since <code>std::char_traits&lt;char&gt;::off_type</code> is <code>__int64</code> on my system, I am getting a warning about a conversion from <code>__int64</code> to <code>int</code>. </p> <p> I don't know what the most appropriate solution is (maybe just a <code>static_cast</code>), but it would be nice to have this resolved so I can get back down to 0 warnings in my codebase. </p> <p> I am using Visual Studio 2010 and the latest Boost (and I just check svn trunk and it has the same issue). I get this warning when creating a <code>boost::interprocess::basic_vectorstream</code> like so: </p> <p> <code>basic_vectorstream&lt;std::vector&lt;char&gt;, std::char_traits&lt;char&gt;&gt; vs;</code> </p> mbradshaw@… https://svn.boost.org/trac10/ticket/7504 https://svn.boost.org/trac10/ticket/7504 Report #7502: Planarity test runs in quadratic time on some graphs Sat, 13 Oct 2012 16:45:19 GMT Sat, 13 Oct 2012 19:52:39 GMT <p> The planarity test in the graph library (boyer_myrvold_planarity_test) seems to run in quadratic time for a certain class of graph. </p> <p> I attached a program that demonstrates the problem. The program reads number N from stdin, generates a certain graph and runs the planarity test on it. </p> <p> The graph is a bipartite graph K_{2,n} with some additional edges -- specifically, 2 "left" vertices of the bipartite graph are connected with an edge and n "right" vertices form a path. Note that the order of edge insertion matters -- the problem disappears if we change it. </p> <p> Unfortunately I don't understand the planarity test enough to fix the problem. What I established (and what makes me believe it runs in quadratic time) is that for my graph in function walkdown (in planar_details/boyer_myrvold_impl.hpp; I understand the function is called once for each vertex) there is a loop on line 663 that is executed k times when the function was called for (k+1)-th time. This loop seems to have to do with Kuratowski subgraph detection, but I can't say anything more about it. </p> <p> My configuration is Mac OS 10.8 with <a class="missing wiki">MacPorts</a>, g++ 4.7 and boost 1.51. I also reproduced it on some Linux and Windows configurations. </p> Jan Hązła <jan.hazla@…> https://svn.boost.org/trac10/ticket/7502 https://svn.boost.org/trac10/ticket/7502 Report #7494: boost::replace_all is very slow on debug build when Format size is big Thu, 11 Oct 2012 09:28:38 GMT Mon, 11 Jul 2016 21:34:40 GMT <p> Method boost::replace_all(SequenceT&amp; Input, const Range1T&amp; Search, const Range2T&amp; Format) on debug build takes very long time when Format size is about 300k. On call stack I can see push_front for every char. </p> <p> When I use std::find and std::replace in loop it is cca 10 times faster. </p> <p> I have Boost library 1.45, Visual Studio 2010, Win7 x64 SP1, 6-core CPU. </p> Jan Vonasek <jan.vonasek@…> https://svn.boost.org/trac10/ticket/7494 https://svn.boost.org/trac10/ticket/7494 Report #7483: Exception 'T' is not a legal base class Mon, 08 Oct 2012 14:06:18 GMT Thu, 17 Jan 2013 00:09:47 GMT <p> You might be getting this error for all kinds of reasons. Please provide complete source code of your test, or close the bug. </p> xaviergxf@… https://svn.boost.org/trac10/ticket/7483 https://svn.boost.org/trac10/ticket/7483 Report #7482: Build from source with MinGW on Windows Sun, 07 Oct 2012 18:46:34 GMT Fri, 29 Mar 2013 17:26:09 GMT <blockquote> <p> Hello, I've trying to build boost with mingw, and I've got error, when <code>--layout=system</code> option is used. </p> </blockquote> <p> check out (with cygwin): </p> <pre class="wiki">&gt; svn co http://svn.boost.org/svn/boost/trunk boost-trunk &gt; svnversion 80897 </pre><p> build (windows cmd.exe): </p> <pre class="wiki">&gt; g++ --version g++ (Built by MinGW-builds projects) 4.7.1 &gt; cd boost-trunk &gt; .\bootstrap gcc </pre><p> build with <code>--layout=tagged</code> works fine: </p> <pre class="wiki">&gt; .\b2 --toolset=gcc --layout=tagged </pre><p> but build with <code>--layout=system</code> failed: </p> <pre class="wiki">&gt; .\b2 --toolset=gcc --layout=system ... error: Duplicate name of actual target: &lt;pstage\lib&gt;libboost_atomic.a error: previous virtual target { common%common.copy-libboost_atomic.a.STATIC_LIB { gcc%gcc.archive-libboost_atomic.a.STATIC_LIB { gcc%gcc.compile.c++- lockpool.o.OBJ { lockpool.cpp.CPP } } } } error: created from ./stage-proper error: another virtual target { common%common.copy-libboost_atomic.a.STATIC_LIB { gcc%gcc.archive-libboost_atomic.a.STATIC_LIB { gcc%gcc.compile.c++-l ockpool.o.OBJ { lockpool.cpp.CPP } } } } error: created from ./stage-proper error: added properties: &lt;debug-symbols&gt;off &lt;define&gt;NDEBUG &lt;inlining&gt;full &lt;optimization&gt;speed &lt;runtime-debugging&gt;off &lt;variant&gt;release error: removed properties: &lt;debug-symbols&gt;on &lt;inlining&gt;off &lt;optimization&gt;off &lt;runtime-debugging&gt;on &lt;variant&gt;debug M:/boost-trunk/tools/build/v2/build\virtual-target.jam:491: in actualize-no-scanner from module object(file-target)@4808 M:/boost-trunk/tools/build/v2/build\virtual-target.jam:134: in object(file-target)@4808.actualize from module object(file-target)@4808 M:/boost-trunk/tools/build/v2\build-system.jam:736: in load from module build-system M:\boost-trunk\tools\build\v2/kernel\modules.jam:289: in import from module modules M:\boost-trunk\tools\build\v2/kernel/bootstrap.jam:139: in boost-build from module M:\boost-trunk\boost-build.jam:17: in module scope from module </pre> RusBaratov@… https://svn.boost.org/trac10/ticket/7482 https://svn.boost.org/trac10/ticket/7482 Report #7481: lambda_tests.test fails to compile with BOOST_RESULT_OF_USE_DECLTYPE Sun, 07 Oct 2012 18:39:50 GMT Sun, 07 Oct 2012 18:46:47 GMT <p> <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/5687" title="#5687: Bugs: some evaluation functions do not work with BOOST_RESULT_OF_USE_DECLTYPE (reopened)">#5687</a> (some evaluation functions do not work with <code>BOOST_RESULT_OF_USE_DECLTYPE</code>) is generally fixed by Eric recently. But <code>libs/phoenix/scope/lambda_tests.cpp</code> fails to compile on gcc 4.4-4.8 and clang 2.8-3.0 with <code>BOOST_RESULT_OF_USE_DECLTYPE</code>. Eric also reported it fails to compile on MSVC with <code>BOOST_RESULT_OF_USE_DECLTYPE</code>. </p> <p> The compilation succeeds on clang 3.1-3.2 (which have N3276 decltype support). </p> Michel Morin https://svn.boost.org/trac10/ticket/7481 https://svn.boost.org/trac10/ticket/7481 Report #7476: Use of Boost.Filesystem without building as separate library. Sun, 07 Oct 2012 04:26:12 GMT Sun, 07 Oct 2012 04:26:12 GMT <p> It is really tedious to use Boost.Filesystem (and possibly other non-header-only boost library, e.g. Boost.System) in a program because it needs to be built separately. I think it should be possible to add source files of Boost.Filesystem library to project so that Boost.Filesystem sources are built as a part of program itself. This will remove the dependency of building Boost.Filesystem as a separate library and so it will be as good as a header-only library. I have tried this and it seems to be working after commenting out #define BOOST_FILESYSTEM_SOURCE from source files. </p> sacha@… https://svn.boost.org/trac10/ticket/7476 https://svn.boost.org/trac10/ticket/7476 Report #7475: Functions redeclared inline after been called Sat, 06 Oct 2012 13:06:56 GMT Sat, 06 Oct 2012 13:06:56 GMT <p> THe following warnings appear with intel-12.1.3 compiler </p> <pre class="wiki">../../../boost/system/error_code.hpp(489): remark #522: function "boost::system::error_category::default_error_condition" redeclared "inline" after being called inline error_condition error_category::default_error_condition( int ev ) const ^ ../../../boost/system/error_code.hpp(494): remark #522: function "boost::system::error_category::equivalent(int, const boost::system::error_condition &amp;) const" redeclared "inline" after being called inline bool error_category::equivalent( int code, ^ ../../../boost/system/error_code.hpp(500): remark #522: function "boost::system::error_category::equivalent(const boost::system::error_code &amp;, int) const" redeclared "inline" after being called inline bool error_category::equivalent( const error_code &amp; code, ^ </pre><p> See the attached patch that solves the issue. </p> viboes https://svn.boost.org/trac10/ticket/7475 https://svn.boost.org/trac10/ticket/7475 Report #7469: Parallel Graph: redistribute() does not compile for bidirected graphs Thu, 04 Oct 2012 13:32:07 GMT Thu, 04 Oct 2012 13:32:07 GMT <p> Trying to to use redistribute on a adjacency_list with the bidirectionalS tag leeds to compile erros. </p> <p> I tracked down the problem to the point, that there is a additional internal property on vertices for this type of graphs. This property is not properly handeled during the call of redistribute. Attached is a patch including a test. </p> Christoph Koke <c.koke@…> https://svn.boost.org/trac10/ticket/7469 https://svn.boost.org/trac10/ticket/7469 Report #7468: asio/detail/config.hpp defines _WIN32_WINNT even under WinCE Thu, 04 Oct 2012 13:30:05 GMT Thu, 04 Oct 2012 13:30:05 GMT <p> Boost.Asio defines _WIN32_WINNT macro even under WinCE environment (_WIN32_WCE == 0x500, Visual Studio 2008). </p> <pre class="wiki"># if !defined(_WIN32_WINNT) &amp;&amp; !defined(_WIN32_WINDOWS) # if defined(_MSC_VER) || defined(__BORLANDC__) # pragma message( \ "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\ "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\ "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\ "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).") # else // defined(_MSC_VER) || defined(__BORLANDC__) # warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. # warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line. # warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target). # endif // defined(_MSC_VER) || defined(__BORLANDC__) # define _WIN32_WINNT 0x0501 # endif // !defined(_WIN32_WINNT) &amp;&amp; !defined(_WIN32_WINDOWS) </pre><p> Maybe it would better to add some UNDER_CE check here? </p> listhex@… https://svn.boost.org/trac10/ticket/7468 https://svn.boost.org/trac10/ticket/7468 Report #7453: Dead link in date::time docs Mon, 01 Oct 2012 18:33:16 GMT Mon, 01 Oct 2012 18:33:16 GMT <p> In the list of references </p> <p> <a class="ext-link" href="http://boost-sandbox.sourceforge.net/doc/html/date_time/details.html#date_time.references"><span class="icon">​</span>http://boost-sandbox.sourceforge.net/doc/html/date_time/details.html#date_time.references</a> </p> <p> the link to Will Linden's list of calendar links </p> <p> <a class="ext-link" href="http://www.ecben.net/calendar.shtml"><span class="icon">​</span>http://www.ecben.net/calendar.shtml</a> </p> <p> is a dead link. </p> wlandry@… https://svn.boost.org/trac10/ticket/7453 https://svn.boost.org/trac10/ticket/7453 Report #7451: clang-linux.jam : cflags/cxxflags feature is added twice to compiler's command line (other features possibly as well) Mon, 01 Oct 2012 10:34:53 GMT Mon, 01 Oct 2012 10:34:53 GMT <p> The crux of the issue appears to be here: </p> <p> --- clang-linux.jam.orig 2012-10-01 20:31:55.253818173 +1000 +++ clang-linux.jam 2012-10-01 20:29:05.048627617 +1000 @@ -66,8 +66,8 @@ </p> <blockquote> <p> ############################################################################### # Flags </p> </blockquote> <p> -toolset.flags clang-linux.compile OPTIONS &lt;cflags&gt; ; -toolset.flags clang-linux.compile OPTIONS &lt;cxxflags&gt; ; +#toolset.flags clang-linux.compile OPTIONS &lt;cflags&gt; ; +#toolset.flags clang-linux.compile OPTIONS &lt;cxxflags&gt; ; </p> <blockquote> <p> toolset.flags clang-linux.compile OPTIONS &lt;optimization&gt;off : ; toolset.flags clang-linux.compile OPTIONS &lt;optimization&gt;speed : -O3 ; </p> </blockquote> <p> Flags are apparently already added by the "base" module and then again by the inherited one (does it make sense?). </p> oakad@… https://svn.boost.org/trac10/ticket/7451 https://svn.boost.org/trac10/ticket/7451 Report #7450: Buggy rounded_arith.hpp Mon, 01 Oct 2012 10:33:56 GMT Mon, 01 Oct 2012 10:33:56 GMT <p> The rounded_arith file is currently buggy, because it misses an explicit this-&gt; to some function calls (due to the evolution in template compilation of g++ since version 4.0). I attach the small patch to get it working. </p> Luca Di Gaspero <l.digaspero@…> https://svn.boost.org/trac10/ticket/7450 https://svn.boost.org/trac10/ticket/7450 Report #7440: boost::filesystem compile error on solaris 10 Fri, 28 Sep 2012 14:57:09 GMT Mon, 21 Oct 2013 14:52:05 GMT <p> It fails to compile on gcc 4.7.2 with compile flags cxxflags=-std=c++0x<br /> </p> <p> libs/filesystem/src/operations.cpp: In function 'void boost::filesystem::detail: :permissions(const boost::filesystem::path&amp;, boost::filesystem::perms, boost::system::error_code*)': libs/filesystem/src/operations.cpp:1412:11: error: '::fchmodat' has not been declared </p> <p> in line 1410 there is:<br /> </p> <pre class="wiki">&amp;&amp; !(defined(__SUNPRO_CC) || defined(sun)) \ </pre><p> proper check for solaris would be:<br /> </p> <pre class="wiki">&amp;&amp; !(defined(__SUNPRO_CC) || defined(sun) || defined(__sun)) \ </pre> aleksandar.vukajlovic@… https://svn.boost.org/trac10/ticket/7440 https://svn.boost.org/trac10/ticket/7440 Report #7436: Missing python dlls Thu, 27 Sep 2012 10:00:38 GMT Thu, 27 Sep 2012 10:00:38 GMT <p> Dears, </p> <p> When I am building boost 1.50 using: </p> <p> b2 --toolset=msvc-9.0 --build-type=complete --without-mpi --build-dir=..\lib_msvc9_x86_p26 --stagedir=..\lib_msvc9_x86_p26 install </p> <p> boost-python dlls are not created. in version 1.45 they had been created. </p> <p> How can I build boost-python dlls? There are boost python static libs. There are other dlls present (e.g. boost-system), so it is rather boost-python package problem or special case of boost build tool chain. </p> <p> Also there is general problem that mentioned commanline options are not creating delivery folder with all important binaries as it was in the past. </p> <p> Regards, Seweryn Habdank-Wojewodzki. </p> habdank@… https://svn.boost.org/trac10/ticket/7436 https://svn.boost.org/trac10/ticket/7436 Report #7433: MSVC runtime check fix in crc Thu, 27 Sep 2012 08:30:53 GMT Fri, 22 Feb 2013 07:23:26 GMT <p> With MSVC in debug mode and runtime checks enabled, we encounter an issue in crc.hpp. </p> <p> Please find attached a simple patch against boost 1.51.0 which fixes this issue. </p> Franz Detro <franz.detro@…> https://svn.boost.org/trac10/ticket/7433 https://svn.boost.org/trac10/ticket/7433 Report #7424: Request for more Accumulators rolling capabilities Wed, 26 Sep 2012 12:27:57 GMT Wed, 26 Sep 2012 12:27:57 GMT <p> Hello, it would be really cool if the Boost.Accumulators library had other <code>rolling</code> features extending what already exists (<code>rolling_mean</code> etc.). My understanding of the wikipedia page on "algorithms for calculating variance" is that statistical moments could be calculated in a rolling manner. This is just a suggestion, thanks for everything! Arthur </p> Arthur https://svn.boost.org/trac10/ticket/7424 https://svn.boost.org/trac10/ticket/7424 Report #7420: If I call managed_shared_memory() function when I create a lot of objects, it ocurrs error. Tue, 25 Sep 2012 07:47:47 GMT Tue, 09 Oct 2012 21:42:00 GMT <p> I want to call managed_shared_memory(), when I create a lot of objects... however,it ocurrs error. In additional, it's too show to create shared memory and segment.. </p> <p> You can check a attached file. </p> <p> Should I call managed_shared_memory() only one time? </p> <p> please answer.. </p> anonymous https://svn.boost.org/trac10/ticket/7420 https://svn.boost.org/trac10/ticket/7420 Report #7417: Detailed test status is not available in the Boost.Test log (status, assertions, passed) and so live test case status cannot be tracked Mon, 24 Sep 2012 15:59:12 GMT Thu, 09 Mar 2017 12:25:41 GMT <p> Currently with Boost.Test it is not possible to use the test output to show detailed live test progress. By detailed I mean, test status, number of passed assertions and total number of assertions. This is because: </p> <ol><li>Only basic status information is provided through <code>stdout</code> (the Boost.Test log) as tests are proceeding. Notably just whether a test has started or a test has finished. </li><li>Detailed information is accessible by accessing the test report information captured as part of the Boost.Test report functionality which is typical sent to <code>stderr</code>. </li><li>Report data is only output when all tests are complete therefore this information cannot be used for live reporting. In other words a solution is not to listen on both <code>stdout</code> and <code>stderr</code> </li></ol><p> The attached patch adds additional test status information to the information sent to stdout - the Boost.Test log. This allows arbitrary test tools to be developed that interpret the test output for live test progress reporting. </p> <p> We use one such tool based on scons that allows us to view live test progress on the console. This is not possible with the current Boost.Test since detailed test status is not available until all cases have completed. </p> <p> This patch compliments the patches attached to: </p> <p> </p><div><dl class="wiki compact"><dt><a class="closed" href="/trac10/ticket/7397" title="Boost.Test, since boost 1.48 is using the deprecated Boost.Timer class">#7397</a></dt><dd>Boost.Test, since boost 1.48 is using the deprecated Boost.Timer class</dd><dt><a class="closed" href="/trac10/ticket/7410" title="Test Units (Cases and Suites) in Boost.Test do not capture __FILE__ ...">#7410</a></dt><dd>Test Units (Cases and Suites) in Boost.Test do not capture __FILE__ and __LINE__ at declaration point making it impossible to provide source file linking using external test management tools</dd></dl></div><p> </p> <p> and taken together allows for sophisticated test tools to be built on top of the Boost.Test output. </p> Jamie Allsop <ja11sop@…> https://svn.boost.org/trac10/ticket/7417 https://svn.boost.org/trac10/ticket/7417 Report #7411: Matrix with vector interface. Sat, 22 Sep 2012 23:02:12 GMT Sat, 22 Sep 2012 23:02:12 GMT <p> Sometimes it is useful to treat a matrix as a range of (independent) columns (or rows). Currently there is no iterator available that iterates over one dimension of the matrix and returns a full column/row as value. </p> <p> The attached files have been provided by Oswin Krause as a possible solution. </p> Gunter https://svn.boost.org/trac10/ticket/7411 https://svn.boost.org/trac10/ticket/7411 Report #7406: Documentation lists the wrong constructor for char_delimiters_separator Sat, 22 Sep 2012 07:15:09 GMT Sat, 22 Sep 2012 16:52:45 GMT <p> <a href="http://www.boost.org/doc/libs/1_39_0/libs/tokenizer/char_delimiters_separator.htm">http://www.boost.org/doc/libs/1_39_0/libs/tokenizer/char_delimiters_separator.htm</a> </p> <p> lists as the constructor: </p> <pre class="wiki">explicit char_delimiters_separator(bool return_delims = false, const Char* returnable = "",const Char* nonreturnable = "" ) </pre><p> when it is in fact: </p> <pre class="wiki">explicit char_delimiters_separator(bool return_delims = false, const Char* returnable = 0,const Char* nonreturnable = 0) </pre><p> from token_functions.hpp </p> Therefore <therefore@…> https://svn.boost.org/trac10/ticket/7406 https://svn.boost.org/trac10/ticket/7406 Report #7405: Coercion to multi_array_ref from array_view Fri, 21 Sep 2012 22:10:52 GMT Fri, 21 Sep 2012 22:10:52 GMT <p> I'd like to have functions that can be passed references to arrays of a given storage type and rank. Take a look at the following code: </p> <p> template &lt;class A&gt; void foo_duck(A ma) { </p> <blockquote> <p> ma<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = 1.0; </p> </blockquote> <p> } </p> <p> typedef boost::multi_array_ref&lt;double, 2&gt; ref_array_2d; void foo_ref(ref_array_2d ma) { </p> <blockquote> <p> ma<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = 1.0; </p> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> typedef boost::multi_array&lt;double, 3&gt; array_3d; typedef boost::multi_array_types::index_range range; </p> </blockquote> <blockquote> <p> array_3d A(boost::extents<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">[4]</a>); array_3d::array_view&lt;2&gt;::type slice = A[boost::indices[1][range()][range()]]; </p> </blockquote> <blockquote> <p> foo_duck(slice); foo_ref(slice); </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> foo_duck works fine, but foo_ref does not; I get a compiler error (gcc 4.6.3, boost 1.47) like so: "error: could not convert ‘slice’ from ‘boost::multi_array&lt;double, 3ul&gt;::array_view&lt;2ul&gt;::type {aka boost::detail::multi_array::multi_array_view&lt;double, 2ul&gt;}’ to ‘ref_array_2d {aka boost::multi_array_ref&lt;double, 2ul&gt;}’" </p> <p> I suspect, without having looked at the code itself, that multi_array_ref was never designed to be coerced from array_view, but I don't understand why. Is there a solution to my foo_ref problem that doesn't involve moving all such functions to headers and templating them? </p> Jason Sewall <jasonsewall@…> https://svn.boost.org/trac10/ticket/7405 https://svn.boost.org/trac10/ticket/7405 Report #7404: filesystem::canonical fails on UNC paths on Windows Fri, 21 Sep 2012 20:12:58 GMT Fri, 21 Sep 2012 22:23:23 GMT <p> The filesystem library function canonical(p, base) fails for all UNC paths on Windows because it gets an "invalid path" error when it calls symlink_status at line 816 of operations.cpp. Example: For the path "<em>server/share/file", the first time execution reaches line 816 of operations.cpp, it calls is_symlink(detail::symlink_status("</em>server", ec)) and ec is set to the Windows "invalid path" system error code. </p> Craig Dickson <cdickson@…> https://svn.boost.org/trac10/ticket/7404 https://svn.boost.org/trac10/ticket/7404 Report #7396: filesystem::path::remove_all(path, error_code) throws filesystem_error exception Wed, 19 Sep 2012 22:55:50 GMT Wed, 19 Sep 2012 22:55:50 GMT <p> Several methods in filesystem::path, including remove_all, have an overload in which an extra error_code&amp; argument is taken. According to the docs, this is supposed to cause failure (other than failure to allocate storage) to be reported in the error_code rather than as a thrown filesystem_error exception. However, remove_all can still throw filesystem_error exceptions because it uses a directory_iterator internally but makes no attempt to catch exceptions thrown by it. For example, if a subdirectory is deleted by another thread or process just before remove_all tries to list its contents, directory_iterator_construct will throw a filesystem_error that propagates up to remove_all's caller. </p> <p> As a side note, I think path and directory_iterator are both excessively exception-happy. It makes them painful to use. </p> Craig Dickson <cdickson@…> https://svn.boost.org/trac10/ticket/7396 https://svn.boost.org/trac10/ticket/7396 Report #7393: documentation suggests to store handle in node, why? Wed, 19 Sep 2012 12:48:57 GMT Wed, 19 Sep 2012 12:48:57 GMT <p> The documentation of the mutability concept includes a section that describes how to store handles into values in the heap. </p> <p> "Note that handles can be stored inside the value_type (nodes): " </p> <p> <a href="http://www.boost.org/doc/libs/1_51_0/doc/html/heap/concepts.html#heap.concepts.mutability">http://www.boost.org/doc/libs/1_51_0/doc/html/heap/concepts.html#heap.concepts.mutability</a> </p> <p> I don't understand the point of this note. Handles are used to access nodes. If you store your handles inside nodes and not somewhere else, how can you possibly access nodes. If you do store your handles somewhere else, why would you also store them in the nodes? </p> <p> I got confused trying to make use of this tip in my own code. Perhaps it is possible to add some motivation for this note, or just remove it. </p> Alex Hagen-Zanker <ahh34@…> https://svn.boost.org/trac10/ticket/7393 https://svn.boost.org/trac10/ticket/7393 Report #7387: marginal improvements to dijkstra_shortest_paths Tue, 18 Sep 2012 12:26:56 GMT Tue, 24 Sep 2013 13:33:43 GMT <p> There are a couple of details in the dijkstra_shortest_path calculation that potentially make the implementation less efficient than strictly necessary. All considered the change in performance is marginal. But the code will be more to the point and I was happy to no longer use boost::closed_plus. </p> <ol><li>The tree_edge member function and the gray_target member function call the relax() function. In case of undirected graphs, this function attempts to relax both the target and the source of the edge. This is right for some algorithms (e.g. Bellman-Ford) but not for others (e.g. Dijkstra Shortest Paths). It would therefore be preferred to introduce a new function relax_target(), that only relaxes the target of an edge. </li></ol><ol start="2"><li>The defaults algorithm for summing weights and distances is boost::closed_plus&lt;T&gt;. This implements a simple plus operation with the extension that x + inf = inf, where inf is a special value set upon initialization. Note that this is not a generic guard against overflows, but only works if one of the inputs is equal to inf. If the new relax_target() is used, then it is no longer necessary to use boost::closed_plus and simple std::plus will suffice. (*) </li></ol><ol start="3"><li>The tree_edge member function of the dijkstra_bfs_visitor is called when a new vertex is found. The distance for this vertex must always reduce. Several checks in relax() or relax_target() are therefore not necessary, and it is recommended to add a function relax_target_confident().(*) </li></ol><ol start="4"><li>If the relax_target_confident function is used, then any comparison with distance_inf values is avoided. Strictly speaking it is not longer necessary to initialize the values of the distance map, and the precise value becomes irrelevant to the algorithm. </li></ol><ol start="5"><li>The update() function for the d-ary-heap does not need the old_distance therefore the gray_target member function does not need to call it. </li></ol><p> (*). There could possibly be one other reason to use boost::closed_plus and that is the case of edge_weights being equal to distance_inf. This could be a hackish way of excluding edges from the shortest path search and IMO does not need to be supported. </p> Alex Hagen-Zanker <ahh34@…> https://svn.boost.org/trac10/ticket/7387 https://svn.boost.org/trac10/ticket/7387 Report #7385: Unused parameter causes compilation error Mon, 17 Sep 2012 23:28:52 GMT Thu, 04 Oct 2012 08:22:08 GMT <p> When the compiler is set to treat warnings as errors, the line <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/253" title="#253: Bugs: in the config.hpp system, problem with macos.hpp (closed: Fixed)">#253</a>: </p> <blockquote> <p> virtual void set_option_name(const std::string&amp; option_name) {} </p> </blockquote> <p> in the file program_options/errors.hpp, causes a compilation error. </p> lcarreon@… https://svn.boost.org/trac10/ticket/7385 https://svn.boost.org/trac10/ticket/7385 Report #7377: Abort trap when using Program Options Fri, 14 Sep 2012 14:43:32 GMT Fri, 14 Sep 2012 14:55:15 GMT <p> Hello, </p> <blockquote> <p> I tried to run the simple example provided on the web site at the following URL (file 'first'): </p> </blockquote> <p> <a href="http://www.boost.org/doc/libs/1_51_0/doc/html/program_options/tutorial.html#id2547756">http://www.boost.org/doc/libs/1_51_0/doc/html/program_options/tutorial.html#id2547756</a> </p> <p> When I run: ./test_po a b c d e OR ./test_po --compression 1 there are no problems. </p> <p> When I run ./test_po --compression ./test_po -compression ./test_po -a OR ./test_po -a 1 ./test_po -aa oR ./test_po --a 1 the program fails due to an abort trap. </p> <p> This is my working environment: </p> <ul><li>boost 1.51.1 </li><li>OS X 10.6.8 </li><li>g++ i686-apple-darwin10-g++-4.2.1 </li></ul><p> Please let me know in case you need more info. </p> <p> Regards </p> lordthistle@… https://svn.boost.org/trac10/ticket/7377 https://svn.boost.org/trac10/ticket/7377 Report #7369: grow() resets permissions Wed, 12 Sep 2012 22:01:11 GMT Wed, 12 Sep 2012 22:01:11 GMT <p> I need to create shared memory with unrestricted permissions (0666). This works fine. When I attempt to grow the shared memory, using the grow() function, the permissions get reset to 0644. </p> <p> I followed the code a bit and saw that it was using ftruncate. Checking the man page for ftruncate reveals, "the set-user-ID and set-group-ID permission bits may be cleared." Not sure what affects the "may" clause, but it did it every time for me. Umask was set to 0000. </p> <p> Obviously this only effects systems using ftruncate. Windows works correctly. </p> <p> Not sure on what versions may be needed, but: libc6 - 2.11.1 libglib2.0 - 2.24.1 gcc - 4.4.3 </p> Aaron Wright <Aaron_Wright@…> https://svn.boost.org/trac10/ticket/7369 https://svn.boost.org/trac10/ticket/7369 Report #7366: program_options/variables_map.hpp warning C4275 Tue, 11 Sep 2012 12:34:04 GMT Tue, 11 Sep 2012 12:34:04 GMT <p> When trying to build release version (debug version builds successfully) of our library with boost 1.49 I get the following warning: </p> <p> 1&gt;d:\sb\EventEngine_trunk\outputs\intermediates\include\boost/program_options/variables_map.hpp(148) : warning C4275: non dll-interface class 'std::_Container_base_aux' used as base for dll-interface class 'std::_Container_base_aux_alloc_real&lt;_Alloc&gt;' 1&gt; with 1&gt; [ 1&gt; _Alloc=std::allocator&lt;std::pair&lt;const std::string,boost::program_options::variable_value&gt;&gt; 1&gt; ] 1&gt; d:\Software\VS2008\VC\include\xutility(377) : see declaration of 'std::_Container_base_aux' </p> <p> Our software has treat warnings as errors enabled so I have to resort to disabling that compiler warning in order to build. Are there any plans to address this? </p> maciek.siemczyk@… https://svn.boost.org/trac10/ticket/7366 https://svn.boost.org/trac10/ticket/7366 Report #7361: Forbid compilation of leaking mistake. Mon, 10 Sep 2012 17:26:08 GMT Wed, 27 Mar 2013 06:52:48 GMT <p> I was adding program_option to my prorgam when I discovered a related leak. Fortunately it was false positive, but it pointed a hidden problem. I used: </p> <ul><li>Visual Studio 2012 </li><li>Boost 1.51.0 </li><li>Visual Leak Detector to detect the leak </li></ul><p> This, generate the leak: </p> <pre class="wiki">#include &lt;boost/program_options.hpp&gt; int main() { namespace bpo = boost::program_options; bpo::options_description options( "Options" ); options.add_options() ( "test" , "Test." ) , ( "value" , bpo::value&lt;int&gt;(), "Value." ) ; } </pre><p> The second option is leaking. The reason is because of the comma in the beginning of the line. I first added it by reflex when using function arguments so it took me some time to find what was leaking. Part of the time I spend was figuring out why it don't leak if you don't set a value type: </p> <pre class="wiki"> #include &lt;boost/program_options.hpp&gt; int main() { namespace bpo = boost::program_options; bpo::options_description options( "Options" ); options.add_options() ( "test" , "Test." ) , ( "value" , "Value." ) // no leak but still wrong! ; } </pre><p> The main problem I see with this is that it is compiled without any problem nor warning. </p> <p> So here is my question: Would it be possible to forbid comma operator with options_description_easy_init? </p> mjklaim@… https://svn.boost.org/trac10/ticket/7361 https://svn.boost.org/trac10/ticket/7361 Report #7344: Free properties not available in conditional rule Fri, 07 Sep 2012 18:37:04 GMT Tue, 25 Sep 2012 20:04:16 GMT <p> Free properties are not propagated to common-properties2 rule in targets.jam file. Rationale behind this is to optimise caching of already created property-set objects (exactly as stated in rule common-properties, which contains the call). </p> <p> However, this optimisation causes that free features are not passed e.g. to user-defined rules used for evaluation of &lt;conditional&gt; properties (see example below in the second code listing). </p> <p> Therefore I would propose to drop this optimisation and propagate also free properties (see code listing below). The other possible solution would be to just pass free properties to the common-properties2 rule and thus make them available to the algorithm, but this will introduce another bug (property-set object from cache will be used even though it contains values created from different free properties). </p> <h2 class="section" id="SOLUTIONPROPOSAL">SOLUTION PROPOSAL</h2> <pre class="wiki">rule common-properties ( build-request requirements ) { local props = [ property-set.create [ $(requirements).base ] [ $(requirements).incidental ] [ $(requirements).free ] ] ; local key = .rp.$(build-request)-$(props) ; if ! $($(key)) { $(key) = [ common-properties2 $(build-request) $(props) ] ; } return $($(key)) ; } </pre><h2 class="section" id="BUGREPRODUCTION">BUG REPRODUCTION</h2> <pre class="wiki">import feature ; feature.feature define-prefix : : free ; rule define-target-os ( properties * ) { local define-prefix = [ feature.get-values define-prefix : $(properties) ] ; define-prefix ?= "" ; local target-os = [ feature.get-values target-os : $(properties) ] ; return &lt;define&gt;$(define-prefix)TARGET_OS_$(target-os:U) ; } project /root : requirements &lt;define-prefix&gt;FOOBAR_ &lt;conditional&gt;@define-target-os ; exe hello : #sources hello.cpp : #requirements ; </pre> anonymous https://svn.boost.org/trac10/ticket/7344 https://svn.boost.org/trac10/ticket/7344 Report #7343: Extend result_of to work with SFINAE Fri, 07 Sep 2012 01:51:26 GMT Tue, 25 Sep 2012 13:59:42 GMT <p> In response to a problem first identified by Joel de Guzman: </p> <p> <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/233752/focus=233934"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/233752/focus=233934</a> </p> <p> When BOOST_RESULT_OF_USE_DECLTYPE is defined, the attached patch makes the expression result_of&lt;Fn( <a class="missing wiki">ArgTypes</a> ...)&gt;::type not well formed when the expression decltype(INVOKE(declval&lt; Fn &gt;(), declval&lt; <a class="missing wiki">ArgTypes</a> &gt;()...)) is not well formed, but does not break SFINAE when used as the return type of a function overload. </p> Daniel Walker https://svn.boost.org/trac10/ticket/7343 https://svn.boost.org/trac10/ticket/7343 Report #7341: Vector subscript out of range exception when calling weighted_core_numbers Thu, 06 Sep 2012 15:06:50 GMT Mon, 10 Sep 2012 14:12:29 GMT <p> I get a vector subscript out of range exception when calling the weighted_core_numbers function in the boost graph library. The exception is actually thrown from within the mutable_queue::update function, but I can't tell if the error is in mutable_queue or in weighted_core_numbers. </p> <p> The attached test program is sufficient to show the problem. The test network is taken from Figure 1 of the Batagelj-Zaversnik paper (<a class="ext-link" href="http://vlado.fmf.uni-lj.si/pub/networks/doc/cores/cores.pdf"><span class="icon">​</span>http://vlado.fmf.uni-lj.si/pub/networks/doc/cores/cores.pdf</a>), with random integer weights of 1, 2, or 3 added to each edge. </p> Ian Robertson <irober67@…> https://svn.boost.org/trac10/ticket/7341 https://svn.boost.org/trac10/ticket/7341 Report #7340: Visual studio iostreams warnings Thu, 06 Sep 2012 14:41:27 GMT Fri, 31 May 2013 21:55:43 GMT <p> Visual studio 2010 raises "conditional expression is constant" warnings from chain.hpp. This can be fixed by simply including the disable_warnings header in chain.hpp </p> <p> Visual studio 2010 raises various "unreachable code" warnings. This can be fixed by adding warning 4702 in disable_warnings.hpp </p> <p> Visual studio 2012 raises a "inherits via dominance" warning from stream.hpp (see <a class="ext-link" href="http://connect.microsoft.com/VisualStudio/feedback/details/733720/inheriting-from-std-fstream-produces-c4250-warning"><span class="icon">​</span>http://connect.microsoft.com/VisualStudio/feedback/details/733720/inheriting-from-std-fstream-produces-c4250-warning</a> for the cause of this warning). This requires including the disable_warnings header in stream.hpp and adding warning 4250 to disable_warnings. </p> Alan Birtles <alan.birtles@…> https://svn.boost.org/trac10/ticket/7340 https://svn.boost.org/trac10/ticket/7340 Report #7337: sparse_view.hpp: wrong copy-constructor for compressed_matrix_view Thu, 06 Sep 2012 08:27:09 GMT Wed, 21 Aug 2013 12:37:34 GMT <p> The copy constructor for <code>compressed_matrix_view</code> (in <code>boost/numeric/ublas/experimental/sparse_view.hpp</code>) is wrong: it doesn't copy any member from the input argument. </p> <p> I upload a patch for this, along with the patched file. </p> Marco Guazzone <marco.guazzone@…> https://svn.boost.org/trac10/ticket/7337 https://svn.boost.org/trac10/ticket/7337 Report #7333: Provide User-defined Literals for chrono durations on compilers supporting them Thu, 06 Sep 2012 04:13:35 GMT Sat, 08 Sep 2012 06:46:29 GMT <p> boost::chrono::duration suffixes h, min, s, ms, us, ns in namespace boost::suffixes::chrono </p> viboes https://svn.boost.org/trac10/ticket/7333 https://svn.boost.org/trac10/ticket/7333 Report #7332: Missing inline directives in crc.hpp Wed, 05 Sep 2012 20:34:12 GMT Wed, 05 Sep 2012 20:39:23 GMT <p> see diff with fix </p> Sergey Fokin <drigh@…> https://svn.boost.org/trac10/ticket/7332 https://svn.boost.org/trac10/ticket/7332 Report #7320: Warnings "duplicate friend declaration" with Intel C++ Compiler XE 12.1.5.344 Sun, 02 Sep 2012 11:51:43 GMT Sun, 02 Sep 2012 11:51:43 GMT <p> There are some warnings "duplicate friend declaration" with Intel C++ Compiler XE 12.1.5.344 at Windows (Windows 7 SP1 Pro) during building of programs using Boost.Exception: </p> <pre class="wiki">1&gt;..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(258): warning #367: duplicate friend declaration 1&gt; friend struct exception_detail::get_info&lt;throw_function&gt;; 1&gt; ^ 1&gt; 1&gt;..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(259): warning #367: duplicate friend declaration 1&gt; friend struct exception_detail::get_info&lt;throw_file&gt;; 1&gt; ^ 1&gt; 1&gt;..\..\..\..\boost_1_51_0\boost/exception/exception.hpp(260): warning #367: duplicate friend declaration 1&gt; friend struct exception_detail::get_info&lt;throw_line&gt;; 1&gt; ^ </pre><p> The warning level is Level4 (/W4). </p> abrarov@… https://svn.boost.org/trac10/ticket/7320 https://svn.boost.org/trac10/ticket/7320 Report #7319: Take care of c++std-lib-32966 issue Sun, 02 Sep 2012 08:32:23 GMT Sun, 02 Sep 2012 08:41:34 GMT <p> Take care of the issue raised by Howard Hinnant in </p> <p> [c++std-lib-32966] Public service announcement concerning ~condition_variable_any() </p> <p> "Both condition_variable and condition_variable_any are based on the POSIX pthread_cond_t. One of the very subtle behaviors of pthread_cond_t is that it is ok for a pthread_cond_t to be destroyed after all waiting threads have been signaled (assuming no new threads initiate a wait). There's even an example demonstrating this at <a class="ext-link" href="http://www.unix.org/online.html"><span class="icon">​</span>http://www.unix.org/online.html</a> under the specification for pthread_cond_destroy. </p> <p> This subtlety is reflected in the Requires clause for the destructor of both condition_variable and condition_variable_any: </p> <blockquote class="citation"> <p> Requires: There shall be no thread blocked on *this. [Note: That is, all threads shall have been notified; they may subsequently block on the lock specified in the wait. This relaxes the usual rules, which would have required all wait calls to happen before destruction. Only the notification to unblock the wait must happen before destruction. The user must take care to ensure that no threads wait on *this once the destructor has been started, especially when the waiting threads are calling the wait functions in a loop or using the overloads of wait, wait_for, or wait_until that take a predicate. — end note ] </p> </blockquote> <p> To be *perfectly* clear, the following is ok: </p> <pre class="wiki"> Thread A Thread B ... lk.lock() ... cv.wait(lk) lk.lock() ... cv.notify_one() ... cv.~condition_variable_any() ... lk.unlock() ... ... finally exits cv.wait // ok, not a data race </pre><p> " </p> viboes https://svn.boost.org/trac10/ticket/7319 https://svn.boost.org/trac10/ticket/7319 Report #7316: Build boost.python fails with python 3.2.3 Sat, 01 Sep 2012 17:08:04 GMT Tue, 12 Mar 2013 00:57:20 GMT <pre class="wiki">$ ./b2 -q -d+2 variant=release link=shared threading=multi runtime-link=shared | grep err libs/mpi/src/python/datatypes.cpp:20:33: error: ‘PyInt_Type’ was not declared in this scope libs/mpi/src/python/py_environment.cpp:53:37: error: cannot convert ‘char**’ to ‘wchar_t**’ for argument ‘2’ to ‘void PySys_SetArgv(int, wchar_t**)’ $ uname -a Linux asus 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux $ python3 --version Python 3.2.3 $ echo "import sys; print( sys.prefix )" | python3 /usr $ cat project-config.jam | grep python using python : 3.2 : /usr ; </pre> Sergey Dmitriev <dmi3evsv@…> https://svn.boost.org/trac10/ticket/7316 https://svn.boost.org/trac10/ticket/7316 Report #7315: A fusion adapted struct with a single member doesn't work with the Qi list operator Sat, 01 Sep 2012 07:09:39 GMT Sat, 01 Sep 2012 07:09:39 GMT <p> As demonstrated in the attached file a fusion adapted struct with a single member doesn't work with the Qi list operator whereas its equivalent based on the kleen operator does work. </p> vexocide https://svn.boost.org/trac10/ticket/7315 https://svn.boost.org/trac10/ticket/7315 Report #7313: filesystem reference doc shows path::u16string(), but it doesn't exist Fri, 31 Aug 2012 15:53:56 GMT Thu, 18 Feb 2016 19:22:59 GMT <p> The Boost 1.50 filesystem reference says that filesystem::path has methods u16string(), generic_u16string(), u32string() and generic_u32string(), but they don't exist in the code. MS Visual Studio 2010's C++ compiler can't find them, and a grep of the boost::filesystem source doesn't find them either. Please either implement these methods or remove them from the docs. </p> <p> (My preference would be that you implement these methods, and also, for completeness, add u8string() and generic_u8string(), which would return UTF-8 instead of using the current locale.) </p> Craig Dickson <cdickson@…> https://svn.boost.org/trac10/ticket/7313 https://svn.boost.org/trac10/ticket/7313 Report #7310: filesystem::path::iterator::operator+ is unusable due to compile error Fri, 31 Aug 2012 15:14:08 GMT Fri, 31 Aug 2012 15:14:08 GMT <p> Boost 1.50, MS Visual Studio 2010. I find that if I attempt to use the + operator on a path::iterator, I get a compiler error saying that the method "advance" is not part of path::iterator. If I comment out my use of this operator, and instead use only ++, then everything compiles. </p> <p> Here are the details from the compiler: </p> <pre class="wiki">boost/iterator/iterator_facade.hpp(544): error C2039: 'advance' : is not a member of 'boost::filesystem::path::iterator' boost/filesystem/path.hpp(570) : see declaration of 'boost::filesystem::path::iterator' boost/iterator/iterator_facade.hpp(690) : see reference to function template instantiation 'void boost::iterator_core_access::advance&lt;Derived&gt;(Facade &amp;,__w64 int)' being compiled with [ Derived=boost::filesystem::path::iterator, Facade=boost::filesystem::path::iterator ] boost/iterator/iterator_facade.hpp(689) : while compiling class template member function 'boost::filesystem::path::iterator &amp;boost::iterator_facade&lt;Derived,Value,CategoryOrTraversal&gt;::operator +=(__w64 int)' with [ Derived=boost::filesystem::path::iterator, Value=const boost::filesystem::path, CategoryOrTraversal=boost::bidirectional_traversal_tag ] boost/filesystem/path.hpp(574) : see reference to class template instantiation 'boost::iterator_facade&lt;Derived,Value,CategoryOrTraversal&gt;' being compiled with [ Derived=boost::filesystem::path::iterator, Value=const boost::filesystem::path, CategoryOrTraversal=boost::bidirectional_traversal_tag ] </pre> Craig Dickson <cdickson@…> https://svn.boost.org/trac10/ticket/7310 https://svn.boost.org/trac10/ticket/7310 Report #7305: zip_view silently ignores elements Thu, 30 Aug 2012 14:22:44 GMT Thu, 30 Aug 2012 14:22:44 GMT <p> zip_view takes the minimum size of all the sequences it is given. As a result it may silently ignore elements, which is not desirable. </p> <p> I think it would be better if it checked all sequences were the same size. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/7305 https://svn.boost.org/trac10/ticket/7305 Report #7304: size of a fusion sequences is signed, should be unsigned Thu, 30 Aug 2012 14:20:47 GMT Mon, 10 Sep 2012 02:00:13 GMT <p> fusion::result_of::size&lt; fusion::vector&lt;int, int&gt; &gt;::type::value is signed, even though it should be size_t. </p> <p> It appears the problem is two-fold: </p> <ul><li>fusion::result_of::size&lt;T&gt;::value is not the same type as fusion::result_of::size&lt;T&gt;::type::value_type </li><li>size of fusion::vector is defined to be a mpl::int_ (it also seems it is the case for all fusion sequences types!) </li></ul><p> The fact that this is wrongly signed causes all sorts of warnings. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/7304 https://svn.boost.org/trac10/ticket/7304 Report #7303: XML Serialization - Skip/Ignore unexpected data. Thu, 30 Aug 2012 12:40:15 GMT Tue, 19 Feb 2013 12:51:23 GMT <p> Please find attached an extension to boost::serialization. The purpose of this work is to add some support for forward compatibility of boost::serialization XML files; specifically the ability to skip/ignore unexpected data. </p> <p> I would describe the patch as a "first working version", the tests all pass (gcc 4.6) with some expected failures (see below), but further work is required. I guess I'm trying to gauge interest, get some feedback on the implementation, and get inspired enough to invest more time in it. </p> <h2 class="section" id="Implementation">Implementation</h2> <p> Two new archive types, <code>rapidxml_iarchive</code>, and <code>rapidxml_wiarchive</code>, have been created. Their implementation is based on <code>xml_[w]iarchive</code> with the XML parsing provided by the rapidxml parser used in boost::property_tree. </p> <p> This seemed the best approach to the problem as it avoided issues with <code>ungetc</code>. </p> <p> Polymorphic versions of <code>rapidxml_[w]iarchive</code> have not been implemented. </p> <h2 class="section" id="Teststatus">Test status</h2> <p> All tests are passing with the following caveats: </p> <ul><li>Polymorphic rapidxml archives have not been implemented resulting in 6 tests failing to compile </li><li>The following tests have had to be tweaked to accommodate rapidxml_[w]iarchive not ignoring element names <ul><li>test_derived_class </li><li>test_recursion </li><li>test_nvp </li><li>test_non_default_ctor2 </li><li>test_diamond </li><li>test_diamond_complex </li></ul></li></ul><h2 class="section" id="Notesandfurtherwork">Notes and further work</h2> <p> The current implementation is a "first working version" and requires some polishing. There are a number of things that require further investigation, broadly speaking they can be categorized as: </p> <ul><li>Better reuse <ul><li>Factor out a base class (templated on char type) for <code>rapidxml_iarchive</code> and <code>rapidxml_wiarchive</code> </li><li>Some code could be shared between <code>rapidxml_[w]iarchive</code> and <code>xml_[w]iarchive</code> <ul><li>See <code>[rapid]xml_iarchive::load(std::wstring&amp;)</code> </li><li>See <code>[rapid]xml_wiarchive::load(std::string&amp;)</code> </li></ul></li></ul></li><li>Better error handling </li><li>Flag support <ul><li>Currently there are no plans to support any kind of flags/alternative behaviour so the existing flag code may need to be removed </li></ul></li><li>Miscellany <ul><li>Go through comments to see what's still relevant </li><li>Replace history map with vector </li></ul></li></ul> anonymous https://svn.boost.org/trac10/ticket/7303 https://svn.boost.org/trac10/ticket/7303 Report #7295: mapped_region large file throw exception Mon, 27 Aug 2012 09:09:08 GMT Tue, 18 Sep 2012 21:37:23 GMT <p> using namespace boost::interprocess; </p> <blockquote> <p> const std::size_t <a class="missing wiki">FileSize</a> = 10000000000; <em>if(argc == 1) { </em>Parent process executes this </p> <blockquote> <p> { <em>Create a file </em></p> <blockquote> <p> std::filebuf fbuf; fbuf.open("e:<br />output<br />file.bin", std::ios_base::in | std::ios_base::out </p> <blockquote> <p> | std::ios_base::trunc | std::ios_base::binary); </p> </blockquote> <p> <em>Set the size fbuf.pubseekoff(<a class="missing wiki">FileSize</a>-1, std::ios_base::beg); fbuf.sputc(0); </em></p> </blockquote> <p> } <em>Remove file on exit struct file_remove { </em></p> <blockquote> <p> ~file_remove (){ file_mapping::remove("file.bin"); } </p> </blockquote> <p> } destroy_on_exit; </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>Create a file mapping file_mapping m_file("e:<br />output<br />file.bin", read_write); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>Map the whole file with read-write permissions in this process try{ mapped_region region(m_file, read_write); </em></p> </blockquote> </blockquote> <p> </p> <blockquote> <blockquote> <p> <em>Get the address of the mapped region void * addr = region.get_address(); std::size_t size = region.get_size(); </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>Write all the memory to 1 std::memset(addr, 1, size); } catch( boost::interprocess::interprocess_exception&amp; ex ){ </em></p> <blockquote> <p> cout &lt;&lt; "\njjhhh" &lt;&lt; ex.what() &lt;&lt; endl; </p> </blockquote> <p> } <em>Launch child process </em>std::string s(argv<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>); s += " child "; </p> </blockquote> <p> <em> if(0 != std::system(s.c_str())) </em></p> <blockquote> <blockquote> <p> return 1; </p> </blockquote> </blockquote> <p> } </p> </blockquote> <p> mapped_region region(m_file, read_write); throw a exception </p> anonymous https://svn.boost.org/trac10/ticket/7295 https://svn.boost.org/trac10/ticket/7295 Report #7288: Under windows it is possible to use io_service::poll without a previous call to reset! Sun, 26 Aug 2012 11:58:05 GMT Sun, 26 Aug 2012 11:58:42 GMT <p> I found out, that it is possible under windows to use io_service::poll without calling reset on the same service before. </p> <p> Under Linux the internal variable "stopped_" is checked in the immplementation. The windows immplementation doesent do that, although the documentation says: "The poll() function runs handlers [...] until the io_service has been stopped [...]." </p> code.databyte@… https://svn.boost.org/trac10/ticket/7288 https://svn.boost.org/trac10/ticket/7288 Report #7276: Add move semantics Sat, 25 Aug 2012 08:12:34 GMT Tue, 26 Feb 2013 21:40:35 GMT <p> Boost.Tuple lack move semantics for its arguments. It should be great if it can comply with the c++11 standard when the compiler provides rvalue references and use Boost.Move otherwise. </p> viboes https://svn.boost.org/trac10/ticket/7276 https://svn.boost.org/trac10/ticket/7276 Report #7275: SIGSEGV in boost::asio::connect when compiled with g++ -std=c++0x Fri, 24 Aug 2012 15:48:51 GMT Fri, 24 Aug 2012 16:12:31 GMT <p> Works fine when not compiled with -std=c++0x. GCC v. 4.6.3 on ubuntu 12.04 Linking to static libboost_thread, libboost_system (1.50.0 release config) Does not matter if server code is listening or not. </p> <p> Minimal reproducible code below: </p> <p> int main(int argc, char *argv[]) { </p> <blockquote> <p> boost::asio::io_service service; </p> </blockquote> <blockquote> <p> using namespace boost::asio::ip; </p> </blockquote> <blockquote> <p> tcp::resolver resolver(service); tcp::resolver::query query(tcp::v4(), "127.0.0.1", "50001"); tcp::resolver::iterator itr = resolver.resolve(query); </p> </blockquote> <blockquote> <p> if (itr != tcp::resolver::iterator()) { </p> <blockquote> <p> tcp::socket s(service); boost::asio::connect(s, itr); <em> Segmentation Fault Here </em></p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> Callstack: </p> <p> <a class="missing ticket">#0</a> 0x8054d6e boost::asio::detail::reactive_socket_service_base::close(this=0x16, impl=..., ec=...) (reactive_socket_service_base.ipp:103) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x8058f1a boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt;::close(this=0x2, impl=..., ec=...) (stream_socket_service.hpp:151) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x80589d5 boost::asio::basic_socket&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt; &gt;::close(this=0xbffff318, ec=...) (basic_socket.hpp:339) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x8058186 boost::asio::connect&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt;, boost::asio::ip::basic_resolver_iterator&lt;boost::asio::ip::tcp&gt;, boost::asio::detail::default_connect_condition&gt;(s=..., begin=..., end=..., connect_condition=..., ec=...) (connect.hpp:120) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x80578a5 boost::asio::connect&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt;, boost::asio::ip::basic_resolver_iterator&lt;boost::asio::ip::tcp&gt; &gt;(s=..., begin=..., ec=...) (connect.hpp:56) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x8056dd2 boost::asio::connect&lt;boost::asio::ip::tcp, boost::asio::stream_socket_service&lt;boost::asio::ip::tcp&gt;, boost::asio::ip::basic_resolver_iterator&lt;boost::asio::ip::tcp&gt; &gt;(s=..., begin=...) (connect.hpp:47) <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x8052f41 main(argc=1, argv=0xbffff874) (main.cpp:27) </p> <p> Thank you. </p> Alan Yuelkenbeck <ayuelkenbeck@…> https://svn.boost.org/trac10/ticket/7275 https://svn.boost.org/trac10/ticket/7275 Report #7274: svn server error 413 Fri, 24 Aug 2012 12:10:40 GMT Tue, 18 Sep 2012 17:01:50 GMT <p> Hi! </p> <p> I cant preform svn update, on day old copy, without geting this error message: svn: Server sent unexpected return value (413 Request Entity Too Large) in response to REPORT request for '/repository/!svn/vcc/default' </p> <p> regard.bartus </p> bartus@… https://svn.boost.org/trac10/ticket/7274 https://svn.boost.org/trac10/ticket/7274 Report #7273: Files created by boost::iostreams::mapped_file have unexpected permissions on Linux Fri, 24 Aug 2012 11:35:40 GMT Wed, 23 Aug 2017 05:12:35 GMT <p> The mapped_file class opens the file unconditionally via: </p> <div class="wiki-code"><div class="code"><pre><span class="o">::</span><span class="n">open</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">flags</span><span class="p">,</span> <span class="n">S_IRWXU</span><span class="p">);</span> </pre></div></div><p> Which sets the permissions to read, write, execute for the owner and no permissions for group or others. </p> <p> This is quite unexpected, and since it cannot be changed by the caller, I think a more sane default behavior would be to just use the default of open and let the user's umask decide the permission of newly created files. </p> <p> I.e. just remove the last parameter: </p> <div class="wiki-code"><div class="code"><pre><span class="o">::</span><span class="n">open</span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span> <span class="n">flags</span><span class="p">);</span> </pre></div></div> Mika Fischer <mika.fischer@…> https://svn.boost.org/trac10/ticket/7273 https://svn.boost.org/trac10/ticket/7273 Report #7268: Invalid DST for Europe/Paris before 1996 (using tzdatabase) Thu, 23 Aug 2012 09:34:24 GMT Thu, 23 Aug 2012 09:34:24 GMT <p> Hello, </p> <p> Let me start with an example : For 1992, boost::datetime gives me (using the given timezone database) DST period from 1992-Mar-29 02:00:00 TO 1992-Oct-25 03:00:00 </p> <p> That's simply wrong. For 1996 and following years, it's correct, simply because, in 1996, France decided that DST occurs in the end of October. Before that date, it occured in the end of September. </p> <p> Here is a table of true DST dates (dates are in European form, "day/month") : </p> <pre class="wiki">1976 : 28/3 -- 26/9 1977 : 3/4 -- 5/9 1978 : 2/4 -- 1/10 1979 : 1/4 -- 30/9 1980 : 6/4 -- 28/9 1981 : 29/3 -- 27/9 1982 : 28/3 -- 26/9 1983 : 27/3 -- 25/9 1984 : 25/3 -- 30/9 1985 : 31/3 -- 29/9 1986 : 30/3 -- 28/9 1987 : 29/3 -- 27/9 1988 : 27/3 -- 25/9 1989 : 26/3 -- 24/9 1990 : 25/3 -- 30/9 1991 : 31/3 -- 29/9 1992 : 29/3 -- 27/9 1993 : 28/3 -- 26/9 1994 : 27/3 -- 25/9 1995 : 26/3 -- 24/9 ================ 1996 : 31/3 -- 27/10 1997 : 30/3 -- 26/10 1998 : 29/3 -- 25/10 1999 : 28/3 -- 31/10 2000 : 26/3 -- 29/10 2001 : 25/3 -- 28/10 2002 : 31/3 -- 27/10 2003 : 30/3 -- 26/10 2004 : 28/3 -- 31/10 2005 : 27/3 -- 30/10 2006 : 26/3 -- 29/10 2007 : 25/3 -- 28/10 2008 : 30/3 -- 26/10 2009 : 29/3 -- 25/10 2010 : 28/3 -- 24/10 2011 : 27/3 -- 30/10 </pre><p> Thank you, Guillaume </p> guillaume.v.sanchez@… https://svn.boost.org/trac10/ticket/7268 https://svn.boost.org/trac10/ticket/7268 Report #7266: Gettext path formats. Thu, 23 Aug 2012 05:47:10 GMT Mon, 07 Jan 2013 06:37:55 GMT <pre class="wiki">I'm extremely happy about Boost.Locale, but I've found a few things lacking. So at first I wrote a some wrappers to get around a few flaws with my usage of Boost.Locale. One of these flaws was how it's hardcoded to use the Gettext directory hierarchy. I'd rather store my stuff in 'lang/en_US.mo' rather than 'lang/en_US/LC_MESSAGES/my_app.mo'. The patch adds a 'path format' feature, which allows you to format the directory structure when finding Gettext catalogs, to achieve the effect above. All you really have to do is run: gen.add_path_format("{1}/{2}.mo"); // Use a smaller hierarchy. to achieve the result that I prefer, or gen.add_path_format("{1}/{2}/{3}/{4}.mo"); // Use a Gettext hierarchy. to achieve the result that Boost.Locale uses right now. Ripped straight from Doxygen comments: {1} A path to search for catalogs in. {2} The locale's name. {3} The locale's category. {4} The Gettext domain. </pre><p> I apologize for the cut and paste from it but I'm having trouble with trac. The full thread with patches can be found at: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2012/08/195789.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2012/08/195789.php</a> </p> 166291@… https://svn.boost.org/trac10/ticket/7266 https://svn.boost.org/trac10/ticket/7266 Report #7261: Boost.Units quantity output overflows ostream width field Wed, 22 Aug 2012 16:38:37 GMT Wed, 22 Aug 2012 16:38:37 GMT <p> Boost.Units quantity output overflows ostream width field </p> <blockquote> <p> quantity&lt;length&gt; ql = 2345.6 * meters; </p> </blockquote> <blockquote> <p> std::cout &lt;&lt; std::setw(20) &lt;&lt; ql &lt;&lt; std::endl; </p> </blockquote> <p> outputs 22 chars instead of 20 chars. </p> <p> The reason is that the first item value() is output using the ios width setting, but the second unit() 'm' (and separating space) is not. </p> <p> if os.width() &gt; 0 then a way is to build a single string of the quantity with the width specified for example using an ostringstream (otherwise, outputing value and unit (perhaps autoprefixed to km) severally would overflow the width). </p> <p> (else if os.width() &lt;= 0 then output directly to ostream os as at present). </p> <p> A test and a patch to deal with this is attached. </p> <p> (This is not necessarily the most efficient way to deal with this but appears to work). </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/7261 https://svn.boost.org/trac10/ticket/7261 Report #7260: Header order conflicts between Thread and ASIO Wed, 22 Aug 2012 04:49:48 GMT Tue, 18 Sep 2012 17:20:52 GMT <p> This problem is still present as of 1.50. Link to discussion: <a class="ext-link" href="http://lists.boost.org/boost-users/2012/06/74823.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2012/06/74823.php</a> </p> <p> Consider this following simple app: </p> <pre class="wiki">#include &lt;boost/thread/thread.hpp&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/thread/recursive_mutex.hpp&gt; int main() { return 0; } </pre><p> </p> <p> If you try to build that on Windows, you receive the following error: </p> <pre class="wiki">In file included from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/recursive_mutex.hpp:14:0, from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/recursive_mutex.hpp:14, from build.cpp:3: c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'void boost::detail::basic_recursive_mutex_impl&lt;underlying_mutex_type&gt;::lock()': c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:52:21: error: '_InterlockedExchange' is not a member of 'boost::detail' c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'void boost::detail::basic_recursive_mutex_impl&lt;underlying_mutex_type&gt;::unlock()': c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:71:21: error: '_InterlockedExchange' is not a member of 'boost::detail' c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'bool boost::detail::basic_recursive_mutex_impl&lt;underlying_mutex_type&gt;::try_basic_lock(long int)': c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:91:21: error: '_InterlockedExchange' is not a member of 'boost::detail' c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp: In member function 'bool boost::detail::basic_recursive_mutex_impl&lt;underlying_mutex_type&gt;::try_timed_lock(long int, const boost::system_time&amp;)': c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/boost/thread/win32/basic_recursive_mutex.hpp:102:21: error: '_InterlockedExchange' is not a member of 'boost::detail' </pre><p> If asio.hpp is moved ahead of the thread headers, the error goes away. We’ve been trying to dictate #include order to work around this problem, but it keeps cropping up. </p> joshuadavidson@… https://svn.boost.org/trac10/ticket/7260 https://svn.boost.org/trac10/ticket/7260 Report #7258: boost::filesystem::create_directories(const &path) returns false if the path contains a slash at the end of the string Tue, 21 Aug 2012 15:19:15 GMT Mon, 02 Jan 2017 08:39:12 GMT <p> for example, if we want to create that following directory: path="C:/users/test/" </p> <p> the function create_directories(path) returns false even if the directory is created and exists. </p> <p> However, if we remove the slash at the end of the string path="C:/users/test", the function returns true. </p> <p> Is it the normal behavior of that function? </p> <p> Thanks. </p> francis.thibault@… https://svn.boost.org/trac10/ticket/7258 https://svn.boost.org/trac10/ticket/7258 Report #7256: wrong error message for program options with dashes Tue, 21 Aug 2012 13:01:49 GMT Sun, 19 Jan 2014 17:52:14 GMT <p> Hi, I defined some options: </p> <pre class="wiki">optionsDescription.add_options() .... ("output-file,o", program_options::value&lt;std::string&gt;(), "Result file") ....; </pre><p> Now, when I start my program without an argument (e.g. ./myprog -o) the error message says: </p> <p> the required argument for option '--file' is missing </p> <p> instead of </p> <p> the required argument for option '--output-file' is missing </p> <p> This worked at least with version 1.48. </p> thomas.zuhl@… https://svn.boost.org/trac10/ticket/7256 https://svn.boost.org/trac10/ticket/7256 Report #7253: [Boost.Build] Escape command line properly when calling assembler on MSVC Tue, 21 Aug 2012 07:28:11 GMT Fri, 08 Feb 2013 07:48:57 GMT <p> Hi. </p> <p> As of Boost.Context release (since Boost 1.51.0) assembler related build rules are actually used. However, currently these make no attempt whatsoever to properly escape the command line arguments (mostly global defines, that may have characters such as "&lt;" and "&gt;" that are interpreted by command prompt, not good). </p> <p> The following patch proxies command line arguments thru a RSP file, as done with C/C++ compiling/build rules. </p> <p> The patch does </p> <blockquote> <p> a) Add an ASM_RSPLINE under rule get-rspline, </p> </blockquote> <blockquote> <p> b) Add a rule compile.asm that calls get-rspline and compile-asm, </p> </blockquote> <blockquote> <p> c) Move the actual assembler call under actions compile-asm, that uses the generated ASM_RSPLINE, </p> </blockquote> <blockquote> <p> d) Remove toolset.flags msvc.compile.asm DEFINES as these are now inherited from toolset.flags msvc.compile DEFINES. </p> </blockquote> <p> That should fix it once and for all. </p> Pekka Seppänen <pekka.seppanen@…> https://svn.boost.org/trac10/ticket/7253 https://svn.boost.org/trac10/ticket/7253 Report #7252: bootstrap.sh only works if called as ./bootstrap.sh Tue, 21 Aug 2012 00:23:56 GMT Thu, 24 Oct 2013 22:19:08 GMT <p> Sometimes we need to be able to call bootstrap.sh from outside the Boost root directory. The following tiny patch allows the bootstrap.sh script to be called from anywhere: </p> <p> Replace the line 184: </p> <p> my_dir="." </p> <p> by </p> <p> my_dir="${0%/bootstrap.sh}" </p> Júlio Hoffimann <julio.hoffimann@…> https://svn.boost.org/trac10/ticket/7252 https://svn.boost.org/trac10/ticket/7252 Report #7250: rational.hpp imports header iostream even if stream operators are not needed Sun, 19 Aug 2012 11:21:21 GMT Wed, 28 Aug 2013 07:12:49 GMT <p> Many Boost libraries have header variants with and without iostream support: </p> <pre class="wiki">#include "boost/date_time/posix_time/posix_time.hpp" //include all types plus i/o </pre><p> or </p> <pre class="wiki">#include "boost/date_time/posix_time/posix_time_types.hpp" //no i/o just types </pre><p> Likewise, there exists a macro BOOST_NO_IOSTREAM, which should prevent &lt;iostream&gt; from being included, see ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4060" title="#4060: Patches: boost::thread support for BOOST_NO_IOSTREAM (closed: fixed)">#4060</a>. </p> <p> Neither approaches are available in boost::rational&lt;&gt; but either could be put to good use. </p> Levente Hunyadi <levente@…> https://svn.boost.org/trac10/ticket/7250 https://svn.boost.org/trac10/ticket/7250 Report #7249: tools/build/v2/test/startup_v2.py fails if boost-build is already installed Sun, 19 Aug 2012 09:56:23 GMT Sun, 19 Aug 2012 09:56:23 GMT <p> I got the following error after I installed boost-build and tried to rerun the tests in temporary build directory: </p> <p> startup_v2 : DIFFERENCE --- /var/tmp/paludis/dev-util-boost-build-1.50.0/temp/tmp7UjRdwexpected 2012-08-19 11:44:11.236819301 +0200 +++ /var/tmp/paludis/dev-util-boost-build-1.50.0/temp/tmpA2P_sAactual 2012-08-19 11:44:11.236819301 +0200 @@ -1,2 +1,3 @@ -Unable to load Boost\.Build: could not find "boost-build.jam" -.*Attempted search from .* up to the root \ No newline at end of file + +error: error: no Jamfile in current directory found, and no target references specified. + Unable to compute difference: diff -u /var/tmp/paludis/dev-util-boost-build-1.50.0/temp/tmp7UjRdwexpected /var/tmp/paludis/dev-util-boost-build-1.50.0/temp/tmpA2P_sAactual FAILED </p> <p> Reason is: passing the empty string to bjam lets it fallback to the default which is not what is wanted in that test. Attached patch changes the path to something invalid. </p> dev-zero@… https://svn.boost.org/trac10/ticket/7249 https://svn.boost.org/trac10/ticket/7249 Report #7247: Expose empty_arg_list to public interface Sat, 18 Aug 2012 17:14:03 GMT Tue, 23 Feb 2016 10:48:56 GMT <p> The empty_arg_list is defined in the parameter::aux namespace which indicates that this class is not intended to be used by users. However, in generic code it is often useful to be able to pass empty parameter packs to functions when all arguments are optional. Please, make the empty_arg_list class public. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/7247 https://svn.boost.org/trac10/ticket/7247 Report #7240: serialization backward compatibility issue with class_id_type attribute Thu, 16 Aug 2012 10:42:29 GMT Wed, 20 Nov 2013 16:50:17 GMT <p> There is a backward compatibility issue in current boost::serialization around the class_id_type attribute. </p> <p> It is actually impossible to read binary archives written with boost 1.39 (format 5) with a boost release &gt; 1.43. </p> <p> For instance, with boost 1.47.0 : </p> <p> test_serialization: /home/ggagniard/dev/boost-1.47.0.bug/include/boost/archive/basic_archive.hpp:116: boost::archive::class_id_type::class_id_type(int): Assertion `t_ &lt;= boost::integer_traits&lt;base_type&gt;::const_max' failed. </p> <p> Please note that the same error still occurs with boost 1.50.0, the current stable release. </p> <p> After having a look at the class_id_type serialization in binary archives, I think I found the culprit : </p> <p> In boost/archive/basic_binary_iarchive.hpp : </p> <pre class="wiki"> void load_override(class_id_type &amp; t, int version){ library_version_type lvt = this-&gt;get_library_version(); if(boost::archive::library_version_type(7) &lt; lvt){ this-&gt;detail_common_iarchive::load_override(t, version); } else if(boost::archive::library_version_type(6) &lt; lvt){ int_least16_t x=0; * this-&gt;This() &gt;&gt; x; t = boost::archive::class_id_type(x); } else{ int x=0; * this-&gt;This() &gt;&gt; x; t = boost::archive::class_id_type(x); } } </pre><p> Here, archives whose version &lt;= 6 get their class_id_type read as an int ... </p> <p> However, in boost 1.43 (format 7) : </p> <pre class="wiki"> void load_override(class_id_type &amp; t, int){ // upto 32K classes int_least16_t x=0; * this-&gt;This() &gt;&gt; x; t = class_id_type(x); } </pre><p> It is clear than any library version &lt;= 7 have their class_id_type serialized as a int_least16_t, so the current load_override method is incorrect for versions &lt;= 6 ... </p> ggagniard@… https://svn.boost.org/trac10/ticket/7240 https://svn.boost.org/trac10/ticket/7240 Report #7235: mapped_region not accepting size = 0 Wed, 15 Aug 2012 19:34:47 GMT Wed, 15 Aug 2012 21:18:01 GMT <p> Since Linux 2.6.12, and on other platforms, mmap is supposed to fail if the specified "size" parameter is 0. This causes some problems in all the Boost.Interprocess library since pretty much all the high-level structures (managed_shared_memory, for instance) use mapped_region (thus mmap) with size = 0, usually when the object is created with the "open_only" flag. </p> <p> I have observed this bug on <a class="missing wiki">BlueGene</a>/P's CNK environment, with gcc 4.1.2. It seems logical to me that, when opening an existing shared structure, the size doesn't have to be known. I don't have any solution yet... </p> matthieu.dorier@… https://svn.boost.org/trac10/ticket/7235 https://svn.boost.org/trac10/ticket/7235 Report #7225: xpressvie Symbol Tables,I want get mapped value by iterator ,not by semantic action Mon, 13 Aug 2012 13:01:43 GMT Mon, 13 Aug 2012 13:22:35 GMT <p> std::map&lt; std::string, string&gt; ones_map = map_list_of("one","1")("two","2"); std::string str( "one two three"); for(sregex_token_iterator cur( str.begin(), str.end(), number_rx ); </p> <blockquote> <p> ; cur != sregex_token_iterator(); ++cur ) </p> <blockquote> <p> { </p> <blockquote> <p> std::cout &lt;&lt; *cur &lt;&lt; ' ';<strong><em>will print 1 2</em></strong><em> </em></p> </blockquote> <p> } </p> </blockquote> </blockquote> <p> or str = regex_replace( str, ones_map, "$1"); <strong>can get "1 2"</strong> or, has existed an easy way? thank you! </p> taodm@… https://svn.boost.org/trac10/ticket/7225 https://svn.boost.org/trac10/ticket/7225 Report #7224: Fix endian.hpp and Filesystem on Android Mon, 13 Aug 2012 10:14:40 GMT Tue, 20 Nov 2012 19:10:09 GMT <p> The attached patch allows to compile most of Boost for Android. Two changes are required: </p> <p> 1) Tell boost/detail/endian.hpp that Android has &lt;endian.h&gt; 2) Android doesn't have statvfs, so make libs/filesystem/src/operations.cpp use statfs instead. </p> roman.donchenko@… https://svn.boost.org/trac10/ticket/7224 https://svn.boost.org/trac10/ticket/7224 Report #7219: boost::optional<int> gives strict alias warning on GCC 4.4.6, breaks at runtime Thu, 09 Aug 2012 19:26:20 GMT Sun, 09 Jun 2013 19:42:53 GMT <p> Here is my test code: </p> <pre class="wiki">#include &lt;boost/optional.hpp&gt; struct my_type { #if 1 // change to 0 to see the problem disappear typedef boost::optional&lt;int&gt; value_type; #else typedef boost::optional&lt;int __attribute((__may_alias__))&gt; value_type; #endif value_type value_; void set (int value) { value_ = value; } value_type get () { return value_; } }; // class event void testCase () { my_type a; a.set(4); bool const b = 4 == ( *a.get() ); if( !b ) abort(); // will abort unless 'may_alias' attribute is added to 'int' } </pre><p> Here is my compile line: </p> <pre class="wiki">g++ -c src/thread/unittest/test_gcc_bug.cpp -o ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.o -MD -MF ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.d -MP -MT ../../../derived/glnxa64/obj/deployment_server/foundation/util/src/thread/unittest/test_gcc_bug.o -I../../../src/include -I../../../derived/glnxa64/src/include -I../include -I../../include -I//mathworks/hub/3rdparty/R2013a/356881/glnxa64/boost/include -I//mathworks/hub/3rdparty/R2013a/356141/glnxa64/cpp11compat/include -I//mathworks/hub/3rdparty/R2013a/356141/glnxa64/cpp11compat/include -I//mathworks/hub/3rdparty/R2013a/350182/glnxa64/protobuf/include -I//mathworks/hub/3rdparty/R2013a/350182/glnxa64/tbb/include -DBOOST_FILESYSTEM_VERSION=2 -DBOOST_ASIO_DISABLE_EVENTFD -DBOOST_ASIO_DISABLE_EPOLL -DTBB_AVAILABLE -O2 -pipe -pthread -fPIC -std=c++98 -fvisibility=hidden -g -D_POSIX_C_SOURCE=199506L -fno-omit-frame-pointer -DNDEBUG -W -Wcast-align -Wall -Wwrite-strings -Wpointer-arith -Wcast-qual -Wno-unused -Woverloaded-virtual -Wnon-virtual-dtor -Wno-ignored-qualifiers </pre><p> I was also able to work around it by changing the return type of certain optional_base&lt;T&gt; methods (i.e. get_impl()) to 'T <span class="underline">attribute</span>((<span class="underline">may_alias</span>))&amp;' (or whatever the analogous pointer or reference type is). </p> Tony.Astolfi@… https://svn.boost.org/trac10/ticket/7219 https://svn.boost.org/trac10/ticket/7219 Report #7216: qcc.jam file could use a minor update for ar Thu, 09 Aug 2012 15:53:03 GMT Thu, 03 Jan 2013 16:58:14 GMT <p> The qcc.jam file is apparently intended for building on a QNX OS hosted target. It is common for the QNX source to be cross compiled on MS Windows and the default archive utility is not available. Would you please add a comment and alternate solution around line 220 like the following. This would probably save new Boost users from having to track down a solution to this in the future. </p> <p> # Modify archive command for cross-compiling for QNX NTO using a MS Windows hosted environment (x86 target used as example). # ntox86-ar rc "$(&lt;)" "$(&gt;)" </p> steve.lemay@… https://svn.boost.org/trac10/ticket/7216 https://svn.boost.org/trac10/ticket/7216 Report #7211: path_locale destructor crashes when overloaded operator new and delete are present Wed, 08 Aug 2012 20:27:50 GMT Thu, 09 Aug 2012 15:02:57 GMT <p> path_locale is defined using this construct in path.cpp: </p> <p> std::locale path_locale(std::locale(), new windows_file_codecvt); </p> <p> Under the debugger of VC10/11, the destructor of std::locale calls free() for this facet pointer when refcount reaches 0. </p> <p> I ackknowledge this is a bug in dinkumware implementation of the microsoft STL. See for mor information: </p> <p> <a class="ext-link" href="http://connect.microsoft.com/VisualStudio/feedback/details/750951/std-locale-implementation-in-crt-assumes-all-facets-to-be-allocated-on-crt-heap-and-crashes-in-destructor-in-debug-mode-if-a-facet-was-allocated-by-a-custom-allocator"><span class="icon">​</span>http://connect.microsoft.com/VisualStudio/feedback/details/750951/std-locale-implementation-in-crt-assumes-all-facets-to-be-allocated-on-crt-heap-and-crashes-in-destructor-in-debug-mode-if-a-facet-was-allocated-by-a-custom-allocator</a> </p> <p> That said, I suggest a workaround made using only standard calls. </p> <p> in v3/src/windows_file_codecvt.hpp, change the constructor to pass along default refcount: </p> <blockquote> <p> explicit windows_file_codecvt(size_t refs = 0) </p> <blockquote> <p> : std::codecvt&lt;wchar_t, char, std::mbstate_t&gt;(refs) {} </p> </blockquote> </blockquote> <p> and in v3/src/path.cpp, define path_locale like this: </p> <blockquote> <p> windows_file_codecvt windows_cvt_path_locale(1); </p> </blockquote> <blockquote> <p> std::locale path_locale(std::locale(), &amp;windows_cvt_path_locale); </p> </blockquote> Michel Lemay <flaming_mike_@…> https://svn.boost.org/trac10/ticket/7211 https://svn.boost.org/trac10/ticket/7211 Report #7202: filesystem: Function remove_all_aux() with an argument of type system::error_code& can throw exception in case of filesystem error Tue, 07 Aug 2012 14:11:02 GMT Tue, 07 Aug 2012 14:11:02 GMT <p> Function remove_all_aux() calls non-exception safe fs::directory_iterator constructor (without argument of system::error_code&amp; type). </p> <p> For example, in case of free file descriptors lack in filesystem this constructor can throw an exception "Too many open files". </p> <p> The better way is to use exception-safe overload of fs::directory_iterator constructor (with argument of system::error_code&amp; type). </p> <p> Possible fix is in attachment. </p> <p> The issue is actual for any version from 1.47 to 1.50 </p> batsun@… https://svn.boost.org/trac10/ticket/7202 https://svn.boost.org/trac10/ticket/7202 Report #7199: Lazy at_key for phoenix Tue, 07 Aug 2012 00:41:05 GMT Tue, 07 Aug 2012 01:58:18 GMT <p> Teleported from <a class="ext-link" href="http://boost.2283326.n4.nabble.com/Lazy-at-key-for-phoenix-2-td3746575.html"><span class="icon">​</span>spirit-general aug 2011</a>: </p> <blockquote class="citation"> <p> I needed a lazy version of at_key to deal with fusion associative sequences in semantic actions. The simple diff attached is based on the phoenix at.hpp file. There is also a small test program attached. </p> <p> Maybe "we" can add it to the Spirit 2 trunk? </p> <p> Thanks - michael </p> </blockquote> Sehe <bugs@…> https://svn.boost.org/trac10/ticket/7199 https://svn.boost.org/trac10/ticket/7199 Report #7197: Access regex_id from semantic action Mon, 06 Aug 2012 08:38:17 GMT Mon, 06 Aug 2012 08:38:17 GMT <p> It would be useful to be able to access from a semantic action the regex_id of the regex to which the semantic action belongs. </p> <p> I propose a special symbol named _regex_id_ for this purpose. </p> <p> Examples: </p> <pre class="wiki">sregex rx = xpr[cout &lt;&lt; _regex_id_]; regex_match(str, rx); // prints rx.regex_id() on success </pre><pre class="wiki">sregex sub = xpr[cout &lt;&lt; _regex_id_]; sregex rx = sub &gt;&gt; another_xpr; regex_match(str, rx); // prints sub.regex_id() on success (not rx.regex_id()) </pre> zeratul976@… https://svn.boost.org/trac10/ticket/7197 https://svn.boost.org/trac10/ticket/7197 Report #7193: vacpp.jam improvements Fri, 03 Aug 2012 20:02:50 GMT Fri, 03 Aug 2012 20:02:50 GMT <ul><li>Common up Linux linking with <code>gcc.jam</code>. </li><li>Make use of <code>$(CONFIG_COMMAND)</code> instead of hard-coded names. </li><li>Define inlining options. </li><li>Set <code>-bmaxdata</code> for 32-bit on AIX. </li></ul> Hubert Tong <hstong@…> https://svn.boost.org/trac10/ticket/7193 https://svn.boost.org/trac10/ticket/7193 Report #7192: [mpl] std::integral_constant support Thu, 02 Aug 2012 21:48:07 GMT Sun, 05 Aug 2012 17:13:28 GMT <p> The following reasonable-seeming use of mpl::plus doesn't compile: </p> <pre class="wiki"> #include &lt;utility&gt; #include &lt;boost/mpl/plus.hpp&gt; typedef std::integral_constant&lt;int, 1&gt; one; typedef boost::mpl::plus&lt;one, one&gt;::type two; </pre><p> That's because mpl only works with its own integral constant wrappers, not the standard one. That seems unfortunate to me. Is there any interest in supporting this? </p> <p> Here's the error (from clang trunk with glibc++): </p> <pre class="wiki"> 1&gt; In file included from main.cpp:2: 1&gt; In file included from /home/Eric/boost/org/trunk/boost/mpl/plus.hpp:19: 1&gt; In file included from /home/Eric/boost/org/trunk/boost/mpl/aux_/arithmetic_op.hpp:34: 1&gt; In file included from /home/Eric/boost/org/trunk/boost/mpl/aux_/include_preprocessed.hpp:37: 1&gt; /home/Eric/boost/org/trunk/boost/mpl/aux_/preprocessed/gcc/plus.hpp:60:25: error: no type named 'tag' in 'std::integral_constant&lt;int, 1&gt;' 1&gt; typedef typename T::tag type; 1&gt; ~~~~~~~~~~~~^~~ 1&gt; /home/Eric/boost/org/trunk/boost/mpl/aux_/preprocessed/gcc/plus.hpp:111:20: note: in instantiation of template class 'boost::mpl::plus_tag&lt;std::integral_constant&lt;int, 1&gt; &gt;' requested here 1&gt; typename plus_tag&lt;N1&gt;::type 1&gt; ^ </pre> Eric Niebler https://svn.boost.org/trac10/ticket/7192 https://svn.boost.org/trac10/ticket/7192 Report #7190: Allow multiple long synonyms for same option Wed, 01 Aug 2012 20:37:02 GMT Wed, 01 Aug 2012 20:37:02 GMT <p> The comma syntax "blargh,b" works for a single-character option synonym, but if I want multiple long names for the same option (e.g. for backwards compatibility) I see no way to do that, especially when defaults come into play. </p> chip@… https://svn.boost.org/trac10/ticket/7190 https://svn.boost.org/trac10/ticket/7190 Report #7187: boost::rational doesn't provide stream operators for wide streams Wed, 01 Aug 2012 09:29:00 GMT Fri, 30 Aug 2013 00:22:02 GMT <p> There are <code>std::istream&amp; operator&gt;&gt; (std::istream&amp; is, rational&lt;IntType&gt;&amp; r)</code> and <code>std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, const rational&lt;IntType&gt;&amp; r)</code>, but no wide stream versions. </p> Mathias Hasselmann <mathias@…> https://svn.boost.org/trac10/ticket/7187 https://svn.boost.org/trac10/ticket/7187 Report #7186: BOOST_BIND_ENABLE_STDCALL causes bind compilation to fail on x64 Tue, 31 Jul 2012 17:08:12 GMT Wed, 15 Aug 2012 19:39:48 GMT <p> On Win32, in order to use WINAPI ( = __stdcall) functions with boost, developers must define BOOST_BIND_ENABLE_STDCALL before including bind.hpp </p> <p> On Win64 however, __stdcall and __cdecl are equivalent. When the macro BOOST_BIND_ENABLE_STDCALL is defined, bind.hpp fails compilation for multiply defined functions. </p> <p> This request is that the macro BOOST_BIND_ENABLE_STDCALL will only be effective is possible. </p> mitmit@… https://svn.boost.org/trac10/ticket/7186 https://svn.boost.org/trac10/ticket/7186 Report #7184: atomic_cas32() uses Linux-only compiler intrinsic Mon, 30 Jul 2012 15:36:39 GMT Mon, 30 Jul 2012 15:36:39 GMT <p> atomic_cas32() incorrectly assumes _sync_val_compare_and_swap() intrinsic is available on any host OS using GCC4.1+ when, as of GCC4.4, it is only available on Linux. This renders it unportable. </p> <p> Problem was observed on QNX Neutrino 6.5.0. </p> jbaker@… https://svn.boost.org/trac10/ticket/7184 https://svn.boost.org/trac10/ticket/7184 Report #7179: boost:::iostream::inverse doesn't work with char_type other then char Thu, 26 Jul 2012 13:37:25 GMT Thu, 26 Jul 2012 13:37:25 GMT <p> See file \boost\iostreams\invert.hpp </p> <p> This lines </p> <pre class="wiki">std::streamsize read(Source&amp; src, char* s, std::streamsize n) ... std::streamsize write(Sink&amp; dest, const char* s, std::streamsize n) </pre><p> should be changed with: </p> <pre class="wiki">std::streamsize read(Source&amp; src, char_type* s, std::streamsize n) ... std::streamsize write(Sink&amp; dest, const char_type* s, std::streamsize n) </pre><p> for appropriate handling of unsigned char, for example. </p> mexal@… https://svn.boost.org/trac10/ticket/7179 https://svn.boost.org/trac10/ticket/7179 Report #7178: [mc] Message compiler toolset broken Thu, 26 Jul 2012 12:28:59 GMT Thu, 26 Jul 2012 12:28:59 GMT <p> For some reason, the resource compiler no longer waits for the message compiler output. This results in compilation failures like this: </p> <pre class="wiki">msvc.compile.mc bin.v2\libs\log\build\msvc-10.0\release\debug-symbols-on\threading-multi\simple_event_log.h MC: Compiling libs\log\src\simple_event_log.mc ...skipped &lt;pbin.v2\libs\log\build\msvc-10.0\release\debug-symbols-on\threading-multi&gt;simple_event_log_res.obj for lack of &lt;pbin.v2\libs\log\build\msvc-10.0\release\debug-symbols-on\threading-multi-object(res-scanner)@4128&gt;simple_event_log.rc... </pre><p> This is a partial compilation log from <a class="ext-link" href="http://sourceforge.net/projects/boost-log/"><span class="icon">​</span>Boost.Log</a> project. You can check out trunk or branches/v1 for testing. </p> <p> After the (unsuccessful) compilation I can see simple_event_log.rc, simple_event_log.h and MSG00001.bin files in the output directory, so the problem is probably caused by resource compiler being invoked too soon. </p> <p> The Boost.Log Jamfile was not changed for a long time with respect to the .mc compilation, an it worked some time ago. Unfortunately, I cannot tell when it stopped working. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/7178 https://svn.boost.org/trac10/ticket/7178 Report #7176: Infinite loop in regex.replace rule. Thu, 26 Jul 2012 07:50:06 GMT Thu, 26 Jul 2012 07:50:06 GMT <p> regex.replace falls into infinite "while $(parts)" loop if "match" parameter is empty string. Example: </p> <p> import regex ; </p> <p> str = blabla ; from = "" ; to = ":" ; res = [ regex.replace $(str) $(from) $(to) ] ; ECHO res: ; ECHO $(res) ; </p> Dmitriy Kinoshenko <dvb.kharkov@…> https://svn.boost.org/trac10/ticket/7176 https://svn.boost.org/trac10/ticket/7176 Report #7160: BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG and DATE_TIME_NO_DEFAULT_CONSTRUCTOR Mon, 23 Jul 2012 14:31:00 GMT Sat, 17 Nov 2012 16:00:00 GMT <p> I think I found a couple issues that are somewhat related to one another: </p> <p> <strong>Issue 1 - Defining BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG and using the ptime default constructor along with a thread causes runtime crash</strong> </p> <p> Steps to reproduce: </p> <ol><li>Define BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG (to use nanosecond resolution in a posix_time) in the pre-processor definitions (VS2008). </li><li>Create a boost::posix_time::ptime using the default constructor. </li><li>Create a boost::thread and call join. </li></ol><p> Example: </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/thread.hpp&gt; class ThreadClass { public: ThreadClass() { } void operator()() { return; } }; int main() { boost::posix_time::ptime currentTimeUTC; ThreadClass tc; boost::thread t(tc); t.join(); //causes a runtime access violation here std::cout &lt;&lt; "done" &lt;&lt; std::endl; system("pause"); return 0; } </pre><p> <strong>Issue 2 - defining DATE_TIME_NO_DEFAULT_CONSTRUCTOR causes compile-time error "no appropriate default constructor available"</strong> </p> <p> In Issue 1 above, if you do not use a default constructor for a ptime, it seems to fix the issue. So I figured that was fine and I could prevent a user of my library from using that default constructor by defining DATE_TIME_NO_DEFAULT_CONSTRUCTOR. However, this now breaks at compile time: </p> <p> Steps to reproduce: </p> <ol><li>Use the same code as above, just for ease of use. </li><li>Define the pre-processor definition: DATE_TIME_NO_DEFAULT_CONSTRUCTOR. </li><li>Compile the program. </li><li>The following error is produced: error C2512: 'boost::posix_time::ptime' : no appropriate default constructor available e:\libraries\boost\boost_1_47\boost\thread\win32\thread_data.hpp 145 </li></ol><p> The issue, I believe, is that I am using a boost thread, which uses a ptime default constructor in its <em>explicit timeout(sentinal_type)</em> constructor when it doesn't set the <em>abs_time</em> member variable. </p> <p> I am using Boost 1.47, however looking at the latest boost code (1.51), I don't see any fixes for these issues that stand out (I am not able to try the latest versions of Boost, so I apologize if they are fixed, but I would think that they are not) </p> Ricky Stoneback <rwstoneback@…> https://svn.boost.org/trac10/ticket/7160 https://svn.boost.org/trac10/ticket/7160 Report #7153: it is not possible to add methods in enum_ using def Fri, 20 Jul 2012 08:36:16 GMT Sat, 21 Jul 2012 21:19:11 GMT <p> Sometimes it is required to add method to exported enum to Python using Boost.Python. For example, if we want to specify <span class="underline">repr</span> method to enum. But the following code wont work. </p> <p> enum_&lt;my_enum&gt;("my_enum") </p> <blockquote> <p> .def("<span class="underline">repr</span>", &amp;my_enum_to_string) ; </p> </blockquote> tokiloki7@… https://svn.boost.org/trac10/ticket/7153 https://svn.boost.org/trac10/ticket/7153 Report #7149: system failed to compile with BOOST_NO_EXCEPTIONS defined when -fno-exceptions is NOT used Wed, 18 Jul 2012 20:51:04 GMT Mon, 29 Oct 2012 02:12:51 GMT <p> This no longer compiles on mac osx GCC 4 with BOOST_NO_EXCEPTIONS defined but without -fno-exceptions. BOOST_NO_EXCEPTIONS can be used to simply disable exception handling in boost not necessarily to flag that exception handling is disabled at the compiler level: </p> <p> <a href="http://www.boost.org/doc/libs/1_36_0/libs/utility/throw_exception.html">http://www.boost.org/doc/libs/1_36_0/libs/utility/throw_exception.html</a> </p> <p> BOOST_NO_EXCEPTION can be used to supply a custom exception handler. </p> <p> Wrapping the try block on line 136 on system/error_code.cpp with #ifndef BOOST_NO_EXCEPTIONS fixes this. </p> <p> See ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2098" title="#2098: Bugs: system fails to compile with -fno-exceptions (closed: fixed)">#2098</a> </p> joeriedel@… https://svn.boost.org/trac10/ticket/7149 https://svn.boost.org/trac10/ticket/7149 Report #7147: Pool in more depth documentation page has broken image links Wed, 18 Jul 2012 16:05:47 GMT Wed, 18 Jul 2012 16:05:47 GMT <p> If you navigate via browser to </p> <p> <a href="http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/html/boost_pool/pool/pooling.html">http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/html/boost_pool/pool/pooling.html</a> </p> <p> You will see several broken links to images, such as </p> <p> <a href="http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/images/pc1.png">http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/images/pc1.png</a> </p> <p> The directory <a href="http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/images/">http://www.boost.org/doc/libs/1_50_0/libs/pool/doc/images/</a> is readable, and appears to contain the right files, but with differently-cased names (e.g. pc1.PNG). </p> <p> I tried this with both Internet Explorer on Windows, and Chrome on Mac and Windows. </p> scott@… https://svn.boost.org/trac10/ticket/7147 https://svn.boost.org/trac10/ticket/7147 Report #7145: rational.hpp - Avoid repeated construction Wed, 18 Jul 2012 13:38:52 GMT Tue, 20 Aug 2013 11:30:43 GMT <p> In rational.hpp, two times '<a class="missing wiki">IntType</a> zero(0);' is used to "Avoid repeated construction" and two times 'int_type const zero( 0 );' is used. The two without the const may not be avoiding repeated construction. Since int_type is just a typedef from <a class="missing wiki">IntType</a>, it might be clearer if all int_type were replaced with <a class="missing wiki">IntType</a> and the typedef for int_type removed. </p> Dan Searles <dansearles@…> https://svn.boost.org/trac10/ticket/7145 https://svn.boost.org/trac10/ticket/7145 Report #7138: Output of a UDT with autoprefix requires specialization of auto_prefix_norm Mon, 16 Jul 2012 08:42:29 GMT Mon, 16 Jul 2012 08:42:29 GMT <p> Output of a UDT with autoprefix requires specialization of auto_prefix_norm for the scaling to take place. For example, to get expected scaling to kilometers from </p> <p> quantity&lt;length, measurement&lt;double&gt; &gt; biglen(measurement&lt;double&gt;(12345.0,123.0)*meters); autoscaled = 12.345(+/-0.123) km </p> <p> This can be achieved by adding this to measurement.hpp (where Y is the type of UDT) </p> <pre class="wiki">// Specialization of autoprefix_norm for UDTboost::units::measurement&lt;Y&gt; // See io.hpp. // This specialization is required to get autoprefix to work with this class. template&lt;class Y&gt; typename autoprefix_norm_impl&lt;boost::units::measurement&lt;Y&gt;, true&gt;::type autoprefix_norm(const boost::units::measurement&lt;Y&gt; &amp; arg) { return autoprefix_norm_impl&lt;Y, true&gt;::call(arg); } </pre><p> However this assumes that the class Y is convertible to double. autoprefix_norm_impl&lt;T, true&gt;::type appears to be always double. I am unclear if this is checked or is the responsibility or the user? </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/7138 https://svn.boost.org/trac10/ticket/7138 Report #7126: function is_separator and boost::filesystem::slash<boost::filesystem::path>::value move to main hpp file Fri, 13 Jul 2012 07:05:37 GMT Wed, 15 Aug 2012 19:43:34 GMT <p> Please add support get native path separator in main path.hpp header file, because this function now is inaccesible, and error appears (# error Compiling Filesystem version 2 file with BOOST_FILESYSTEM_VERSION defined != 2), this reprodused on boost 1.47 version </p> topilski@… https://svn.boost.org/trac10/ticket/7126 https://svn.boost.org/trac10/ticket/7126 Report #7125: weak_ptr::lock() thread safety Thu, 12 Jul 2012 11:13:40 GMT Thu, 12 Jul 2012 11:13:40 GMT <p> Imagine the following code: </p> <pre class="wiki">shared_ptr&lt;T&gt; sp(new ...); weak_ptr&lt;T&gt; wp(sp); sp.reset(); // thread A shared_ptr&lt;T&gt; sp1 = wp.lock(); // thread B </pre><p> It is not clear from documentation, whether it is safe to call shared_ptr::reset() and weak_ptr::lock() concurrently in different threads. It is very frequently asked question and should be documented explicitly. </p> Gennady Proskurin <gpr@…> https://svn.boost.org/trac10/ticket/7125 https://svn.boost.org/trac10/ticket/7125 Report #7119: [proto] implement an implicit conversion function for expressions Wed, 11 Jul 2012 18:43:33 GMT Wed, 11 Jul 2012 18:43:33 GMT <p> Revive the old proto::implicit_expr functionality to allow readable expressions to be returned from functions. </p> Eric Niebler https://svn.boost.org/trac10/ticket/7119 https://svn.boost.org/trac10/ticket/7119 Report #7118: Condition.Wait with a mutex instead of lock can be mysterious Wed, 11 Jul 2012 16:39:54 GMT Wed, 11 Jul 2012 16:39:54 GMT <p> This code correctly fails to compile: #include &lt;boost/interprocess/sync/named_condition.hpp&gt; #include &lt;boost/interprocess/sync/named_mutex.hpp&gt; </p> <p> int _tmain(int argc, _TCHAR* argv[]) { </p> <blockquote> <p> boost::interprocess::named_mutex mutex( boost::interprocess::open_or_create, "test" ); boost::interprocess::named_condition condition( boost::interprocess::open_or_create, "test" ); condition.wait( mutex ); return 0; </p> </blockquote> <p> } </p> <p> The resulting compile error (at least on VC++ 2010) is a tad mysterious: </p> <p> 1&gt;c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\shm\named_condition.hpp(204): error C2248: 'boost::interprocess::interprocess_mutex::mutex' : cannot access private member declared in class 'boost::interprocess::interprocess_mutex' 1&gt; c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\interprocess_mutex.hpp(117) : see declaration of 'boost::interprocess::interprocess_mutex::mutex' 1&gt; c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\interprocess_mutex.hpp(67) : see declaration of 'boost::interprocess::interprocess_mutex' 1&gt; c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\shm\named_condition.hpp(204) : while compiling class template member function 'boost::interprocess::ipcdetail::shm_named_condition::lock_wrapper&lt;Lock&gt;::mutex_type *boost::interprocess::ipcdetail::shm_named_condition::lock_wrapper&lt;Lock&gt;::mutex(void) const' 1&gt; with 1&gt; [ 1&gt; Lock=boost::interprocess::named_mutex 1&gt; ] 1&gt; c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\shm\named_condition.hpp(342) : see reference to class template instantiation 'boost::interprocess::ipcdetail::shm_named_condition::lock_wrapper&lt;Lock&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Lock=boost::interprocess::named_mutex 1&gt; ] 1&gt; c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\named_condition.hpp(156) : see reference to function template instantiation 'void boost::interprocess::ipcdetail::shm_named_condition::wait&lt;L&gt;(L &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; L=boost::interprocess::named_mutex 1&gt; ] 1&gt; c:\code\projects\testinterprocess\testinterprocess\testinterprocess.cpp(10) : see reference to function template instantiation 'void boost::interprocess::named_condition::wait&lt;boost::interprocess::named_mutex&gt;(L &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; L=boost::interprocess::named_mutex 1&gt; ] 1&gt;c:\code\sdks\boost\include\boost-1_50\boost\interprocess\sync\shm\named_condition.hpp(204): error C2064: term does not evaluate to a function taking 0 arguments </p> <p> It is not obvious that the problem involves the use of a Mutex instead of a <a class="missing wiki">ScopedLock</a> or the like. While the example code makes this clear, if you examine only the documentation, this detail might be confusing. </p> <p> Recommend adding a concept check to help guide someone towards using a lock instead of a mutex. </p> Trey Van Riper <fleeb.fantastique@…> https://svn.boost.org/trac10/ticket/7118 https://svn.boost.org/trac10/ticket/7118 Report #7107: Support property bundles as default parameter in graph algorithms Mon, 09 Jul 2012 16:07:09 GMT Mon, 09 Jul 2012 16:07:09 GMT <p> Bundled properties don't support default parameters as internal properties do. Adding a possibility to tag members of a bundle would solve that issue. </p> <pre class="wiki">#include &lt;boost/graph/adjacency_list.hpp&gt; #include &lt;boost/graph/properties.hpp&gt; #include &lt;boost/graph/dijkstra_shortest_paths.hpp&gt; #include &lt;string&gt; using namespace std; using namespace boost; struct City{}; struct Highway { double weight; }; typedef adjacency_list&lt; listS, vecS, bidirectionalS, City, Highway&gt; Map; typedef adjacency_list &lt; listS, vecS, directedS, no_property, property &lt; edge_weight_t, int &gt; &gt; Map2; int main() { Map m; Map2 m2; vector&lt;double&gt; distances(num_vertices(m2)); dijkstra_shortest_paths( m2, *vertices(m2).first, distance_map(make_iterator_property_map(distances.begin(), get(vertex_index, m2)))); // does not work // dijkstra_shortest_paths( // m, *vertices(m).first, // boost::distance_map(make_iterator_property_map(distances.begin(), // get(vertex_index, m)))); return 0; } </pre><p> One solution could be to add an optional tags typedef that contains an mpl::map between member pointers and property enum types. Alternatively, a traits class could be specified to map to the right enum type. Maybe someone can also come up with a nice mechanism to transparently tag a member. </p> philipp.moeller@… https://svn.boost.org/trac10/ticket/7107 https://svn.boost.org/trac10/ticket/7107 Report #7106: multi_array::resize switches to default-constructed allocator Mon, 09 Jul 2012 14:00:57 GMT Mon, 09 Jul 2012 14:00:57 GMT <p> I've run into this with 1.46 but eyeballing the code on trunk it doesn't seem to have changed. </p> <p> The implementation of <code>resize</code> starts like this: </p> <pre class="wiki"> // build a multi_array with the specs given multi_array new_array(ranges,this-&gt;storage_order()); </pre><p> However, no allocator is passed to this constructor. If <code>*this</code> has a non-default allocator, then it will not get used to allocate the resized storage, and furthermore, the default allocator in new_array will get swapped in to <code>*this</code>, wiping out the custom allocator. </p> <p> This can be fixed by changing this line to </p> <pre class="wiki"> multi_array new_array(ranges,this-&gt;storage_order(),allocator_); </pre><p> so that the new array uses the same allocator as the current one. </p> <p> I'll attach a test case that demonstrates the issue by using an allocator class where instances are named and report the allocations they make (I'm using a more complex version of this to track memory usage, which is where I hit the bug). It currently reports </p> <pre class="wiki">Allocated 17 bytes [name = vector] Allocated 0 bytes [name = multi_array] Allocated 15 bytes [name = default] </pre><p> but with the fix applied it reports </p> <pre class="wiki">Allocated 17 bytes [name = vector] Allocated 0 bytes [name = multi_array] Allocated 15 bytes [name = multi_array] </pre><p> It is the final line where the resize is taking place. </p> bmerry@… https://svn.boost.org/trac10/ticket/7106 https://svn.boost.org/trac10/ticket/7106 Report #7102: typo in documantation of boost::program_options::basic_command_line_parser Sun, 08 Jul 2012 12:03:09 GMT Wed, 15 Aug 2012 20:09:27 GMT <p> Typo in "creating overloads with a smaller <strong>nuber</strong> of parameters". </p> <p> <a href="http://www.boost.org/doc/libs/1_50_0/doc/html/boost/program_options/basic_command_line_parser.html">http://www.boost.org/doc/libs/1_50_0/doc/html/boost/program_options/basic_command_line_parser.html</a> </p> bnagaev@… https://svn.boost.org/trac10/ticket/7102 https://svn.boost.org/trac10/ticket/7102 Report #7101: b2 defines multiple isysroot on Mac OSX 10.6 when targeting SDK versions earlier than 10.6 Sun, 08 Jul 2012 08:57:53 GMT Tue, 26 Mar 2013 16:23:18 GMT <p> Building Boost 1.50.0 on Mac OSX 10.6 included multiple SDK versions when targeting SDK versions 10.5 adn/or 10.4; </p> <p> ./b2 toolset=darwin link=static threading=multi stage --with-program_options architecture=combined macosx-version=10.5 macosx-version-min=10.5 -d3 </p> <p> produces </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.5 -arch i386 -arch ppc -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -c -o "bin.v2/libs/program_options/build/darwin-4.2.1/release/architecture-combined/link-static/macosx-version-min-10.5/macosx-version-10.5/threading-multi/cmdline.o" "libs/program_options/src/cmdline.cpp" </p> </blockquote> <p> and targeting 10.4 SDK </p> <p> ./b2 toolset=darwin link=static threading=multi stage --with-program_options architecture=combined macosx-version=10.4 macosx-version-min=10.4 -d3 </p> <p> produces </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc -DBOOST_ALL_NO_LIB=1 -DNDEBUG -I"." -c -o "bin.v2/libs/program_options/build/darwin-4.2.1/release/architecture-combined/link-static/macosx-version-min-10.4/macosx-version-10.4/threading-multi/cmdline.o" "libs/program_options/src/cmdline.cpp" </p> </blockquote> <p> that is, <code>isysroot</code> is defined multiple times. That apparently causes the latest SDK to be used, which leads to linker errors when a project built against an earlier SDK tries to link Boost. </p> <p> A quick workaround is to hide the later SDK from b2: </p> <pre class="wiki">sudo mv /Developer/SDKs/MacOSX10.6.sdk /Developer/SDKs/bak.MacOSX10.6.sdk </pre><p> then run b2 as usual, and finally revert the renaming of the SDK </p> <pre class="wiki">sudo mv /Developer/SDKs/bak.MacOSX10.6.sdk /Developer/SDKs/MacOSX10.6.sdk </pre> mikko.vainio@… https://svn.boost.org/trac10/ticket/7101 https://svn.boost.org/trac10/ticket/7101 Report #7098: CRC: Initial values should not be reflected Fri, 06 Jul 2012 10:58:47 GMT Fri, 06 Jul 2012 10:58:47 GMT <p> The CRC classes have a parameter '<a class="missing wiki">ReflectIn</a>', which affects whether the message data is reflected. It also causes the initial remainder of the CRC to be reflected, and that's probably incorrect. This has likely remained undetected 'til now because all the included presets use bit-palindromic initial remainders. </p> <p> LVM2 uses a non-palindromic initial remainder, so I've used its code for a test case. You can see that both LVM's calc_crc() and zlib's crc32() don't reflect the initial remainder. It's evident that boost's crc does, and that no obvious change in template parameters yields the same behaviour as LVM and zlib. </p> <p> Tested in both clang++ 3.1 and g++ 4.2. </p> Dave Vasilevsky <dave@…> https://svn.boost.org/trac10/ticket/7098 https://svn.boost.org/trac10/ticket/7098 Report #7082: Add support for benchmarking Thu, 05 Jul 2012 05:32:07 GMT Tue, 31 Jul 2012 15:38:08 GMT <p> One useful thing with boost test would be to run the tests in a "benchmarking mode". The general idea is to be able to run many iterations of all tests to get an idea of their performance. I believe the following changes would be sufficient: </p> <ul><li>BOOST_AUTO_TEST_CASE could have an additional optional parameter: number_of_iterations. This is set by the user manually. For example: BOOST_AUTO_TEST_CASE(my_test_case, 10000). If not passed in, it would default to 1. </li><li>A new command line parameter would trigger benchmarking: say --benchmarking. When passed in, all tests would run number_of_ iterations times. </li><li>the elapsed time for a test would then be the accumulated time taken by all iterations </li></ul><p> This would be great for nightlies. </p> <p> This issue was discussed a bit on the mailing-list on this thread: </p> <p> <a class="ext-link" href="http://lists.boost.org/boost-users/2011/01/65790.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2011/01/65790.php</a> </p> marco.craveiro@… https://svn.boost.org/trac10/ticket/7082 https://svn.boost.org/trac10/ticket/7082 Report #7080: make_constructor Does Not Initialize base_wrapper Wed, 04 Jul 2012 21:00:54 GMT Fri, 01 Mar 2013 15:41:34 GMT <p> When binding a shared_ptr to Python, we're using a custom allocator defined using make_constructor: </p> <pre class="wiki">class_&lt; Controller, shared_ptr&lt;Controller&gt;, boost::noncopyable &gt;("Controller", no_init) .def("__init__", boost::python::make_constructor(&amp;Controller::make)); </pre><p> This works as expected except when classes are derived in Python. In those cases, get_override does not work, since m_self is NULL. If you use init&lt;&gt;() in the class_ constructor, instead of the make_constructor line, it works as expected. </p> <p> The bug is that make_constructor does not initialize the base_wrapper. I've tried a fix as follows, and it's now functional -- though I can't say if this is a good way to solve it. </p> <pre class="wiki">+++ make_constructor.hpp @@ -59,6 +59,7 @@ void* memory = holder::allocate(this-&gt;m_self, offsetof(instance_t, storage), sizeof(holder)); try { (new (memory) holder(x))-&gt;install(this-&gt;m_self); + python::detail::initialize_wrapper(this-&gt;m_self, get_pointer(x)); } catch(...) { holder::deallocate(this-&gt;m_self, memory); </pre><p> It's also possible to fix this by partially specializing "template &lt;typename T&gt; struct install_holder;" before boost::python is included. </p> team@… https://svn.boost.org/trac10/ticket/7080 https://svn.boost.org/trac10/ticket/7080 Report #7076: A few trivial 64-bit warning fixes on Windows Wed, 04 Jul 2012 11:15:27 GMT Wed, 04 Jul 2012 11:15:27 GMT <p> In case they are of any interest... </p> <p> Regards </p> <p> Luke Elliott. </p> Luke Elliott <lukester_null@…> https://svn.boost.org/trac10/ticket/7076 https://svn.boost.org/trac10/ticket/7076 Report #7067: The same options in the different groups cause exception while parsing configuration file. Tue, 03 Jul 2012 12:30:56 GMT Tue, 03 Jul 2012 14:01:03 GMT <p> Preconditions: There are two option descriptions defined, containing the same options. The options are stored in the configuration file and grouped by the group. </p> <p> Result: options_descriptions add method adds two groups parse method throws unknown option exception with cat1.op1 </p> <p> namespace po::boost::program_options; void test() { po::options_description cat1("cat1"); cat1.add_options() </p> <blockquote> <p> ("op1", po::value&lt;std::string&gt;(), "op1") ("op2", po::value&lt;std::string&gt;(), "op2") ("op3", po::value&lt;std::string&gt;(), "op3") ("op4", po::value&lt;std::string&gt;(), "op4"); </p> </blockquote> <p> po::options_description cat2("cat2"); cat2.add_options() </p> <blockquote> <p> ("op1", po::value&lt;std::string&gt;(), "op1") ("op2", po::value&lt;std::string&gt;(), "op2") ("op3", po::value&lt;std::string&gt;(), "op3") ("op4", po::value&lt;std::string&gt;(), "op4"); </p> </blockquote> <p> po::options_description full("full"); full.add(cat1).add(cat2); </p> <p> po::variables_map map; </p> <p> boost::filesystem::path path("option.ini"); </p> <p> try { </p> <blockquote> <p> po::store(po::parse_config_file&lt;char&gt;("option.ini", full), map); <em>exception is thrown "Unknown option cat1.op1" po::notify(map); </em></p> </blockquote> <p> } catch(std::exception &amp; ex) { </p> <blockquote> <p> std::cout &lt;&lt; ex.what() &lt;&lt; std::endl; </p> </blockquote> <p> } </p> <p> option.ini: </p> <p> [cat1] </p> <blockquote> <p> op1=v1 op2=v2 op3=v3 op4=v4 </p> </blockquote> <p> [cat2] </p> <blockquote> <p> op1=v5 op2=v6 op3=v7 op4=v8 </p> </blockquote> Grzegorz Andrejczuk <g.andrejczuk@…> https://svn.boost.org/trac10/ticket/7067 https://svn.boost.org/trac10/ticket/7067 Report #7064: hex() with flag for lowercase output Mon, 02 Jul 2012 14:27:55 GMT Sun, 31 Jan 2016 09:15:17 GMT <p> Could you provide a paramter for hex() to indicate lowercase output is desired? </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/7064 https://svn.boost.org/trac10/ticket/7064 Report #7063: try_unhex() that doesn't throw on bad input Mon, 02 Jul 2012 14:26:46 GMT Thu, 27 Sep 2012 14:24:27 GMT <p> Could you provide an unhex() variant that doesn't throw on bad input, but returns an error (non-false) instead? </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/7063 https://svn.boost.org/trac10/ticket/7063 Report #7055: Boost build doesn't detect presence of ICU for regex Fri, 29 Jun 2012 14:50:35 GMT Sun, 08 Jul 2012 17:59:29 GMT <p> When building Boost against ICU (currently using version 4.4.2), Boost is not detecting the presence of ICU on multiple platforms (Linux/gcc 4.4.6, Macintosh/gcc 4.2.1, Windows/VS2008). </p> <p> In order for Boost to detect ICU, I had to apply the attached patches. </p> Jonathan Jones <jonathan.jones@…> https://svn.boost.org/trac10/ticket/7055 https://svn.boost.org/trac10/ticket/7055 Report #7047: Deriving custom archive classes from boost::archive::text_oarchive_impl and boost::archive::text_iarchive_impl Fri, 29 Jun 2012 05:31:07 GMT Sat, 24 Aug 2013 14:09:23 GMT <p> From here<a class="ext-link" href="http://stackoverflow.com/questions/10691911/deriving-custom-archive-classes-from-boostarchivetext-oarchive-impl-and-boos"><span class="icon">​</span>http://stackoverflow.com/questions/10691911/deriving-custom-archive-classes-from-boostarchivetext-oarchive-impl-and-boos</a> </p> <p> Summary: After changing the base classes of my custom archives from binary_?archive_impl to text_?archive_impl, my custom archive classes are no longer "found" when the compiler is instantiating the serialize(...) methods in my other classes. </p> <p> Background: My application was successfully reading and writing files to disk using subclasses of binary_?archive_impl (the documentation and/or code comments recommend this over deriving from binary_?archive). I needed to switch from a binary file format to a text format, so I switched the base classes of my custom archives to text_?archive_impl. That's when everything blew up. </p> <p> The problem: My custom archive classes add functionality, including some additional methods which do not exist in their Boost base classes; these methods are called in the serialize(...) methods in many of my classes, and they were working fine. After changing the base classes from binary_?archive_impl to text_?archive_impl, I received compilation errors all over the place complaining that my custom methods do not exist in text_?archive. Well, that's obvious (!!!), but they do exist in my custom archives, and they were working just fine when I was using Boost's binary base classes. What's the deal? </p> <p> What I found, and my temporary - but undesirable - solution: After tearing my hair out and going around in circles for about a day, this is what I found... </p> <p> 1) Some time ago (Boost 1.34 I believe), the files "binary_?archive.hpp" were split up into "binary_?archive_impl.hpp" and "binary_?archive.hpp" (the latter #include the former). This was not done to "text_?archive.hpp". (As a result, I changed my application's #include lines from "binary_?archive_impl.hpp" to simply "text_?archive.hpp".) </p> <p> 2) If I split up "text_?archive.hpp" into two parts and #include only the "..._impl.hpp" headers, everything works. (But I really don't want to modify my Boost installation!) </p> <p> 3) Looking more closely at these headers and fiddling around a bit, I found that if I use the original, unmodified headers and comment out the line </p> <p> BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::text_oarchive) </p> <p> (and likewise for text_iarchive), then everything works fine again. (By the way I have similar lines in my own archive code to "register" my custom archives.) </p> zachais.vawter@… https://svn.boost.org/trac10/ticket/7047 https://svn.boost.org/trac10/ticket/7047 Report #7028: NDEBUG should disable asserts even if BOOST_ENABLE_ASSERT_HANDLER is defined Tue, 26 Jun 2012 11:25:00 GMT Tue, 15 Apr 2014 08:39:36 GMT <p> I have some components that require the use of a specific assert handler. </p> <p> Compiling those components in debug or release is something that should be fairly independent from the flags required to use my components. </p> <p> Therefore it would be more practical for me if when both BOOST_ENABLE_ASSERT_HANDLER and NDEBUG are defined the assert handler is not called. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/7028 https://svn.boost.org/trac10/ticket/7028 Report #7027: interprocess: Message queue using Windows shared memory Tue, 26 Jun 2012 11:01:58 GMT Wed, 01 Aug 2012 16:41:37 GMT <p> <code>interprocess::message_queue</code> currently always uses the <code>shared_memory_object</code> implementation. However, on Windows it can be desireable to have a message queue backed by <code>windows_shared_memory</code> instead. These patches add support for this. </p> <ul><li>The first patch generalizes <code>message_queue_t&lt;&gt;</code>; the message queue logic is moved into <code>message_queue_base_t&lt;&gt;</code>, and the actual storage backend handling is delegated to a derived class. <code>message_queue_t&lt;&gt;</code> is changed to be based on <code>message_queue_base_t&lt;&gt;</code> and to provide storage in a <code>shared_memory_object</code>. </li><li>The second patch adds the <code>windows_message_queue&lt;&gt;</code> class which backs the storage with a <code>windows_shared_memory</code>. A variant of the message queue test is also added. </li></ul> frank.richter@… https://svn.boost.org/trac10/ticket/7027 https://svn.boost.org/trac10/ticket/7027 Report #7026: bjam: Use 64-bit MSVC tools on Win64, even in a 32-bit shell Tue, 26 Jun 2012 09:43:54 GMT Tue, 26 Jun 2012 11:15:16 GMT <p> When building with <code>toolset=msvc address-model=64</code> in a 32-bit shell on Win64, the cross tools (32-bit targeting 64-bit) instead of the native 64-bit tools are used. The reason is the <code>PROCESSOR_ARCHITECTURE</code> env var pretending to be a 32-bit environment. However, on 64-bit Windows, the correct native value can be found in <code>PROCESSOR_ARCHITEW6432</code>. The attached patch makes the logic to determine the tools to use respect that alternative variable. </p> frank.richter@… https://svn.boost.org/trac10/ticket/7026 https://svn.boost.org/trac10/ticket/7026 Report #7017: libs/pool/test/test_simple_seg_storage.cpp produces bus error on 64-bit Solaris SPARC architecture Fri, 22 Jun 2012 18:48:14 GMT Fri, 22 Jun 2012 18:48:14 GMT <p> main() in test_simple_seg_storage.cpp adds blocks with offsets of 0, 49 and 25. This results in non-word aligned access and a bus error on the Sparc Solaris architecture for the latter two when built and run in 64-bit mode. It looks like the offsets should have been 48 and 24 since the all three requested chunk sizes are 24. </p> Mike Liang <mtliang@…> https://svn.boost.org/trac10/ticket/7017 https://svn.boost.org/trac10/ticket/7017 Report #7015: boost::signals::connection with shared_ptr to connected signal Fri, 22 Jun 2012 15:27:26 GMT Wed, 15 Aug 2012 20:12:25 GMT <p> If you create a connection with a shared_ptr that controls the lifespan of the signal an access violation occurs on disconnection if that is the last remaining reference to the object. </p> <div class="wiki-code"><div class="code"><pre><span class="k">class</span> <span class="nc">Child</span> <span class="o">:</span> <span class="k">public</span> <span class="n">boost</span><span class="o">::</span><span class="n">signals</span><span class="o">::</span><span class="n">trackable</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="n">Child</span><span class="p">(){}</span> <span class="k">virtual</span> <span class="o">~</span><span class="n">Child</span><span class="p">(){}</span> <span class="kt">void</span> <span class="n">callback</span><span class="p">(</span> <span class="kt">int</span> <span class="n">a</span><span class="p">,</span> <span class="kt">int</span> <span class="n">b</span> <span class="p">)</span> <span class="p">{</span> <span class="n">printf</span><span class="p">(</span> <span class="s">&quot;Child::callback( %d, %d )</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="p">);</span> <span class="p">}</span> <span class="n">boost</span><span class="o">::</span><span class="n">signal</span><span class="o">&lt;</span><span class="kt">void</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="o">&gt;</span> <span class="n">mSignal</span><span class="p">;</span> <span class="p">};</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">Child</span><span class="o">&gt;</span> <span class="n">c</span><span class="p">(</span> <span class="k">new</span> <span class="n">Child</span> <span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">signals</span><span class="o">::</span><span class="n">connection</span> <span class="n">con</span><span class="p">;</span> <span class="n">con</span> <span class="o">=</span> <span class="n">c</span><span class="o">-&gt;</span><span class="n">mSignal</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span> <span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span> <span class="o">&amp;</span><span class="n">Child</span><span class="o">::</span><span class="n">callback</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">_1</span> <span class="p">)</span> <span class="p">);</span> <span class="n">c</span><span class="o">-&gt;</span><span class="n">mSignal</span><span class="p">(</span> <span class="mi">5</span> <span class="p">);</span> <span class="n">c</span><span class="p">.</span><span class="n">reset</span><span class="p">();</span> <span class="c1">// The connection is the only thing keeping it alive. When we disconnect</span> <span class="c1">// it will also destroy the signal. This causes a memory access violation</span> <span class="c1">// when the signal containing the list of connections gets deleted while</span> <span class="c1">// removing an item from that list.</span> <span class="n">con</span><span class="p">.</span><span class="n">disconnect</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> The fix is to prevent the slot from going out of scope during the act of disconnecting from the signal. </p> <pre class="wiki">diff --git a/libs/signals/src/signal_base.cpp b/libs/signals/src/signal_base.cpp index 759672d..918e811 100644 --- a/libs/signals/src/signal_base.cpp +++ b/libs/signals/src/signal_base.cpp @@ -143,8 +143,14 @@ namespace boost { self-&gt;flags.delayed_disconnect = true; } else { // Just remove the slot now, it's safe + // There is a chance that the binding has the last reference to + // the signal, and destroying it will destroy the signal. To prevent + // this from causing a problem keep a local copy of the binding + // during it's removal from the slot list. + boost::any keep_alive = (*slot)-&gt;second; self-&gt;slots_.erase(*slot); + return; } } } </pre> Nick Mayer <nick.mayer@…> https://svn.boost.org/trac10/ticket/7015 https://svn.boost.org/trac10/ticket/7015 Report #7013: Serialization Versioning Broken Fri, 22 Jun 2012 15:04:59 GMT Wed, 15 Aug 2012 19:46:09 GMT <p> Version numbers are set to random garbage numbers with or without using BOOST_CLASS_VERSION. Sample code attached, sample output with version 1.49.0 on RHEL5 is as follows: </p> <pre class="wiki">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes" ?&gt; &lt;!DOCTYPE boost_serialization&gt; &lt;boost_serialization signature="serialization::archive" version="9"&gt; &lt;Nested class_id="0" tracking_level="0" version="2057815296"&gt; &lt;c&gt;99&lt;/c&gt; &lt;/Nested&gt; &lt;/boost_serialization&gt; </pre> shaderaider@… https://svn.boost.org/trac10/ticket/7013 https://svn.boost.org/trac10/ticket/7013 Report #7011: Toolset 'intel-darwin' fails as 'stdarg.h' can not be found Thu, 21 Jun 2012 16:38:35 GMT Thu, 03 Jan 2013 18:42:31 GMT <p> Building boost (1.49, and also 1.50 beta) using the 'intel-darwin' toolset currently fails on my system, showing errors such as: </p> <pre class="wiki">compile.c(33): catastrophic error: cannot open source file "stdarg.h" # include &lt;stdarg.h&gt; ^ compilation aborted for compile.c (code 4) </pre><p> I use the most recent versions of the required developer programs, ICC 12.1.4 and XCode 4.3.3. This appears to be a specific problem of Apple &amp; Intel in case of 'stdarg.h', and the error can be replicated by compiling any C/C++ source file including that header. The problem is also described in Intel's support forum (<a class="ext-link" href="http://software.intel.com/en-us/forums/showthread.php?t=69724"><span class="icon">​</span>http://software.intel.com/en-us/forums/showthread.php?t=69724</a>). </p> <p> Apparently, the problem can be fixed by adding at least one of the following compiler flags: </p> <pre class="wiki">-dev-usr-root=/Applications/Xcode.app/Contents/Developer/usr -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -gcc-name=gcc-4.2 -gxx-name=g++-4.2 </pre><p> Potentially, a call to <code>xcode-select -print-path</code> may be necessary to obtain the correct path. From my perspective, the first option in combination with <code>xcode-select</code> looks to be the most robust solution. </p> <p> I am, unfortunately, a novice concerning bjam, and can thus not offer a real fix. I will be happy to help if a test run is required. Thank you for help! </p> vogel@… https://svn.boost.org/trac10/ticket/7011 https://svn.boost.org/trac10/ticket/7011 Report #7010: A few 32/64 bit warning fixes Thu, 21 Jun 2012 15:49:57 GMT Sun, 15 Jul 2012 19:51:49 GMT <p> if of any interest. Mainly (only?) <a class="missing wiki">SunStudio</a>, if memory serves. </p> <p> Regards </p> <p> Luke Elliott. </p> Luke Elliott <lukester_null@…> https://svn.boost.org/trac10/ticket/7010 https://svn.boost.org/trac10/ticket/7010 Report #7006: Restricted pointers support. Thu, 21 Jun 2012 10:11:48 GMT Sun, 09 Mar 2014 18:11:10 GMT <p> Trying to form iterator_ranges with restricted pointers causes compiler errors. </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/7006 https://svn.boost.org/trac10/ticket/7006 Report #6998: visibility problems on Mac OS X / GCC Tue, 19 Jun 2012 12:35:09 GMT Tue, 19 Jun 2012 12:40:19 GMT <p> When an application built with -fvisibility=hidden is linked against libboost_program_options.dylib (built with default visibility), the linker emits the following warning: </p> <blockquote> <p> ld: warning: direct access in __static_initialization_and_destruction_0(int, int) to global weak symbol boost::program_options::options_description::~options_description() means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings. </p> </blockquote> <p> Even if the two are built with different visibility settings the program_options headers should force whatever needs to be visible to be. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/6998 https://svn.boost.org/trac10/ticket/6998 Report #6997: Bug in specifying alternate build toolset in gcc.jam Mon, 18 Jun 2012 23:59:41 GMT Thu, 03 Jan 2013 17:03:45 GMT <p> You cannot currently specify alternate gcc versions. For example, if you do the following: </p> <blockquote> <p> ./b2 toolset=gcc-44 </p> </blockquote> <p> You will get an error like: </p> <blockquote> <p> error: version '44' requested but 'g++-44' not found and version '4.1.2' of default 'g++' does not match </p> </blockquote> <p> This is because the version-checking code tries to run g++-44 instead of g++44... the patch fixes this in the affected code, comments, and printouts. </p> carson.fenimore@… https://svn.boost.org/trac10/ticket/6997 https://svn.boost.org/trac10/ticket/6997 Report #6994: gzip_decompressor issue with unusual files Mon, 18 Jun 2012 08:48:13 GMT Mon, 02 Mar 2015 14:22:00 GMT <p> The gzip_decompressor implementation fails on gzip files that contain an empty block after a non-empty one. (You can make such a file by gzipping a nonempty and an empty file and concatenating them, but they are also sometimes written by other tools.) Here such a file: </p> <p> $ hexdump -C hello.txt.gz 00000000 1f 8b 08 00 0d ea b4 4f 00 03 cb 48 cd c9 c9 57 |.......O...H...W| 00000010 28 c9 48 2d 4a e5 02 00 8e 45 d1 59 0c 00 00 00 |(.H-J....E.Y....| 00000020 1f 8b 08 00 18 ea b4 4f 00 03 03 00 00 00 00 00 |.......O........| 00000030 00 00 00 00 |....| 00000034 </p> <p> My file reading code is: </p> <p> /* test.cpp */ #include &lt;iostream&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/filter/gzip.hpp&gt; #include &lt;boost/iostreams/copy.hpp&gt; #include &lt;boost/iostreams/device/file.hpp&gt; </p> <p> int main( int, char<strong> ) { </strong></p> <blockquote> <p> boost::iostreams::filtering_istream stream ; stream.push( boost::iostreams::gzip_decompressor() ) ; boost::iostreams::file_source file( argv<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> ) ; stream.push( file ) ; boost::iostreams::copy( stream, std::cout ) ; </p> </blockquote> <p> } </p> <p> Using gunzip on the above file works fine: $ gunzip -c ../hello.txt.bgz Hello, this is a test file. </p> <p> Using the test program does not: $ ./test ../hello.txt.bgz terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::iostreams::gzip_error&gt; &gt;' </p> <blockquote> <p> what(): gzip error </p> </blockquote> Gavin Band <gavinband@…> https://svn.boost.org/trac10/ticket/6994 https://svn.boost.org/trac10/ticket/6994 Report #6992: accumulator's median feature skips 1st two data points. Sat, 16 Jun 2012 01:10:15 GMT Wed, 14 Dec 2016 11:44:04 GMT <p> Hi, </p> <p> I used accumulator's median feature to calculate mean/median of input data. I also used armadillo library's mean/median. The mean from two libraries always agree. However the medians don't. I tried to give 1,2,3,4,5 input data to the program. and found accumulator's median outputs 0 if the number of input data is 1 or 2. It starts to output non-zero median if given more than 2 data points however, first two data points are not used. </p> <p> Please check what is going on. </p> <p> Thanks, yu </p> polyactis@… https://svn.boost.org/trac10/ticket/6992 https://svn.boost.org/trac10/ticket/6992 Report #6991: Provide a way to disable interspersed arguments Fri, 15 Jun 2012 22:08:17 GMT Wed, 17 Oct 2012 09:09:02 GMT <p> I'm trying to write a program that wraps other programs, and allowing switches to come after the first positional argument in this situation is very annoying from the user's standpoint. </p> <p> If I define the flag --flag in my wrapper, it means that </p> <pre class="wiki"> my-program target-program --flag </pre><p> won't run <code>target-program --flag</code> as one would hope, but will treat <code>--flag</code> as an argument to my program. </p> <p> This means that the user has to run <code>my-program -- target-program --flag</code> every time, which is both annoying and goes against how most such programs work on Unix. (You never see someone say "run <code>sudo -- apt-get install blah</code>." Or xargs, env, nohup, etc.) </p> <p> As far as I'm concerned, this problem is a showstopper for using the stock Boost po for this sort of program. If the Gflags library didn't have the same limitation, I'd be using it right now instead of having patched Boost. :-) </p> <p> So I request a setting to disable this sort of interspersed arguments. </p> <hr /> <p> Fortunately, (one possible) fix seems to be pretty simple from what I can tell. I'll follow up this post with a patch after I get things cleaned back up and such. </p> driscoll@… https://svn.boost.org/trac10/ticket/6991 https://svn.boost.org/trac10/ticket/6991 Report #6981: Can't use boost::ptr_vector<T>::auto_type as data member in GCC 4.6 Tue, 12 Jun 2012 03:56:20 GMT Tue, 12 Jun 2012 04:57:35 GMT <p> The following code failed to compile with g++ 4.6.3 on Ubuntu Linux 12.04 LTS. </p> <pre class="wiki">#include &lt;boost/noncopyable.hpp&gt; #include &lt;boost/ptr_container/ptr_vector.hpp&gt; class Test : boost::noncopyable { }; class Pool : boost::noncopyable { public: Pool(); private: boost::ptr_vector&lt;Test&gt;::auto_type p_; }; Pool::Pool() { } </pre><p> the error is </p> <pre class="wiki">In file included from /usr/include/boost/ptr_container/detail/reversible_ptr_container.hpp:22:0, from /usr/include/boost/ptr_container/ptr_sequence_adapter.hpp:20, from /usr/include/boost/ptr_container/ptr_vector.hpp:20, from ptr_vec.cc:2: /usr/include/boost/ptr_container/detail/static_move_ptr.hpp: In instantiation of 'boost::ptr_container_detail::static_move_ptr&lt;Test, boost::ptr_container_detail::clone_deleter&lt;...&gt; &gt; ::cant_move_from_const&lt;const boost::ptr_container_detail::static_move_ptr&lt;Test, boost::ptr_container_detail::clone_deleter&lt;...&gt; &gt; &gt;': ptr_vec.cc:17:12: instantiated from here /usr/include/boost/ptr_container/detail/static_move_ptr.hpp:168:57: error: no type named 'error' in 'class boost::ptr_container_detail::static_move_ptr&lt;Test, boost::ptr_container_detail::clone_deleter&lt;boost::ptr_container_detail::reversible_ptr_container&lt;boost::ptr_container_detail::sequence_config&lt;Test, std::vector&lt;void*, std::allocator&lt;void*&gt; &gt; &gt;, boost::heap_clone_allocator&gt;::null_clone_allocator&lt;false&gt; &gt; &gt;' </pre><p> However, if I inline the constructor, it compiles fine. </p> <pre class="wiki">class PoolOkay : boost::noncopyable { public: PoolOkay() { // okay to inline constructor } private: boost::ptr_vector&lt;Test&gt;::auto_type p_; }; </pre><p> Note: there is no error when compiling with g++ 4.4.3 </p> <p> I am not sure if it's a bug of ptr_container or gcc itself. </p> Shuo Chen <giantchen@…> https://svn.boost.org/trac10/ticket/6981 https://svn.boost.org/trac10/ticket/6981 Report #6980: date_time_zonespec.csv has incorrect entries for indiana Mon, 11 Jun 2012 17:55:16 GMT Wed, 15 Aug 2012 19:46:44 GMT <p> based on <a class="ext-link" href="http://en.wikipedia.org/wiki/Time_in_Indiana"><span class="icon">​</span>http://en.wikipedia.org/wiki/Time_in_Indiana</a> i think the following setting for indianapolis (and other cities in indiana) is incorrect </p> <p> "<a class="missing wiki">America/Indiana/Indianapolis</a>","EST","EST","","","-05:00:00","+00:00:00","2;0;3","","1;0;11","+00:00:00" </p> <p> the above line should be "America/New_York","EST","Eastern Standard Time","EDT","Eastern Daylight Time","-05:00:00","+01:00:00","2;0;3","+02:00:00","1;0;11","+02:00:00" </p> <p> indiana observes dst since 2006, so i'm not sure if i haven't overlooked something </p> konrad borys <kborys@…> https://svn.boost.org/trac10/ticket/6980 https://svn.boost.org/trac10/ticket/6980 Report #6979: constexpr support in MPL Mon, 11 Jun 2012 15:56:16 GMT Fri, 28 Mar 2014 20:23:26 GMT <p> C++11 introduced generalized constant expression with the constexpr keyword. It would be very nice if Boost.MPL static constants could be marked as constexpr so that they can be used in other constant expressions. </p> anonymous https://svn.boost.org/trac10/ticket/6979 https://svn.boost.org/trac10/ticket/6979 Report #6977: bug in conversion of mpl iterator category tags Sun, 10 Jun 2012 05:46:48 GMT Sun, 10 Jun 2012 05:46:48 GMT <p> MPL documentation indicates that bidirectional_iterator_tag is convertible to random_access_iterator_tag. The following code shows that this is not true. </p> <pre class="wiki">#include &lt;boost/mpl/iterator_category.hpp&gt; #include &lt;boost/mpl/iterator_tags.hpp&gt; #include &lt;boost/mpl/print.hpp&gt; #include &lt;boost/mpl/assert.hpp&gt; #include &lt;boost/type_traits/is_convertible.hpp&gt; using namespace boost::mpl; print&lt; boost::is_convertible&lt; bidirectional_iterator_tag, random_access_iterator_tag &gt;::type &gt; x5; BOOST_MPL_ASSERT(( boost::is_convertible&lt; bidirectional_iterator_tag, random_access_iterator_tag &gt; )); </pre><p> The compile time output from this progam is: </p> <pre class="wiki">1&gt;------ Build started: Project: test_interval, Configuration: Debug Win32 ------ 1&gt;Compiling... 1&gt;test_multi_precision.cpp 1&gt;c:\boostrelease\boost\mpl\print.hpp(51) : warning C4308: negative integral constant converted to unsigned type 1&gt; c:\projects\boost projects\mpl\tests\test_multi_precision.cpp(15) : see reference to class template instantiation 'boost::mpl::print&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::integral_constant&lt;bool,false&gt;::type 1&gt; ] 1&gt;c:\projects\boost projects\mpl\tests\test_multi_precision.cpp(22) : error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1 from 'boost::mpl::failed ************boost::is_convertible&lt;From,To&gt;::* ***********' to 'boost::mpl::assert&lt;false&gt;::type' 1&gt; with 1&gt; [ 1&gt; From=boost::mpl::bidirectional_iterator_tag, 1&gt; To=boost::mpl::random_access_iterator_tag 1&gt; ] 1&gt; No constructor could take the source type, or constructor overload resolution was ambiguous 1&gt;Build log was saved at "file://c:\Projects\Boost Projects\mpl\tests\vcide\Debug\BuildLog.htm" 1&gt;test_interval - 1 error(s), 1 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </pre><p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6977 https://svn.boost.org/trac10/ticket/6977 Report #6976: Waiting on boost interprocess condition consumes 100% CPU on Windows Sun, 10 Jun 2012 00:03:20 GMT Sun, 22 Apr 2018 20:47:11 GMT <p> The problem arises when several threads of several processes waits on same condition. For example, we have application in which we create several threads with thread function like this: </p> <pre class="wiki">while (_running) { boost::interprocess::scoped_lock&lt;boost::interprocess::interprocess_mutex&gt; lock ( _shm-&gt;mutex ) ; // _shm - shared memory _shm-&gt;condition.wait ( lock ) ; // condition is boost::interprocess::interprocess_condition } </pre><p> In main function we simply create several threads, sleep for a some time and stop threads. If we create 4 threads and start 2 applications, or create 3 threads and start 3 applications, or create 2 threads and start 4 applications then we get this problem. Its funny that the problem arising depends on quantity of threads and processes which we start. This is tested on windows 7, windows xp. No problem on Linux system (Debian squeeze) </p> tmf83 <tmf83@…> https://svn.boost.org/trac10/ticket/6976 https://svn.boost.org/trac10/ticket/6976 Report #6974: boost::optional compilation error with boost::function and boost::fusion::vector Fri, 08 Jun 2012 21:16:18 GMT Tue, 19 Feb 2013 15:54:07 GMT <p> If you compile the following on g++ 4.4.5, it will fail to compile because the optional_base copy constructor and destructor are protected. </p> <p> boost::optional&lt; boost::fusion::vector1&lt;boost::function0&lt;void&gt; &gt; &gt; </p> <p> A duplication program is attached. </p> Jonathan Jones <jonathan.jones@…> https://svn.boost.org/trac10/ticket/6974 https://svn.boost.org/trac10/ticket/6974 Report #6972: Boost.Locale doesn't provide sufficient control over collation Thu, 07 Jun 2012 21:35:03 GMT Thu, 07 Jun 2012 21:35:03 GMT <p> I have just started using boost Locale and it is a great addition to the boost library. However, the collation level options do not give a fine enough control. From the ICU documentation: "In some cases, punctuation can be ignored while searching or sorting data...In other cases, it is desirable for punctuated text to be distinguished from text without punctuation." (This appears to be controlled by the Alternate attribute.) </p> <p> However, boost Locale seems to always assume that punctuation can be ignored when you are also ignoring case. In particular, I find at the secondary level that "SINWAVE" is considered equal to "sin_wave" (compare returns 0) when this is not what I (and very likely others) require. </p> <p> The first two levels (primary and secondary) really need options to not ignore punctuation and whitespace. </p> Karim Chichakly <kchichakly@…> https://svn.boost.org/trac10/ticket/6972 https://svn.boost.org/trac10/ticket/6972 Report #6970: Boost Wave incompatible with unicode paths on Windows Thu, 07 Jun 2012 04:40:16 GMT Thu, 07 Jun 2012 04:40:16 GMT <p> Boost::Wave frequently casts boost::filesystem::path to std::string, which transforms all unicode characters to '?'. For example, in cpp_context.hpp / init_context(), line 331, but there are many other instances. I suppose that the fix is to just use boost::filesystem::path at all times for paths, instead of converting to std::string and back, or to explicitly convert to utf-8 before converting to string. </p> <p> I mark this bug as a showstopper because it makes the Wave library unusable for projects that may be deployed on Windows computers in a non-English locale, or with non-ASCII usernames or filenames. </p> david@… https://svn.boost.org/trac10/ticket/6970 https://svn.boost.org/trac10/ticket/6970 Report #6965: Handling of sequence of non const reference Mon, 04 Jun 2012 18:58:48 GMT Tue, 26 Jun 2012 10:19:48 GMT <p> Currently, assigning or copying a fusion sequence of non const reference to another is not possible. Down into the code, the vectorN classes only has a vectorN( const Sequence&amp; ) constructor that calls a const qualified from_sequence method from the base_type. </p> <p> Sequence of reference has a nice use case of enabling strcuture of array<em>Array of structure efficient application and this can't be doen with current Fusion. </em></p> <p> Could all sequence be amended so passing a non const sequence as initialisation is dealt with correctly ? </p> Joel Falcou https://svn.boost.org/trac10/ticket/6965 https://svn.boost.org/trac10/ticket/6965 Report #6962: [function] missing document function::assign() Mon, 04 Jun 2012 03:26:34 GMT Mon, 04 Jun 2012 03:26:34 GMT <p> boost::function::assign() member function is undocument. This function can assign allocator object one of the few way. I hope documentation this function. </p> <pre class="wiki">#include &lt;cassert&gt; #include &lt;memory&gt; #include &lt;boost/function.hpp&gt; struct increment { int operator()(int x) const { return x + 1; } }; int main() { boost::function&lt;int(int)&gt; f; f.assign(increment(), std::allocator&lt;increment&gt;()); assert(f(1) == 2); } </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/6962 https://svn.boost.org/trac10/ticket/6962 Report #6961: problem with list_c et.all Sun, 03 Jun 2012 17:55:46 GMT Sun, 03 Jun 2012 20:48:06 GMT <p> The documentation for list_c states that it is a model of Front Extensible Sequence. </p> <p> But some simple testing suggests otherwise. Here is my test program: </p> <pre class="wiki">#include "../include/multi_precision.hpp" //#include &lt;boost/mpl/shift_right.hpp&gt; //#include &lt;boost/mpl/integral_c.hpp&gt; //#include &lt;boost/cstdint.hpp&gt; #include &lt;boost/mpl/list.hpp&gt; #include &lt;boost/mpl/list_c.hpp&gt; #include &lt;boost/mpl/push_front.hpp&gt; #include &lt;boost/mpl/front.hpp&gt; #include &lt;boost/mpl/int.hpp&gt; #include &lt;boost/mpl/integral_c.hpp&gt; #include &lt;boost/mpl/print.hpp&gt; namespace boost { namespace mpl { print&lt; list_c&lt;int, 22, 64 &gt; &gt; x8; print&lt; front&lt; list_c&lt;int, 22, 64 &gt; &gt;::type &gt; x7; print&lt; push_front&lt; list_c&lt;int, 22, 64 &gt;, integral_c&lt;int, 33&gt; &gt;::type &gt; x6; </pre><p> which produces the following output on my VC 9.0 compiler </p> <pre class="wiki">1&gt;------ Build started: Project: test_interval, Configuration: Debug Win32 ------ 1&gt;Compiling... 1&gt;test_multi_precision.cpp 1&gt;c:\boostrelease\boost\mpl\print.hpp(51) : warning C4308: negative integral constant converted to unsigned type 1&gt; c:\projects\boost projects\mpl\tests\test_multi_precision.cpp(24) : see reference to class template instantiation 'boost::mpl::print&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::mpl::list_c&lt;int,22,64&gt; 1&gt; ] 1&gt;c:\boostrelease\boost\mpl\print.hpp(51) : warning C4308: negative integral constant converted to unsigned type 1&gt; c:\projects\boost projects\mpl\tests\test_multi_precision.cpp(33) : see reference to class template instantiation 'boost::mpl::print&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::mpl::integral_c&lt;int,22&gt; 1&gt; ] 1&gt;c:\boostrelease\boost\mpl\print.hpp(51) : warning C4308: negative integral constant converted to unsigned type 1&gt; c:\projects\boost projects\mpl\tests\test_multi_precision.cpp(44) : see reference to class template instantiation 'boost::mpl::print&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::mpl::l_item&lt;boost::mpl::long_&lt;3&gt;,boost::mpl::integral_c&lt;int,33&gt;,boost::mpl::list2_c&lt;int,22,64&gt;&gt; 1&gt; ] </pre><p> What I hope to see for the third test is: </p> <pre class="wiki">T=boost::mpl::list_c&lt;int,33, 22,64&gt; </pre><p> If I use </p> <pre class="wiki">print&lt; push_front&lt; list_c&lt;int, 22, 64 &gt;, 33 &gt;::type &gt; x5; </pre><p> But this fails to compile at all. </p> <p> To me, the list_c implementation is misconceived. Maybe the following should result </p> <pre class="wiki">print&lt; list_c&lt;int, 22, 64 &gt;::type // note the ::type to make it a metafunction &gt; x8; </pre><p> to return </p> <pre class="wiki">T=boost::mpl::list&lt;boost::mpl::integral_c&lt;int, 22&gt;,boost::mpl::integral_c&lt;int, 64&gt; &gt; </pre><p> Of course the same observations would apply to vector_c, etc. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6961 https://svn.boost.org/trac10/ticket/6961 Report #6957: Boost.units: static pow<>() fails for quantities with non-double type Thu, 31 May 2012 19:07:45 GMT Thu, 31 May 2012 19:07:45 GMT <p> Below is a short example depicting that pow&lt;&gt;() works only in the quantity in the argument has double precision representation. Hope that helps. </p> <p> ajaruga@granda:~/icicle$ cat test.cpp #include &lt;boost/units/pow.hpp&gt; #include &lt;boost/units/systems/si.hpp&gt; using namespace boost::units; </p> <p> int main() { </p> <blockquote> <p> quantity&lt;si::length, real_t&gt; a = 1 * si::metres; quantity&lt;si::volume, real_t&gt; b = pow&lt;3&gt;(a); </p> </blockquote> <p> } ajaruga@granda:~/icicle$ g++ -Dreal_t=double test.cpp &amp;&amp; echo OK OK ajaruga@granda:~/icicle$ g++ -Dreal_t=float test.cpp &amp;&amp; echo OK test.cpp: In function ‘int main()’: test.cpp:7:44: error: conversion from ‘boost::units::power_typeof_helper&lt;boost::units::quantity&lt;boost::units::unit&lt;boost::units::list&lt;boost::units::dim&lt;boost::units::length_base_dimension, boost::units::static_rational&lt;1l&gt; &gt;, boost::units::dimensionless_type&gt;, boost::units::homogeneous_system&lt;boost::units::list&lt;boost::units::si::meter_base_unit, boost::units::list&lt;boost::units::scaled_base_unit&lt;boost::units::cgs::gram_base_unit, boost::units::scale&lt;10l, boost::units::static_rational&lt;3l&gt; &gt; &gt;, boost::units::list&lt;boost::units::si::second_base_unit, boost::units::list&lt;boost::units::si::ampere_base_unit, boost::units::list&lt;boost::units::si::kelvin_base_unit, boost::units::list&lt;boost::units::si::mole_base_unit, boost::units::list&lt;boost::units::si::candela_base_unit, boost::units::list&lt;boost::units::angle::radian_base_unit, boost::units::list&lt;boost::units::angle::steradian_base_unit, boost::units::dimensionless_type&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;, float&gt;, boost::units::static_rational&lt;3l&gt; &gt;::type {aka boost::units::quantity&lt;boost::units::unit&lt;boost::units::list&lt;boost::units::dim&lt;boost::units::length_base_dimension, boost::units::static_rational&lt;3l&gt; &gt;, boost::units::dimensionless_type&gt;, boost::units::homogeneous_system&lt;boost::units::list&lt;boost::units::si::meter_base_unit, boost::units::list&lt;boost::units::scaled_base_unit&lt;boost::units::cgs::gram_base_unit, boost::units::scale&lt;10l, boost::units::static_rational&lt;3l&gt; &gt; &gt;, boost::units::list&lt;boost::units::si::second_base_unit, boost::units::list&lt;boost::units::si::ampere_base_unit, boost::units::list&lt;boost::units::si::kelvin_base_unit, boost::units::list&lt;boost::units::si::mole_base_unit, boost::units::list&lt;boost::units::si::candela_base_unit, boost::units::list&lt;boost::units::angle::radian_base_unit, boost::units::list&lt;boost::units::angle::steradian_base_unit, boost::units::dimensionless_type&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;, double&gt;}’ to non-scalar type ‘boost::units::quantity&lt;boost::units::unit&lt;boost::units::list&lt;boost::units::dim&lt;boost::units::length_base_dimension, boost::units::static_rational&lt;3l&gt; &gt;, boost::units::dimensionless_type&gt;, boost::units::homogeneous_system&lt;boost::units::list&lt;boost::units::si::meter_base_unit, boost::units::list&lt;boost::units::scaled_base_unit&lt;boost::units::cgs::gram_base_unit, boost::units::scale&lt;10l, boost::units::static_rational&lt;3l&gt; &gt; &gt;, boost::units::list&lt;boost::units::si::second_base_unit, boost::units::list&lt;boost::units::si::ampere_base_unit, boost::units::list&lt;boost::units::si::kelvin_base_unit, boost::units::list&lt;boost::units::si::mole_base_unit, boost::units::list&lt;boost::units::si::candela_base_unit, boost::units::list&lt;boost::units::angle::radian_base_unit, boost::units::list&lt;boost::units::angle::steradian_base_unit, boost::units::dimensionless_type&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;, float&gt;’ requested </p> Anna Jaruga <ajaruga@…> https://svn.boost.org/trac10/ticket/6957 https://svn.boost.org/trac10/ticket/6957 Report #6954: property map 'put' should support move semantics Wed, 30 May 2012 19:12:42 GMT Mon, 27 Jan 2014 23:48:48 GMT <p> The 'put' helper function in the boost property map library should support move semantics. At the moment it takes the value to be put by const reference, I think it would be more appropriate to perfect forward it. </p> wz258@… https://svn.boost.org/trac10/ticket/6954 https://svn.boost.org/trac10/ticket/6954 Report #6952: [interprocess] mixed comment styles causing documentation issues? Tue, 29 May 2012 15:43:02 GMT Tue, 29 May 2012 15:43:02 GMT <p> There are a handful of comments of the form: </p> <pre class="wiki"> //! ... */ </pre><p> In at least one instance (boost/interprocess/ipc/message_queue.hpp), the code looks like this: </p> <pre class="wiki"> //!Sends a message stored in buffer "buffer" with size "buffer_size" in the //!message queue with priority "priority". If the message queue is full //!the sender is blocked. Throws interprocess_error on error.*/ void send (const void *buffer, size_type buffer_size, unsigned int priority); </pre><p> Which got rendered into the docs like so: </p> <blockquote> <p> *void send(const void * buffer, size_type buffer_size, unsigned int priority); </p> </blockquote> <blockquote> <p> Sends a message stored in buffer "buffer" with size "buffer_size" in the message queue with priority "priority". If the message queue is full the sender is blocked. Throws interprocess_error on error. </p> </blockquote> <blockquote> <p> -- <a href="http://www.boost.org/doc/libs/1_49_0/doc/html/boost/interprocess/message_queue_t.html#id985430-bb">http://www.boost.org/doc/libs/1_49_0/doc/html/boost/interprocess/message_queue_t.html#id985430-bb</a> </p> </blockquote> <p> Note the leading "*" on the method signature. </p> anthony.foiani@… https://svn.boost.org/trac10/ticket/6952 https://svn.boost.org/trac10/ticket/6952 Report #6946: bootstrap.sh not compatible with python3. Sat, 26 May 2012 18:05:27 GMT Thu, 26 Oct 2017 13:55:33 GMT <p> Just tried building boost with python3 support and hit a small snag with bootstrap.sh using invalid syntax. </p> <p> On line 280, the print statement has been removed from python3 so you need to use the print *function* instead, with brackets: </p> <blockquote> <p> PYTHON_ROOT=<code>$PYTHON -c "import sys; print(sys.prefix)"</code> </p> </blockquote> <p> This change does not break compatibility with python2. </p> Robert Park <rbpark@…> https://svn.boost.org/trac10/ticket/6946 https://svn.boost.org/trac10/ticket/6946 Report #6929: stream and stream_buffer need const versions of operator-> and operator * Tue, 22 May 2012 19:49:21 GMT Tue, 22 May 2012 19:49:21 GMT <p> stream and stream_buffer need their operator-&gt; and operator * to be either made const or the const versions need to be added. </p> <p> These operators do not modify the state of the stream and can be used to execute const functions of the device (like st-&gt;handle() for a file_descriptor device) . </p> Igor Lubashev <igorlord@…> https://svn.boost.org/trac10/ticket/6929 https://svn.boost.org/trac10/ticket/6929 Report #6928: semaphore.hpp duplicates nested namespace Tue, 22 May 2012 18:07:14 GMT Tue, 22 May 2012 18:07:14 GMT <p> \boost\interprocess\sync\spin\semaphore.hpp is placed in namespace boost::interprocess::ipcdetail and is using functions in a nested namespace ipcdetail causing compilation failure: </p> <p> e.g. \proj\boost_1_49_0\boost\interprocess\sync\spin\semaphore.hpp(53): error C2039: 'atomic_write32' : is not a member of 'boost::interprocess<strong>::ipcdetail::ipcdetail</strong>' </p> info@… https://svn.boost.org/trac10/ticket/6928 https://svn.boost.org/trac10/ticket/6928 Report #6925: BooleanMetafunction Mon, 21 May 2012 16:56:39 GMT Mon, 21 May 2012 16:56:39 GMT <p> mpl defined the metafunctions max&lt;N1, N2&gt; as: </p> <p> N1, N2 any type. with semantics equivalent to: </p> <p> typedef if_&lt; less&lt;x,y&gt;,y,x &gt;::type r; </p> <p> BUT less&lt;x,y&gt; requires that x &amp; y be a <a class="missing wiki">NumericalMetafunction</a> wity x, y modeling <a class="missing wiki">IntegralConstant</a>. </p> <p> So, I believe that N1 and N2 should also be required to model <a class="missing wiki">IntegralConstant</a>. </p> <p> In addition, it makes sense the max (and min) model the concept of <a class="missing wiki">NumericalMetafunction</a> with value type bool. </p> <p> Actually, there should be a concept <a class="missing wiki">BooleanMetafunction</a> as short hand for <a class="missing wiki">NumericalMetafunction</a>. </p> <p> I came across this problem when I removed the ::type from min&lt;x, y&gt; and got a compile error. This should work as plus, ... etc do. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6925 https://svn.boost.org/trac10/ticket/6925 Report #6923: add compile time inteval arithmetic to TODO list Sun, 20 May 2012 21:57:10 GMT Sun, 20 May 2012 21:57:10 GMT <p> Please consider adding compile time integer arithmetic ala mpl::plus etc. I would find this and multply useful. </p> <p> Rober Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6923 https://svn.boost.org/trac10/ticket/6923 Report #6921: documentation for BOOST_MPL_ASSERT_RELATION inconsistent with implementation Sun, 20 May 2012 19:24:49 GMT Mon, 29 Oct 2012 15:18:50 GMT <p> Documenation for MPL states that the proper syntax BOOST_MPL_ASSERT_RELATION is: </p> <p> BOOST_MPL_ASSERT_RELATION( x, op, y ); </p> <p> where x and y are integral constants. </p> <p> Given this, the following assert should trap since 8 is not an integral constant </p> <pre class="wiki">BOOST_MPL_ASSERT_RELATION(8, ==, 8); // no assertion </pre><p> But in fact it does not. </p> <p> On the other hand, the following should not trap </p> <pre class="wiki">BOOST_MPL_ASSERT_RELATION( (boost::mpl::integral_c&lt;int, 8&gt;), ==, (boost::mpl::integral_c&lt;int, 8&gt;) ); </pre><p> But in fact it does. </p> <p> So it seems that the documentation doesn't agree with the implementation. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6921 https://svn.boost.org/trac10/ticket/6921 Report #6916: file_descriptor_sink is missing the definition for its templated open() function. Thu, 17 May 2012 19:02:34 GMT Thu, 17 May 2012 19:02:34 GMT <p> file_descriptor_sink has a templated function to open based on any path type, but the function has no definition, resulting in linker errors if you try to call it. I have attached a patch that implements the function by calling open() with detail::path, the same as how file_descriptor and file_descriptor_source do it. </p> Aaron Barany <akb825@…> https://svn.boost.org/trac10/ticket/6916 https://svn.boost.org/trac10/ticket/6916 Report #6911: [Phoenix V3] Add tr1_result_of specialization Thu, 17 May 2012 15:01:15 GMT Fri, 19 Jan 2018 19:51:45 GMT <p> To make <code>result_of</code> and <code>tr1_result_of</code> equivalent, we have to add specialization of <code>tr1_result_of</code>. (Boost.Phoenix V3 already has specialization of <code>result_of</code>.) </p> <p> Also, it would be nice to avoid specialization of <code>result_of</code>, when we use decltype-based <code>result_of</code>. (As for <code>tr1_result_of</code>, it should be specialized even when decltype-based <code>result_of</code> is used.) </p> <p> So, instead of </p> <pre class="wiki">template &lt;...&gt; struct result_of&lt;F()&gt; { typedef XXXX type; }; </pre><p> we should write </p> <pre class="wiki">#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) template &lt;...&gt; struct result_of&lt;F()&gt; { typedef XXXX type; }; #endif template &lt;...&gt; struct tr1_result_of&lt;F()&gt; { typedef XXXX type; }; </pre><p> A quick grep said the following files specialize <code>result_of</code>. </p> <ul><li>phoenix/core/actor.hpp </li><li>phoenix/function/function.hpp </li></ul> Michel Morin https://svn.boost.org/trac10/ticket/6911 https://svn.boost.org/trac10/ticket/6911 Report #6909: [Functional/Forward] Add tr1_result_of specialization Thu, 17 May 2012 15:00:58 GMT Thu, 17 May 2012 15:00:58 GMT <p> To make <code>result_of</code> and <code>tr1_result_of</code> equivalent, we have to add specialization of <code>tr1_result_of</code>. (Boost.Functional/Forward already has specialization of <code>result_of</code>.) </p> <p> Also, it would be nice to avoid specialization of <code>result_of</code>, when we use decltype-based <code>result_of</code>. (As for <code>tr1_result_of</code>, it should be specialized even when decltype-based <code>result_of</code> is used.) </p> <p> So, instead of </p> <pre class="wiki">template &lt;...&gt; struct result_of&lt;F()&gt; { typedef XXXX type; }; </pre><p> we should write </p> <pre class="wiki">#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) template &lt;...&gt; struct result_of&lt;F()&gt; { typedef XXXX type; }; #endif template &lt;...&gt; struct tr1_result_of&lt;F()&gt; { typedef XXXX type; }; </pre><p> A quick grep said the following files specialize <code>result_of</code>. </p> <ul><li>functional/forward_adapter.hpp </li><li>functional/lightweight_forward_adapter.hpp </li></ul> Michel Morin https://svn.boost.org/trac10/ticket/6909 https://svn.boost.org/trac10/ticket/6909 Report #6906: boost 1.49 takes too much CPU time. Wed, 16 May 2012 07:51:54 GMT Wed, 16 May 2012 07:51:54 GMT <p> I moved from boost 1.44 with my project building with Visual Studio 2005 to 1.49 (+Visual Studio 2010) and found that CPU usage of my application hovers between 90% to 99-100%. </p> <p> I found interprocess::message_queue::recieve takes too much CPU time and if I replace this with interprocess::message_queue::timed_receive with a time parameter ( + minor adjustment in client code that was calling recieve), there seems to be some improvement ( CPU usage time hovers between 1% to 25%). </p> zhussain@… https://svn.boost.org/trac10/ticket/6906 https://svn.boost.org/trac10/ticket/6906 Report #6903: Including program options header breaks using g++ -static -flto -std=c++11 Tue, 15 May 2012 13:30:10 GMT Wed, 24 Oct 2012 20:37:59 GMT <p> A minimal example is simply </p> <pre class="wiki">#include "boost/program_options.hpp" int main ( int argC, char* argV[] ) { return 0; } </pre><p> Compiling this using either<br /> g++ main.cpp -static -flto -std=c++11 -fwhole-program<br /> or<br /> g++ main.cpp -static -flto -std=c++11 -fno-use-linker-plugin<br /> gives a lot of errors: </p> <p> `_ZTIN9<span class="underline">gnu_cxx24</span>concurrence_lock_errorE' referenced in section `.text._ZN9<span class="underline">gnu_cxx30</span>throw_concurrence_lock_errorEv[_ZN9<span class="underline">gnu_cxx30</span>throw_concurrence_lock_errorEv]' of /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.a(eh_alloc.o): defined in discarded section `.gnu.linkonce.t._ZTIN9<span class="underline">gnu_cxx24</span>concurrence_lock_errorE' of /tmp/ccEoPVoT.o (symbol from plugin)<br /> ...<br /> collect2: error: ld returned 1 exit status </p> <p> I tried g++4.6 and 4.7. I am not sure if it is a bug within the g++ or within boost. If either -static, -flto or -std=c++11 is omited the program compiles fine. Only if all three are present the error occours. I am using Debian Wheezy. </p> boostBugs@… https://svn.boost.org/trac10/ticket/6903 https://svn.boost.org/trac10/ticket/6903 Report #6897: Boost interprocess segfaults Mon, 14 May 2012 08:19:39 GMT Sat, 11 Mar 2017 08:20:39 GMT <p> Having a boost::unordered map in shared memory and after creation opening it in open_only or open_read_only behaves differently depending on the key length. open_only always works, open_read_only only works if key length is less than 24 bytes. </p> <p> I've got very simple example code that I'll attach, maybe I am doing something wrong here. </p> Mathias Creutz <mathiascreutz@…> https://svn.boost.org/trac10/ticket/6897 https://svn.boost.org/trac10/ticket/6897 Report #6894: Highlight context forwarding in async state machine docs Sun, 13 May 2012 21:17:44 GMT Sun, 09 Jun 2013 18:03:25 GMT <p> (as reported by Sebastian Hoffmann) </p> Andreas Huber https://svn.boost.org/trac10/ticket/6894 https://svn.boost.org/trac10/ticket/6894 Report #6893: Inaccurate Radians/Degrees conversion Sun, 13 May 2012 10:19:17 GMT Sun, 08 Jul 2018 16:19:39 GMT <p> LS, </p> <p> The conversion from angles in degrees to radians currently uses a conversion factor of 6.28318530718/360. (File: boost\units\base_units\angle\degree.hpp), which equals 0.0174532925199444444... </p> <p> This is unnecessarily inaccurate (only 14 significant digits are correct) and gives problems in my application - the actual value reads: 0.017453292519943295769236907684886127134428718885417... </p> <p> Using this value improves conversion accuracy significantly. </p> <p> Please consider using this more accurate value. Alternatively, the use of boost::math::constants could be considered, making the factor: boost::math::constants::pi&lt;double&gt;()/180.0 which works fine as well. </p> pieterb@… https://svn.boost.org/trac10/ticket/6893 https://svn.boost.org/trac10/ticket/6893 Report #6891: Add extension point to define how expressions are created from operators Sat, 12 May 2012 16:15:55 GMT Wed, 06 Jun 2012 17:39:53 GMT <p> As discussed here: &lt;<a class="ext-link" href="http://lists.boost.org/proto/2012/05/0637.php"><span class="icon">​</span>http://lists.boost.org/proto/2012/05/0637.php</a>&gt; </p> <p> It would be nice to add a mechanism to allow to define what the operator overloads created by Proto will do. Unlike other functions where a Proto-based library can construct nodes the way it wishes, there is no control and what the built-in C++ operators do. </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/6891 https://svn.boost.org/trac10/ticket/6891 Report #6889: Initialise multi_array with a given value Fri, 11 May 2012 03:21:55 GMT Sat, 02 Nov 2013 04:07:54 GMT <p> The multi-array only allows users to initialise all elements to a default constructed T(). That may not be desirable if you would like a different value, either for performance reasons or because the type does not support default initialisation. For example: </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;boost/multi_array.hpp&gt; struct no_default { explicit no_default(int i) {} }; int main() { std::vector&lt;no_default&gt; v(10, no_default(3)); boost::multi_array&lt;no_default, 3&gt; m(boost::extents[10][10][10]); // won't compile } </pre><p> Offering constructors that accept a value to be used to initialise the elements would be the easiest fix. This would also align with std::vector usage. </p> Andrew Morris <andy@…> https://svn.boost.org/trac10/ticket/6889 https://svn.boost.org/trac10/ticket/6889 Report #6884: Add functionality to enumerate filesystem roots Wed, 09 May 2012 23:51:47 GMT Thu, 10 May 2012 13:55:16 GMT <p> Unlike POSIX systems, which root everything at '/', some systems (notably Windows) provide multiple filesystem roots. </p> <p> In order to abstract this difference in a cross-platform way, I propose that a new function be added to boost::filesystem to return a list of path objects, one for each filesystem root. On a POSIX system, this would simply return [&#34;/&#34;], but on Windows, it would return, e.g., ["C:/", "D:/"]. This would make it possible to implement something like a filesystem browser in a platform-independent manner. </p> <p> There is precedence for this functionality in several cross-platform libraries, including Java (File.listRoots), Qt (QDir::drives), and Poco (Poco::Path::listRoots). </p> Erik Jensen <Erik.Jensen@…> https://svn.boost.org/trac10/ticket/6884 https://svn.boost.org/trac10/ticket/6884 Report #6883: build.bat not using the 32-bit Visual Studio 2010 installation path Wed, 09 May 2012 15:05:44 GMT Wed, 09 May 2012 15:05:44 GMT <p> See also <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6846" title="#6846: Bugs: Clang compilation error on Darwin 64-bit (closed: fixed)">#6846</a> (bootstrap) </p> <p> I had the same problems there but didn't want to overtake ownership on that trac issue. </p> <p> With Visual Studio 2010, in a Visual Studio Command Prompt, bootstrap will fail. It cannot find any of the headers. I am looking at the build.bat and I think it's latching on to %<a class="missing wiki">ProgramFiles</a>% to set the paths. Like this: </p> <p> if EXIST "%<a class="missing wiki">ProgramFiles</a>%\Microsoft Visual Studio 10.0\VC\VCVARSALL.BAT" ( </p> <blockquote> <p> set "BOOST_JAM_TOOLSET=vc10" set "BOOST_JAM_TOOLSET_ROOT=%<a class="missing wiki">ProgramFiles</a>%\Microsoft Visual Studio 10.0\VC\" </p> </blockquote> <p> I used the recommended installation path for my edition and it put vcvarsall.bat in: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC </p> <p> Unfortunately %<a class="missing wiki">ProgramFiles</a>% comes up with the 64-bit path "C:\Program Files" -- note the omission of "(x86)" in there. So dead right there. </p> <p> I should note I can work fine if I call vcvarsall.bat manually before running bootstrap. </p> <p> I don't have a firm recommendation here one what to do. Perhaps you can probe the registry for installation keys for Visual Studio, and from there derive the path. If you don't have an installation handy on which to experiment I can submit myself to some probes. </p> adam.preble@… https://svn.boost.org/trac10/ticket/6883 https://svn.boost.org/trac10/ticket/6883 Report #6882: Interprocess should provide filesystem location of shared memory files Wed, 09 May 2012 14:51:03 GMT Wed, 09 May 2012 14:51:03 GMT <p> Every now and then we have problems with shared memory files, so our application ceases to work correctly. This is probably not Boost's fault, but a Windows issue. We would like to be able to print the location of the directory, where Boost Interprocess puts its files, so the user can check and possibly clean up the directory. Therefore a method providing this information e.g. as a member function of shared_memory_object would be nice. </p> martin.apel@… https://svn.boost.org/trac10/ticket/6882 https://svn.boost.org/trac10/ticket/6882 Report #6879: Memory leak using resolve() method from basic_resolver Wed, 09 May 2012 00:31:30 GMT Sun, 25 Jun 2017 13:00:42 GMT <p> Every time I use the resolve(), memory goes up. I have checked the latest code, it looks like the resolve() in resolver_service.hpp never call freeaddrinfo() to free the memory 'address_info' allocated by getaddrinfo(). </p> Tony Ho <Tony.Ho@…> https://svn.boost.org/trac10/ticket/6879 https://svn.boost.org/trac10/ticket/6879 Report #6876: Add forwarding of operator() to reference_wrapper Tue, 08 May 2012 15:33:15 GMT Tue, 08 May 2012 15:33:15 GMT <p> Adding forwarding of operator() to reference_wrapper will make it comply with the ISO definition of reference_wrapper. The attached patch adds dependencies to Boost.Move and Boost.Preprocessor. The later could be removed by manually expanding the macro. Forwarding in C++03 only works for values, references-to-const and rvalues as this is what Boost.Move provides. In C++11, forwarding works as expected for all kind of values. It might be necessary to make the amount of forwarded arguments configurable, currently it is fixed to 8. </p> philipp.moeller@… https://svn.boost.org/trac10/ticket/6876 https://svn.boost.org/trac10/ticket/6876 Report #6875: [signals2] compilation error in fnoexception Tue, 08 May 2012 07:53:16 GMT Tue, 08 May 2012 07:53:16 GMT <p> Boost.Signals2 compile error because Boost.Signals2 using try/catch grammar (not BOOST_TRY/BOOST_CATCH) in fnoexception environment. This ticket is feature requests (not bug). </p> <pre class="wiki">// g++ main.cpp -fno-exceptions -I "C:\Library\Boost\1_49_0" #define BOOST_NO_EXCEPTIONS #include &lt;boost/signals2.hpp&gt; int main () { } </pre><pre class="wiki">In file included from C:\Library\Boost\boost_1_49_0/boost/signals2/deconstruct.h pp:29:0, from C:\Library\Boost\boost_1_49_0/boost/signals2.hpp:15, from main.cpp:2: C:\Library\Boost\boost_1_49_0/boost/signals2/deconstruct_ptr.hpp: In function 'v oid boost::signals2::detail::do_predestruct(const boost::signals2::predestructib le_adl_barrier::predestructible*)': C:\Library\Boost\boost_1_49_0/boost/signals2/deconstruct_ptr.hpp:48:15: error: e xception handling disabled, use -fexceptions to enable </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/6875 https://svn.boost.org/trac10/ticket/6875 Report #6872: units/io.hpp: autoprefix_norm_impl<> should resolve to no-op for unsigned built-in types Sun, 06 May 2012 15:37:53 GMT Tue, 08 May 2012 15:47:24 GMT <p> The code </p> <blockquote> <p> using namespace boost::units; const quantity&lt;si::length, int&gt; boa = 5 * si::meters; std::cout &lt;&lt; boa &lt;&lt; std::endl; </p> </blockquote> <p> prints "5 m", as expected, yet </p> <blockquote> <p> using namespace boost::units; const quantity&lt;si::length, unsigned int&gt; boa = 5 * si::meters; std::cout &lt;&lt; boa &lt;&lt; std::endl; </p> </blockquote> <p> fails to compile due to the std::abs call being ambiguous in io.hpp: template&lt;class T&gt; struct autoprefix_norm_impl&lt;T, true&gt; { </p> <blockquote> <p> typedef double type; static double call(const T&amp; arg) { return std::abs(arg); } </p> </blockquote> <p> }; </p> <p> There should be a specialization resolving to a no-op (just return the arg) for unsigned types. </p> <p> A (probably slightly heavier) user-side workaround possible one can use is to forcibly define the missing std::abs to be a no-op as follows: </p> <p> namespace std { </p> <blockquote> <p> template&lt;typename Unsigned&gt; typename boost::enable_if&lt;boost::is_unsigned&lt;Unsigned&gt;, Unsigned&gt;::type </p> <blockquote> <p> abs(const Unsigned&amp; x) </p> </blockquote> <p> { </p> <blockquote> <p> return x; <em> unsigned type... </em></p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> Alternatively, boost::units should do a static assert that the type underlying the quantity is signed if that is what is intended (but why restrict it thus?) </p> <p> Found and tested the workaround on 1.47.0, but confirmed to still exist on the trunk. </p> Vassilii Khachaturov <vkh@…> https://svn.boost.org/trac10/ticket/6872 https://svn.boost.org/trac10/ticket/6872 Report #6867: Unclear behavior of parameter 'max_size' Fri, 04 May 2012 20:41:33 GMT Mon, 16 Jul 2012 20:03:25 GMT <p> When constructing a pool, a 'max_size' parameter can be given. If non zero, the documentation states that the pool will not allow more than 'max_chunks' at once. </p> <p> However, this restriction is not taken into account in function ordered_malloc(n) : </p> <pre class="wiki">boost::pool&lt;&gt; p(sizeof(int), 16, 16); void *ptr = p.ordered_malloc(32); // Succeeds </pre><p> Either the documentation should be precised, either the illustrated allocation should fail. </p> edupuis https://svn.boost.org/trac10/ticket/6867 https://svn.boost.org/trac10/ticket/6867 Report #6865: pool.get_size() Fri, 04 May 2012 19:04:26 GMT Mon, 16 Jul 2012 20:02:57 GMT <p> It would be nice to have a function get_size() that would return the current size of the pool. </p> <p> This could be helpful to track a pool's memory usage. </p> edupuis https://svn.boost.org/trac10/ticket/6865 https://svn.boost.org/trac10/ticket/6865 Report #6860: Cannot read negative time_duration Thu, 03 May 2012 18:43:24 GMT Thu, 03 May 2012 18:43:24 GMT <p> Loading a negative time_duration saved with operator&lt;&lt; does not work. </p> <p> Test program: </p> <pre class="wiki">#include &lt;cassert&gt; #include &lt;sstream&gt; #include &lt;boost/date_time.hpp&gt; int main() { boost::posix_time::time_duration expected(0, 0, 0, -1); std::stringstream stream; stream &lt;&lt; expected; boost::posix_time::time_duration time; stream &gt;&gt; time; assert(expected == time); return 0; } </pre> damienrg+bug@… https://svn.boost.org/trac10/ticket/6860 https://svn.boost.org/trac10/ticket/6860 Report #6856: Critical problem with serialization and class versioning Wed, 02 May 2012 15:07:59 GMT Wed, 02 May 2012 15:07:59 GMT <p> I am investigating strange error "input stream error" messages that I've been getting for a while when loading XML archives, and it turns out that boost::serialization is no longer enforcing strictly incrementing versioning numbers. </p> <p> Specifically the patch: <a class="ext-link" href="https://github.com/ryppl/boost-svn/commit/66e85ade721a82bbc2e082749d6af2eefcb63dcb#boost/archive/detail"><span class="icon">​</span>https://github.com/ryppl/boost-svn/commit/66e85ade721a82bbc2e082749d6af2eefcb63dcb#boost/archive/detail</a> Which has the comment: </p> <pre class="wiki">+ // note: we now comment this out. Before we permited archive + // version # to be very large. Now we don't. To permit + // readers of these old archives, we have to suppress this + // code. Perhaps in the future we might re-enable it but + // permit its suppression with a runtime switch. </pre><p> I checked the documentation, and it is still assuming that class versions always increment, and it is implied (to me) that if a class version in an archive is larger than the BOOST_CLASS_VERSION() in the source, then it will not load (and checking the code, looks like it should throw a unsupported_class_version error). </p> <p> This is a critical problem, and is now my likely candidate for the reason why sometimes my programs crash when loading binary archives that are written by a newer version of my program. </p> <p> Basically, it NEVER checks if we are loading an archive that is newer than what the program is supported.  Thus, it will assume that it is reading the correct-versioned archive and serialize the wrong data in the wrong order. </p> <p> I wrote a small program to demonstrate the problem, most of the code was copied from the "bus" example in the documentation. </p> <p> The Makefile compiles 4 different versions:  xml and binary variants, each that write either version=0, version=1 classes. </p> <p> It is a program that loads an archive file (if the file can be opened), and then writes an archive file. </p> <p> The class written is a simple class with two integer variables. </p> <p> In version=0, it writes var1. </p> <p> In version=1, it writes var2, and then var1. </p> <p> This is what it looks like when you run the programs: </p> <pre class="wiki">$ ./test_version_binary_0 Could not open file to read: bus_route.binary Saved, var1=1 ------- so a binary archive is written to disk, version=0 $ ./test_version_binary_1 Restored, var1=1 var2=2 Saved, var1=1 var2=2 ------- archive was loaded correctly, and then written back to disk, now version=1 ------- now lets try and run the version=0 program $ ./test_version_binary_0 Restored, var1=2 FAIL! var1 should always be 1 $  ------- archive was loaded, apparently without error, but inspecting the data reveals that var1 was loaded with var2's value. </pre><p> For the XML archive, we fortunately catch the problem, but only because it was expecting a different set of xml-tags: </p> <pre class="wiki">$ ./test_version_xml_0  Could not open file to read: bus_route.xml Saved, var1=1 $ ./test_version_xml_1 Restored, var1=1 var2=2 Saved, var1=1 var2=2 $ ./test_version_xml_0 terminate called after throwing an instance of 'boost::archive::xml_archive_exception'   what():  XML start/end tag mismatch - var1 Aborted $  </pre><p> It seems to me that there are three solutions to this situation: </p> <p> 1) ignore problem.  allow boost-based software to incorrectly load binary archives. </p> <p> 2) change the documentation, tell users that they will need to manually test the version passed to void serialize(Archive,int) methods, and throw exceptions themselves if required. That will also mean upgrading all of the existing software and adding a test into every single serialize() function/method in existing production code. </p> <p> 3) turn back on the version check that was turned off in the above patch. </p> <p> This is what it looks like when I change the #if 0 to #if 1 </p> <pre class="wiki">$ ./test_version_binary_0 terminate called after throwing an instance of 'boost::archive::archive_exception'   what():  class version 9bus_route Aborted </pre><p> And that's what I was expecting it to do. </p> harris.pc@… https://svn.boost.org/trac10/ticket/6856 https://svn.boost.org/trac10/ticket/6856 Report #6844: [function] Memory leaks if used with allocator and throwing copy-c'tor of functor Sun, 29 Apr 2012 11:13:23 GMT Sun, 29 Apr 2012 11:29:25 GMT <p> There are two places where the implementation of boost::function uses a user-provided allocator: </p> <ol><li>boost/function/function_base.hpp, line 485 </li><li>boost/function/function_template.hpp, line 591 </li></ol><p> Both use cases do not protected against a possibly throwing copy constructor of a function-object because there is an unprotected two-step sequence of the following style: </p> <pre class="wiki">wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1); wrapper_allocator.construct(copy, functor_wrapper_type(f,a)); </pre><p> If the second step fails, no clean-up of the allocated memory takes place. The following test program emulates this situation and demonstrates the problem: </p> <pre class="wiki">#include "boost/function.hpp" #include &lt;memory&gt; #include &lt;iostream&gt; struct F { static bool dothrow; unsigned char prevent_short_object_opt[sizeof(boost::detail::function::function_buffer) + 1]; F(){} F(const F&amp;) { if (dothrow) throw 0; } void operator()() {} }; bool F::dothrow = false; int alloc_cnt = 0; template&lt;class T&gt; struct my_alloc : std::allocator&lt;T&gt; { template&lt;class Other&gt; struct rebind { typedef my_alloc&lt;T&gt; other; }; void construct(typename std::allocator&lt;T&gt;::pointer p, const T&amp; val) { F::dothrow = true; ::new((void *)p) T(val); } void deallocate(typename std::allocator&lt;T&gt;::pointer p, typename std::allocator&lt;T&gt;::size_type n) { --alloc_cnt; std::cout &lt;&lt; "deallocate: " &lt;&lt; alloc_cnt &lt;&lt; std::endl; return std::allocator&lt;T&gt;::deallocate(p, n); } typename std::allocator&lt;T&gt;::pointer allocate(typename std::allocator&lt;T&gt;::size_type n) { ++alloc_cnt; std::cout &lt;&lt; "allocate: " &lt;&lt; alloc_cnt &lt;&lt; std::endl; return std::allocator&lt;T&gt;::allocate(n); } }; int main() { F f; my_alloc&lt;F&gt; a; try { boost::function&lt;void()&gt; fu(f, a); } catch (int) { std::cout &lt;&lt; "Caught expected - allocation count: " &lt;&lt; alloc_cnt &lt;&lt; std::endl; } } </pre><p> The program outputs </p> <pre class="wiki">allocate: 1 Caught expected - allocation count: 1 </pre><p> on all systems I tested (Visual Studio 11 beta and mingw with gcc 4.8) showing that the deallocation function is never called. </p> <p> The two-step process of allocation+construct needs to be made exception-safe. In my own type-erased allocators I'm using a helper type </p> <pre class="wiki">template&lt;class Alloc&gt; struct allocated_ptr { typedef typename Alloc::pointer pointer; explicit allocated_ptr(Alloc&amp; alloc) : alloc(alloc), ptr(alloc.allocate(1)) {} ~allocated_ptr() { if (ptr != pointer()) { alloc.deallocate(ptr, 1); } } pointer get() const { return ptr; } pointer release() { pointer result = ptr; ptr = pointer(); return result; } private: Alloc&amp; alloc; pointer ptr; }; </pre><p> to handle this, invoking the release function, after successful construction. Of-course other means are possible. </p> Daniel Krügler <daniel.kruegler@…> https://svn.boost.org/trac10/ticket/6844 https://svn.boost.org/trac10/ticket/6844 Report #6839: distributed::adjacency_list fails to propagate mpi_process_group correctly Fri, 27 Apr 2012 13:59:36 GMT Tue, 24 Jul 2012 14:00:19 GMT <p> In the distributed <code>adjacency_list</code> the <code>named_graph_mixin</code> of kind maybe_named_graph holds and <code>mpi_process_group</code> member which is default constructed rather than appropriately initialized. See patch </p> Sebastian Jeltsch <sjeltsch@…> https://svn.boost.org/trac10/ticket/6839 https://svn.boost.org/trac10/ticket/6839 Report #6834: Memory corruption when calling boost::filesystem::exists() from static initializer with Unicode paths Thu, 26 Apr 2012 20:00:26 GMT Thu, 26 Apr 2012 20:00:26 GMT <p> Assume we have a class <a class="missing wiki">MyClass</a> with the constructor as shown below. Now, if we create a static instance of <a class="missing wiki">MyClass</a> (or have some other mechanism to execute this code at static initialization time), then this code will create an access violation exception when exists() is called. </p> <pre class="wiki">MyClass::MyClass() { boost::filesystem::path path(L"C:\\Windows"); path /= boost::filesystem::path(L"notepad.exe"); if (!boost::filesystem::exists(path)) { std::cout &lt;&lt; "notepad.exe doesn't exist!" &lt;&lt; std::endl; } } </pre><p> The code was tested on Windows 7 X64 SP1 with VS 2008 SP1 with boost 1.49. </p> memger@… https://svn.boost.org/trac10/ticket/6834 https://svn.boost.org/trac10/ticket/6834 Report #6831: __sync_lock_test_and_set_4 and illegal instruction Thu, 26 Apr 2012 07:18:03 GMT Thu, 26 Apr 2012 07:25:07 GMT <p> In the attachment, I’ve prepared a simple test program verifying a trivial asynchronous read operation using asio sockets. The program compiles and runs fine up to boost version 1.42. In version 1.43, compiling the program fails with a linker error: </p> <pre class="wiki">/tmp/ccQi0dGl.o: In function `boost::asio::detail::gcc_fenced_block::gcc_fenced_block()': main.cpp:(.text._ZN5boost4asio6detail16gcc_fenced_blockC1Ev[boost::asio::detail::gcc_fenced_block::gcc_fenced_block()]+0x4c): undefined reference to `__sync_lock_test_and_set_4' </pre><p> Since version 1.44 up to version 1.49, the linker error is gone and the program compiles fine. However, the program aborts at runtime upon executing “io.run()”, issuing an “Illegal instruction” error message. My assumption is that whatever “_sync_lock_test_and_set_4” was replaced by in version 1.44 represents an illegal operation on my target system. </p> <p> The target system is a MOXA UC-8410 embedded ARM computer: </p> <pre class="wiki">Linux Moxa 2.6.23.1 #1044 Fri May 6 10:25:20 CST 2011 armv5teb GNU/Linux arm-linux-g++ (GCC) 4.2.1 </pre> Pascal Kesseli <pascal.kesseli@…> https://svn.boost.org/trac10/ticket/6831 https://svn.boost.org/trac10/ticket/6831 Report #6829: [smart_ptr] make_shared is slower than shared_ptr(new) in MSVC Wed, 25 Apr 2012 21:59:25 GMT Sat, 28 Apr 2012 03:39:27 GMT <p> boost::make_shared() works much slower than it supposed to in MSVC It uses RTTI to get its custom deleter, and RTTI is painfully slow in MSVC. </p> mt.wizard@… https://svn.boost.org/trac10/ticket/6829 https://svn.boost.org/trac10/ticket/6829 Report #6828: functional/forward broken with decltype-based boost::result_of Wed, 25 Apr 2012 17:54:13 GMT Wed, 16 May 2012 12:03:40 GMT <p> The clang c++11 test runner is showing failures with decltype-based result_of that do not happen with TR1-style result_of. See the results here (clang-cxx11 test runner): </p> <p> <a href="http://www.boost.org/development/tests/trunk/developer/functional-forward.html">http://www.boost.org/development/tests/trunk/developer/functional-forward.html</a> </p> <p> In particular: </p> <pre class="wiki">In file included from ../libs/functional/forward/test/forward_adapter.cpp:16: In file included from ../boost/functional/forward_adapter.hpp:21: In file included from ../boost/utility/result_of.hpp:113: In file included from ../boost/preprocessor/iteration/detail/iter/forward1.hpp:47: ../boost/utility/detail/result_of_iterate.hpp:66:5: error: no matching function for call to object of type 'const test_func&lt;boost::blank&gt;' boost::declval&lt;F&gt;()( ^~~~~~~~~~~~~~~~~~~ ../boost/utility/detail/result_of_iterate.hpp:47:7: note: in instantiation of template class 'boost::detail::cpp0x_result_of_impl&lt;const test_func&lt;boost::blank&gt; ()&gt;' requested here : mpl::if_&lt; ^ ../boost/functional/forward_adapter.hpp:150:36: note: in instantiation of template class 'boost::result_of&lt;const test_func&lt;boost::blank&gt; ()&gt;' requested here inline typename boost::result_of&lt; FC() &gt;::type ^ </pre> Eric Niebler https://svn.boost.org/trac10/ticket/6828 https://svn.boost.org/trac10/ticket/6828 Report #6827: Integer overflow in read function Tue, 24 Apr 2012 17:41:57 GMT Fri, 27 Apr 2012 17:27:48 GMT <p> The problem with this chunk of code (from boost/iostreams/detail/restrict_impl.hpp read function): </p> <pre class="wiki">std::streamsize amt = end_ != -1 ? (std::min) (n, static_cast&lt;std::streamsize&gt;(end_ - pos_)) : n; </pre><p> is that it's prone to integer overflow. So if you have let's say end_ that is <em>&gt; INT_MAX</em> <em>std::min</em> will return 'wrong' (unwanted) value, e.g.: </p> <pre class="wiki">std::streamsize a = 0xb14c1000; std::streamsize b = 1; std::streamsize result = (std::min)(a, b); </pre><p> This will return <em>result = 0xb14c1000</em> which if applied to our case means we will read <em>0xb14c1000</em> instead of 1 bytes. </p> <p> This can be fixed like this: </p> <pre class="wiki">std::streamsize amt(n); if (end_ != -1 &amp;&amp; end_ &lt;= std::numeric_limits&lt;std::streamsize&gt;::max()) { amt = (std::min) (n, static_cast&lt;std::streamsize&gt;(end_ - pos_)); } </pre> msuvajac@… https://svn.boost.org/trac10/ticket/6827 https://svn.boost.org/trac10/ticket/6827 Report #6826: boost build fails to detect python3.2 correctly Tue, 24 Apr 2012 13:06:03 GMT Thu, 03 Jan 2013 17:54:50 GMT <p> bootstrap detects python3.2 </p> <p> but does not locate the library and include files correctly </p> <p> This is because when python3.2 is built with threading support, which is default on Linux, the include subdirectory and library are named python${VERSION}m, with the letter 'm' appended. </p> <p> #/usr/bin/python3.2-config --includes -I/usr/include/python3.2m </p> <p> #/usr/bin/python3.2-config --libs -lintl -lpthread -ldl -lutil -lm -lpython3.2m </p> <p> or </p> <p> $ pkg-config python-3.2 --cflags-only-I --libs-only-l -I/usr/include/python3.2m -lpython3.2m </p> <p> Building in dir: /usr/src/boost_1_49_0 boost 1_49_0 </p> <p> Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86_64/b2 Detecting Python version... 3.2 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... /usr Generating Boost.Build configuration in project-config.jam... </p> <p> ./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory compilation terminated. </p> <blockquote> <p> "g++" -ftemplate-depth-128 -Wno-strict-aliasing -march=native -mtune=native -m64 -pipe -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DNDEBUG -I"." -I"/usr/include/python3.2" -c -o "bin.v2/libs/python/build/gcc-4.7.0/release/threading-multi/numeric.o" "libs/python/src/numeric.cpp" </p> </blockquote> Treeve Jelbert https://svn.boost.org/trac10/ticket/6826 https://svn.boost.org/trac10/ticket/6826 Report #6824: warning: delete called on boost::error_info... that has virtual functions but non-virtual destructor Mon, 23 Apr 2012 21:19:52 GMT Fri, 27 Feb 2015 22:09:52 GMT <p> When compiling boost 1.49.0 thread.hpp with clang with -Wall, I receive warnings: </p> <p> /Users/richardpowell/boost/include/boost/checked_delete.hpp:34:5: warning: delete called on </p> <blockquote> <p> 'boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt;' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor] </p> </blockquote> <blockquote> <p> delete x; </p> </blockquote> <p> =-=-= </p> <p> More details: </p> <p> $ cat test2.cpp #include &lt;boost/thread.hpp&gt; </p> <p> $ clang++ --version Apple clang version 4.0 (tags/Apple/clang-421.0.11) (based on LLVM 3.1svn) Target: x86_64-apple-darwin11.3.0 Thread model: posix </p> <p> $ clang++ -g -I. -Wall -I ~/boost/include -c test2.cpp In file included from test2.cpp:1: In file included from /Users/richardpowell/boost/include/boost/thread.hpp:13: In file included from /Users/richardpowell/boost/include/boost/thread/thread.hpp:17: In file included from /Users/richardpowell/boost/include/boost/thread/pthread/thread_data.hpp:10: In file included from /Users/richardpowell/boost/include/boost/shared_ptr.hpp:17: In file included from /Users/richardpowell/boost/include/boost/smart_ptr/shared_ptr.hpp:30: /Users/richardpowell/boost/include/boost/checked_delete.hpp:34:5: warning: delete called on </p> <blockquote> <p> 'boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt;' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor] </p> </blockquote> <blockquote> <p> delete x; <sup> </sup></p> </blockquote> <p> /Users/richardpowell/boost/include/boost/smart_ptr/detail/shared_count.hpp:95:13: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::checked_delete&lt;boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt; &gt;' requested here </p> <blockquote> <p> boost::checked_delete( p ); <sup> </sup></p> </blockquote> </blockquote> <p> /Users/richardpowell/boost/include/boost/smart_ptr/shared_ptr.hpp:183:44: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::detail::shared_count::shared_count&lt;boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt; &gt;' requested here </p> </blockquote> <blockquote> <p> explicit shared_ptr( Y * p ): px( p ), pn( p ) <em> Y must be complete </em></p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /Users/richardpowell/boost/include/boost/exception/info.hpp:170:42: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::shared_ptr&lt;boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt; </p> <blockquote class="citation"> <p> ::shared_ptr&lt;boost::error_info&lt;boost::tag_original_exception_type, const std::type_info *&gt; &gt;' requested here </p> </blockquote> <blockquote> <p> shared_ptr&lt;error_info_tag_t&gt; p( new error_info_tag_t(v) ); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> /Users/richardpowell/boost/include/boost/exception/info.hpp:191:16: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::exception_detail::set_info&lt;boost::unknown_exception, boost::tag_original_exception_type, const std::type_info *&gt;' requested here </p> <blockquote> <p> return exception_detail::set_info(x,v); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> /Users/richardpowell/boost/include/boost/exception/detail/exception_ptr.hpp:181:21: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::operator&lt;&lt;&lt;boost::unknown_exception, boost::tag_original_exception_type, const std::type_info *&gt;' requested here </p> <blockquote> <p> (*this) &lt;&lt; original_exception_type(&amp;typeid(e)); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> </blockquote> <p> /Users/richardpowell/boost/include/boost/exception/detail/exception_ptr.hpp:160:13: note: in instantiation of function template specialization </p> <blockquote> <p> 'boost::unknown_exception::add_original_type&lt;std::exception&gt;' requested here </p> <blockquote> <p> add_original_type(e); <sup> </sup></p> </blockquote> </blockquote> <p> 1 warning generated. </p> Richard Powell <rmpowell77@…> https://svn.boost.org/trac10/ticket/6824 https://svn.boost.org/trac10/ticket/6824 Report #6822: Patch to fix process_status_failure behaviour Sun, 22 Apr 2012 19:38:53 GMT Sun, 22 Apr 2012 19:38:53 GMT <p> Some compilers can call ::<a class="missing wiki">SetLastError</a>(0) just before process_status_failure function is called, so ::<a class="missing wiki">GetLastError</a>() would return 0. It is much safer to call ::<a class="missing wiki">GetLastError</a>() in a function, that triggered a failure.<br /> <br /> This error is discussed in threads <a class="ext-link" href="http://lists.boost.org/boost-testing/2011/09/6927.php"><span class="icon">​</span>http://lists.boost.org/boost-testing/2011/09/6927.php</a> and <a class="ext-link" href="http://www.mail-archive.com/mingw-w64-public@lists.sourceforge.net/msg04512.html"><span class="icon">​</span>http://www.mail-archive.com/mingw-w64-public@lists.sourceforge.net/msg04512.html</a> <br /> Patch is provided by Alexander Potocki. </p> Antony Polukhin https://svn.boost.org/trac10/ticket/6822 https://svn.boost.org/trac10/ticket/6822 Report #6818: Tuple subscripting Sat, 21 Apr 2012 16:01:36 GMT Sat, 21 Apr 2012 16:01:36 GMT <p> There is a way to put off ugly get&lt;N&gt;(tpl) and replace it by tpl[N_t] using templated-user-defined literals. It would be great to add this feature into corresponding library. In attached file you could find implementation of it. </p> d.starosud@… https://svn.boost.org/trac10/ticket/6818 https://svn.boost.org/trac10/ticket/6818 Report #6816: Using transcendental functions with intervals doesn't work Sat, 21 Apr 2012 15:08:31 GMT Mon, 11 Mar 2013 08:24:57 GMT <p> The examples that use transcendental functions (e.g. "transc.cpp") cannot be compiled. </p> anonymous https://svn.boost.org/trac10/ticket/6816 https://svn.boost.org/trac10/ticket/6816 Report #6813: canonical function converts root-directory separator from '\' to '/' on Windows Fri, 20 Apr 2012 22:19:33 GMT Wed, 11 Jul 2018 07:27:45 GMT <p> boost::filesystem::canonical reverses the path separator on rooted paths </p> <p> Consider the following line: </p> <pre class="wiki">boost::filesystem::path convertedPath = boost::filesystem::canonical("C:\\Foo\\Bar\\..\\Bar\\Baz"); </pre><p> On Windows, convertedPath is set to "C:/Foo\Bar\Baz", where I would expect it to be set to "C:\Foo\Bar\Baz" </p> <p> The documentation states: "Returns: A canonical path that refers to the same file system object as absolute(p,base)." </p> <p> If the input path has no symbolic links, 'dot' directories, or 'dot-dot' directories, then I would expect the output to match a call to boost::filesystem::absolute. </p> <p> For example: </p> <pre class="wiki">boost::filesystem::path canonicalPath = boost::filesystem::canonical("Bar\\Baz", "C:\\Foo"); boost::filesystem::path absolutePath = boost::filesystem::absolute("Bar\\Baz", "C:\\Foo"); </pre><p> canonicalPath is set to "C:/Foo\Bar\Baz", while absolutePath is set to "C:\Foo\Bar\Baz". </p> <p> Looking at the implementation, this is related to the issue in ticket 5989 (<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/5989"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/5989</a>). I agree with the sentiments in that ticket, but if the behavior of the path iterator will not be changing, then I think the canonical function should be updated to preseve path consistency in Windows. </p> Alex Goldberg <alex.goldberg@…> https://svn.boost.org/trac10/ticket/6813 https://svn.boost.org/trac10/ticket/6813 Report #6811: Default argument of type multi_array fails under MSVC 2010 SP1 Fri, 20 Apr 2012 07:46:30 GMT Fri, 20 Apr 2012 07:46:30 GMT <p> When I write a function with the signature </p> <pre class="wiki">typedef boost::multi_array&lt;int, 3&gt; T; void bar(const T &amp;value = T()) </pre><p> and compile it with MSVC 2010 SP1 I get the following error messages </p> <pre class="wiki">E:\postdoc\boost-bug&gt;cl /EHsc /Ie:/postdoc/tools/boost_1_49_0 mar-bug.cpp Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01 for x64 Copyright (C) Microsoft Corporation. All rights reserved. mar-bug.cpp e:/postdoc/tools/boost_1_49_0\boost/multi_array/multi_array_ref.hpp(73) : error C3855: 'boost::const_multi_array_ref': template parameter 'NumDims' is incompati ble with the declaration e:/postdoc/tools/boost_1_49_0\boost/multi_array/multi_array_ref.hpp(417) : see reference to class template instantiation 'boost::const_multi_array_ref&lt;T ,NumDims,TPtr&gt;' being compiled with [ T=int, NumDims=0x03, TPtr=int * ] e:/postdoc/tools/boost_1_49_0\boost/multi_array.hpp(113) : see reference to class template instantiation 'boost::multi_array_ref&lt;T,NumDims&gt;' being compi led with [ T=int, NumDims=0x03 ] mar-bug.cpp(5) : see reference to class template instantiation 'boost::m ulti_array&lt;T,NumDims&gt;' being compiled with [ T=int, NumDims=0x03 ] </pre><p> The offending piece of code appears to be in <code>boost/multi_array/multi_array_ref.hpp</code>: </p> <pre class="wiki"> #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS // make const_multi_array_ref a friend of itself template &lt;typename,std::size_t,typename&gt; friend class const_multi_array_ref; #endif </pre><p> If I give the template arguments names then the compiler is happy (I'll attach a patch). </p> <p> I have no idea what is special about using the type as a default argument - I tried to reproduce it using simpler steps (copy constructor, default constructor, assigning a temporary to a const ref inside a function) with no luck. </p> Bruce Merry <bmerry@…> https://svn.boost.org/trac10/ticket/6811 https://svn.boost.org/trac10/ticket/6811 Report #6810: boost system auto linking is broken in svn trunk 78080 Thu, 19 Apr 2012 18:12:25 GMT Mon, 28 May 2012 17:17:27 GMT <p> I am now getting... </p> <p> fatal error LNK1104: cannot open file 'boost_system-vc90-mt-gd-1_50.lib' </p> <p> When I try to build my project. I don't have that library because I am building the default static libraries. (note: not runtime-static). I instead have libboost_system-vc90-mt-gd-1_50.lib. Did somebody who had the non default dynamically linkable libraries on their system check in a breaking change? We have tried manually defining BOOST_ALL_STATIC_LIB but that does not make a difference. When we manually define BOOST_ALL_NO_LIB that does remove this error but adds a bunch of undefined symbols that are not the obvious location. IE: boost::filesystem::path_traits::convert... does not appear to be in libboost_filesystem. </p> <p> my libraries are built with simply bootstrap.bat b2 --toolset=msvc-9.0 </p> anonymous https://svn.boost.org/trac10/ticket/6810 https://svn.boost.org/trac10/ticket/6810 Report #6807: interval rounded_arith.hpp compilation issues (clang) Wed, 18 Apr 2012 15:51:09 GMT Mon, 11 Mar 2013 08:30:30 GMT <p> It appears that the rounded _artith_* classes fail to compile (at least with my version of clang : Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)) </p> <p> The issue appears for both rounded_arith_std and rounded_arith_opp when they try to call the "to_int" static method of the Rounding mother class (which is a template parameter). Replacing the call of to_int(...) by Rounding::to_int appears to solve the issue. But I did not check if such issue was present at other places. </p> <p> I have attached a patch file for this header that appears to compile properly. </p> Frederic Py <fredpy@…> https://svn.boost.org/trac10/ticket/6807 https://svn.boost.org/trac10/ticket/6807 Report #6800: endless loop in dev_poll_reactor on Solaris when using async_write with more than 65536 bytes Mon, 16 Apr 2012 14:39:49 GMT Mon, 16 Apr 2012 15:47:44 GMT <p> The following example-program puts io_service thread in a tight endless loop on Solaris when the server is trying to send more than 65536 bytes (the server and client have to be running on a different host) and client is running. truss on server process shows following calls continuously. </p> <pre class="wiki">/6: recvmsg(57, 0xFFFFFD7FEB9FDDF0, 0) Err#11 EAGAIN /6: write(13, " 9\0\0\019\0\0\0", 8) = 8 /6: ioctl(13, DP_POLL, 0xFFFFFD7FEB9FE460) = 1 /6: recvmsg(57, 0xFFFFFD7FEB9FDDF0, 0) Err#11 EAGAIN /6: write(13, " 9\0\0\019\0\0\0", 8) = 8 /6: ioctl(13, DP_POLL, 0xFFFFFD7FEB9FE460) = 1 /6: recvmsg(57, 0xFFFFFD7FEB9FDDF0, 0) Err#11 EAGAIN /6: write(13, " 9\0\0\019\0\0\0", 8) = 8 /6: ioctl(13, DP_POLL, 0xFFFFFD7FEB9FE460) = 1 /6: recvmsg(57, 0xFFFFFD7FEB9FDDF0, 0) Err#11 EAGAIN /6: write(13, " 9\0\0\019\0\0\0", 8) = 8 /6: ioctl(13, DP_POLL, 0xFFFFFD7FEB9FE460) = 1 /6: recvmsg(57, 0xFFFFFD7FEB9FDDF0, 0) Err#11 EAGAIN /6: write(13, " 9\0\0\019\0\0\0", 8) = 8 /6: ioctl(13, DP_POLL, 0xFFFFFD7FEB9FE460) = 1 </pre><p> The busy-wait loop continues until we stop the client. </p> <p> Here is the server code. I've just changed boost asynchronous TCP daytime server sample to return the specified number of bytes message instead of daytime and put the client connection in read mode. </p> <pre class="wiki">#include &lt;ctime&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;string&gt; #include &lt;boost/bind.hpp&gt; #include &lt;boost/shared_ptr.hpp&gt; #include &lt;boost/enable_shared_from_this.hpp&gt; #include &lt;boost/lexical_cast.hpp&gt; #include &lt;boost/asio.hpp&gt; #include &lt;boost/scoped_array.hpp&gt; using boost::asio::ip::tcp; std::string make_message(unsigned int message_size) { using namespace std; std::string data(message_size, 'A'); return data; } class tcp_connection : public boost::enable_shared_from_this&lt;tcp_connection&gt; { public: typedef boost::shared_ptr&lt;tcp_connection&gt; pointer; static pointer create(boost::asio::io_service&amp; io_service, unsigned int message_size) { return pointer(new tcp_connection(io_service, message_size)); } tcp::socket&amp; socket() { return socket_; } void handleMessage(const boost::system::error_code&amp; message_error) { if (message_error) { std::cout&lt;&lt;"Error while reading the message from client"&lt;&lt;std::endl; } else { std::cout&lt;&lt;"Read the message from client"&lt;&lt;std::endl; } } void start() { // Perform async_read on client connection to read data from the client. _header.reset(new char[6]); _header[5] = '\0'; boost::asio::async_read(socket_, boost::asio::buffer(_header.get(), 5), boost::bind(&amp;tcp_connection::handleMessage, shared_from_this(), boost::asio::placeholders::error)); message_ = make_message(message_size_); boost::asio::async_write(socket_, boost::asio::buffer(message_), boost::bind(&amp;tcp_connection::handle_write, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } private: tcp_connection(boost::asio::io_service&amp; io_service, int message_size) : socket_(io_service), message_size_(message_size) { } void handle_write(const boost::system::error_code&amp; /*error*/, size_t bytes_transferred) { std::cout&lt;&lt;"Bytes written: "&lt;&lt; bytes_transferred &lt;&lt; std::endl; } tcp::socket socket_; std::string message_; boost::scoped_array&lt;char&gt; _header; unsigned int message_size_; }; class tcp_server { public: tcp_server(boost::asio::io_service&amp; io_service, unsigned int port, unsigned int message_size) : acceptor_(io_service, tcp::endpoint(tcp::v4(), port)), message_size_(message_size) { start_accept(); } private: void start_accept() { tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.get_io_service(), message_size_); acceptor_.async_accept(new_connection-&gt;socket(), boost::bind(&amp;tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error)); } void handle_accept(tcp_connection::pointer new_connection, const boost::system::error_code&amp; error) { if (!error) { new_connection-&gt;start(); start_accept(); } } tcp::acceptor acceptor_; unsigned int message_size_; }; int main(int argc, char* argv[]) { if (argc != 3) { std::cerr &lt;&lt; "Usage: server port message_size" &lt;&lt; std::endl; return 1; } unsigned int port = boost::lexical_cast&lt;unsigned int&gt;(argv[1]); unsigned int message_size = boost::lexical_cast&lt;unsigned int&gt;(argv[2]); try { boost::asio::io_service io_service; tcp_server server(io_service, port, message_size); io_service.run(); } catch (std::exception&amp; e) { std::cerr &lt;&lt; e.what() &lt;&lt; std::endl; } return 0; } </pre><p> For the client we can use boost synchronous TCP daytime client sample (changed to accept port as an argument) . </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/array.hpp&gt; #include &lt;boost/asio.hpp&gt; using boost::asio::ip::tcp; int main(int argc, char* argv[]) { try { if (argc != 3) { std::cerr &lt;&lt; "Usage: client &lt;host&gt; &lt;port&gt;" &lt;&lt; std::endl; return 1; } boost::asio::io_service io_service; tcp::resolver resolver(io_service); tcp::resolver::query query(argv[1], argv[2]); tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); tcp::resolver::iterator end; tcp::socket socket(io_service); boost::system::error_code error = boost::asio::error::host_not_found; while (error &amp;&amp; endpoint_iterator != end) { socket.close(); socket.connect(*endpoint_iterator++, error); } if (error) throw boost::system::system_error(error); for (;;) { boost::array&lt;char, 128&gt; buf; boost::system::error_code error; size_t len = socket.read_some(boost::asio::buffer(buf), error); if (error == boost::asio::error::eof) break; // Connection closed cleanly by peer. else if (error) throw boost::system::system_error(error); // Some other error. std::cout.write(buf.data(), len); } } catch (std::exception&amp; e) { std::cerr &lt;&lt; e.what() &lt;&lt; std::endl; } return 0; } </pre><p> Here is how I ran the server and client on two different solaris hosts - </p> <pre class="wiki">server 9081 200000 client &lt;server_host&gt; 9081 </pre><p> After running the server and client, do "truss" on server which will be showing tight polling loop as mentioned above. </p> <p> The program works fine on Linux and works fine on Solaris when compiled with the flag -DBOOST_ASIO_DISABLE_DEV_POLL. </p> p_ranadheer@… https://svn.boost.org/trac10/ticket/6800 https://svn.boost.org/trac10/ticket/6800 Report #6797: Undefined references for program_options library with mingw64. Mon, 16 Apr 2012 08:43:49 GMT Tue, 09 Jun 2015 07:05:39 GMT <p> I compiled a shared version of boost program_options with mingw64. When I try to link against it I get: </p> <pre class="wiki">Linking CXX executable ..\..\..\binary\abc.exe CMakeFiles\abc.dir/objects.a(test.cpp.obj):test.cpp:(.text+0x65bf): undefined reference to `boost::program_options::detail::common_config_file_iterator::c ommon_config_file_iterator(std::set&lt;std::string, std::less&lt;std::string&gt;, std::allocator&lt;std::string&gt; &gt; const&amp;, bool)' CMakeFiles\abc.dir/objects.a(test.cpp.obj):test.cpp:(.text+0x6672): undefined reference to `boost::program_options::detail::common_config_file_iterator::g et()' CMakeFiles\abc.dir/objects.a(test.cpp.obj):test.cpp:(.text+0x7871): undefined reference to `boost::program_options::detail::common_config_file_iterator::g et()' collect2: ld returned 1 exit status </pre><p> I use cmake for my project and everything works fine under linux. nm gives the following output: </p> <pre class="wiki">$ nm libboost_program_options.dll | grep common_config_file_iterator 000000006e1a62c0 d .data$_ZTIN5boost12eof_iteratorINS_15program_options6detail27common_config_file_iteratorENS1_12basic_optionIcEEEE 000000006e1a62e0 d .data$_ZTIN5boost15iterator_facadeINS_15program_options6detail27common_config_file_iteratorEKNS1_12basic_optionIcEENS_21forward_traversal_tag ERS6_xEE 000000006e1a6660 d .data$_ZTIN5boost15program_options6detail27common_config_file_iteratorE 000000006e1a96a0 d .data$_ZTVN5boost15program_options6detail27common_config_file_iteratorE 000000006e1b578c p .pdata$_ZN5boost15program_options6detail27common_config_file_iterator7getlineERSs 000000006e1b58d0 p .pdata$_ZN5boost15program_options6detail27common_config_file_iteratorD0Ev 000000006e1b58c4 p .pdata$_ZN5boost15program_options6detail27common_config_file_iteratorD1Ev 000000006e1b5d38 p .pdata$_ZN5boost15program_options6detail27common_config_file_iteratorD2Ev 000000006e1b18e0 r .rdata$_ZTSN5boost12eof_iteratorINS_15program_options6detail27common_config_file_iteratorENS1_12basic_optionIcEEEE 000000006e1b1960 r .rdata$_ZTSN5boost15iterator_facadeINS_15program_options6detail27common_config_file_iteratorEKNS1_12basic_optionIcEENS_21forward_traversal_ta gERS6_xEE 000000006e1b20e0 r .rdata$_ZTSN5boost15program_options6detail27common_config_file_iteratorE 000000006e108c20 t .text$_ZN5boost15program_options6detail27common_config_file_iterator7getlineERSs 000000006e108c30 t .text$_ZN5boost15program_options6detail27common_config_file_iteratorD0Ev 000000006e108e00 t .text$_ZN5boost15program_options6detail27common_config_file_iteratorD1Ev 000000006e108fc0 t .text$_ZN5boost15program_options6detail27common_config_file_iteratorD2Ev 000000006e1be600 r .xdata$_ZN5boost15program_options6detail27common_config_file_iterator7getlineERSs 000000006e1be74c r .xdata$_ZN5boost15program_options6detail27common_config_file_iteratorD0Ev 000000006e1be740 r .xdata$_ZN5boost15program_options6detail27common_config_file_iteratorD1Ev 000000006e1beadc r .xdata$_ZN5boost15program_options6detail27common_config_file_iteratorD2Ev 000000006e198fe0 t _GLOBAL__sub_I__ZN5boost15program_options6detail27common_config_file_iteratorC2ERKSt3setISsSt4lessISsESaISsEEb 000000006e0cd800 T _ZN5boost15program_options6detail27common_config_file_iterator10add_optionEPKc 000000006e0cde20 T _ZN5boost15program_options6detail27common_config_file_iterator3getEv U _ZN5boost15program_options6detail27common_config_file_iterator7getlineERSs 000000006e108c20 T _ZN5boost15program_options6detail27common_config_file_iterator7getlineERSs 000000006e0ceda0 T _ZN5boost15program_options6detail27common_config_file_iteratorC1ERKSt3setISsSt4lessISsESaISsEEb 000000006e0da700 t _ZN5boost15program_options6detail27common_config_file_iteratorC2ERKS2_.constprop.235 000000006e0ceda0 T _ZN5boost15program_options6detail27common_config_file_iteratorC2ERKSt3setISsSt4lessISsESaISsEEb 000000006e108c30 T _ZN5boost15program_options6detail27common_config_file_iteratorD0Ev U _ZN5boost15program_options6detail27common_config_file_iteratorD0Ev U _ZN5boost15program_options6detail27common_config_file_iteratorD1Ev 000000006e108e00 T _ZN5boost15program_options6detail27common_config_file_iteratorD1Ev 000000006e108fc0 T _ZN5boost15program_options6detail27common_config_file_iteratorD2Ev 000000006e0cd660 T _ZNK5boost15program_options6detail27common_config_file_iterator14allowed_optionERKSs 000000006e1a62c0 D _ZTIN5boost12eof_iteratorINS_15program_options6detail27common_config_file_iteratorENS1_12basic_optionIcEEEE 000000006e1a62e0 D _ZTIN5boost15iterator_facadeINS_15program_options6detail27common_config_file_iteratorEKNS1_12basic_optionIcEENS_21forward_traversal_tagERS6_x EE 000000006e1a6660 D _ZTIN5boost15program_options6detail27common_config_file_iteratorE 000000006e1b18e0 R _ZTSN5boost12eof_iteratorINS_15program_options6detail27common_config_file_iteratorENS1_12basic_optionIcEEEE 000000006e1b1960 R _ZTSN5boost15iterator_facadeINS_15program_options6detail27common_config_file_iteratorEKNS1_12basic_optionIcEENS_21forward_traversal_tagERS6_x EE 000000006e1b20e0 R _ZTSN5boost15program_options6detail27common_config_file_iteratorE 000000006e1a96a0 D _ZTVN5boost15program_options6detail27common_config_file_iteratorE </pre><p> The command I use to build boost is: </p> <pre class="wiki">b2 --toolset=gcc variant=release address-model=64 threading=multi optimization=speed link=shared runtime-link=shared cxxflags='-DBOOST_USE_WINDOWS_H -std=gnu++0x -march=core2 -mtune=core2 -msse -msse2 -mssse3 -msse4' --with-thread --with-dat e_time --with-filesystem --with-program_options --prefix=c:/temp/boost install </pre><p> I attach a minimal cmake project (I used Boost 1.48.0 there, but it makes no difference). </p> tasptz@… https://svn.boost.org/trac10/ticket/6797 https://svn.boost.org/trac10/ticket/6797 Report #6793: Support construction from range Sat, 14 Apr 2012 20:46:23 GMT Mon, 17 Dec 2012 17:31:46 GMT <p> Could you support construction from a range and from an iterator pair? I don't know what to do when the input doesn't match the array size. If it's smaller you could default construct the rest of the array. If it's larger, you could truncate, std::terminate() or throw. Or just consider it undefined behaviour. </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/6793 https://svn.boost.org/trac10/ticket/6793 Report #6778: directory_iterator and recursive_directory_iterator has inconsistent behavior with STL iterator when assignment operator=() is involved. Mon, 09 Apr 2012 23:49:26 GMT Mon, 09 Apr 2012 23:49:26 GMT <p> For example, in std::vector, the following code shows that *vIterator_1 prints out intVec<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> and *vIteraotr_2 prints out intVec<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>. (The assignment operator=() does not make those two iterators link together...) </p> <pre class="wiki">std::vector&lt;int&gt; intVec(10); intVec[1] = 1; std::vector&lt;int&gt;::iterator vIterator_1 = intVec.begin(); // iterator assignment operator=() now get involved. std::vector&lt;int&gt;::iterator vIterator_2 = vIterator_1; ++vIterator_1; // vIterator_2 does not increment. std::cout &lt;&lt; "*vIterator_1: " &lt;&lt; *vIterator_1; std::cout &lt;&lt; "*vIterator_2: " &lt;&lt; *vIterator_2; </pre><p> On the other hand, the following example shows that dirIterator1-&gt;path() and dirIterator2-&gt;path() both contains '/home/user/test/2.txt' which is not consistent with STL iterator behavior. Since iterators behaves like pointers, after calling vIterator_2 = vIterator_1;, vIterator_2 and vIterator_1 should stays independent. The problem seems to be directory_iterator forgot to implement the copy constructor and assignment operator=(). </p> <pre class="wiki">// assuming that under /home/user/test, there are 1.txt and 2.txt boost::filesystem::path rootPath("/home/user/test"); boost::filesystem::directory_iterator dirIterator1(rootPath); // Now assignment operator=() got involved. boost::filesystem::directory_iterator dirIterator2 = dirIterator1; // This line causes dirIterator1 and dirIterator2 both got incremented ... ++dirIterator1; std::cout &lt;&lt; "dirItertor1: " &lt;&lt; dirIterator1-&gt;path().string() &lt;&lt; std::endl; std::cout &lt;&lt; "dirItertor2: " &lt;&lt; dirIterator2-&gt;path().string() &lt;&lt; std::endl; </pre><h2 class="section" id="Note">Note</h2> <p> The symptom occurred in: </p> <p> boost::filesystem::directory_iterator<br /> boost::filesystem2::directory_iterator<br /> boost::filesystem3::directory_iterator<br /> boost::filesystem::recursive_directory_iterator<br /> boost::filesystem2::recursive_directory_iterator<br /> boost::filesystem3::recursive_directory_iterator<br /> </p> <p> under all platforms. </p> Chih-Yao Hsieh <josephsieh@…> https://svn.boost.org/trac10/ticket/6778 https://svn.boost.org/trac10/ticket/6778 Report #6775: boost::filesystem::path cannot be created from lexical_cast("") Mon, 09 Apr 2012 14:04:32 GMT Mon, 09 Apr 2012 14:04:32 GMT <p> The boost <code>filesystem::path</code> can hold an "empty" state, where <code>.string()</code> returns <code>""</code>. It even has a designated check for this state, <code>empty()</code> This state is useful as a kind of null-value, to turn on or off certain behavior. </p> <p> However, this state cannot be reached through <code>lexical_cast</code>, the following code will for example end with a <code>boost::bad_lexical_cast</code> error. </p> <pre class="wiki">#include &lt;boost/lexical_cast.hpp&gt; #include &lt;boost/filesystem/path.hpp&gt; #include &lt;string&gt; int main() { boost::filesystem::path str = boost::lexical_cast&lt;boost::filesystem::path, std::string&gt;(""); return 0; } </pre><p> IMO, this is a bug. <code>path</code> clearly has a normal and useful <code>empty()</code> state, which cannot for some reason be reached through <code>lexical_cast</code>. The equivalent test works for <code>std::string</code>, for example, so should not be inherent problem with <code>lexical_cast</code> itself. </p> <p> One consequence is that <code>path</code> cannot be used as a value-type for <code>program_options</code>, while allowing options with default-values to be turned of using empty values. (I.E. <code>--config-file ""</code>) </p> Ulrik Mikaelsson <ulrik.mikaelsson@…> https://svn.boost.org/trac10/ticket/6775 https://svn.boost.org/trac10/ticket/6775 Report #6772: Regression on Sandia-gcc-4.3.4_0x when refactoring base_from_member code for T&& Sat, 07 Apr 2012 00:19:06 GMT Sun, 03 Jun 2012 19:58:53 GMT <p> Since the introduction of </p> <blockquote> <p> svn log boost/utility/base_from_member.hpp </p> </blockquote> <hr /> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/77046" title="Fixed (hopefully) conflict between boost::base_from_member's C++11 ...">r77046</a> | dlwalker | 2012-02-17 02:55:33 +0100 (Ven, 17 fév 2012) | 1 line </p> <p> Fixed (hopefully) conflict between boost::base_from_member's C++11 constructor template and the automatically defined non-template copy- and/or move-constructors. </p> <hr /> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/76982" title="Updated boost::base_from_member for C++2011.">r76982</a> | dlwalker | 2012-02-11 19:27:02 +0100 (Sam, 11 fév 2012) | 1 line </p> <p> Updated boost::base_from_member for C++2011. </p> <p> There is an error on </p> <pre class="wiki">Test output: Sandia-gcc-4.3.4_0x - format - format_test1 / gcc-4.3.4_0x Rev 77789 / Fri, 6 Apr 2012 05:57:33 +0000 Report Time: Fri, 6 Apr 2012 22:01:09 +0000 Compile [2012-04-06 07:43:02 UTC]: fail "/sierra/Sntools/extras/compilers/gcc-4.3.4/bin/g++" -ftemplate-depth-128 -std=gnu++0x -O0 -fno-inline -Wall -g -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_NO_AUTO_LINK=1 -I".." -c -o "/scratch/kbelco/boost/results/boost/bin.v2/libs/format/test/format_test1.test/gcc-4.3.4_0x/debug/format_test1.o" "../libs/format/test/format_test1.cpp" ../boost/utility/base_from_member.hpp: In constructor ???boost::base_from_member&lt;MemberType, UniqueID&gt;::base_from_member(T&amp;&amp; ...) [with T = boost::io::basic_altstringbuf&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;*&amp;, boost::io::basic_oaltstringstream&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::No_Op, EnableIf = void, MemberType = boost::shared_ptr&lt;boost::io::basic_altstringbuf&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, int UniqueID = 0]???: ../boost/format/alt_sstream.hpp:146: instantiated from ???boost::io::basic_oaltstringstream&lt;Ch, Tr, Alloc&gt;::basic_oaltstringstream(boost::io::basic_altstringbuf&lt;Ch, Tr, Alloc&gt;*) [with Ch = char, Tr = std::char_traits&lt;char&gt;, Alloc = std::allocator&lt;char&gt;]??? ../boost/format/feed_args.hpp:142: instantiated from ???void boost::io::detail::put(T, const boost::io::detail::format_item&lt;Ch, Tr, Alloc&gt;&amp;, typename boost::basic_format&lt;Ch, Tr, Alloc&gt;::string_type&amp;, typename boost::basic_format&lt;Ch, Tr, Alloc&gt;::internal_streambuf_t&amp;, boost::io::detail::locale_t*) [with Ch = char, Tr = std::char_traits&lt;char&gt;, Alloc = std::allocator&lt;char&gt;, T = const char (&amp;)[11]]??? ../boost/format/feed_args.hpp:253: instantiated from ???void boost::io::detail::distribute(boost::basic_format&lt;Ch, Tr, Alloc&gt;&amp;, T) [with Ch = char, Tr = std::char_traits&lt;char&gt;, Alloc = std::allocator&lt;char&gt;, T = const char (&amp;)[11]]??? ../boost/format/feed_args.hpp:263: instantiated from ???boost::basic_format&lt;Ch, Tr, Alloc&gt;&amp; boost::io::detail::feed(boost::basic_format&lt;Ch, Tr, Alloc&gt;&amp;, T) [with Ch = char, Tr = std::char_traits&lt;char&gt;, Alloc = std::allocator&lt;char&gt;, T = const char (&amp;)[11]]??? ../boost/format/format_class.hpp:64: instantiated from ???boost::basic_format&lt;Ch, Tr, Alloc&gt;&amp; boost::basic_format&lt;Ch, Tr, Alloc&gt;::operator%(const T&amp;) [with T = char [11], Ch = char, Tr = std::char_traits&lt;char&gt;, Alloc = std::allocator&lt;char&gt;]??? ../libs/format/test/format_test1.cpp:40: instantiated from here ../boost/utility/base_from_member.hpp:137: error: invalid static_cast from type ???boost::io::basic_altstringbuf&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;*??? to type ???T&amp;&amp;??? </pre> viboes https://svn.boost.org/trac10/ticket/6772 https://svn.boost.org/trac10/ticket/6772 Report #6768: missing std:: qualifier on sqrt calls Thu, 05 Apr 2012 20:05:04 GMT Thu, 05 Apr 2012 20:05:04 GMT <p> File libs/numeric/ublas/test/test_complex_norms.cpp includes &lt;cmath&gt; and then calls sqrt twice without a std:: qualifier. Although the code works with some compilers, it is not portable. The C++ standard says that if you include a &lt;cxxx&gt; headaer (like &lt;cmath&gt;) the names in the headers are (only) in namespace std. Diffs to fix the file: </p> <pre class="wiki">37c37 &lt; const double expected = sqrt(44.0); --- &gt; const double expected = std::sqrt(44.0); 65c65 &lt; const float expected = sqrt(44.0); --- &gt; const float expected = std::sqrt(44.0); </pre> Stephen Clamage <stephen.clamage@…> https://svn.boost.org/trac10/ticket/6768 https://svn.boost.org/trac10/ticket/6768 Report #6765: boost::mem_fn not entirely compatible with std::mem_fn Thu, 05 Apr 2012 10:37:15 GMT Thu, 05 Apr 2012 10:37:15 GMT <p> boost::mem_fn only supports calling member functions through proxies when the proxy type has a matching get_pointer function. This is not necessary for std::mem_fn (20.8.10) as the second or fourth item of INVOKE (20.8.2) should apply in such a case. </p> <p> A solution would be to change _mfi::dm::call(U const&amp; u, void const*) to simply call (*u).*f_ </p> <p> I couldn't find any documentation why exactly get_pointer is used and don't know which implications this might have, but it would be a nice to have feature (and would also allow mem_fn to work on iterators which are often used as handles). </p> philipp.moeller@… https://svn.boost.org/trac10/ticket/6765 https://svn.boost.org/trac10/ticket/6765 Report #6764: rbtree_best_fit breaks if allocation alignment doesn't match the segment manager alignment Thu, 05 Apr 2012 08:11:57 GMT Fri, 04 Apr 2014 09:50:15 GMT <p> I have a shared memory queue. The memory segment is divided into 3 parts: a header, a fixed number of element descriptors and an area available for element bodies. The latter is managed by a segment manager with the rbtree_best_fit allocation strategy, which is initialized so that it doesn't use the area with the element descriptors. </p> <p> If the allocation strategy uses default alignment settings, everything works as expected. But if a stricter alignment requirement is specified (32 bytes in my case), the rbtree_best_fit::priv_add_segment function fails with assertion failure 'priv_end_block() == end_block'. </p> <p> Apparently, the root of the issue is in the fact that the segment manager itself in my case is not aligned to 32 bytes (but is aligned sufficiently to be operated on). This configuration worked fine with Boost 1.46 but fails with 1.48. I think, such configuration is valid and the code should be made to support it. </p> <p> I have attached a test case that demonstrates the issue. I'm running on Linux, x86-64, gcc 4.6. </p> <p> PS: I also have a side question. As you may see in the code, I try to estimate the shared memory segment size to allocate. I assume the segment manager will add an overhead per allocation for its bookkeeping but I failed to see how I can discover the amount of this overhead, so I hardcoded 64 bytes. Is there a better way to do this? </p> Andrey Semashev https://svn.boost.org/trac10/ticket/6764 https://svn.boost.org/trac10/ticket/6764 Report #6761: boost::filesystem::absolute mixes generic and native format Tue, 03 Apr 2012 15:53:15 GMT Mon, 28 May 2012 17:21:40 GMT <p> Under Windows: </p> <pre class="wiki">absolute(wpath(L"test/filename.ext")).native() </pre><p> returns something akin to </p> <blockquote> <p> c:\somedir\test/filename.ext </p> </blockquote> <p> The problem is that <em>absolute</em> uses the current working directory when no cwd is given and the cwd under windows uses backslash. wpath using forward slash is valid, but the resulting path uses both, back- and forward slash, which is invalid and cannot be passed to ::<a class="missing wiki">CreateFile</a> for example. </p> <p> absolute must verify that all parts use the same path delimiter. </p> hajokirchhoff https://svn.boost.org/trac10/ticket/6761 https://svn.boost.org/trac10/ticket/6761 Report #6759: boost::wave::support_option_option_new_line didn't work as expected. Mon, 02 Apr 2012 09:51:09 GMT Wed, 23 May 2012 12:55:34 GMT <p> I think following code is error: </p> <table class="wiki"> <tr>if ((!seen_newline <td> act_pos.get_column() &gt; 1) &amp;&amp; </td></tr></table> <blockquote> <p> !need_single_line(ctx.get_language())) </p> </blockquote> <p> { <em> warn, if this file does not end with a newline </em></p> <blockquote> <p> BOOST_WAVE_THROW_CTX(ctx, preprocess_exception, </p> <blockquote> <p> last_line_not_terminated, "", act_pos); </p> </blockquote> </blockquote> <p> } </p> <p> I think we hope that error reported if "newline not found" while "need single line" </p> wuye9036@… https://svn.boost.org/trac10/ticket/6759 https://svn.boost.org/trac10/ticket/6759 Report #6757: Add lzw_compressor and lzw_decompressor filters Sun, 01 Apr 2012 19:00:11 GMT Sun, 01 Apr 2012 19:00:11 GMT <p> Boost.IOstreams has support for BZ2, GZIP, and DEFLATE compression/decompression. To be able to read output from the POSIX-standard <code>compress</code> utility, it would be nice if the library also supported compression and decompression with the Lempel-Ziv-Welch (LZW) algorithm. </p> <p> Here are some LZW implementations that might be of use: </p> <ul><li><a class="ext-link" href="http://marknelson.us/2011/11/08/lzw-revisited/"><span class="icon">​</span>LZW Revisited</a> by Mark Nelson </li><li><a class="ext-link" href="http://michael.dipperstein.com/lzw/"><span class="icon">​</span>Lempel-Ziv-Welch (LZW) Encoding Discussion and Implementation</a> by Michael Dipperstein </li><li><a class="ext-link" href="http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/lzw"><span class="icon">​</span>libfreetype2's LZW support</a> </li><li><a class="ext-link" href="http://rosettacode.org/wiki/LZW_compression"><span class="icon">​</span>LZW compression</a> on Rosetta Code </li></ul> dtrebbien@… https://svn.boost.org/trac10/ticket/6757 https://svn.boost.org/trac10/ticket/6757 Report #6756: gcc gives compile error "error ‘boost_se_params_t_10::boost_se_param_t_0_10’ is not a type" in template function for ScopeExit. Sun, 01 Apr 2012 14:12:42 GMT Sun, 01 Apr 2012 15:04:09 GMT <p> When using <a class="missing wiki">ScopeExit</a>, I found that gcc can't compile some sources. After error checking, gcc (4.4.3 in Ubuntu 10.04 and gcc 4.6.1 from MinGW) will raise compile error when I use <a class="missing wiki">ScopeExit</a> in template functions. For the code can't compile by gcc, you can find it in attachment. </p> Lin, Yi-Li <record.nctu.cis91@…> https://svn.boost.org/trac10/ticket/6756 https://svn.boost.org/trac10/ticket/6756 Report #6753: Make message_queue_t::do_send(...) public. Sat, 31 Mar 2012 15:47:15 GMT Sat, 31 Mar 2012 15:47:15 GMT <p> In the file boost/interprocess/ipc/message_queue.hpp, it would be useful if the member function: </p> <pre class="wiki">bool message_queue_t::do_send(...) </pre><p> was public. </p> <p> Doing so, it would be easier to determine the policy to be followed when the memory block is full, using a parameter instead of a further external switch statement. </p> Pietro Mele <pietrom16@…> https://svn.boost.org/trac10/ticket/6753 https://svn.boost.org/trac10/ticket/6753 Report #6752: Addition of cbrt, min, max Sat, 31 Mar 2012 08:18:23 GMT Sat, 31 Mar 2012 08:18:23 GMT <p> LS, please consider adding the cubic root and min/max functions to the boost.units library. I have included an implementation and unit tests (all fairly trivial) in cmath.hpp and test_cmath.cpp. Maybe the min/max should be placed elsewhere as these are not part of the original cmath header-it might be nice to have a place (header) for future similar additions. Thanks for your consideration! - Pieter </p> pieterb@… https://svn.boost.org/trac10/ticket/6752 https://svn.boost.org/trac10/ticket/6752 Report #6746: Boost fails to build 64-bit on Solaris sparc with toolset=gcc Thu, 29 Mar 2012 21:24:55 GMT Thu, 03 Jan 2013 17:56:54 GMT <p> Boost 1.38.0 is needed in order to build PowerDNS, as PowerDNS specifically looks for libboost_program_options_*gcc*.so. </p> <p> I have tried each and every permutation to convince the Boost build system that it is really OK to use GCC on the sparc platform with Solaris's linker and assembler, but to no avail. </p> <p> The following is used: </p> <p> tools/jam/src/bin.solaris/bjam -d4 -j2 --without-mpi --toolset=gcc --prefix=/opt/boost --libdir=/opt/boost/lib/64 address-model=64 cxxflags=-m64 linkflags=-m64 </p> <p> ...and here is one of many identical failures during the build process: </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthreads -fPIC -m64 -DBOOST_ALL_NO_LIB=1 -DBOOST_MATH_TR1_DYN_LINK=1 -DNDEBUG -I"." -c -o "bin.v2/libs/math/build/gcc-3.4.3/release/address-model-64/threading-multi/expm1.o" "libs/math/build/../src/tr1/expm1.cpp" </p> </blockquote> <p> /usr/ccs/bin/as: error: unknown option '-' /usr/ccs/bin/as: error: unknown option 't' /usr/ccs/bin/as: error: unknown option 'aditional-format' /usr/ccs/bin/as: error: unknown option '6' /usr/ccs/bin/as: error: unknown option '4' /usr/ccs/bin/as: error: unknown option 'A' /usr/ccs/bin/as: error: unknown option '9' usage: /usr/ccs/bin/as [-V] [-Q{y,n}] [-q] [-s] </p> <blockquote> <p> [-S] [-K {pic,PIC}] [-o objfile] [-L] [-T] [-P <a class="missing wiki">-Yc,path] [-Ipath] [-Dname] [-Dname=def] [-Uname</a>...] [-m [-Ym,path]] [-n] [-ul] [-xF] [-m32] [-m64] [-xarch={v7,v8,v8a,v8plus,v8plusa,v8plusb,v9,v9a,v9b,sparc,sparcvis,sparcvis2,sparcvis3,sparcfmaf,sparcima}] [-xcode={pic13,pic32}] file.s... </p> </blockquote> <p> 0.000129 sec system; 0.003178 sec user ...failed gcc.compile.c++ bin.v2/libs/math/build/gcc-3.4.3/release/address-model-64/threading-multi/expm1.o... </p> <p> Upgrading to newer version of Boost has been unsuccessful, as PowerDNS's ./configure specifically looks for library version in the .so file name, and this has changed sometime after the 1.38.0 revision. </p> <p> Where is the linker getting the "-t aditional-format 64A9' from, and why does this happen only on sparc? </p> tripivceta@… https://svn.boost.org/trac10/ticket/6746 https://svn.boost.org/trac10/ticket/6746 Report #6736: boost::ptr_unordered_map and some other ptr container's classes aren't listen in library reference Tue, 27 Mar 2012 11:44:25 GMT Tue, 27 Mar 2012 11:44:44 GMT <p> There is no ptr_unordered_map in ptr container's reference <a href="http://www.boost.org/doc/libs/1_49_0/libs/ptr_container/doc/reference.html">http://www.boost.org/doc/libs/1_49_0/libs/ptr_container/doc/reference.html</a> </p> <p> It's slightly confusing for the beginner who searching for it: looks like there is no such class at all. </p> anonymous https://svn.boost.org/trac10/ticket/6736 https://svn.boost.org/trac10/ticket/6736 Report #6731: decltype-based boost::result_of does not conform to std::result_of Sat, 24 Mar 2012 09:04:49 GMT Tue, 25 Sep 2012 14:03:39 GMT <p> <code>std::result_of</code> is equivalent to </p> <pre class="wiki">decltype(INVOKE(declval&lt;Fn&gt;(), declval&lt;ArgTypes&gt;()…)) </pre><p> and so it can deal with pointers to member data. Current implementation of decltype-based <code>boost::result_of</code> cannot deal with pointers to member data. </p> Michel Morin https://svn.boost.org/trac10/ticket/6731 https://svn.boost.org/trac10/ticket/6731 Report #6730: error reading archive created by old version when it contains pointer Sat, 24 Mar 2012 06:11:08 GMT Mon, 28 May 2012 17:22:50 GMT <p> Problem is similar to ticket 4660. Fwiw we just discovered a gap in our unit tests. :( </p> <p> Code below contains our local fix. Note that we only have used lib ver 3 and lib ver 5 and that this is the reason the fix only targets those versions. </p> <p> One last word, I checked the latest code ( 1.49 ) and it seems to contain the same flaw as 1.45. </p> <pre class="wiki"> void load_override(class_id_type &amp; t, int version){ library_version_type lvt = this-&gt;get_library_version(); if(boost::archive::library_version_type(7) &lt; lvt){ this-&gt;detail_common_iarchive::load_override(t, version); } else if(boost::archive::library_version_type(6) &lt; lvt){ int_least16_t x=0; * this-&gt;This() &gt;&gt; x; t = boost::archive::class_id_type(x); } else if(boost::archive::library_version_type(3) == lvt || boost::archive::library_version_type(5) == lvt ){ #pragma message( "CTMS fix for serialization bug ( lack of backwards compatability ) introduced by boost 1.45." ) int_least16_t x=0; * this-&gt;This() &gt;&gt; x; t = boost::archive::class_id_type(x); } else{ int x=0; * this-&gt;This() &gt;&gt; x; t = boost::archive::class_id_type(x); } } </pre> d s m a l l @… https://svn.boost.org/trac10/ticket/6730 https://svn.boost.org/trac10/ticket/6730 Report #6722: Incorrect behaviour of boost::iostreams::filtering_stream with boost::iterator_range Wed, 21 Mar 2012 14:12:51 GMT Mon, 08 Oct 2012 03:13:57 GMT <p> Please consider the following code: </p> <pre class="wiki">#include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/range/iterator_range.hpp&gt; #include &lt;sstream&gt; template &lt;class Stream&gt; std::string read_to_string(Stream&amp; stream) { std::ostringstream destStream; destStream &lt;&lt; stream.rdbuf(); return destStream.str(); } void main() { std::istringstream sourceStream("123"); std::istream_iterator&lt;char&gt; begin(sourceStream); std::istream_iterator&lt;char&gt; end; auto range = boost::make_iterator_range(begin, end); boost::iostreams::filtering_stream&lt;boost::iostreams::input&gt; sourceFilteringStream; sourceFilteringStream.push(range, 1); std::string output = read_to_string(sourceFilteringStream); BOOST_ASSERT("123" == output); } </pre><p> After each char from "sourceStream" it produces additional garbage char in "output" and triggers the assert (at least in VS10). I've traced it to this code in boost/iostreams/detail/adapter/range_adapter.hpp: </p> <pre class="wiki">template&lt;&gt; struct range_adapter_impl&lt;std::forward_iterator_tag&gt; { template&lt;typename Iter, typename Ch&gt; static std::streamsize read (Iter&amp; cur, Iter&amp; last, Ch* s,std::streamsize n) { std::streamsize rem = n; // No. of chars remaining. while (cur != last &amp;&amp; rem-- &gt; 0) *s++ = *cur++; return n - rem != 0 ? n - rem : -1; } ... </pre><p> "rem" becomes -1 after the end of the while-loop and the return value after reading 1 char is 2. </p> vadik.stepanov@… https://svn.boost.org/trac10/ticket/6722 https://svn.boost.org/trac10/ticket/6722 Report #6719: Interprocess shared_memory 1.48 files deleted by prior versions... Tue, 20 Mar 2012 19:55:34 GMT Tue, 20 Mar 2012 19:55:34 GMT <p> This is reproducible on OSX. </p> <p> In boost 1.48.0, shared_memory creates a folder in /tmp/ called boost_interprocess/ all shared memory files are put in that folder. </p> <p> In boost 1.47.0 and prior, shared_memory creates a folder in /tmp/ called boost_interprocess/ and in there, it would create another sub-directory named by the boottime. It would also delete any other folders/files located in /tmp/boost_interprocess </p> <p> The problem is, now that I am using boost 1.48, my application uses /tmp/boost_interprocess. If any program using boost 1.47.0 shared memory, it will delete every files and folder in /tmp/boost_interprocess (which is what boost 1.48 uses.) </p> <p> I surely have the access to all my programs, and can make sure we are all using boost 1.48+, but I can't guarantee that the user doesn't have a program using boost 1.47 or prior... </p> <p> To fix this, there's one easy way, change the folder name boost_interprocess to something else... boost_interprocess2 for example. Hence, boost 1.47 will only delete what's in /tmp/boost_interprocess and leave all the other programs using /tmp/boost_interprocess2 in peace... </p> <p> or you could give the option to the users to change that folder name. </p> monkey.d@… https://svn.boost.org/trac10/ticket/6719 https://svn.boost.org/trac10/ticket/6719 Report #6710: Boost Containers Using interprocess Basic_strings Need external temporaries Tue, 20 Mar 2012 00:22:42 GMT Wed, 21 Mar 2012 20:53:33 GMT <p> When using an interprocess basic string such as: typedef boost::interprocess::allocator&lt; </p> <blockquote> <p> char, boost::interprocess::managed_mapped_file::segment_manager </p> <blockquote class="citation"> <blockquote> <p> char_allocator_t; </p> </blockquote> </blockquote> </blockquote> <p> typedef boost::interprocess::basic_string&lt; </p> <blockquote> <p> char, std::char_traits&lt;char&gt;, char_allocator_t </p> <blockquote class="citation"> <blockquote> <p> key_type; </p> </blockquote> </blockquote> </blockquote> <p> map, flat_map (and unordered_map) all require that one have an externally created temporary of that type (key_type) created that can temporarily hold the results of a std::string or char*. This requires code of the form: </p> <blockquote> <p> <em> A temporary string that allocates from the mapped file struct shm_clean { </em> cleanup shared memory on stack-unwind </p> <blockquote> <p> shm_clean() { </p> <blockquote> <p> boost::interprocess::shared_memory_object::remove("<a class="missing wiki">StupidSharedMemory</a>"); </p> </blockquote> <p> } ~shm_clean() { </p> <blockquote> <p> boost::interprocess::shared_memory_object::remove("<a class="missing wiki">StupidSharedMemory</a>"); </p> </blockquote> <p> } </p> </blockquote> <p> } cleaner; boost::interprocess::managed_shared_memory </p> </blockquote> <p> stupid(boost::interprocess::create_only ,"<a class="missing wiki">StupidSharedMemory</a>" ,500); </p> <blockquote> <p> key_type key_val(stupid.get_segment_manager()); </p> </blockquote> <p> mymap_in_shared_memory[key_val = mystring.c_str()] = junk; </p> <p> This is barely ok when we are working with mutable memory regions, but when I am working in a read-only memory map, it is annoying. </p> <p> Please see this thread: </p> <p> <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/228874"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/228874</a> </p> <p> Bug posted at request of Ion Gaztañaga </p> <p> Joel </p> jdy@… https://svn.boost.org/trac10/ticket/6710 https://svn.boost.org/trac10/ticket/6710 Report #6706: Mersenne Twister discard() speed improvement Mon, 19 Mar 2012 11:12:15 GMT Sat, 05 Apr 2014 18:34:27 GMT <p> There is an algorithm for fast jump ahead for the MT: </p> <p> <a class="ext-link" href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/JUMP/index.html"><span class="icon">​</span>http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/JUMP/index.html</a> </p> <p> Some more references (thanks Topher!) </p> <p> Hiroshi Haramoto, Makoto Matsumoto, and Pierre L'Ecuyer. 2008. A Fast Jump Ahead Algorithm for Linear Recurrences in a Polynomial Space. In /Proceedings of the 5th international conference on Sequences and Their Applications/ (SETA '08), Solomon W. Golomb, Matthew G. Parker, Alexander Pott, and Arne Winterhof (Eds.). Springer-Verlag, Berlin, Heidelberg, 290-298. DOI=10.1007/978-3-540-85912-3_26 <a class="ext-link" href="http://dx.doi.org/10.1007/978-3-540-85912-3_26"><span class="icon">​</span>http://dx.doi.org/10.1007/978-3-540-85912-3_26</a> </p> <p> An accessible online copy is at: </p> <p> <a class="ext-link" href="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/jump-seta-lfsr.pdf"><span class="icon">​</span>http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/jump-seta-lfsr.pdf</a> </p> <p> If I understand it correctly, whether or not it is "constant time" is a bit ambiguous. Applying it to an arbitrary MT generator requires O(k<sup>1.6</sup>) where k is the size of the state, and k must be moderately large before this asymptote is approached. For a particular generator the k is a constant so it is "constant time" -- i.e., constant in the size of the jumps. So, for example, k for MT19937 is 19937 and so is k<sup>1.6</sup> (about 7.5 million). The timing tests in the paper seem to indicate reasonable performance for common applications (e.g., where generating the jumps is done infrequently relative to the number of calls to the generators themselves). </p> info@… https://svn.boost.org/trac10/ticket/6706 https://svn.boost.org/trac10/ticket/6706 Report #6704: Boost version of mpi_in_place Mon, 19 Mar 2012 10:33:21 GMT Thu, 29 Aug 2013 14:40:15 GMT <p> In some mpi collective operations, like <a class="ext-link" href="http://www.open-mpi.org/doc/v1.4/man3/MPI_Allreduce.3.php"><span class="icon">​</span>all_reduce</a>, that have an input and output bufer of the same size, it is possible to specify the same buffer for both input and output by using the MPI_IN_PLACE constant as a sendbuffer (see above link). </p> <p> That feature does not seems to be supported through boost::mpi. </p> <p> This can be illustrated through the attached program: </p> <pre class="wiki">alainm@vai:~/code/boost/mpibug$ mpiexec -np 2 ./a.out This is P0 good This is P1 good alainm@vai:~/code/boost/mpibug$ </pre><pre class="wiki">alainm@vai:~/code/boost/mpibug$ mpiexec -np 2 ./a.out bug terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::mpi::exception&gt; &gt;' what(): MPI_Allreduce: MPI_ERR_BUFFER: invalid buffer pointer [vai:03464] *** Process received signal *** terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::mpi::exception&gt; &gt;' what(): MPI_Allreduce: MPI_ERR_BUFFER: invalid buffer pointer [vai:03465] *** Process received signal *** [vai:03465] Signal: Aborted (6) [vai:03465] Signal code: (-6) [vai:03464] Signal: Aborted (6) [vai:03464] Signal code: (-6) [vai:03465] [ 0] [0x4002040c] [vai:03465] *** End of error message *** [vai:03464] [ 0] [0x4002040c] [vai:03464] *** End of error message *** -------------------------------------------------------------------------- mpiexec noticed that process rank 1 with PID 3465 on node vai exited on signal 6 (Aborted). -------------------------------------------------------------------------- 2 total processes killed (some possibly by mpiexec during cleanup) alainm@vai:~/code/boost/mpibug$ </pre> Alain Miniussi <alain.miniussi@…> https://svn.boost.org/trac10/ticket/6704 https://svn.boost.org/trac10/ticket/6704 Report #6701: integer overflows in ordered_malloc() Sun, 18 Mar 2012 02:08:33 GMT Thu, 20 Aug 2015 09:17:11 GMT <p> Consider pool::ordered_malloc(size_type n). </p> <blockquote> <p> const size_type total_req_size = n * requested_size; </p> </blockquote> <p> Given a large n, total_req_size will wrap around to a small integer. The allocated memory would be smaller than expected, leading to a potential buffer overflow. </p> Xi Wang <xi.wang@…> https://svn.boost.org/trac10/ticket/6701 https://svn.boost.org/trac10/ticket/6701 Report #6688: better support for exporting symbols from DLL Thu, 15 Mar 2012 05:53:03 GMT Mon, 19 Mar 2012 03:52:41 GMT <p> Currently asio/detail/config.hpp only supports exporting symbols from compilers that supports <span class="underline">declspec (i.e. msvc). In order to support many more compilers, including GCC (and gcc compatibles) and sun studio etc. The config header could be simplified to use boost config's BOOST_SYMBOL_EXPORT/IMPORT macro. </span></p> <p> Patch against trunk is attached. </p> arvid@… https://svn.boost.org/trac10/ticket/6688 https://svn.boost.org/trac10/ticket/6688 Report #6686: Boost does not build with Xcode 4.3 Wed, 14 Mar 2012 18:36:29 GMT Thu, 03 Jan 2013 18:04:26 GMT <p> With Xcode 4.3, Apple changed it's layout of the SDKs. The folder /Developer does not exist anymore. Instead everything is contained withing the Xcode.app: <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer is the new starting point. However, the darwin.jam file also globs at the wrong position. The new SDKs for Xcode 4.3.1 are at <a class="missing wiki">/Applications/Xcode</a>.app/Contents/Developer/Platforms/*/Developer/SDKs/*.sdk </p> arne.schmitz@… https://svn.boost.org/trac10/ticket/6686 https://svn.boost.org/trac10/ticket/6686 Report #6684: clang-darwin: handle LTO in archives Tue, 13 Mar 2012 15:09:48 GMT Wed, 28 Mar 2012 07:10:55 GMT Bruno Santos <bsantos@…> https://svn.boost.org/trac10/ticket/6684 https://svn.boost.org/trac10/ticket/6684 Report #6683: find family of functions needs const Range1T& Input overloads Tue, 13 Mar 2012 14:16:05 GMT Wed, 14 Mar 2012 08:54:17 GMT <p> It's cumbersome to have to create named temporaries when searching using these functions. I presume the reason for why Input isn't const is due to the fact that iterator_range&lt;&gt; that's returned can modify Input. In the spirit of std &amp; the rest of boost I propose an overload which returns const_iterator_range&lt;&gt;, which would provide the same functionality as iterator_range&lt;&gt; save for being able to modify the source. </p> sairony@… https://svn.boost.org/trac10/ticket/6683 https://svn.boost.org/trac10/ticket/6683 Report #6679: [asio] request : repeat timer Mon, 12 Mar 2012 08:01:08 GMT Mon, 12 Mar 2012 08:01:08 GMT <p> This ticket is feature request. I want repeat feature in deadline_timer/waitable_timer. Many libraries timer have repeat features. follow code is example. </p> <p> before: </p> <pre class="wiki">void on_timer(error_code error, steady_timer&amp; timer) { if (error) return; timer.expires_from_now(seconds(1)); timer.async_wait(boost::bind(&amp;on_timer, _1, boost::ref(timer))); } int main() { ... timer.expires_from_now(seconds(1)); timer.async_wait(boost::bind(&amp;on_timer, _1, boost::ref(timer))); } </pre><p> after: </p> <pre class="wiki">void on_timer(error_code error, steady_timer&amp; timer) { if (error) return; // no boiler plate } int main() { ... timer.expires_from_now(seconds(1), steady_timer::repeat); timer.async_wait(boost::bind(&amp;on_timer, _1, boost::ref(timer))); } </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/6679 https://svn.boost.org/trac10/ticket/6679 Report #6668: support overloads of read_xxx from boost::filesystem::path Fri, 09 Mar 2012 09:32:39 GMT Fri, 01 Mar 2013 09:19:14 GMT <p> It would be great to have overloads of </p> <p> read_info read_json read_xml read_ini </p> <p> from boost::filesystem::path. </p> vanyacpp@… https://svn.boost.org/trac10/ticket/6668 https://svn.boost.org/trac10/ticket/6668 Report #6664: std::setw() is ignored by operator<< for ptime, time_duration, and date Thu, 08 Mar 2012 21:15:41 GMT Thu, 08 Mar 2012 21:15:41 GMT <p> The following complete program demonstrates the issue. when using operator&lt;&lt; to display a ptime/time_duration/date, then the setw() manipulator is ignored. </p> <p> My development environment is boost 1.48, building a 32-bit app on Win7 (x64) under VS2008. </p> <p> I consider this a cosmetic issue as there is a very simple work-aroud - simply manually convert the ptime/date/duration object to a string before inserting it into the ostream object. </p> <pre class="wiki">#include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/date_time/gregorian/gregorian.hpp&gt; #include &lt;iomanip&gt; #include &lt;iostream&gt; #include &lt;string&gt; int main() { boost::posix_time::ptime const now = boost::posix_time::second_clock::local_time(); std::cout &lt;&lt; "\ncorrectly formatted: " &lt;&lt; std::setw(40) &lt;&lt; boost::posix_time::to_simple_string(now) &lt;&lt; "\nptime: " &lt;&lt; std::setw(40) &lt;&lt; now &lt;&lt; "\ntime_duration: " &lt;&lt; std::setw(40) &lt;&lt; now.date() &lt;&lt; "\ndate: " &lt;&lt; std::setw(40) &lt;&lt; now.time_of_day() &lt;&lt; std::endl; } </pre> Mark van Dijk <mark.van.dijk@…> https://svn.boost.org/trac10/ticket/6664 https://svn.boost.org/trac10/ticket/6664 Report #6662: Add osx framework support to clang Thu, 08 Mar 2012 16:23:58 GMT Thu, 08 Mar 2012 16:23:58 GMT bsantos@… https://svn.boost.org/trac10/ticket/6662 https://svn.boost.org/trac10/ticket/6662 Report #6661: Different behavior on WIN and Linux Thu, 08 Mar 2012 07:58:05 GMT Thu, 08 Mar 2012 07:58:05 GMT <p> Hi, I've found a different behavior at use of some functions with UDP protocol. </p> <p> Look at this code </p> <pre class="wiki"> io_service ios; udp::endpoint to(address::from_string("127.0.0.1"), port); udp::socket sender(ios, udp::v4()); udp::socket receiver(ios, udp::endpoint(udp::v4(), port)); const char buf[] = "Some test data..."; const size_t buf_len = sizeof(buf); char read_buf[buf_len]; char half_read_buf[buf_len / 2]; sender.send_to(buffer(buf, buf_len), to); try { udp::endpoint sender_point; receiver.receive_from(buffer(half_read_buf, sizeof(half_read_buf)), sender_point); } catch(exception&amp; ex) { string str = ex.what(); cerr &lt;&lt; "Exception: "&lt;&lt; ex.what() &lt;&lt; endl; } cout &lt;&lt; string(half_read_buf, sizeof(half_read_buf)) &lt;&lt; endl; sender.send_to(buffer(buf, buf_len), to); sender.send_to(buffer(buf, buf_len), to); cout &lt;&lt; "Available: " &lt;&lt; receiver.available() &lt;&lt; endl; receiver.receive(buffer(read_buf, sizeof(read_buf))); cout &lt;&lt; "Available: " &lt;&lt; receiver.available() &lt;&lt; endl; receiver.receive(buffer(read_buf, sizeof(read_buf))); cout &lt;&lt; "Available: " &lt;&lt; receiver.available() &lt;&lt; endl; </pre><p> Here we are reading half an datagramm and use socket::available() to look how much data into the socket. Execute this code on WIN32 and you get this output </p> <pre class="wiki">Exception: receive_from: The message was too large for the specified buffer and (for unreliable protocols only) any trailing portion of the message that did not fit into the buffer has been discarded. Some test Available: 36 Available: 18 Available: 0 </pre><p> Execute it on Linux and you get </p> <pre class="wiki">Some test Available: 18 Available: 18 Available: 0 </pre><p> It looks strange.<br /> Look into source </p> <pre class="wiki">boost/asio/detail/impl/socket_ops.ipp ------------------------------------- int recvfrom(socket_type s, buf* bufs, size_t count, int flags, socket_addr_type* addr, std::size_t* addrlen, boost::system::error_code&amp; ec) { ... #if defined(BOOST_WINDOWS) || defined(__CYGWIN__) int result = error_wrapper(::WSARecvFrom(s, bufs, recv_buf_count, &amp;bytes_transferred, &amp;recv_flags, addr, &amp;tmp_addrlen, 0, 0), ec); *addrlen = (std::size_t)tmp_addrlen; ... if (result != 0) return socket_error_retval; ec = boost::system::error_code(); return bytes_transferred; #else // defined(BOOST_WINDOWS) || defined(__CYGWIN__) msghdr msg = msghdr(); init_msghdr_msg_name(msg.msg_name, addr); msg.msg_namelen = *addrlen; msg.msg_iov = bufs; msg.msg_iovlen = count; int result = error_wrapper(::recvmsg(s, &amp;msg, flags), ec); *addrlen = msg.msg_namelen; if (result &gt;= 0) ec = boost::system::error_code(); return result; } </pre><p> For WIN32 uses functions family WSARecv(<a class="ext-link" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms741686(v=vs.85).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/windows/desktop/ms741686(v=vs.85).aspx</a>) they return status of error. And one of which is </p> <pre class="wiki">WSAEMSGSIZE The message was too large for the specified buffer and (for unreliable protocols only) any trailing portion of the message that did not fit into the buffer has been discarded. </pre><p> For Linux uses functions family recv (<a class="ext-link" href="http://linux.die.net/man/2/recv"><span class="icon">​</span>http://linux.die.net/man/2/recv</a>). They return the length of the message on successful completion or -1 and set status in errno if was error. But for them no the error if buffer length less that a received datagram.<br /> </p> <p> But if we uses function recvfrom, it sets this error into struct msghdr in the msg_flags </p> <pre class="wiki">MSG_TRUNC indicates that the trailing portion of a datagram was discarded because the datagram was larger than the buffer supplied. </pre><p> And also about function basic_datagram_socket::available. For WIN32 it returns length of all datagrams in the socket BUT for linux in returns length a one datagramm. </p> cupper.jj@… https://svn.boost.org/trac10/ticket/6661 https://svn.boost.org/trac10/ticket/6661 Report #6659: Filesystem compilation broken on Solaris 9 and 10 Wed, 07 Mar 2012 10:15:58 GMT Mon, 06 Apr 2015 12:22:25 GMT <p> Output message: </p> <p> libs/filesystem/v3/src/operations.cpp: In function âvoid boost::filesystem3::detail::permissions(const boost::filesystem3::path&amp;, boost::filesystem3::perms, boost::system::error_code*)â: libs/filesystem/v3/src/operations.cpp:1391:11: error: â::fchmodatâ has not been declared </p> <p> This is regression, 1.48 compiles well. I reproduced on both sparc and x86 platforms. </p> Vasily Sukhanov <basil@…> https://svn.boost.org/trac10/ticket/6659 https://svn.boost.org/trac10/ticket/6659 Report #6644: Windows: auto_link.hpp incorrectly errors with "Mixing a dll boost library with a static runtime is a really bad idea..." Thu, 01 Mar 2012 23:42:09 GMT Tue, 07 Jul 2015 10:54:42 GMT <p> I'm building a DLL which uses *static* runtime linking. Static runtime linking uses the /MT (and /MTd) switch. When Boost is compiled with under the DLL, the following error is reported: </p> <p> C:\Users\Public\boost-trunk\boost/config/auto_link.hpp(354) : fatal error C1189: #error : "Mixing a dll boost library with a static runtime is a really bad idea..." </p> <p> According to "/MD, /MT, /LD (Use Run-Time Library)", <a class="ext-link" href="http://msdn.microsoft.com/en-US/library/2kzt1wy3(v=vs.90).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-US/library/2kzt1wy3(v=vs.90).aspx</a>: </p> <p> /MT - Causes your application to use the multithread, static version of the run-time library. Defines _MT and causes the compiler to place the library name LIBCMT.lib into the .obj file so that the linker will use LIBCMT.lib to resolve external symbols. </p> <p> For completeness, here is the switch for dynamic runtime linking: </p> <p> /MD - Causes your application to use the multithread- and DLL-specific version of the run-time library. Defines _MT and _DLL and causes the compiler to place the library name MSVCRT.lib into the .obj file. ... Applications compiled with this option are statically linked to MSVCRT.lib. This library provides a layer of code that allows the linker to resolve external references. The actual working code is contained in MSVCR90.DLL, which must be available at run time to applications linked with MSVCRT.lib... </p> <p> To summarize, "_MT" is defined for both static and dynamic linking. "_DLL" is defined for just dynamic linking. And because I am building a DLL, "_WINDLL" is also defined. </p> <p> Perhaps the following would be better logic for auto_link.hpp (my apologies for not trying to figure out all the Boost defines): </p> <p> #if defined(BOOST_OS_WINDOWS) &amp;&amp; defined(_MT) &amp;&amp; !defined(_DLL) # define BOOST_OS_WINDOWS_STATIC 1 #elif defined(BOOST_OS_WINDOWS) &amp;&amp; defined(_MT) &amp;&amp; defined(_DLL) # define BOOST_OS_WINDOWS_DYNAMIC 1 #elif defined(BOOST_OS_WINDOWS) # pragma warning("Neither static nor dynamic runtime linking has been picked up") #endif </p> noloader@… https://svn.boost.org/trac10/ticket/6644 https://svn.boost.org/trac10/ticket/6644 Report #6643: token_functions.hpp warning: unused parameters Thu, 01 Mar 2012 23:25:25 GMT Thu, 01 Mar 2012 23:25:25 GMT <p> /boost/include/boost/token_functions.hpp:312:33: warning: unused parameter 'b' [-Wunused-parameter,3] </p> <blockquote> <p> static void assign(Iterator b, Iterator e, Token &amp; t) { } </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /boost/include/boost/token_functions.hpp:312:45: warning: unused parameter 'e' [-Wunused-parameter,3] </p> <blockquote> <p> static void assign(Iterator b, Iterator e, Token &amp; t) { } </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> /boost/include/boost/token_functions.hpp:312:56: warning: unused parameter 't' [-Wunused-parameter,3] </p> <blockquote> <p> static void assign(Iterator b, Iterator e, Token &amp; t) { } </p> </blockquote> nealgmeyer@… https://svn.boost.org/trac10/ticket/6643 https://svn.boost.org/trac10/ticket/6643 Report #6638: convert_aux fails while intializing global variable Wed, 29 Feb 2012 22:39:27 GMT Wed, 26 Apr 2017 16:12:09 GMT <p> <em>path_traits.cpp</em><br /> </p> <p> <strong>convert_aux</strong> fails in global scope:<br /> </p> <p> Trying to initialize global path variable by concatenating '/' a wide string path w/ narrow string path fails! <br /> </p> <p> "Unhandled exception at 0x0f8bc688 (msvcp100d.dll) in paths.exe: 0xC0000005: Access violation reading location 0x00000000." <br /> </p> <p> If initializing inside main() scope everything works fine. I think this worked as expected in previous version(s) 1.48.. no luck with 1.49 though :( <br /> </p> <p> Additional info: WIN 32 and 64 bit, MSVS2010<br /> </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/filesystem.hpp&gt; using namespace boost::filesystem; path p(L"C:\\TEMP\\"); path q(p / L"wide"); // Works! path r(p / "narrow"); // Breaks :( int _tmain(int argc, _TCHAR* argv[]) { path p(L"C:\\TEMP\\"); path q(p / L"wide"); // Works! path r(p / "narrow"); // Works here! std::cout &lt;&lt; r.string() &lt;&lt; std::endl; return 0; } </pre><p> <br /> </p> <p> P.S. If more info is required I will reply here not by email. </p> john doe <johndoe> https://svn.boost.org/trac10/ticket/6638 https://svn.boost.org/trac10/ticket/6638 Report #6629: NVCC chokes on boost/mpl/map Wed, 29 Feb 2012 01:44:02 GMT Mon, 28 May 2012 17:28:47 GMT <p> We're now receiving a bug report from our customers that they are hitting a problem compiling a code including boost with NVCC. </p> <p> The bug report from our customer: </p> <hr /> <p> Unfortunately I’m now hitting a real problem with NVCC elsewhere in boost too. Once again, merely including the header is enough to trip up NVCC (but only on Windows): </p> <p> boost_mpl_map.cu: #include &lt;boost/mpl/map.hpp&gt; int main( int argc, char <strong> argv ) { } </strong></p> <p> C:\&gt;nvcc boost_mpl_map.cu -o boost_mpl_map.exe -Iboost/include/boost-1_44 boost_mpl_map.cu tmpxft_00000764_00000000-3_boost_mpl_map.cudafe1.gpu tmpxft_00000764_00000000-8_boost_mpl_map.cudafe2.gpu boost_mpl_map.cu tmpxft_00000764_00000000-3_boost_mpl_map.cudafe1.cpp tmpxft_00000764_00000000-14_boost_mpl_map.ii stuff/boost/include/boost-1_44\boost/mpl/aux_/order_impl.hpp(35) : error C2064: term does not evaluate to a function taking 2 arguments stuff/boost/include/boost-1_44\boost/mpl/aux_/order_impl.hpp(57) : see reference to class template instantiation 'boost::mpl::x_order_impl&lt;Seq,Key&gt;' being compiled </p> <p> As with the previous issues, compiling as a .cpp (still using NVCC) is fine. This affects both CUDA 4.0 and CUDA 4.1, and I’m using VS2010 for CL. A workaround would be greatly appreciated if you can find one as I haven’t managed to come up with one yet! </p> <hr /> <p> This issue has been investigated by our developers and finally it was root caused as a boost issue. He downloaded boost 1.44.0, and found that boost is doing something special when <span class="underline">CUDACC</span> is defined. </p> <p> boost_1_44_0$ grep -IR CUDACC * boost/config/select_compiler_config.hpp:#elif defined <span class="underline">CUDACC</span> </span></p> <table class="wiki"> <tr>boost/concept/detail/has_constraints.hpp:#if BOOST_WORKAROUND(<span class="underline">SUNPRO_CC, &lt;= 0x580) <td> defined(<span class="underline">CUDACC</span>) </td></tr></table> <p> boost/type_traits.hpp:#if !defined(<span class="underline">BORLANDC</span>) &amp;&amp; !defined(<span class="underline">CUDACC</span>) </p> <p> Unfortunately, this special workaround in boost does not work properly. </p> <p> If he just compile the example code supplied in the description with the Microsoft compiler, after renaming it to .cpp, with <span class="underline">CUDACC</span> defined, the compilation fails. </p> <p> U:\&gt; type main.cpp #include &lt;boost/mpl/map.hpp&gt; int main(int argc, char *argv[]) { return 0; } </p> <p> U:\&gt; cl -D<span class="underline">CUDACC</span> -Iboost_1_44_0 main.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. </p> <p> main.cpp boost_1_44_0\boost/mpl/aux_/order_impl.hpp(50) : error C2064: term does not evaluate to a function taking 2 arguments boost_1_44_0\boost/mpl/aux_/order_impl.hpp(57) : see reference to class template instantiation 'boost::mpl::x_order_impl&lt;Seq,Key&gt;' being compiled </p> <p> So, this might be a bug in boost. If the boost implementers put this special treatment for nvcc due to a bug in nvcc, we are willing to work on the real bug, but this one is a bug in the special treatment code. </p> <p> Best regards, Andrew Shao </p> gshao@… https://svn.boost.org/trac10/ticket/6629 https://svn.boost.org/trac10/ticket/6629 Report #6626: shallow_array_adaptor bug in swap function Tue, 28 Feb 2012 16:49:59 GMT Tue, 28 Feb 2012 16:49:59 GMT <p> <em>boost::numeric::ublas::vector&lt; T,shallow_array_adaptor&lt;T&gt; &gt;</em> fails when it is assigned with an expression. For example: </p> <pre class="wiki">#define BOOST_UBLAS_SHALLOW_ARRAY_ADAPTOR #include &lt;boost/numeric/ublas/vector.hpp&gt; struct point { double x; double y; double z; }; void test() { using namespace boost::numeric::ublas; point p = { 1, 2, 3 } shallow_array_adaptor&lt;double&gt; a(3, &amp;p.x); // Ok, a holds p address vector&lt;double, shallow_array_adaptor&lt;double&gt; &gt; v(a); // Ok, v holds p address v += v; // Ok, now p = { 2, 4, 6 } v /= 2; // Ok, now p = { 1, 2, 3 } v = v*2; // &lt;- Oh no, p = { 1, 2, 3 } !!! } </pre><p> <em>vector</em> creates a temporary object and it calls to <em>shallow_array_adaptor::swap</em>. This function doesn't check if it is the owner of pointers to swap. When both are data owners can do that (as unbounded_array does). But if they are not then they should swap as bounded_array does. </p> Guillermo Ruiz Troyano <ruiztroyano@…> https://svn.boost.org/trac10/ticket/6626 https://svn.boost.org/trac10/ticket/6626 Report #6622: boost::mpl::transform fails on boost::mpl::set in non-inserter form Sun, 26 Feb 2012 22:44:53 GMT Tue, 23 Apr 2013 13:51:09 GMT <p> The following code does not compile with boost-1.48.0: </p> <pre class="wiki">typedef boost::mpl::transform&lt; boost::mpl::set&lt;double,float&gt;, boost::add_pointer&lt;boost::mpl::_1&gt; &gt;::type pointer_set; </pre><p> It fails on a compile-time assert deeply into boost.mpl with "REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST". This makes sense, as boost::mpl::set is not a front extensible sequence. One can get this to work by using a custom inserter that utilises boost::mpl::insert instead of boost::mpl::push_front, or using a different sequence class in the output. However, I think boost::mpl::transform should either be able to detect a set properly, or the documentation should state that the non-inserter version of boost::mpl::transform requires a front extensible sequence. </p> hack@… https://svn.boost.org/trac10/ticket/6622 https://svn.boost.org/trac10/ticket/6622 Report #6618: boost::container::flat_map not transparently accepting move-only values Sat, 25 Feb 2012 23:28:54 GMT Sun, 06 Dec 2015 08:48:52 GMT <p> I would have expected to be able to store move-only values in a boost::container::flat_map, and to have no code changes except in the header files, since it is supposed to be a drop-in replacement for std::map. However, I cannot create a key-value pair of a type it will accept, because of const errors. The attached program shows the problem. </p> <p> Perhaps allowing a non-const std::pair reference to be passed to insert would help, or even a new make_pair helper function that returned a BOOST_RV_REF(value_type)? </p> <p> The same thing happens with boost::container::map. </p> Charles David Tallman <DaveTallman@…> https://svn.boost.org/trac10/ticket/6618 https://svn.boost.org/trac10/ticket/6618 Report #6617: filesystem::remove_all can't delete directory that contains directory junction Sat, 25 Feb 2012 21:08:30 GMT Sat, 25 Feb 2012 21:08:30 GMT <p> filesystem::remove_all tries to delete junction by <a class="missing wiki">DeleteFile</a> but it should be deleted by <a class="missing wiki">RemoveDirectory</a>. <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa365488%28v=vs.85%29.aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/windows/desktop/aa365488%28v=vs.85%29.aspx</a> </p> <p> Diff with fix is in attach </p> Nikolay Shelukhin <nikola-sh@…> https://svn.boost.org/trac10/ticket/6617 https://svn.boost.org/trac10/ticket/6617 Report #6614: Start adapting Quaternions and Octonions for C++11 Sat, 25 Feb 2012 01:28:16 GMT Sat, 25 Feb 2012 01:28:16 GMT <p> When I read up on C++11 features like <code>constexpr</code> and <code>noexcept</code>, I wonder what classes in Boost can be adapted for them. The quaternion and octonion class templates represent value-types that can easily be made <code>constexpr</code> compliant. Further, the specializations for the built-in floating-point types can be made <code>noexcept</code> for their operations. I have a patch that starts work on both fronts. </p> <p> Since the library is implemented with macro madness, I can't change too much without making the file unrecognizable to <code>diff</code> utilities. This means that some stuff in the specializations that could be <code>noexcept</code> can't be since they share textual implementation with the general templates' versions of the code. </p> <p> Some aggresive marking of constructors as <code>explicit</code> has been toned down, still conforming to the docs. Speaking of which, they have been changed to match the new code (plus two doc errors). </p> <p> For future directions, the big hurdle is the idiom that binary-operator @@ is implemented in terms of @@=. That's generally OK in C++03, but now it disqualifies the former from being declared <code>constexpr</code> since the latter is mutating. Fixing this would entail flipping the relationship between the functions around. </p> Daryle Walker https://svn.boost.org/trac10/ticket/6614 https://svn.boost.org/trac10/ticket/6614 Report #6611: boost::pool_allocator construct() with single argument required by GCC 4.6 stl Fri, 24 Feb 2012 19:14:41 GMT Wed, 06 Nov 2013 15:57:50 GMT <p> I tried to compile a MSVC code using custom std::vector/pool_allocator under win32/codeblocks (which uses GCC 4.6.0), and I get an error because on vector::resize() and underlying call _ _ uninitialized_default_a(), the stl implemented try to call _ _ alloc.construct() with a single placement address as argument. </p> <p> The thing is that boost:pool_allocator provides only one version of construct() which takes 2 arguments. Why isn't a "default" construct( const pointer&amp; ) implemented in pool_allocator ? Or why this version of the stl implements that ? Or what am I doing wrong ? </p> <p> Thanks </p> vivien.millet@… https://svn.boost.org/trac10/ticket/6611 https://svn.boost.org/trac10/ticket/6611 Report #6610: customizing boost::pool/boost::object_pool via template parameter for ordered/non-ordered usage Fri, 24 Feb 2012 17:38:44 GMT Mon, 16 Jul 2012 20:01:58 GMT <p> 1. A documentation conflict between declaration and definition of boost::pool::purge_memory(). The definition documentation is </p> <pre class="wiki">//! pool must be ordered </pre><p> , but the declaration documentation does not provide this information. </p> <p> 2. Version of non-ordered boost::pool::release_memory() </p> <p> Thereby there is the question - are there any differences in implementation or perfomance of ordered/non-ordered versions of this function? </p> <p> 3. Providing ordered/non-ordered release_memory() and purge_memory() for boost::object_pool </p> <p> 4. Efficient(non-ordered) construct/destroy of single objects in boost::object_pool(i.e. when boost::object_pool will be used for allocating single objects only, not arrays of objects) </p> <p> 5. Introduce some template parameter in the boost::object_pool(and in the boost::pool) in order to customize the pool for ordered/non-ordered or both usage. </p> rad_d@… https://svn.boost.org/trac10/ticket/6610 https://svn.boost.org/trac10/ticket/6610 Report #6593: patch: bjam SHELL builtin: fix for strip-eol and added join-lines Wed, 22 Feb 2012 18:51:06 GMT Wed, 22 Feb 2012 18:51:06 GMT <p> The implementation of the 'strip-eol' option (which I submitted as a patch some time ago) had a flaw (as identified by Marc Dürner on the boost-build mailing list) in which it could strip newlines in the middle of the output, as opposed to only at the end of output, as intended. </p> <p> This patch fixes that issue and introduces a new option called 'join-lines' which will replace ALL newlines in the output with a space. </p> <p> Note that I've introduced a pair of functions that are candidates for the string module and which perhaps should be moved there. </p> codemonkey@… https://svn.boost.org/trac10/ticket/6593 https://svn.boost.org/trac10/ticket/6593 Report #6591: Download of boost source and documentation should be separate Wed, 22 Feb 2012 16:34:19 GMT Thu, 08 Nov 2012 11:14:06 GMT <p> The documentation bundle should be separated into a different archive for download from the actual library code. </p> <p> This would make extracting just the libraries much faster for initial setup especially if someone doesn't want the documentation locally anyway. </p> business2008+boost.org@… https://svn.boost.org/trac10/ticket/6591 https://svn.boost.org/trac10/ticket/6591 Report #6590: BOOST_AUTO fails on C++11 lambdas Tue, 21 Feb 2012 22:46:09 GMT Tue, 21 Feb 2012 22:46:09 GMT <p> <code>BOOST_AUTO</code> fails on C++11 lambdas as follows (tested with g++ 4.6.2-14ubuntu2): </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/typeof/typeof.hpp&gt;</span><span class="cp"></span> <span class="n">BOOST_AUTO</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[](){});</span> </pre></div></div><pre class="wiki">$ g++ -c -std=c++0x test.cc test.cc:2:1: error: lambda-expression in unevaluated context test.cc:2:1: error: conversion from ‘&lt;lambda()&gt;’ to non-scalar type ‘&lt;lambda()&gt;’ requested </pre><p> Although it’s apparently not possible to use <code>typeof</code> or <code>decltype</code> on a lambda expression, this could be fixed by defining <code>BOOST_AUTO</code> with C++11 <code>auto</code> on compilers that support it: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#define BOOST_AUTO(Var, Expr) auto Var = Expr</span> <span class="n">BOOST_AUTO</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[](){});</span> </pre></div></div> Anders Kaseorg <andersk@…> https://svn.boost.org/trac10/ticket/6590 https://svn.boost.org/trac10/ticket/6590 Report #6589: boost::wave samples won't build with "Simplified Build From Source" build Tue, 21 Feb 2012 20:23:58 GMT Tue, 21 Feb 2012 20:23:58 GMT <p> According to a quick check on the #boost irc channel, jam _should_ be forcing the build of any boost libraries it needs. </p> <p> This does not appear to be happening when I try to build the boost::wave (1.48.0) samples with VS10 on WinXP. </p> <p> I get a series of linking errors, when I attempt: C:\boost_1_48_0&gt; bjam.exe libs\wave\samples </p> <p> References to filesystem3 or even wave itself fail to link. </p> <p> A solution is to force everything to build in boost with: C:\boost_1_48_0&gt; b2.exe --build-type=complete </p> <p> At that point many of the projects will build, but still some don't in a possibly unrelated issue documented here: <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/6588"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/6588</a> </p> Joe Kerian <jkerian+boost@…> https://svn.boost.org/trac10/ticket/6589 https://svn.boost.org/trac10/ticket/6589 Report #6588: boost::wave list_includes sample will not link with cpplexer Tue, 21 Feb 2012 20:23:12 GMT Thu, 08 Mar 2012 16:40:51 GMT <p> After working around a jamfile problem where none of the wave samples will build(ticket will be posted shortly after this), list_includes (among others) still refuses to link. </p> <p> This is with VS10 on WindowsXP, Boost 1.48.0 having been built succesfully with --build-type=complete, but not installed. </p> <p> I apologize for the nasty formatting, but the Command Prompt just isn't very helpful. </p> <pre class="wiki">C:\boost_1_48_0&gt;b2.exe libs\wave\samples -q ...patience... ...patience... ...patience... ...found 2677 targets... ...updating 7 targets... msvc.link bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.exe Creating library bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-o n\link-static\threading-multi\list_includes.lib and object bin.v2\libs\wave\samples\list_includes\bu ild\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.exp list_includes.obj : error LNK2019: unresolved external symbol "public: static struct boost::wave::cp plexer::lex_input_interface&lt;class boost::wave::cpplexer::lex_token&lt;struct boost::wave::util::file_po sition&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt; char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt; * __cdecl boost::wave::cpplexer::lexertl::new_lexer_gen&lt;class std::_String_iterator&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;,struct boost: :wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,c lass std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStrin gStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt;::new_lexer(class std::_String_iterator&lt;char ,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,class std::_String_iterator&lt;char ,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,struct boost::wave::util::file_p osition&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator &lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; const &amp;,enum boost::wave::language_support)" (?new_lexer@?$new_l exer_gen@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$file_position@V?$flex_ string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@ D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost@@@lexertl@cpplexer@ wave@boost@@SAPAU?$lex_input_interface@V?$lex_token@U?$file_position@V?$flex_string@DU?$char_traits@ D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@D@std@@@util@wave@boost @@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost@@@cpplexer@wave@boost@@@345@ABV?$_String_i terator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0ABU?$file_position@V?$flex_string@DU?$char_tr aits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringStorage@DV?$allocator@D@std@@@util@wave@ boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@45@W4language_support@45@@Z) referenced in funct ion "public: static struct boost::wave::cpplexer::lex_input_interface&lt;class boost::wave::cpplexer::l ex_token&lt;struct boost::wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct st d::char_traits&lt;char&gt;,class std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave ::util::AllocatorStringStorage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt; * __cdecl boost::wa ve::cpplexer::lexertl::lexertl_input_interface&lt;class boost::wave::cpplexer::lex_token&lt;struct boost:: wave::util::file_position&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,cl ass std::allocator&lt;char&gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorString Storage&lt;char,class std::allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; &gt; &gt;::new_lexer&lt;class std::_String_iterator&lt;cha r,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; &gt;(class std::_String_iterator&lt;char,stru ct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,class std::_String_iterator&lt;char,stru ct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,struct boost::wave::util::file_positi on&lt;class boost::wave::util::flex_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char &gt;,class boost::wave::util::CowString&lt;class boost::wave::util::AllocatorStringStorage&lt;char,class std: :allocator&lt;char&gt; &gt;,char *&gt; &gt; &gt; const &amp;,enum boost::wave::language_support)" (??$new_lexer@V?$_String _iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@?$lexertl_input_interface@V?$lex_token@U?$f ile_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringS torage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boos t@@@cpplexer@wave@boost@@@lexertl@cpplexer@wave@boost@@SAPAU?$lex_input_interface@V?$lex_token@U?$fi le_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStringSt orage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@wave@boost @@@cpplexer@wave@boost@@@234@ABV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AB U?$file_position@V?$flex_string@DU?$char_traits@D@std@@V?$allocator@D@2@V?$CowString@V?$AllocatorStr ingStorage@DV?$allocator@D@std@@@util@wave@boost@@PAD@util@wave@boost@@@util@wave@boost@@@util@34@W4 language_support@34@@Z) bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\thread ing-multi\list_includes.exe : fatal error LNK1120: 1 unresolved externals call "c:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 &gt;nul link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /subsystem:console /out:"bin.v2\libs\wave\samples\l ist_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.ex e" @"bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-static \threading-multi\list_includes.exe.rsp" if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% ...failed msvc.link bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-o n\link-static\threading-multi\list_includes.exe bin.v2\libs\wave\samples\list_includes\build\msvc-10 .0\debug\asynch-exceptions-on\link-static\threading-multi\list_includes.pdb... ...removing bin.v2\libs\wave\samples\list_includes\build\msvc-10.0\debug\asynch-exceptions-on\link-s tatic\threading-multi\list_includes.pdb ...failed updating 1 target... C:\boost_1_48_0&gt; </pre> Joe Kerian <jkerian+boost@…> https://svn.boost.org/trac10/ticket/6588 https://svn.boost.org/trac10/ticket/6588 Report #6587: pb : tuple_basic.hpp 396 eror c2678 Tue, 21 Feb 2012 13:34:57 GMT Thu, 26 Apr 2012 06:37:02 GMT <p> C:/Program Files (x86)/boost/boost_1_47\boost/tuple/detail/tuple_basic.hpp(396): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::_Smanip&lt;_Arg&gt;' (or there is no acceptable conversion) </p> hoel.langouet@… https://svn.boost.org/trac10/ticket/6587 https://svn.boost.org/trac10/ticket/6587 Report #6580: problem with OpenMP > 1.3I and boost-mpi-python Sun, 19 Feb 2012 17:12:56 GMT Mon, 28 May 2012 17:32:25 GMT <p> when installing with bjam and using openmpi for MPI, the bjam generated mpi.so can not be loaded from within python. </p> <p> the packagers for ubuntu solve this problem by putting </p> <p> mpi.so within a subdirectory boost </p> <p> so something like my_boost/lib/boost/mpi.so </p> <p> together with a <span class="underline">init</span>.py file that contains: </p> <p> import sys if sys.platform == 'linux2': </p> <blockquote> <p> import DLFCN as dl flags = sys.getdlopenflags() sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL) import mpi sys.setdlopenflags(flags) </p> </blockquote> <p> else: </p> <blockquote> <p> import mpi </p> </blockquote> <p> this way the mpi library can be imported as </p> <p> import boost.mpi </p> <p> this will open the <span class="underline">init</span>.py and ensure that the lib can be correctly loaded </p> <p> without this the lib should be imported as import mpi </p> <p> which fails with openmpi </p> anonymous https://svn.boost.org/trac10/ticket/6580 https://svn.boost.org/trac10/ticket/6580 Report #6579: "linked list" bug Boost.Concept_check documentation Sun, 19 Feb 2012 02:03:05 GMT Sun, 19 Feb 2012 02:03:05 GMT <p> Right under the <a href="http://www.boost.org/doc/libs/1_48_0/libs/concept_check/concept_check.htm#motivating-example">"Motivating Example" section</a>, first sentence it says "... is applied to a linked list." whereas the example does not have (or need) one. </p> anonymous https://svn.boost.org/trac10/ticket/6579 https://svn.boost.org/trac10/ticket/6579 Report #6568: Warnings with -Wundef Thu, 16 Feb 2012 21:27:49 GMT Tue, 27 Mar 2012 07:17:56 GMT <p> Compiling with GCC 4.3.2 on Linux with -Wundef -Werror: </p> <pre class="wiki">In file included from boost_1_49_0_beta1/boost/parameter/parameters.hpp:44, from boost_1_49_0_beta1/boost/parameter.hpp:11, from boost_1_49_0_beta1/boost/heap/policies.hpp:12, from boost_1_49_0_beta1/boost/heap/detail/stable_heap.hpp:20, from boost_1_49_0_beta1/boost/heap/binomial_heap.hpp:19, ... boost_1_49_0_beta1/boost/parameter/aux_/unwrap_cv_reference.hpp:47:1: error: "MSVC_WORKAROUND_GUARD" is not defined boost_1_49_0_beta1/boost/parameter/aux_/unwrap_cv_reference.hpp:47:1: error: "MSVC" is not defined </pre> driscoll@… https://svn.boost.org/trac10/ticket/6568 https://svn.boost.org/trac10/ticket/6568 Report #6565: Warnings with -Wundef Thu, 16 Feb 2012 21:21:59 GMT Fri, 17 Feb 2012 09:29:10 GMT <p> The following occurs when compiling with GCC 4.3.2 on Linux with -Wundef -Werror: </p> <pre class="wiki">In file included from boost_1_49_0_beta1/boost/preprocessor/cat.hpp:17, from boost_1_49_0_beta1/boost/concept/detail/general.hpp:7, from boost_1_49_0_beta1/boost/concept/assert.hpp:36, from boost_1_49_0_beta1/boost/heap/detail/heap_comparison.hpp:14, from boost_1_49_0_beta1/boost/heap/binomial_heap.hpp:17, ... boost_1_49_0_beta1/boost/preprocessor/config/config.hpp:86:77: error: "__GXX_EXPERIMENTAL_CXX0X__" is not defined </pre><p> I'm not sure what version introduced this. </p> <p> (I'm going to be filing a couple of these bugs because they appear in different components... sorry if that's the wrong thing to do.) </p> driscoll@… https://svn.boost.org/trac10/ticket/6565 https://svn.boost.org/trac10/ticket/6565 Report #6563: system_complete documention note broken link/missing info Thu, 16 Feb 2012 14:25:51 GMT Thu, 16 Feb 2012 14:25:51 GMT <p> <a href="http://www.boost.org/doc/libs/1_49_0_beta1/libs/filesystem/v3/doc/reference.html#system_complete">http://www.boost.org/doc/libs/1_49_0_beta1/libs/filesystem/v3/doc/reference.html#system_complete</a> </p> <p> Has the following broken link, evidently to a removed operational function = complete(). </p> <p> "See complete() note for usage suggestions. -- end note]" </p> <p> It would be nice if the ref'd usage suggestions could be resurrected here if they are applicable to system_complete. </p> Jeff Flinn <Jeffrey.Flinn@…> https://svn.boost.org/trac10/ticket/6563 https://svn.boost.org/trac10/ticket/6563 Report #6561: pool.free() crashes if given a null pointer Wed, 15 Feb 2012 15:02:27 GMT Sat, 12 May 2018 21:30:27 GMT <p> The documentation states that the pointer given to pool.free() should be a pointer returned by pool.malloc(). </p> <p> However, if pool.malloc() fails and return a null value, calling pool.free() with the returned value does crash... </p> <p> It would be nice if pool.free() did not crash given a null pointer. </p> <p> Example crash : </p> <pre class="wiki">pool.free(pool.malloc()); </pre><p> Regards </p> Étienne Dupuis <e.dupuis@…> https://svn.boost.org/trac10/ticket/6561 https://svn.boost.org/trac10/ticket/6561 Report #6554: Compiler error dereferencing multi_array value via an iterator Mon, 13 Feb 2012 17:46:47 GMT Wed, 11 Apr 2012 20:55:25 GMT <p> It is currently impossible to dereference/access the values contained in a multi_array via the -&gt; operator from an iterator to the multi_array element. However, use the * operator works. </p> <p> Example: </p> <pre class="wiki">struct data { int value; }; typedef boost::multi_array&lt;data, 2&gt; array_type; array_type a(boost::extents[4][5]); // ERROR: Cannot compile this line a.begin()-&gt;begin()-&gt;value = 7; // Compiles successfully (*a.begin()-&gt;begin()).value = 5; </pre><p> I'm using Visual Studio 2010. This is an error in both debug and release modes. This is the error: </p> <p> boost/multi_array/iterator.hpp(40): error C2528: '-&gt;' : pointer to reference is illegal </p> Bill Buklis https://svn.boost.org/trac10/ticket/6554 https://svn.boost.org/trac10/ticket/6554 Report #6551: BOOST_CLASS_VERSION emits use of old-style cast when compiling with -Wold-style-cast Mon, 13 Feb 2012 09:30:24 GMT Tue, 14 Feb 2012 08:17:52 GMT <p> In our project we want to compile all code with -Wold-style-cast and treat warnings as errors. We pass the boost/include directory with -isystem to gcc. This keeps warnings from boost from obfuscating our build output. However if a macro from constains warnings we still get them. </p> <p> BOOST_CLASS_VERSION uses BOOST_MPL_ASSERT which causes the warning. I changed the old style casts to c++ casts in the macro's from boost/mpl/assert.hpp. </p> andre.kwakernaak@… https://svn.boost.org/trac10/ticket/6551 https://svn.boost.org/trac10/ticket/6551 Report #6547: Missing tribool in interval compare Sat, 11 Feb 2012 20:37:29 GMT Sat, 11 Feb 2012 20:37:29 GMT <p> boost/numeric/interval/compare.hpp fails to include boost/numeric/interval/compare/tribool.hpp (needed for tribool comparison mode) </p> matt.keeter@… https://svn.boost.org/trac10/ticket/6547 https://svn.boost.org/trac10/ticket/6547 Report #6546: mpl::constant_c does not support min and max values for signed types Sat, 11 Feb 2012 18:21:04 GMT Wed, 25 Apr 2018 09:20:32 GMT <p> Boost.Ratio test fails on debian linux with gcc 4.6. </p> <pre class="wiki">gcc.compile.c++ ../../../bin.v2/libs/ratio/test/ratio_add_pass.test/gcc-4.6/debug/ratio_add_pass.o In file included from ../../../boost/mpl/integral_c.hpp:32:0, from ../../../boost/ratio/detail/mpl/abs.hpp:15, from ../../../boost/ratio/ratio.hpp:36, from ratio_arithmetic/ratio_add_pass.cpp:16: ../../../boost/mpl/aux_/integral_wrapper.hpp: In instantiation of ‘mpl_::integral_c&lt;long int, 9223372036854775807l&gt;’: ../../../boost/ratio/detail/mpl/abs.hpp:38:29: instantiated from ‘boost::mpl::abs_tag&lt;mpl_::integral_c&lt;long int, 9223372036854775807l&gt; &gt;’ ../../../boost/ratio/detail/mpl/abs.hpp:44:8: instantiated from ‘boost::mpl::abs&lt;mpl_::integral_c&lt;long int, 9223372036854775807l&gt; &gt;’ ../../../boost/ratio/detail/mpl/abs.hpp:58:8: instantiated from ‘boost::mpl::abs_c&lt;long int, 9223372036854775807l&gt;’ ../../../boost/ratio/ratio.hpp:79:74: instantiated from ‘const intmax_t boost::ratio&lt;9223372036854775807l, 1l&gt;::ABS_N’ ../../../boost/ratio/ratio.hpp:81:5: instantiated from ‘boost::ratio&lt;9223372036854775807l, 1l&gt;’ ../../../boost/ratio/detail/overflow_helpers.hpp:227:95: instantiated from ‘const intmax_t boost::ratio_detail::ratio_add&lt;boost::ratio&lt;9223372036854775807l, 1l&gt;, boost::ratio&lt;-0x00000000000000001l, 1l&gt; &gt;::gcd_n1_n2’ ../../../boost/ratio/detail/overflow_helpers.hpp:243:18: instantiated from ‘boost::ratio_detail::ratio_add&lt;boost::ratio&lt;9223372036854775807l, 1l&gt;, boost::ratio&lt;-0x00000000000000001l, 1l&gt; &gt;’ ../../../boost/ratio/ratio.hpp:136:8: instantiated from ‘boost::ratio_add&lt;boost::ratio&lt;9223372036854775807l, 1l&gt;, boost::ratio&lt;-0x00000000000000001l, 1l&gt; &gt;’ ratio_arithmetic/ratio_add_pass.cpp:70:37: instantiated from here ../../../boost/mpl/aux_/integral_wrapper.hpp:72:96: warning: integer overflow in expression [-Woverflow] ../../../boost/mpl/aux_/integral_wrapper.hpp:72:96: error: overflow in constant expression [-fpermissive] ../../../boost/mpl/aux_/integral_wrapper.hpp:72:96: note: in template argument for type ‘long int’ </pre> smr@… https://svn.boost.org/trac10/ticket/6546 https://svn.boost.org/trac10/ticket/6546 Report #6545: boost:::python doesn't recognize std::shared_ptr Sat, 11 Feb 2012 14:03:12 GMT Fri, 18 Sep 2015 07:17:12 GMT <p> boost::python specially handles boost::shared_ptr, but special handling is also needed for std::shared_ptr </p> Neal Becker <ndbecker2@…> https://svn.boost.org/trac10/ticket/6545 https://svn.boost.org/trac10/ticket/6545 Report #6544: The documentation of iterator_property_map is overly complicated and incorrect Fri, 10 Feb 2012 15:40:40 GMT Mon, 16 Apr 2012 17:49:27 GMT <p> The example that is used, is very complicated especially because it refers to the Graph library. </p> <p> The operator[] does not take a pointer_diff as parameter but an IndexMap::key_type </p> anonymous https://svn.boost.org/trac10/ticket/6544 https://svn.boost.org/trac10/ticket/6544 Report #6542: cannot assign empty matrix to matrix Fri, 10 Feb 2012 11:05:21 GMT Fri, 10 Feb 2012 11:05:21 GMT <p> The following gives a runtime error, because matrix b is empty </p> <p> boost::numeric::ublas::matrix&lt;int&gt; a, b; a = b; </p> <p> I am submitting a patch to storage.hpp, but don't know if the problem appears elsewhere too. </p> Alex Hagen-Zanker <ahh34@…> https://svn.boost.org/trac10/ticket/6542 https://svn.boost.org/trac10/ticket/6542 Report #6538: property map documentation is overlay complicated Thu, 09 Feb 2012 16:30:35 GMT Fri, 10 Feb 2012 12:59:31 GMT <p> The documentation of property map is overly complicated, for a few reasons: </p> <ol><li>References to the Graph library. Considering that many readers of the documentation will be referred from the Graph library, they are being send in circles. Those not referred from the Graph library won't be helped either. </li></ol><ol start="2"><li>Too many indications of what property_map is similar to. These are generally not helpful: better to say what it is, than what it looks like. </li></ol><ol start="3"><li>Complicated examples. </li></ol><p> I am attaching a rewrite of property_map.html </p> anonymous https://svn.boost.org/trac10/ticket/6538 https://svn.boost.org/trac10/ticket/6538 Report #6532: KeyError: 'attachment' Tue, 07 Feb 2012 13:24:36 GMT Tue, 07 Feb 2012 13:25:48 GMT <h4 class="section" id="HowtoReproduce">How to Reproduce</h4> <p> While doing a POST operation on <code>/attachment/ticket/5372/</code>, Trac issued an internal error. </p> <p> <em>(please provide additional details here)</em> } void doSomething(boost::weak_ptr&lt;int&gt; weakp, int* number) { </p> <p> int i = 0; while(++i&lt;10000) { </p> <p> User agent: <code>Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3</code> </p> <h4 class="section" id="SystemInformation">System Information</h4> <p> <em>System information not available</em> </p> <h4 class="section" id="EnabledPlugins">Enabled Plugins</h4> <p> <em>Plugin information not available</em> </p> <h4 class="section" id="PythonTraceback">Python Traceback</h4> <pre class="wiki">Traceback (most recent call last): File "build/bdist.linux-i686/egg/trac/web/main.py", line 513, in _dispatch_request dispatcher.dispatch(req) File "build/bdist.linux-i686/egg/trac/web/main.py", line 235, in dispatch resp = chosen_handler.process_request(req) File "build/bdist.linux-i686/egg/trac/attachment.py", line 448, in process_request self._do_save(req, attachment) File "build/bdist.linux-i686/egg/trac/attachment.py", line 620, in _do_save upload = req.args['attachment'] KeyError: 'attachment' </pre> Trvus549@… https://svn.boost.org/trac10/ticket/6532 https://svn.boost.org/trac10/ticket/6532 Report #6529: Build process ignores --with-icu path on some icu tests? Mon, 06 Feb 2012 21:19:57 GMT Sun, 07 Jul 2013 16:37:10 GMT <p> When bootstrap.sh --with-icu=/usr/local/Cellar/icu4c/1.8.1.1, I get in the logs: </p> <p> 1) when testing 'has_icu' </p> <p> darwin.compile.c++ bin.v2/libs/regex/build/darwin-4.2.1/debug/has_icu_test.o </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -pedantic -g -dynamic -no-cpp-precomp -gdwarf-2 -fexceptions -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_HAS_ICU=1 -I"." -I"/usr/local/Cellar/icu4c/1.8.1.1/include" -c -o "bin.v2/libs/regex/build/darwin-4.2.1/debug/has_icu_test.o" "libs/regex/build/has_icu_test.cpp" </p> </blockquote> <p> Note the -I flag with my icu path. </p> <p> 2) Later, in the same config.log, I see: </p> <p> darwin.compile.c++ bin.v2/libs/locale/build/darwin-4.2.1/debug/has_icu_obj.o </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -dynamic -no-cpp-precomp -gdwarf-2 -fexceptions -fPIC -DBOOST_ALL_NO_LIB=1 -I"." -c -o "bin.v2/libs/locale/build/darwin-4.2.1/debug/has_icu_obj.o" "libs/locale/src/../build/has_icu_test.cpp" </p> </blockquote> <p> libs/locale/src/../build/has_icu_test.cpp:12:30: error: unicode/uversion.h: No such file or directory </p> <p> Note that in this g++ line there is no -I flag with my icu path. </p> hashashin@… https://svn.boost.org/trac10/ticket/6529 https://svn.boost.org/trac10/ticket/6529 Report #6527: Segmentation fault from program_options with intel compiler and openmp Mon, 06 Feb 2012 05:15:58 GMT Mon, 28 May 2012 05:44:16 GMT <p> When using program_options to parse the command line, a segmentation fault results from the store() function after a call to parse_command_line(). This seems to only happens when using the -openmp flag with the intel c++ (icpc) compiler (version 11) and -openmp compiler directive. </p> Ryan Scott Davis <rsdavis@…> https://svn.boost.org/trac10/ticket/6527 https://svn.boost.org/trac10/ticket/6527 Report #6525: format atldbgmem.h m_storage VS2010 Sun, 05 Feb 2012 15:36:02 GMT Thu, 12 Oct 2017 14:47:08 GMT <p> Hi, </p> <p> Format component of Boost 1.48 doesn't compile with memory debugging enabled in VS2010. </p> <p> With &lt;atldbgmem.h&gt; included in stdafx.h (precompiled header), compiler says error: </p> <pre class="wiki">1&gt;d:\boost\boost_1_48_0\boost\optional\optional.hpp(346): error C2061: syntax error : identifier 'm_storage' 1&gt; d:\boost\boost_1_48_0\boost\optional\optional.hpp(345) : while compiling class template member function 'void boost::optional_detail::optional_base&lt;T&gt;::construct(const std::locale &amp;)' 1&gt; with 1&gt; [ 1&gt; T=boost::io::detail::locale_t 1&gt; ] 1&gt; d:\boost\boost_1_48_0\boost\optional\optional.hpp(500) : see reference to class template instantiation 'boost::optional_detail::optional_base&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::io::detail::locale_t 1&gt; ] 1&gt; d:\boost\boost_1_48_0\boost\format\internals.hpp(56) : see reference to class template instantiation 'boost::optional&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=boost::io::detail::locale_t 1&gt; ] 1&gt; d:\boost\boost_1_48_0\boost\format\internals.hpp(57) : see reference to class template instantiation 'boost::io::detail::stream_format_state&lt;Ch,Tr&gt;' being compiled 1&gt; 1&gt;Build FAILED. </pre><p> The code itself: </p> <pre class="wiki">#include &lt;boost/format.hpp&gt; int _tmain(int argc, _TCHAR* argv[]) { boost::format fmt("Value: %d\nString: %s\n"); fmt % 10 % _T("My string"); printf(fmt.str().c_str()); return 0; } </pre><p> Without atldbgmem.h included the code compiles with no error messages </p> <p> Regards, Evgeniy </p> epodkopaev@… https://svn.boost.org/trac10/ticket/6525 https://svn.boost.org/trac10/ticket/6525 Report #6521: Directory listing using C++11 range-based for loops Sat, 04 Feb 2012 18:15:21 GMT Tue, 13 Jun 2017 14:11:26 GMT <p> I have written a simple 'container' class for a directory, 'containing' all of its subdirectories: </p> <pre class="wiki">namespace boost{ namespace filesystem{ class directory{ path p_; public: inline directory(path p):p_(p){ return; } directory_iterator begin(){ return directory_iterator(p_); } directory_iterator end(){ return directory_iterator(); } }; } } </pre><p> so that that range-based for loop can be used: </p> <pre class="wiki">for(auto i:directory("/home")){ ... } </pre> mustrumr97@… https://svn.boost.org/trac10/ticket/6521 https://svn.boost.org/trac10/ticket/6521 Report #6515: Serilaization of std::vector<bool> is broken for optimizing archives Thu, 02 Feb 2012 18:40:38 GMT Sun, 15 Jul 2012 20:35:16 GMT <p> Serializing a vector&lt;bool&gt; causes corruptions in the created archive. The reason is this function (in boost/serialization/vector.hpp): </p> <pre class="wiki">template&lt;class Archive, class U, class Allocator&gt; inline void save( Archive &amp; ar, const std::vector&lt;U, Allocator&gt; &amp;t, const unsigned int /* file_version */, mpl::true_ ){ const collection_size_type count(t.size()); ar &lt;&lt; BOOST_SERIALIZATION_NVP(count); if (!t.empty()) ar &lt;&lt; make_array(detail::get_data(t),t.size()); } </pre><p> While detail::get_data(t) is not specialized for std::vector&lt;bool&gt; (but it should be), and t.size() returns the number of bits stored in the vector, which is probably not what's expected either. </p> <p> I'm encountering this problem with MSVC10, 64bit, Windows7. </p> Hartmut Kaiser https://svn.boost.org/trac10/ticket/6515 https://svn.boost.org/trac10/ticket/6515 Report #6512: Find a framework directory on darwin not work Thu, 02 Feb 2012 10:33:58 GMT Thu, 02 Feb 2012 18:04:19 GMT <p> patch for <strong>python.jam</strong> </p> <pre class="wiki">866c866 &lt; local framework-directory = $(libraries[-1]) ; --- &gt; framework-directory = $(libraries[-1]) ; </pre><p> Sorry, my English is very bad to explain more, patch should fix it. </p> iinik@… https://svn.boost.org/trac10/ticket/6512 https://svn.boost.org/trac10/ticket/6512 Report #6506: date_time\test\posix_time\testperiod.cpp is obsolete and should be removed Wed, 01 Feb 2012 13:10:50 GMT Thu, 02 Feb 2012 15:47:42 GMT <p> Quote from the file itself, which is otherwise empty: </p> <pre class="wiki">//FILE OBSOLETE: replace by testtime_period.cpp </pre> Ulrich Eckhardt <ulrich.eckhardt@…> https://svn.boost.org/trac10/ticket/6506 https://svn.boost.org/trac10/ticket/6506 Report #6500: testfrom_facet.cpp is unused and broken Tue, 31 Jan 2012 09:05:31 GMT Tue, 31 Jan 2012 09:05:31 GMT <p> The above file is part of the test directory of the <a class="missing wiki">DateTime</a> library, but it isn't compiled as part thereof. It also doesn't compile, because it depends on algorithm_ext/container_print.hpp. </p> <p> I'd either revive it or drop it. </p> Ulrich Eckhardt <ulrich.eckhardt@…> https://svn.boost.org/trac10/ticket/6500 https://svn.boost.org/trac10/ticket/6500 Report #6497: bjam build failing when including QtUiTools Mon, 30 Jan 2012 20:25:54 GMT Mon, 15 Dec 2014 17:15:49 GMT <p> qt<em>QtUiTools causes bjam to fail prior to starting compilation with an error...<br /> xx/tools\builtin.jam:869: in linking-generator.generated-targets<br /> '* argument error<br /> '* rule generator.generated-targets ( sources + : property-set : project name ? )<br /> '* called with: ( : object(property-set)@1776 : object(project-target)@46 <a class="missing wiki">QtUiTools</a> )<br /> '* missing argument sources<br /> xx/build/v2/build\generators.jam:543:see definition of rule 'generator.generated-targets' being called<br /> </em></p> <p> Commenting out qt<em>QtUiTools from my Jamfile allows the build to work up to the point that I need QUILoader.h, which is part of of qt</em>QtUiTools </p> <p> I'm Using bjam from boost 1.48 with QT 4.8.0, both compiled sucessfully on Windows 7 with 32-bit MSVC 2010. </p> <p> If you have any suggestions for a work-arround, please let me know </p> Brad Jascob <bradley.jascob@…> https://svn.boost.org/trac10/ticket/6497 https://svn.boost.org/trac10/ticket/6497 Report #6496: interval equality operator throws Mon, 30 Jan 2012 20:02:50 GMT Mon, 30 Jan 2012 20:05:38 GMT <p> the following code throws: </p> <p> boost::numeric::interval&lt;double&gt; intv(1.0, 2.0); boost::numeric::interval&lt;double&gt; intv2 = intv; </p> <p> bool b = (intv == intv2); </p> <p> bug or my fault? </p> gast128 <gast128@…> https://svn.boost.org/trac10/ticket/6496 https://svn.boost.org/trac10/ticket/6496 Report #6494: Using BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG flag ruins date_time library under MinGW Mon, 30 Jan 2012 05:31:28 GMT Mon, 30 Jan 2012 05:31:28 GMT <p> I've built static boost libraries under windows (Win7 64) with MinGW 3.20 (32 bit, GCC 4.6.1) with <strong>BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG</strong> option and threading=multi link=static runtime-link=static address-model=32 </p> <p> Simple test like </p> <pre class="wiki">#include &lt;iostream&gt; #include &lt;boost/thread/thread.hpp&gt; #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; using namespace std; using namespace boost; void func() { this_thread::sleep(boost::posix_time::milliseconds(5000)); } int main() { thread trd(func); trd.join(); cout &lt;&lt; "wait ok" &lt;&lt; endl; return 0; } </pre><p> When built statically with <strong>date_time</strong> and <strong>thread</strong> libraries. </p> <p> It fails with segfault in date_time library. That happens in ctor of structure simple_time_rep, but I didn't dig too much. I guess the problem is in date_time library. </p> <p> Without flag <strong>BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG</strong> it's going all right with timings and threads. </p> <p> I also tried flags BOOST_HAS_WINTHREADS and _REENTRANT(for MinGW) - that does not affect the case. BOOST_THREAD_USE_LIB was defined (to let it work with static libs). </p> <p> I've tested this for boost <strong>1.48.0</strong> and <strong>1.49.0-beta1</strong>. Neither did work. I asked about this problem in boost mailing lists but got no answer, so I post it as a possible bug. </p> <p> Sincerely, Yana A. Kireyonok </p> death.iron.bug@… https://svn.boost.org/trac10/ticket/6494 https://svn.boost.org/trac10/ticket/6494 Report #6461: 12-hour clock support for time_input_facet Sun, 29 Jan 2012 09:03:29 GMT Sun, 29 Jan 2012 09:03:29 GMT <p> Please implement 12-hour clock format options for time_input_facet (%I, %l, %p, %P). Thanks! </p> dev@… https://svn.boost.org/trac10/ticket/6461 https://svn.boost.org/trac10/ticket/6461 Report #6460: add xpressive grammar example to docs Fri, 27 Jan 2012 17:56:14 GMT Fri, 27 Jan 2012 17:56:14 GMT <p> see attached file </p> Eric Niebler https://svn.boost.org/trac10/ticket/6460 https://svn.boost.org/trac10/ticket/6460 Report #6458: Bug in a multi_array print_array example Fri, 27 Jan 2012 14:52:09 GMT Sat, 18 Aug 2012 15:13:20 GMT <p> <a href="http://www.boost.org/doc/libs/1_48_0/libs/multi_array/example/print_array.cpp">http://www.boost.org/doc/libs/1_48_0/libs/multi_array/example/print_array.cpp</a> </p> <p> change </p> <p> <strong>void print(std::ostream&amp; os, const double&amp; x)</strong> </p> <p> to </p> <p> <strong>template&lt;&gt; void print&lt;double&gt;(std::ostream&amp; os, const double&amp; x)</strong> </p> <p> reference: <a class="ext-link" href="http://stackoverflow.com/questions/9034554/pretty-print-of-boostmulty-array-example-fails/"><span class="icon">​</span>http://stackoverflow.com/questions/9034554/pretty-print-of-boostmulty-array-example-fails/</a> </p> nootropic.kint@… https://svn.boost.org/trac10/ticket/6458 https://svn.boost.org/trac10/ticket/6458 Report #6454: Problem when using phoenix::_if with boost::optional in Spirit Thu, 26 Jan 2012 18:05:09 GMT Thu, 26 Jan 2012 18:05:09 GMT <p> A rule that yields a boost::optional as attribute won't compile when using qi::_1 as condition for phoenix::_if. However, if you add a phoenix statement after the if_ statement the rule compiles. </p> <blockquote> <p> <em>Doesn't compile qi::rule&lt;Iter, boost::optional&lt;int&gt;()&gt; rule_a = </em></p> <blockquote> <p> (-qi::int_)[ </p> <blockquote> <p> phx::if_(qi::_1)[ </p> <blockquote> <p> phx::nothing </p> </blockquote> <p> ] <em>Uncomment next line and it compiles </em> , phx::nothing </p> </blockquote> <p> ] </p> </blockquote> </blockquote> <blockquote> <p> ; </p> </blockquote> <p> It doesn't help if you use another operator than - </p> <blockquote> <p> <em>Doesn't compile qi::rule&lt;Iter, boost::optional&lt; boost::variant&lt;int, double&gt; &gt;() &gt; rule_b = </em></p> <blockquote> <p> (qi::int_ | qi::double_ | qi::eps)[ </p> <blockquote> <p> phx::if_(qi::_1)[ </p> <blockquote> <p> phx::nothing </p> </blockquote> <p> ] <em>Uncomment next line and it compiles </em> , phx::nothing </p> </blockquote> <p> ] </p> </blockquote> <p> ; </p> </blockquote> <p> The error doesn't manifest if you don't refer to qi::_1 </p> <blockquote> <p> <em>Compiles qi::rule&lt;Iter, boost::optional&lt; boost::variant&lt;int, double&gt; &gt;() &gt; rule_c = </em></p> <blockquote> <p> (qi::int_ | qi::double_ | qi::eps)[ </p> <blockquote> <p> phx::if_(phx::val(true))[ </p> <blockquote> <p> phx::nothing </p> </blockquote> <p> ] </p> </blockquote> <p> ] </p> </blockquote> <p> ; </p> </blockquote> <p> It also works if you refer to qi::_1 but don't use phoenix::if_ </p> <blockquote> <p> <em>Compiles qi::rule&lt;Iter, boost::optional&lt;int&gt;()&gt; rule_d = </em></p> <blockquote> <p> (-qi::int_)[ </p> <blockquote> <p> std::cout &lt;&lt; qi::_1 </p> </blockquote> <p> ] </p> </blockquote> <p> ; </p> </blockquote> <p> Doing the same thing as in rule_a and rule_b outside of Spirit semantic actions also works </p> <blockquote> <p> <em>Compiles phx::if_(arg1)[ </em></p> <blockquote> <p> phx::nothing </p> </blockquote> <p> ] (boost::optional&lt;int&gt;(5)); </p> </blockquote> <p> The problem doesn't seem to occur when using Phoenix v2 only v3 </p> Öyvind Strand <oyvind.strand@…> https://svn.boost.org/trac10/ticket/6454 https://svn.boost.org/trac10/ticket/6454 Report #6451: Patch to allow user to specify other current filename macro on ASSERT Thu, 26 Jan 2012 17:12:11 GMT Fri, 08 Feb 2013 14:48:09 GMT <p> When BOOST_ENABLE_ASSERT_HANDLER is defined, compiler generates a string with function name. If a function is templated, compiler will generate a string for each function template. That leads to a huge binary files. </p> <p> Attached patch, that allows to disable construction of such strings or to use different macro for current function name (for example macro that prints ONLY function name). </p> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2012/01/189853.php"><span class="icon">​</span>More info</a> </p> Antony Polukhin https://svn.boost.org/trac10/ticket/6451 https://svn.boost.org/trac10/ticket/6451 Report #6449: numeric_cast is broken when using VC and /RTCc option Thu, 26 Jan 2012 13:29:17 GMT Thu, 26 Jan 2012 13:29:17 GMT <p> run-time checker detects the illegal assignment in GT_HiT::apply() in numeric\conversion\detail\converter.hpp called by 'numeric_cast&lt;int, unsigned short&gt;'. </p> <p> please compile the attached file with below command. </p> <blockquote class="citation"> <p> cl.exe numeric.cpp /EHsc /RTCc /Zi </p> </blockquote> <p> I confirmed same problem using VC2005 + boost 1.47.0 and VC2010 + boost 1.48.0. </p> y.hoshizuki https://svn.boost.org/trac10/ticket/6449 https://svn.boost.org/trac10/ticket/6449 Report #6448: basic_filesystem_error still referenced in docs Thu, 26 Jan 2012 12:05:48 GMT Mon, 28 May 2012 17:35:25 GMT <p> In /trunk/libs/filesystem/v3/index.html: </p> <p> "...Boost.Filesystem functions throw basic_filesystem_error exceptions if..." </p> <p> In /trunk/libs/filesystem/v3/doc/reference.html: </p> <p> "class basic_filesystem_error : public system_error" </p> <p> "The class template basic_filesystem_error ..." </p> <p> basic_filesystem_error doesn't exist in v3 AFAICT and filesystem_error isn't a class template as basic_filesystem_error was. </p> bibil.thaysose@… https://svn.boost.org/trac10/ticket/6448 https://svn.boost.org/trac10/ticket/6448 Report #6446: Mulicast receiver does not work Thu, 26 Jan 2012 10:05:16 GMT Sat, 31 Oct 2015 00:19:44 GMT <p> Quickfast 1.4 uses Boost 1.47.0 to receive FAST Marketdata via Multicast. We are developing an EBS (Eurex) Market Data Feed on Red Hat Linux 5.7 64 Bit. Starting the <a class="missing wiki">InterpretApplication</a> from quickfast no data are received. Starting in parallel a Java based multicast reader, then the data are then received in the <a class="missing wiki">InterpretApplication</a>. I have also tried it with the boost test program: <a href="http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio/example/multicast/receiver.cpp">http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio/example/multicast/receiver.cpp</a> with the same behaviour </p> <p> best regards </p> <p> Dieter </p> dieter.mayer@… https://svn.boost.org/trac10/ticket/6446 https://svn.boost.org/trac10/ticket/6446 Report #6444: qi::lit(<char>) parses into a '\0' in 1.47 and 1.48 Tue, 24 Jan 2012 20:15:20 GMT Wed, 25 Jan 2012 08:50:08 GMT <p> In 1.46.0, qi::lit(&lt;char&gt;) would end up in the result. This changed in 1.47.0 such that they were not parsed into the result (qi::char_ is to be used instead). However, NUL characters now show up in the resulting token. Example code and output attached. </p> <p> Synopsis: </p> <p> Parser: +(qi::alnum | qi::lit('-')) </p> <p> Input: "a-b-c" </p> <p> 1.46.0: "a-b-c" </p> <p> 1.47.0: "a\000b\000c" </p> <p> 1.48.0: "a\000b\000c" </p> <p> The '\000' characters can be seen in gdb; std::ostream just shows "abc" instead. </p> mathstuf@… https://svn.boost.org/trac10/ticket/6444 https://svn.boost.org/trac10/ticket/6444 Report #6442: Let the user work with a header-only library Mon, 23 Jan 2012 22:14:22 GMT Tue, 24 Jan 2012 15:35:50 GMT <p> Many libraries using Boost.System directly or indirectly could find more user if Boost.System were a header-only library. </p> viboes https://svn.boost.org/trac10/ticket/6442 https://svn.boost.org/trac10/ticket/6442 Report #6439: convert.cpp does not compile when defining BOOST_NO_STD_LOCALE Mon, 23 Jan 2012 20:57:38 GMT Tue, 03 Apr 2012 12:55:16 GMT <p> The reason for this build failure is that BOOST_USE_FACET is not defined when compiling with BOOST_NO_STD_LOCALE. The two methods can easily be excluded for NO_STD_LOCALE. See attached patch. The patch is against trunk as of today. </p> <p> gcc.compile.c++ bin.v2/libs/program_options/build/gcc-4.6.1/release/threading-multi/convert.o libs/program_options/src/convert.cpp: In Funktion »std::wstring boost::from_local_8_bit(const string&amp;)«: libs/program_options/src/convert.cpp:134:53: Fehler: expected primary-expression before »,« token libs/program_options/src/convert.cpp:134:63: Fehler: »BOOST_USE_FACET« wurde in diesem Gültigkeitsbereich nicht definiert libs/program_options/src/convert.cpp: In Funktion »std::string boost::to_local_8_bit(const wstring&amp;)«: libs/program_options/src/convert.cpp:142:51: Fehler: expected primary-expression before »,« token libs/program_options/src/convert.cpp:142:61: Fehler: »BOOST_USE_FACET« wurde in diesem Gültigkeitsbereich nicht definiert libs/program_options/src/convert.cpp:143:5: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type] libs/program_options/src/convert.cpp: In Funktion »std::wstring boost::from_local_8_bit(const string&amp;)«: libs/program_options/src/convert.cpp:135:5: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type] </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -DBOOST_NO_STD_LOCALE -DBOOST_ALL_NO_LIB=1 -DBOOST_PROGRAM_OPTIONS_DYN_LINK=1 -DNDEBUG -I"." -c -o "bin.v2/libs/program_options/build/gcc-4.6.1/release/threading-multi/convert.o" "libs/program_options/src/convert.cpp" </p> </blockquote> <p> (The reason for BOOST_NO_STD_LOCALE is the libstdc++ in my target system that throws an exceptions for std::locale(""); 8-((( ) </p> leutloff@… https://svn.boost.org/trac10/ticket/6439 https://svn.boost.org/trac10/ticket/6439 Report #6437: Documentation bug: ptr_map inherits from ptr_map_adapter, not ptr_multi_map_adapter Mon, 23 Jan 2012 12:08:39 GMT Mon, 23 Jan 2012 13:03:57 GMT <p> It seems that the documentation for ptr_multi_map_adatpter is wrong as there is a discrepancy with the code. I am a beginner, so if I am wrong, please gently explain why. </p> <p> <a href="http://www.boost.org/doc/libs/1_48_0/libs/ptr_container/doc/ptr_multimap_adapter.html">http://www.boost.org/doc/libs/1_48_0/libs/ptr_container/doc/ptr_multimap_adapter.html</a> shows: </p> <pre class="wiki"> class ptr_multimap_adapter { // ... iterator insert( key_type&amp; k, T* x ); template&lt; class U &gt; iterator insert( const key_type&amp;, std::auto_ptr&lt;U&gt; x ); // ... } </pre><p> However, the source code shows: </p> <pre class="wiki"> std::pair&lt;iterator,bool&gt; insert( key_type&amp; key, mapped_type x ) { return insert_impl( key, x ); } template&lt; class U &gt; std::pair&lt;iterator,bool&gt; insert( const key_type&amp; key, std::auto_ptr&lt;U&gt; x ) { return insert_impl( key, x.release() ); } </pre><p> It seems there is a mismatch between the documentation and the code as to the type of the return value (iterator vs. pair). </p> <p> The following test code provides an example of what I was trying to do after reading the documentation, but obviously that didn't compile: </p> <pre class="wiki">#include &lt;boost/ptr_container/ptr_map.hpp&gt; #include &lt;string&gt; #include &lt;utility&gt; int main() { boost::ptr_map&lt;int, std::string&gt; map; boost::ptr_map&lt;int, std::string&gt;::iterator map_it; std::string* s = new std::string("one"); int i = 1; //map_it = map.insert(i, s); // Does not compile. std::pair&lt; boost::ptr_map&lt;int, std::string&gt;::iterator, bool&gt; ret = map.insert(i, s); // This compiles. } </pre><p> How is the code documentation generated? By hand? </p> <p> While learning how to use ptr_container, I have often wished there were more extensive documentation and examples on how to use ptr_map. If the above is indeed a documentation bug, can you use this opportunity to add a sample code section on how to create, insert and retrieve elements with a ptr_map? </p> <p> Thanks. </p> augustin <augustin_boost@…> https://svn.boost.org/trac10/ticket/6437 https://svn.boost.org/trac10/ticket/6437 Report #6427: OperationalError: database is locked Fri, 20 Jan 2012 07:38:05 GMT Fri, 20 Jan 2012 07:38:05 GMT <h4 class="section" id="HowtoReproduce">How to Reproduce</h4> <p> While doing a GET operation on <code>/query</code>, Trac issued an internal error. </p> <p> <em>(please provide additional details here)</em> </p> <p> Request parameters: </p> <pre class="wiki">{'col': [u'id', u'summary', u'status', u'type', u'milestone', u'component'], 'component': u'exception', 'order': u'priority', 'status': [u'assigned', u'new', u'reopened']} </pre><p> User agent: <code>#USER_AGENT#</code> </p> <h4 class="section" id="SystemInformation">System Information</h4> <p> <em>System information not available</em> </p> <h4 class="section" id="EnabledPlugins">Enabled Plugins</h4> <p> <em>Plugin information not available</em> </p> <h4 class="section" id="PythonTraceback">Python Traceback</h4> <pre class="wiki">Traceback (most recent call last): File "build/bdist.linux-i686/egg/trac/web/main.py", line 513, in _dispatch_request dispatcher.dispatch(req) File "build/bdist.linux-i686/egg/trac/web/main.py", line 258, in dispatch req.session.save() File "build/bdist.linux-i686/egg/trac/web/session.py", line 88, in save @self.env.with_transaction() File "build/bdist.linux-i686/egg/trac/db/api.py", line 77, in transaction_wrapper fn(ldb) File "build/bdist.linux-i686/egg/trac/web/session.py", line 110, in delete_session_cookie """, (self.sid,)) File "build/bdist.linux-i686/egg/trac/db/util.py", line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 78, in execute result = PyFormatCursor.execute(self, *args) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 56, in execute args or []) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 48, in _rollback_on_error return function(self, *args, **kwargs) OperationalError: database is locked </pre> Andrey Semashev https://svn.boost.org/trac10/ticket/6427 https://svn.boost.org/trac10/ticket/6427 Report #6404: Documentation bug for iterator_facade Mon, 16 Jan 2012 15:50:34 GMT Wed, 04 Jun 2014 10:11:58 GMT <p> In the documentation for iterator_facade, there's a bit of a booboo where the function is first written: </p> <pre class="wiki">iterator-category(CategoryOrTraversal, value_type, reference) </pre><p> Then defined as: </p> <pre class="wiki">iterator-category(C,R,V) </pre><p> So I think the argument order is flipped. </p> Ronald Garcia https://svn.boost.org/trac10/ticket/6404 https://svn.boost.org/trac10/ticket/6404 Report #6403: Erroneous comment Mon, 16 Jan 2012 15:49:48 GMT Wed, 04 Jun 2014 10:09:40 GMT <p> In boost/iterator/detail/facade_iterator_category.hpp, line 76, there's a comment: </p> <pre class="wiki">// If writability has been disabled per the above metafunction, the // result will not be convertible to output_iterator_tag. </pre><p> This comment corresponds to behavior that was removed in changeset: <a class="ext-link" href="https://svn.boost.org/trac/boost/changeset/21683"><span class="icon">​</span>https://svn.boost.org/trac/boost/changeset/21683</a> </p> <p> Now the result will never be convertible to output_iterator_tag. </p> Ronald Garcia https://svn.boost.org/trac10/ticket/6403 https://svn.boost.org/trac10/ticket/6403 Report #6402: boost::spirit::lazy( *X ) does not have same semantics as *X Mon, 16 Jan 2012 10:51:29 GMT Mon, 16 Jan 2012 13:37:15 GMT <p> I use a very dynamic parser where I need to inherit &amp; parse attributes using the Nabialek trick. As the Nabialek trick sadly seems to require pointer to rules for efficiency lazy must be used to deffer the derefence. However, if the rule is lets say rule&lt; Iterator, void( T&amp; ) &gt;, then it would seem it's impossible to pass T&amp; to the rule as lazy() doesn't provide the same semantics as rule&lt; Iterator, void( T&amp; ) &gt;. </p> sairony@… https://svn.boost.org/trac10/ticket/6402 https://svn.boost.org/trac10/ticket/6402 Report #6398: intermodule_singleton crash in Windows Fri, 13 Jan 2012 20:10:52 GMT Thu, 30 Oct 2014 15:00:22 GMT <p> Steps to reproduce the problem: </p> <ul><li>Create singleton_dll.dll. </li><li>Create singleton_exe.exe, which uses singleton_dll.dll. </li><li>Run. On exit, an access violation happens. </li></ul><p> Seemingly, the problem happens when two different singletons are created, one in the main executable and the other in a DLL. If both singletons are created in the same module everything's OK, though. </p> <p> More context in <a class="ext-link" href="http://lists.boost.org/Archives/boost/2012/01/189577.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2012/01/189577.php</a> </p> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/6398 https://svn.boost.org/trac10/ticket/6398 Report #6391: New reverse_graph edge descriptor type breaks shared property maps Wed, 11 Jan 2012 15:00:26 GMT Fri, 23 Mar 2012 10:35:05 GMT <p> The newly implemented data type for the edge descriptor of reversed_graph does not allow for the transparent sharing of edge property maps between the base and reversed graphs, which was possible with the old code (&lt; 1.48), since its type is not related to the base graph. This is a very useful feature, and I think it should be preserved. </p> <p> I'm sending attached a patch which makes the reversed edge descriptior a derived class from the base edge descriptor. This makes the type itself distinct from the base graph, avoiding any ambiguities, while at the same time preserving interchangeability with the base descriptor when required, e.g. when accessing property maps. This also makes the code a bit more elegant. </p> tiago@… https://svn.boost.org/trac10/ticket/6391 https://svn.boost.org/trac10/ticket/6391 Report #6369: gcc -Wshadow typedef patch Mon, 09 Jan 2012 11:08:12 GMT Mon, 23 Jan 2012 06:09:39 GMT <p> With -Wshadow and gcc 4.6.1 I get... </p> <p> <a class="missing wiki">LibreOffice</a>/core/solver/callcatcher/inc/boost/date_time/gregorian/gregorian_io.hpp: In function 'std::basic_istream&lt;_CharT, _Traits&gt;&amp; boost::gregorian::operator&gt;&gt;(std::basic_istream&lt;_CharT, _Traits&gt;&amp;, boost::gregorian::date&amp;)': <a class="missing wiki">LibreOffice</a>/core/solver/callcatcher/inc/boost/date_time/gregorian/gregorian_io.hpp:80:67: error: declaration of 'date_input_facet' shadows a global declaration [-Werror=shadow] /home/caolan/LibreOffice/core/solver/callcatcher/inc/boost/date_time/gregorian/gregorian_io.hpp:43:57: error: shadowed declaration is here [-Werror=shadow] </p> <p> patch to silence these attached </p> caolanm@… https://svn.boost.org/trac10/ticket/6369 https://svn.boost.org/trac10/ticket/6369 Report #6365: Compiler warnings when running static code analysis after build on MSVC 10 Sat, 07 Jan 2012 14:36:49 GMT Sat, 07 Jan 2012 14:36:49 GMT <p> As the title says I'm getting several compiler warnings when running static code analysis in Visual Studio 10 (attached the list to the ticket). </p> <p> The reported warnings are harmless (are only triggered by the static analyzer and not when compiling with warning level 4), but could you fix them if you have the time? </p> <p> I'm getting two type of warnings. </p> <h2 class="section" id="Warningtype1">Warning type 1</h2> <p> warning C6246: Local declaration of 'l' hides declaration of the same name in outer scope. For additional information, see previous declaration at line '131' of 'c:\users\seppe\boost_1_48_0\boost\exception\diagnostic_information.hpp': Lines: 131 c:\users\seppe\boost_1_48_0\boost\exception\diagnostic_information.hpp 140 </p> <p> warning C6246: Local declaration of 'fn' hides declaration of the same name in outer scope. For additional information, see previous declaration at line '132' of 'c:\users\seppe\boost_1_48_0\boost\exception\diagnostic_information.hpp': Lines: 132 c:\users\seppe\boost_1_48_0\boost\exception\diagnostic_information.hpp 144 </p> <p> and the affected code: </p> <pre class="wiki">130: char const * const * f=get_error_info&lt;throw_file&gt;(*be); 131: int const * l=get_error_info&lt;throw_line&gt;(*be); 132: char const * const * fn=get_error_info&lt;throw_function&gt;(*be); 133: if( !f &amp;&amp; !l &amp;&amp; !fn ) 134: tmp &lt;&lt; "Throw location unknown (consider using BOOST_THROW_EXCEPTION)\n"; 135: else 136: { 137: if( f ) 138: { 139: tmp &lt;&lt; *f; 140: if( int const * l=get_error_info&lt;throw_line&gt;(*be) ) 141: tmp &lt;&lt; '(' &lt;&lt; *l &lt;&lt; "): "; 142: } 143: tmp &lt;&lt; "Throw in function "; 144: if( char const * const * fn=get_error_info&lt;throw_function&gt;(*be) ) 145: tmp &lt;&lt; *fn; 146: else 147: tmp &lt;&lt; "(unknown)"; 148: tmp &lt;&lt; '\n'; 149: } </pre><p> Both warnings can be fixed by: </p> <ul><li>line 140: replacing if( int const * l=get_error_info&lt;throw_line&gt;(*be) ) with if( l ) </li><li>line 144: replacing if( char const * const * fn=get_error_info&lt;throw_function&gt;(*be) ) with if( fn ) </li></ul><h2 class="section" id="Warningtype2">Warning type 2</h2> <p> Only displaying the first warning. </p> <p> warning C6246: Local declaration of 'e' hides declaration of the same name in outer scope. For additional information, see previous declaration at line '300' of 'c:\users\seppe\boost_1_48_0\boost\exception\detail\exception_ptr.hpp': Lines: 300 c:\users\seppe\boost_1_48_0\boost\exception\detail\exception_ptr.hpp 332 </p> <p> and the affected code: </p> <pre class="wiki"> 296: inline 297: exception_ptr 298: current_exception_impl() 299: { 300: exception_detail::clone_base const * e=0; &lt;&lt;snip&gt;&gt; 328: try 329: { 330: throw; 331: } 332: catch( 333: exception_detail::clone_base &amp; e ) 334: { 335: return exception_ptr(shared_ptr&lt;exception_detail::clone_base const&gt;(e.clone())); 336: } ... </pre><p> Well this is more of a false positive of the static analyzer, but can be avoided by changing the variable name of the caught exception. </p> <p> <strong>Remark</strong>: A warning is generated for each caught exception in the method (see attached list). </p> seppe.de.clercq@… https://svn.boost.org/trac10/ticket/6365 https://svn.boost.org/trac10/ticket/6365 Report #6363: Incorrect error documentation for time_zone_from_region() in tz_db_base.hpp Sat, 07 Jan 2012 00:50:48 GMT Sat, 07 Jan 2012 00:50:48 GMT <p> In the event of an error, time_zone_from_region()'s documentation is incorrect in the following ways: </p> <ul><li>The function returns a null pointer. It does not throw an exception. </li><li>The specified "record_not_found" exception does not exist. </li></ul><p> Here's the doc/code in question (identical in at least 1.46.0-1.48.0): </p> <pre class="wiki"> //! Returns a time_zone object built from the specs for the given region /*! Returns a time_zone object built from the specs for the given * region. If region does not exist a local_time::record_not_found * exception will be thrown */ boost::shared_ptr&lt;time_zone_base_type&gt; time_zone_from_region(const string_type&amp; region) const { // get the record typename map_type::const_iterator record = m_zone_map.find(region); if(record == m_zone_map.end()){ return boost::shared_ptr&lt;time_zone_base_type&gt;(); //null pointer } return record-&gt;second; } </pre> nickbp@… https://svn.boost.org/trac10/ticket/6363 https://svn.boost.org/trac10/ticket/6363 Report #6358: Documentation Wed, 04 Jan 2012 20:40:27 GMT Wed, 04 Jan 2012 20:40:27 GMT <p> I want to use boost numeric conversion. </p> <p> I NEED to use boost numeric conversion. </p> <p> But I can't really figure out how to use it. </p> <p> a) the interface with policies which contain function options which contain... is just too hard to follow. I think this is a design problem. </p> <p> b) the documentation of all this isn't complete - and it reflects the interface. trying to figure it out is like pulling teeth. </p> <p> It "looks like" it depends upon numeric_limits for minimums, maximums, etc. I would hope this means that if I create my own numeric type and specialize numeric_limits for it, the convert&lt;...&gt; will "just work" and I'll get an overflow/under flow exception when I need it. But trying to verify that this works like this by looking at the documentation is like pulling teeth. I believe the library works and/or can be made to work for what I want to do, but the documentation is presenting a real obstacle so I have to look at the code itself - which I shouldn't have to do. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/6358 https://svn.boost.org/trac10/ticket/6358 Report #6353: memory layout specifiers doc clarification Tue, 03 Jan 2012 14:44:56 GMT Tue, 03 Jan 2012 14:44:56 GMT <p> <a href="http://www.boost.org/doc/libs/1_48_0/libs/multi_array/doc/reference.html#memory_layout">http://www.boost.org/doc/libs/1_48_0/libs/multi_array/doc/reference.html#memory_layout</a> </p> <p> Contains an ambiguous specification of storage ordering. This lead me to making the wrong assumption about the meaning as shown by the following post: </p> <p> <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.user/72160"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.user/72160</a> </p> <p> As indicated in that post, *if* I had read the page: </p> <p> <a href="http://www.boost.org/doc/libs/1_48_0/libs/multi_array/doc/user.html#sec_storage">http://www.boost.org/doc/libs/1_48_0/libs/multi_array/doc/user.html#sec_storage</a> </p> <p> the meaning or storage ordering would have been clear; however, I thought reading the reference.html#memory_layout page would have been the most unambiguous doc since it is the reference manual. </p> <p> I think the following snippet of code, or something similar, on the reference.html#memory_layout would make the meaning clearer: </p> <pre class="wiki"> std::vector&lt;unsigned&gt; strides_expected ( std::vector&lt;unsigned&gt; const&amp; a_permut //storage order(a permutaion 0..a_lengths.size()-1) , std::vector&lt;unsigned&gt; const&amp; a_lengths //length of axes. ) { unsigned const n=a_lengths.size(); std::vector&lt;unsigned&gt; strides(n); strides[permut_i[0]]=1; for( unsigned i=1; i&lt;n; ++i) { unsigned i_prev=permut_i[i-1]; strides[permut_i[i]]=strides[i_prev]*a_lengths[i_prev]; } return strides;//strides of the axes } </pre> cppljevans https://svn.boost.org/trac10/ticket/6353 https://svn.boost.org/trac10/ticket/6353 Report #6351: Better JSON parser Tue, 03 Jan 2012 08:58:50 GMT Tue, 07 Jul 2015 14:04:55 GMT <p> JSON parser in property_tree doesn't parse numbers and bools as their type. Instead it stores them as string. </p> <p> property_tree for JSON could be defined in other way: </p> <div class="wiki-code"><div class="code"><pre><span class="n">typedef</span> <span class="n">boost</span><span class="p">::</span><span class="n">variant</span><span class="o">&lt;</span><span class="nb">int</span><span class="p">,</span> <span class="nb">long</span><span class="p">,</span> <span class="n">std</span><span class="p">::</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">base_json_type</span><span class="p">;</span> <span class="n">typedef</span> <span class="n">boost</span><span class="p">::</span><span class="n">variant</span><span class="o">&lt;</span> <span class="n">base_json_type</span><span class="p">,</span> <span class="n">std</span><span class="p">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">base_json_type</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">composite_json_type</span><span class="p">;</span> <span class="n">typedef</span> <span class="n">boost</span><span class="p">::</span><span class="n">basic_ptree</span><span class="o">&lt;</span><span class="n">std</span><span class="p">::</span><span class="n">string</span><span class="p">,</span> <span class="n">composite_json_type</span><span class="o">&gt;</span> <span class="n">json_ptree</span><span class="p">;</span> </pre></div></div> nn-mail@… https://svn.boost.org/trac10/ticket/6351 https://svn.boost.org/trac10/ticket/6351 Report #6350: MINGW Build missing mingw.jam Tue, 03 Jan 2012 07:44:00 GMT Mon, 17 Dec 2012 06:46:45 GMT <p> If I try to build boost on Windows7 with mingw-shell: </p> <pre class="wiki"> ./bootstrap.sh --toolset=mingw </pre><p> then b2 and bjam will be build successfully, but the call </p> <pre class="wiki"> ./b2 </pre><p> fails with </p> <pre class="wiki">mingw.jam: No such file or directory d:/extswrc/boost/tools/build/v2/build\toolset.jam:38: in toolset.using rule mingw.init unknown in module toolset. Windows, these are static d:/extswrc/boost/tools/build/v2/build\project.jam:888: in using project-config.jam:12: in modules.loadsing shared runtime. On Linux, these d:/extswrc/boost/tools/build/v2\build-system.jam:257: in load-config d:/extswrc/boost/tools/build/v2\build-system.jam:423: in load-configuration-files d:/extswrc/boost/tools/build/v2\build-system.jam:555: in load d:\extswrc\boost\tools\build\v2/kernel\modules.jam:283: in import d:\extswrc\boost\tools\build\v2\kernel\bootstrap.jam:142: in boost-build d:\extswrc\boost\boost-build.jam:17: in module scopeg </pre><p> if I copy the gcc.jam to mingw.jam and rename gcc into mingw in mingw.jam then I can build boost with b2. So I would suggest to add a mingw.jam file to tools/build/v2/tools. </p> anonymous https://svn.boost.org/trac10/ticket/6350 https://svn.boost.org/trac10/ticket/6350 Report #6348: unresolved symbols when kinking with gcc-3.4.6 Mon, 02 Jan 2012 21:38:23 GMT Mon, 02 Jan 2012 21:38:23 GMT <p> This tester is reporting some unresolved symbols at link time. </p> <pre class="wiki">Test output: Sandia-gcc-3.4.6 - thread - test_condition_lib / gcc-3.4.6 Rev 76256 / Sun, 1 Jan 2012 14:31:22 +0000 Report Time: Mon, 2 Jan 2012 07:46:13 +0000 Compile [2012-01-01 15:09:10 UTC]: succeed "/sierra/Sntools/extras/compilers/gcc-3.4.6/bin/g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -pthread -fPIC -m32 -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_NO_AUTO_LINK=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -I".." -c -o "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition.o" "../libs/thread/test/test_condition.cpp" Link [2012-01-01 15:09:10 UTC]: fail "/sierra/Sntools/extras/compilers/gcc-3.4.6/bin/g++" -o "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition_lib" -Wl,--start-group "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition.o" "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/tss_null.o" "/scratch/kbelco/boost/results/boost/bin.v2/libs/test/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_unit_test_framework.a" "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -g -pthread -m32 `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) collect2: ld returned 1 exit status </pre><p> Boost.Thread doesn't link with Boost.Date and doesn't have this issue on other platform/compilers. Is there something specific on this platform that makes the link mandatory, or there is something that can be done in Boost.Thread to don't need to link? </p> viboes https://svn.boost.org/trac10/ticket/6348 https://svn.boost.org/trac10/ticket/6348 Report #6327: Error in documentation of boost::numeric::ublas::triangular_matrix Wed, 28 Dec 2011 11:26:10 GMT Wed, 28 Dec 2011 11:26:10 GMT <p> The documentation under <a href="http://www.boost.org/doc/libs/1_48_0/libs/numeric/ublas/doc/triangular.htm#1TriangularMatrix">http://www.boost.org/doc/libs/1_48_0/libs/numeric/ublas/doc/triangular.htm#1TriangularMatrix</a> says in Section 1.1: </p> <p> <em>For a (n x n )-dimensional <strong>lower</strong> triangular matrix and 0 &lt;= i &lt; n,0 &lt;= j &lt; n holds ti, j = 0 , if i &gt; j. If furthermore holds ti, i= 1 the matrix is called unit <strong>lower</strong> triangular. For a (n x n )-dimensional lower triangular matrix and 0 &lt;= i &lt; n,0 &lt;= j &lt; n holds ti, j = 0 , if i &lt; j. If furthermore holds ti, i= 1 the matrix is called unit lower triangular.</em> </p> <p> Based on the code example in Section 1.2, I think that the bolded occurrences of "lower" should be replaced with "upper", so that the above paragraph reads: </p> <p> <em>For a (n x n )-dimensional <strong>upper</strong> triangular matrix and 0 &lt;= i &lt; n,0 &lt;= j &lt; n holds ti, j = 0 , if i &gt; j. If furthermore holds ti, i= 1 the matrix is called unit <strong>upper</strong> triangular. For a (n x n )-dimensional lower triangular matrix and 0 &lt;= i &lt; n,0 &lt;= j &lt; n holds ti, j = 0 , if i &lt; j. If furthermore holds ti, i= 1 the matrix is called unit lower triangular.</em> </p> Roman Werpachowski <roman.werpachowski@…> https://svn.boost.org/trac10/ticket/6327 https://svn.boost.org/trac10/ticket/6327 Report #6325: InterlockedExchangeAdd improperly identified as managed code. Tue, 27 Dec 2011 21:44:57 GMT Fri, 24 May 2013 03:15:34 GMT <p> There is a Microsoft C++ bug that causes <a class="missing wiki">InterlockedExchangeAdd</a> to improperly be identified as managed code instead of native code. A workaround is mentioned here: <a class="ext-link" href="http://connect.microsoft.com/VisualStudio/feedback/details/629931/internal-compiler-error-c1001-when-compiling-opencv-2-1-2-2-with-c-cli-64-bit"><span class="icon">​</span>http://connect.microsoft.com/VisualStudio/feedback/details/629931/internal-compiler-error-c1001-when-compiling-opencv-2-1-2-2-with-c-cli-64-bit</a> </p> <p> This prevents programs from being compiled correctly in VS2010 </p> <p> The workaround is implemented below: </p> <p> boost\asio\detail\win_thread.hpp:45 </p> <pre class="wiki">return (1?::InterlockedExchangeAdd(&amp;terminate_threads_, 0) != 0: 0!= InterlockedExchangeAdd64((volatile LONG64 *)0,(LONG64) 0)); </pre><p> and </p> <p> boost\asio\detail\impl\winsock_init.ipp:54 </p> <pre class="wiki">long result = (1?::InterlockedExchangeAdd(&amp;d.result_, 0) : InterlockedExchangeAdd64((volatile LONG64 *)0,(LONG64) 0)); </pre><p> Implementing the above fix allows the programs to compile with a warning: </p> <pre class="wiki">warning C4793: 'boost::asio::detail::win_thread_base&lt;boost::asio::detail::win_thread&gt;::terminate_threads' : function compiled as native : 1&gt; Found an intrinsic not supported in managed code </pre><p> and </p> <pre class="wiki">warning C4793: 'boost::asio::detail::winsock_init_base::throw_on_error' : function compiled as native : 1&gt; Found an intrinsic not supported in managed code </pre><p> This is a workaround for a compiler bug, so I don't know how the boost development team wants to treat this. </p> <p> Using VS2010 compiling for a 64-bit target (amd64) </p> filmorependrgn@… https://svn.boost.org/trac10/ticket/6325 https://svn.boost.org/trac10/ticket/6325 Report #6322: Improper string formatting in example Sat, 24 Dec 2011 22:26:51 GMT Sat, 24 Dec 2011 23:38:13 GMT <p> doc/html/boost_asio/example/chat/chat_message.hpp has an improper string formatting that can cause compiler noisiness. </p> filmorependrgn@… https://svn.boost.org/trac10/ticket/6322 https://svn.boost.org/trac10/ticket/6322 Report #6320: race condition in boost::filesystem::path leads to crash when used in multithreaded programs Sat, 24 Dec 2011 00:44:29 GMT Sun, 22 Apr 2018 11:42:14 GMT <p> following app crashes on VC10 (Windows 7) (multibyte and Unicode builds) at point of creation of path (im working around the issue by doing dummy string to wstring conversion) [ </p> <blockquote> <p> wstring r; std::copy(s.begin(),s.end(),r.begin()); </p> </blockquote> <p> ] </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/thread.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/filesystem.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">sPath</span><span class="p">(</span><span class="s">&quot;c:</span><span class="se">\\</span><span class="s">Development&quot;</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">thread_group</span> <span class="n">tg</span><span class="p">;</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> <span class="n">tg</span><span class="p">.</span><span class="n">create_thread</span><span class="p">([</span><span class="o">&amp;</span><span class="n">sPath</span><span class="p">](){</span> <span class="n">boost</span><span class="o">::</span><span class="n">this_thread</span><span class="o">::</span><span class="n">sleep</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">posix_time</span><span class="o">::</span><span class="n">milliseconds</span><span class="p">(</span><span class="mi">10</span><span class="p">));</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">path</span> <span class="n">p</span><span class="p">(</span><span class="n">sPath</span><span class="p">);</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">directory_iterator</span> <span class="n">di</span><span class="p">(</span><span class="n">p</span><span class="p">),</span> <span class="n">end</span><span class="p">;</span> <span class="k">while</span><span class="p">(</span><span class="n">di</span> <span class="o">!=</span> <span class="n">end</span><span class="p">)</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">di</span><span class="o">++</span><span class="p">)).</span><span class="n">path</span><span class="p">().</span><span class="n">string</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">});</span> <span class="p">}</span> <span class="n">tg</span><span class="p">.</span><span class="n">join_all</span><span class="p">();</span> <span class="kt">int</span> <span class="n">a</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">a</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> VC10 <a class="missing wiki">CallStack</a>: </p> <pre class="wiki">&gt; msvcp100d.dll!std::codecvt&lt;wchar_t,char,int&gt;::in(int &amp; _State, const char * _First1, const char * _Last1, const char * &amp; _Mid1, wchar_t * _First2, wchar_t * _Last2, wchar_t * &amp; _Mid2) Line 1521 + 0x1f bytes C++ filesystem_crash.exe!`anonymous namespace'::convert_aux(const char * from, const char * from_end, wchar_t * to, wchar_t * to_end, std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp; target, const std::codecvt&lt;wchar_t,char,int&gt; &amp; cvt) Line 84 + 0x25 bytes C++ filesystem_crash.exe!boost::filesystem3::path_traits::convert(const char * from, const char * from_end, std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp; to, const std::codecvt&lt;wchar_t,char,int&gt; &amp; cvt) Line 165 + 0x20 bytes C++ filesystem_crash.exe!boost::filesystem3::path_traits::dispatch&lt;std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &gt;(const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; c, std::basic_string&lt;wchar_t,std::char_traits&lt;wchar_t&gt;,std::allocator&lt;wchar_t&gt; &gt; &amp; to, const std::codecvt&lt;wchar_t,char,int&gt; &amp; cvt) Line 174 + 0x7e bytes C++ filesystem_crash.exe!boost::filesystem3::path::path&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &gt;(const std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; source, void * __formal) Line 135 + 0x13 bytes C++ filesystem_crash.exe!`anonymous namespace'::&lt;lambda0&gt;::operator()() Line 15 + 0x10 bytes C++ filesystem_crash.exe!boost::detail::thread_data&lt;`anonymous namespace'::&lt;lambda0&gt; &gt;::run() Line 62 C++ filesystem_crash.exe!boost::`anonymous namespace'::thread_start_function(void * param) Line 177 C++ msvcr100d.dll!_callthreadstartex() Line 314 + 0xf bytes C msvcr100d.dll!_threadstartex(void * ptd) Line 297 C </pre> aris.basic@… https://svn.boost.org/trac10/ticket/6320 https://svn.boost.org/trac10/ticket/6320 Report #6304: parsing ptime with set facet fails Tue, 20 Dec 2011 09:02:51 GMT Mon, 23 Jan 2012 06:12:37 GMT <p> Hi, </p> <p> when parsing a ptime with "%Y-%m-%d" facet, the parser ignores checking the intermediate characters: "-". This patches makes the parser check for intermediate characters. </p> <p> Kind regards </p> <p> Thomas Lemm </p> Thomas.Lemm@… https://svn.boost.org/trac10/ticket/6304 https://svn.boost.org/trac10/ticket/6304 Report #6302: int_adapter<T>::from_special(special_values) is not inlined, so duplicated Mon, 19 Dec 2011 23:12:17 GMT Thu, 05 Jul 2012 02:42:59 GMT <p> It seems that this function </p> <pre class="wiki">template&lt;typename int_type_&gt; class int_adapter { static int_adapter from_special(special_values sv) { switch (sv) { case not_a_date_time: return not_a_number(); case neg_infin: return neg_infinity(); case pos_infin: return pos_infinity(); case max_date_time: return (max)(); case min_date_time: return (min)(); default: return not_a_number(); } } </pre><p> is not been inlined with gcc 3.4.6 and so it is duplicated at link time. See link error on regression test </p> <pre class="wiki">Test output: Sandia-gcc-3.4.6 - thread - test_condition_lib / gcc-3.4.6 Rev 76061 / Mon, 19 Dec 2011 12:54:33 +0000 Report Time: Mon, 19 Dec 2011 21:30:12 +0000 Compile [2011-12-19 13:33:17 UTC]: succeed "/sierra/Sntools/extras/compilers/gcc-3.4.6/bin/g++" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -pthread -fPIC -m32 -DBOOST_ALL_NO_LIB=1 -DBOOST_TEST_NO_AUTO_LINK=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -I".." -c -o "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition.o" "../libs/thread/test/test_condition.cpp" Link [2011-12-19 13:33:17 UTC]: fail "/sierra/Sntools/extras/compilers/gcc-3.4.6/bin/g++" -o "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition_lib" -Wl,--start-group "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/test_condition.o" "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/test/test_condition_lib.test/gcc-3.4.6/debug/address-model-32/threading-multi/tss_null.o" "/scratch/kbelco/boost/results/boost/bin.v2/libs/test/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_unit_test_framework.a" "/scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a" -Wl,-Bstatic -Wl,-Bdynamic -lrt -Wl,--end-group -g -pthread -m32 `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' referenced in section `.rodata' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o): defined in discarded section `.gnu.linkonce.t._ZN5boost9date_time11int_adapterIxE12from_specialENS0_14special_valuesE' of /scratch/kbelco/boost/results/boost/bin.v2/libs/thread/build/gcc-3.4.6/debug/address-model-32/link-static/threading-multi/libboost_thread.a(thread.o) collect2: ld returned 1 exit status </pre> viboes https://svn.boost.org/trac10/ticket/6302 https://svn.boost.org/trac10/ticket/6302 Report #6300: c++11: Provide move semantic for tuple class and factory functions Mon, 19 Dec 2011 18:19:49 GMT Mon, 19 Dec 2011 18:19:49 GMT <p> Provide a c++11 move semantic compliant tuple class and factory functions on compilers supporting rvalue references. </p> <p> On C++03 compilers use the Boost.Move emulation. </p> <p> 20.4.2 Class template tuple </p> <pre class="wiki"> template &lt;class... UTypes&gt; explicit tuple(UTypes&amp;&amp;...); tuple(tuple&amp;&amp;) = default; template &lt;class... UTypes&gt; tuple(tuple&lt;UTypes...&gt;&amp;&amp;); template &lt;class U1, class U2&gt; tuple(pair&lt;U1, U2&gt;&amp;&amp;); tuple&amp; operator=(tuple&amp;&amp;) noexcept; template &lt;class... UTypes&gt; tuple&amp; operator=(tuple&lt;UTypes...&gt;&amp;&amp;); template &lt;class U1, class U2&gt; tuple&amp; operator=(pair&lt;U1, U2&gt;&amp;&amp;) noexcept; </pre> viboes https://svn.boost.org/trac10/ticket/6300 https://svn.boost.org/trac10/ticket/6300 Report #6299: c++11: Provide move semantic for bind function Mon, 19 Dec 2011 18:08:51 GMT Mon, 19 Dec 2011 18:14:13 GMT <p> Provide a c++11 compliant bind function on compilers supporting rvalue references. </p> <p> 20.8.9.1.2 Function template bind </p> <p> template&lt;class F, class... <a class="missing wiki">BoundArgs</a>&gt; unspecified bind(F&amp;&amp; f, <a class="missing wiki">BoundArgs</a>&amp;&amp;... bound_args); </p> <p> template&lt;class R, class F, class... <a class="missing wiki">BoundArgs</a>&gt; unspecified bind(F&amp;&amp; f, <a class="missing wiki">BoundArgs</a>&amp;&amp;... bound_args); </p> viboes https://svn.boost.org/trac10/ticket/6299 https://svn.boost.org/trac10/ticket/6299 Report #6297: Warning under VC Mon, 19 Dec 2011 15:57:09 GMT Mon, 19 Dec 2011 15:57:09 GMT <p> Warning text:<br /> c:\test\boost\boost\numeric\conversion\detail\converter.hpp(166) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) </p> <blockquote> <p> c:\test\boost\boost\numeric\conversion\detail\converter.hpp(165) : while compiling class template member function 'boost::numeric::range_check_result boost::numeric::convdetail::GT_HiT&lt;Traits&gt;::apply(bool)' with [ </p> <blockquote> <p> Traits=conv_traits </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\detail\converter.hpp(236) : see reference to class template instantiation 'boost::numeric::convdetail::GT_HiT&lt;Traits&gt;' being compiled with [ </p> <blockquote> <p> Traits=conv_traits </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\detail\converter.hpp(288) : see reference to class template instantiation 'boost::numeric::convdetail::combine&lt;PredA,PredB&gt;' being compiled with [ </p> <blockquote> <p> PredA=boost::numeric::convdetail::non_applicable, PredB=boost::numeric::convdetail::GT_HiT&lt;conv_traits&gt; </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\detail\converter.hpp(287) : while compiling class template member function 'boost::numeric::range_check_result boost::numeric::convdetail::generic_range_checker&lt;Traits,<a class="missing wiki">IsNegOverflow</a>,<a class="missing wiki">IsPosOverflow</a>,<a class="missing wiki">OverflowHandler</a>&gt;::out_of_range(bool)' with [ </p> <blockquote> <p> Traits=conv_traits, <a class="missing wiki">IsNegOverflow</a>=boost::numeric::convdetail::non_applicable, <a class="missing wiki">IsPosOverflow</a>=boost::numeric::convdetail::GT_HiT&lt;conv_traits&gt;, <a class="missing wiki">OverflowHandler</a>=boost::numeric::numeric_cast_traits&lt;int,bool&gt;::overflow_policy </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\detail\converter.hpp(508) : see reference to class template instantiation 'boost::numeric::convdetail::generic_range_checker&lt;Traits,<a class="missing wiki">IsNegOverflow</a>,<a class="missing wiki">IsPosOverflow</a>,<a class="missing wiki">OverflowHandler</a>&gt;' being compiled with [ </p> <blockquote> <p> Traits=conv_traits, <a class="missing wiki">IsNegOverflow</a>=boost::numeric::convdetail::non_applicable, <a class="missing wiki">IsPosOverflow</a>=boost::numeric::convdetail::GT_HiT&lt;conv_traits&gt;, <a class="missing wiki">OverflowHandler</a>=boost::numeric::numeric_cast_traits&lt;int,bool&gt;::overflow_policy </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\converter.hpp(35) : see reference to class template instantiation 'boost::numeric::convdetail::non_rounding_converter&lt;Traits,<a class="missing wiki">RangeChecker</a>,<a class="missing wiki">RawConverter</a>&gt;' being compiled with [ </p> <blockquote> <p> Traits=conv_traits, <a class="missing wiki">RangeChecker</a>=boost::numeric::convdetail::generic_range_checker&lt;conv_traits,boost::numeric::convdetail::non_applicable,boost::numeric::convdetail::GT_HiT&lt;conv_traits&gt;,boost::numeric::numeric_cast_traits&lt;int,bool&gt;::overflow_policy&gt;, <a class="missing wiki">RawConverter</a>=boost::numeric::raw_converter&lt;conv_traits&gt; </p> </blockquote> <p> ] c:\test\boost\boost\numeric\conversion\cast.hpp(53) : see reference to class template instantiation 'boost::numeric::converter&lt;T,S,Traits,<a class="missing wiki">OverflowHandler</a>,Float2IntRounder,<a class="missing wiki">RawConverter</a>,<a class="missing wiki">UserRangeChecker</a>&gt;' being compiled with [ </p> <blockquote> <p> T=int, S=bool, Traits=conv_traits, <a class="missing wiki">OverflowHandler</a>=boost::numeric::numeric_cast_traits&lt;int,bool&gt;::overflow_policy, Float2IntRounder=boost::numeric::Trunc&lt;bool&gt;, <a class="missing wiki">RawConverter</a>=boost::numeric::raw_converter&lt;conv_traits&gt;, <a class="missing wiki">UserRangeChecker</a>=boost::numeric::numeric_cast_traits&lt;int,bool&gt;::range_checking_policy </p> </blockquote> <p> ] </p> </blockquote> <p> The code that may lead to warning is like this: </p> <pre class="wiki"> int val = boost::numeric_cast&lt;int&gt;(true); </pre> Antony Polukhin https://svn.boost.org/trac10/ticket/6297 https://svn.boost.org/trac10/ticket/6297 Report #6296: wrong has_trivial_constructor value for custom class follows to programm fail Mon, 19 Dec 2011 12:23:19 GMT Mon, 23 Jan 2012 07:20:03 GMT <p> System: </p> <blockquote> <p> -- Windows Server 2008 R2 x64 -- Visual Studio 2010 </p> </blockquote> <p> I use wrapper for MPFR (<a class="ext-link" href="http://www.holoborodko.com/pavel/mpfr/"><span class="icon">​</span>http://www.holoborodko.com/pavel/mpfr/</a>) and custom std::complex type implementation for mpreal class (see attachment) </p> <p> typedef mpfr::mpreal number; typedef std::complex&lt;number&gt; complex; typedef boost::numeric::ublas::matrix&lt;complex&gt; cmatrix; </p> <p> cmatrix m1 = E - J; <em> E, J -- cmatrix </em></p> <p> storege.hpp: explicit BOOST_UBLAS_INLINE </p> <blockquote> <p> unbounded_array (size_type size, const ALLOC &amp;a = ALLOC()): </p> <blockquote> <p> alloc_(a), size_ (size) { </p> </blockquote> <p> if (size_) { </p> <blockquote> <blockquote> <p> data_ = alloc_.allocate (size_); </p> <blockquote> <p> <em> has_trivial_constructor returns true for complex&lt;number&gt;, </em> but this is my custom class with implemented default construtor </p> </blockquote> <p> if (! detail::has_trivial_constructor&lt;T&gt;::value) { </p> <blockquote> <blockquote> <p> for (pointer d = data_; d != data_ + size_; ++d) </p> <blockquote> <p> alloc_.construct(d, value_type()); </p> </blockquote> </blockquote> </blockquote> <p> } </p> </blockquote> </blockquote> <p> } else </p> <blockquote> <blockquote> <p> data_ = 0; </p> </blockquote> </blockquote> </blockquote> <blockquote> <p> } </p> </blockquote> azubanov@… https://svn.boost.org/trac10/ticket/6296 https://svn.boost.org/trac10/ticket/6296 Report #6295: Documentation Example Error Mon, 19 Dec 2011 11:06:05 GMT Mon, 19 Dec 2011 11:24:42 GMT <p> In the example documentation for the multicast sender in the asio section (<a href="http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/example/multicast/sender.cpp">http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/example/multicast/sender.cpp</a>), the code for sending the message in the handle_timeout( ... ) method instantiates a buffer by referencing directly the 'message_' member variable, which is a std::string. This results in a 'string is not dereferanceable' exception being thrown (on Windows anyway). </p> <p> If this is changed so that buffer is created using the 'message_.data()' method then all is well. </p> anonymous https://svn.boost.org/trac10/ticket/6295 https://svn.boost.org/trac10/ticket/6295 Report #6285: fix type qualifiers ignored on function return type Sat, 17 Dec 2011 16:22:32 GMT Sat, 07 Jan 2012 18:58:08 GMT pedro.larroy.lists@… https://svn.boost.org/trac10/ticket/6285 https://svn.boost.org/trac10/ticket/6285 Report #6282: filter and other views transform the sequence type Fri, 16 Dec 2011 22:34:45 GMT Fri, 16 Dec 2011 22:34:45 GMT <p> code such as the following doesn't work. That is, none of the views can produce a set type sequence. Note this is diffferent from fusion so it is possible. I also realize that this is non-trivial enhancement. Oh well. </p> <pre class="wiki"> struct a {}; struct b {}; struct c {}; struct d {}; typedef boost::mpl::set&lt;a, b, c&gt; s1; BOOST_CONCEPT_ASSERT(( boost::mpl::AssociativeSequence&lt;s1&gt; )); typedef boost::mpl::set&lt;c, d&gt; s2; BOOST_CONCEPT_ASSERT(( boost::mpl::AssociativeSequence&lt;s2&gt; )); typedef boost::mpl::joint_view&lt;s1, s2&gt;::type sdiff; BOOST_CONCEPT_ASSERT(( boost::mpl::AssociativeSequence&lt;sdiff&gt; )); </pre><p> I know it's correct as is - that is it works according to they it's described in the manual. But it was hard to find my mistake. </p> Robert Ramey https://svn.boost.org/trac10/ticket/6282 https://svn.boost.org/trac10/ticket/6282 Report #6281: Concepts for MPL Fri, 16 Dec 2011 22:25:25 GMT Sat, 17 Dec 2011 17:17:44 GMT <p> Attached please find implementation of concepts for MPL sequences and iterators. This includes some archtypes as well as some testing of the mpl implementations. This isn't quite complete, but it does do enough to help me find some errors in my mpl usage. </p> Robert Ramey https://svn.boost.org/trac10/ticket/6281 https://svn.boost.org/trac10/ticket/6281 Report #6280: numeric_cast throws on exactly representable conversion Fri, 16 Dec 2011 21:53:37 GMT Mon, 06 Jun 2016 19:21:07 GMT <p> If a double or float representing the smallest possible value of int64_t is cast to int64_t using numeric_cast, an exception is thrown saying that a negative overflow has occured. </p> <p> I would expect the cast to work, since the value is exactly representable in the target type. Since the absolute value is a power of two, there should not be any error in the floating point representation. </p> <p> This is also reproducable in trunk, according to <a class="missing wiki">VeXocide</a>. I found the problem in Boost 1.47.0 on Windows, using MinGW 4.5.2. </p> Simeon Maxein <smaxein@…> https://svn.boost.org/trac10/ticket/6280 https://svn.boost.org/trac10/ticket/6280 Report #6279: asio needs "poll" with timeout Fri, 16 Dec 2011 16:51:19 GMT Fri, 16 Dec 2011 16:51:19 GMT <p> There were much of discussion about synchronous operations in asio with timeouts, bug <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2832" title="#2832: Bugs: Asio sync IO functions need timeout parameters (closed: wontfix)">#2832</a> for example. The main argument against it was difficulties with composed operations. I propose a compromise: some form of "poll" with timeout (poll_read/poll_write or something like that). I mean synchronous version of async_read_some(null_buffers()). If it will be implemented, it will be easy to write sync read with timeout, using combination of poll_read/read_some. I'm sure this "portable poll" will be very useful. </p> Gennady Proskurin <gpr@…> https://svn.boost.org/trac10/ticket/6279 https://svn.boost.org/trac10/ticket/6279 Report #6278: mem_fn has a different result_type Fri, 16 Dec 2011 10:54:46 GMT Mon, 22 Oct 2012 22:01:37 GMT <p> The following code does not compile: </p> <div class="wiki-code"><div class="code"><pre><span class="cm">/* </span> <span class="cm">&lt;URL: file://localhost/usr/share/doc/packages/boost-1.44.0/libs/bind/mem_fn.html#Purpose &gt;</span> <span class="cm"> All function objects returned by mem_fn expose a result_type typedef</span> <span class="cm"> that represents the return type of the member function. For data</span> <span class="cm"> members, result_type is defined as the type of the member.</span> <span class="cm">*/</span> <span class="k">typedef</span> <span class="kt">int</span> <span class="n">type_of_the_member</span><span class="p">;</span> <span class="k">struct</span> <span class="n">U</span> <span class="p">{</span> <span class="n">type_of_the_member</span> <span class="n">m</span><span class="p">;</span> <span class="p">};</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">F</span> <span class="o">&gt;</span> <span class="k">typename</span> <span class="n">F</span> <span class="o">::</span><span class="n">result_type</span> <span class="n">U_m</span> <span class="p">(</span><span class="n">F</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">,</span> <span class="n">U</span> <span class="o">&amp;</span><span class="n">u</span><span class="p">)</span> <span class="p">{</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">F</span><span class="o">::</span> <span class="n">result_type</span> <span class="n">r</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">type_of_the_member</span> <span class="n">r</span><span class="p">;</span> <span class="k">typename</span> <span class="n">F</span><span class="o">::</span> <span class="n">result_type</span> <span class="n">r1</span><span class="p">;</span> <span class="k">return</span> <span class="nf">t</span> <span class="p">(</span><span class="n">u</span><span class="p">);</span> <span class="p">}</span> <span class="n">U</span> <span class="n">u</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">x</span> <span class="p">((</span><span class="n">U_m</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">mem_fn</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">U</span> <span class="o">::</span><span class="n">m</span><span class="p">),</span> <span class="n">u</span><span class="p">)));</span> </pre></div></div><p> <a class="ext-link" href="http://codepad.org/1op6p2Mc"><span class="icon">​</span>codepad</a> says: <em>error: conflicting declaration 'typedef type_of_the_member r' </em> </p> giecrilj@… https://svn.boost.org/trac10/ticket/6278 https://svn.boost.org/trac10/ticket/6278 Report #6250: allow sorting through an adaptor Sat, 10 Dec 2011 22:15:54 GMT Wed, 21 Nov 2012 22:39:46 GMT <p> The following code does not compile because the transform adaptor offers a proxy reference that cannot be modified: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/array.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/algorithm/copy.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/adaptor/transformed.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/bind.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/algorithm/sort.hpp&gt;</span><span class="cp"></span> <span class="k">struct</span> <span class="n">underlying</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">m_</span><span class="p">;</span> <span class="p">};</span> <span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">[])</span> <span class="p">{</span> <span class="k">enum</span> <span class="n">LocalParam</span> <span class="p">{</span> <span class="n">BASE</span> <span class="o">=</span> <span class="mo">073</span><span class="p">,</span> <span class="n">VALUE</span> <span class="o">=</span> <span class="mo">030</span> <span class="p">};</span> <span class="k">typedef</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">array</span> <span class="o">&lt;</span> <span class="n">underlying</span><span class="p">,</span> <span class="o">+</span><span class="n">BASE</span> <span class="o">-</span> <span class="mo">01</span> <span class="o">&gt;</span> <span class="n">mycont</span><span class="p">;</span> <span class="n">mycont</span> <span class="n">v</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">range_iterator</span> <span class="o">&lt;</span> <span class="n">mycont</span> <span class="o">&gt;::</span> <span class="n">type</span> <span class="n">p</span> <span class="p">((</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">begin</span> <span class="p">(</span><span class="n">v</span><span class="p">)));</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">end</span> <span class="p">(</span><span class="n">v</span><span class="p">);</span> <span class="o">++</span><span class="n">p</span><span class="p">)</span> <span class="n">p</span> <span class="o">-&gt;</span> <span class="n">m_</span> <span class="o">=</span> <span class="n">p</span> <span class="o">==</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">begin</span> <span class="p">(</span><span class="n">v</span><span class="p">)</span><span class="o">?</span> <span class="o">+</span><span class="nl">VALUE</span><span class="p">:</span> <span class="n">p</span> <span class="p">[</span><span class="o">-</span><span class="mo">01</span><span class="p">]</span> <span class="p">.</span><span class="n">m_</span> <span class="o">*</span> <span class="n">VALUE</span> <span class="o">%</span> <span class="n">BASE</span><span class="p">;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">copy</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">)),</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">ostream_iterator</span> <span class="o">&lt;</span> <span class="kt">int</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">istream</span> <span class="o">::</span><span class="n">char_type</span> <span class="o">&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">));</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">sort</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">)));</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">copy</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">)),</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">ostream_iterator</span> <span class="o">&lt;</span> <span class="kt">int</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">istream</span> <span class="o">::</span><span class="n">char_type</span> <span class="o">&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">));</span> <span class="k">return</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">.</span><span class="n">flush</span> <span class="p">()</span><span class="o">?</span> <span class="o">+</span><span class="nl">EXIT_SUCCESS</span><span class="p">:</span> <span class="o">+</span><span class="n">EXIT_FAILURE</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> This is a deficiency because, when you have relational data packaged in a container, you often wish to create various indices based on various aspects of the data. This is currently unsupported by Boost, except for Multi-Index, but Multi-Index does not allow you to create a detached index; instead, it insists on maintaining all indices dynamically all the time, which is not always necessary and it brings a performance penalty compared to sorting static data. </p> <p> I have implemented the missing adaptor and called it <strong>shufflebase</strong>; when applied to an adaptor, it allows the sort algorithm to rearrange the <em>original container</em> based on <em>the ordering of the adaptor</em>. </p> <p> Here is the adaptor code; note that it does not carry any algorithm, only type juggling and general logistics: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/range/iterator_range.hpp&gt; /* boost:: iterator_range */</span><span class="cp"></span> <span class="cp">#ifndef BOOST_RANGE_ADAPTOR_SHUFFLEBASE_DEFINED</span> <span class="cp">#if 1</span> <span class="k">namespace</span> <span class="n">boost</span> <span class="p">{</span> <span class="cm">/*</span> <span class="cm">the following declarations are used in namespace adaptors;</span> <span class="cm">they are here to keep the namespace in one piece */</span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">traits</span> <span class="p">{</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">shufflebase</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.traits */</span><span class="cp"></span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="k">class</span> <span class="nc">shufflebase_iterator</span><span class="p">;</span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">adaptors</span> <span class="p">{</span> <span class="cm">/* a forward declaration for operator | */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">shufflebase_range</span><span class="p">;</span> <span class="cp">#if 3</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="k">struct</span> <span class="cm">/* tag enabler for operator | */</span> <span class="n">shufflebase_forwarder</span> <span class="p">{};</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="k">struct</span> <span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="k">const</span> <span class="o">&gt;</span> <span class="cm">/* applies the shufflebase adaptor to a range */</span> <span class="k">operator</span> <span class="o">|</span> <span class="p">(</span><span class="n">P_R</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">,</span> <span class="k">struct</span> <span class="n">detail</span><span class="o">::</span> <span class="n">shufflebase_forwarder</span> <span class="p">);</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors.detail */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">namespace</span> <span class="cm">/* static */</span> <span class="p">{</span> <span class="n">detail</span> <span class="o">::</span> <span class="n">shufflebase_forwarder</span> <span class="k">const</span> <span class="cm">/* the formal parameter for operator | */</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">shufflebase</span><span class="p">)</span> <span class="p">((</span><span class="n">detail</span> <span class="o">::</span><span class="n">shufflebase_forwarder</span> <span class="p">()));</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors.static */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">namespace</span> <span class="n">traits</span> <span class="p">{</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_T</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">shufflebase_range</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors.traits &amp; */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="cm">/* applies shufflebase_iterator to the range */</span> <span class="k">struct</span> <span class="nl">shufflebase_range</span> <span class="p">:</span><span class="k">public</span> <span class="n">traits</span> <span class="o">::</span><span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">base</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="kr">inline</span> <span class="n">shufflebase_range</span> <span class="p">(</span><span class="n">P_R</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">);</span> <span class="k">private</span><span class="o">:</span> <span class="k">typedef</span> <span class="n">traits</span> <span class="o">::</span><span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="o">&gt;</span> <span class="n">traits</span><span class="p">;</span> <span class="k">private</span><span class="o">:</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">traits</span> <span class="o">::</span><span class="n">base</span> <span class="n">base</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">traits</span> <span class="o">::</span><span class="n">iterator</span> <span class="n">iterator</span><span class="p">;</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.adaptors.shufflebase_range */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">namespace</span> <span class="n">traits</span> <span class="p">{</span> <span class="cp">#if 4</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="cm">/* typedefs for shufflebase_range proper */</span> <span class="k">struct</span> <span class="n">shufflebase_range</span> <span class="p">{</span> <span class="k">typedef</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">range_iterator</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">type</span> <span class="o">&gt;</span> <span class="n">iterator</span><span class="p">;</span> <span class="k">typedef</span> <span class="k">struct</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">iterator_range</span> <span class="o">&lt;</span> <span class="n">iterator</span> <span class="o">&gt;</span> <span class="n">base</span><span class="p">;</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.adaptors.traits.shufflebase_range */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors.traits */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="cm">/*</span> <span class="cm">Behaves transparently when applied to an adapted iterator</span> <span class="cm">except that assignments are possible and apply to the underlying base */</span> <span class="k">class</span> <span class="nc">shufflebase_iterator</span> <span class="o">:</span><span class="k">public</span> <span class="cm">/* iterator faciade */</span> <span class="n">traits</span><span class="o">::</span> <span class="n">shufflebase</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;::</span> <span class="n">base_type</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* constructs from an adapted iterator */</span> <span class="kr">inline</span> <span class="n">shufflebase_iterator</span> <span class="p">(</span><span class="n">P_I</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">);</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* inherited */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">shufflebase_iterator</span> <span class="o">::</span><span class="n">reference</span> <span class="n">reference</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* returns a proxy reference */</span> <span class="kr">inline</span> <span class="n">reference</span> <span class="cm">/* safety net: exclude application of default operator = to temporary */</span> <span class="k">const</span> <span class="k">operator</span><span class="o">*</span> <span class="p">()</span> <span class="k">const</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* inherited */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">shufflebase_iterator</span> <span class="o">::</span><span class="n">value_type</span> <span class="n">value_type</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* assigns the value to the base element, bypassing the adaptor */</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">assign</span> <span class="p">(</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_v</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* bookkeeping */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">traits</span><span class="o">::</span> <span class="n">shufflebase</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;::</span> <span class="n">base_type</span> <span class="n">inherited</span><span class="p">;</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.shufflebase_iterator */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="k">class</span> <span class="nc">shufflebase_reference</span><span class="p">;</span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="cm">/*</span> <span class="cm">Stores a value of an iterator. </span> <span class="cm">This class plays a double duty:</span> <span class="cm">it stores the base value for assigning to a reference</span> <span class="cm">and it caches the adapted value for comparisons. </span> <span class="cm">This causes some memory overhead</span> <span class="cm">that I believe is unavoidable</span> <span class="cm">without knowing the details of the managed adaptor. </span> <span class="cm">Moreover, caching the adapted value may speed things up a bit. </span> <span class="cm">This class is necessary</span> <span class="cm">because the sorting algorithm puts some values aside for later use. */</span> <span class="k">class</span> <span class="nc">shufflebase_value</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* bookkeeping */</span> <span class="k">typedef</span> <span class="n">P_I</span> <span class="n">base_type</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* construct from a reference */</span> <span class="kr">inline</span> <span class="n">shufflebase_value</span> <span class="p">(</span><span class="k">class</span> <span class="nc">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">);</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* the adapted value type */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">iterator_traits</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">value_type</span> <span class="n">adapted</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* compares as adapted */</span> <span class="kr">inline</span> <span class="k">operator</span> <span class="n">adapted</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span> <span class="k">private</span><span class="o">:</span> <span class="cm">/* the adapted value */</span> <span class="n">adapted</span> <span class="n">m_adapted</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* the base value type */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="n">traits</span> <span class="o">::</span><span class="n">shufflebase</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">base_value</span> <span class="n">base_value</span><span class="p">;</span> <span class="k">private</span><span class="o">:</span> <span class="cm">/* the base value */</span> <span class="n">base_value</span> <span class="n">m_base</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/*</span> <span class="cm">returns the base value for assignment</span> <span class="cm">(the adapter is meant to affect the base container, remember? */</span> <span class="kr">inline</span> <span class="n">base_value</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">base</span> <span class="p">()</span> <span class="k">const</span><span class="p">;</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.detail.shufflebase_value */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="cm">/*</span> <span class="cm">A proxy class serving as reference type for shufflebase_iterator. </span> <span class="cm">Implicitly converts to the adapted reference for comparisons. </span> <span class="cm">Assignment affects the base object instead.</span> <span class="cm"> */</span> <span class="k">class</span> <span class="nc">shufflebase_reference</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* bookkeeping */</span> <span class="k">typedef</span> <span class="n">P_I</span> <span class="n">base_type</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* the adapted reference type */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">iterator_traits</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">reference</span> <span class="n">reference</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* compares as adapted */</span> <span class="kr">inline</span> <span class="k">operator</span> <span class="n">reference</span> <span class="k">const</span> <span class="p">()</span> <span class="k">const</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* the adapted value type */</span> <span class="k">typedef</span> <span class="k">class</span> <span class="nc">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="n">value_type</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* assigned value goes to base */</span> <span class="kr">inline</span> <span class="n">shufflebase_reference</span> <span class="k">const</span> <span class="o">&amp;</span><span class="k">operator</span><span class="o">=</span> <span class="p">(</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_v</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* constructor */</span> <span class="kr">inline</span> <span class="n">shufflebase_reference</span> <span class="p">(</span><span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">);</span> <span class="k">private</span><span class="o">:</span> <span class="cm">/* the proxied iterator */</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">m_ref</span><span class="p">;</span> <span class="k">public</span><span class="o">:</span> <span class="cm">/* extract the base value for assigning to a value object */</span> <span class="kr">inline</span> <span class="k">typename</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">iterator_traits</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="n">base_type</span><span class="o">::</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">base</span> <span class="p">()</span> <span class="k">const</span><span class="p">;</span> <span class="k">private</span><span class="o">:</span> <span class="cm">/* references are not assignable */</span> <span class="kt">void</span> <span class="k">operator</span> <span class="o">=</span> <span class="p">(</span><span class="n">shufflebase_reference</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">);</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.detail.shufflebase_reference */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.detail */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">traits</span> <span class="p">{</span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="cm">/* contains typedefs for shufflebase_iterator */</span> <span class="k">struct</span> <span class="n">shufflebase</span> <span class="p">{</span> <span class="cm">/* bookkeeping */</span> <span class="k">typedef</span> <span class="n">P_I</span> <span class="n">iterator</span><span class="p">;</span> <span class="cm">/* the base type for shufflebase_iterator */</span> <span class="k">typedef</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">iterator_adaptor</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">iterator</span> <span class="o">&gt;</span><span class="p">,</span> <span class="n">iterator</span><span class="p">,</span> <span class="k">class</span> <span class="nc">detail</span><span class="o">::</span> <span class="n">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">iterator</span> <span class="o">&gt;</span><span class="p">,</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">use_default</span><span class="p">,</span> <span class="k">class</span> <span class="nc">detail</span><span class="o">::</span> <span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">iterator</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">base_type</span><span class="p">;</span> <span class="cm">/* the base value */</span> <span class="k">typedef</span> <span class="k">typename</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">iterator_traits</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="n">iterator</span> <span class="o">::</span><span class="n">base_type</span> <span class="o">&gt;::</span> <span class="n">value_type</span> <span class="n">base_value</span><span class="p">;</span> <span class="cm">/*</span> <span class="cm">The proper place to define base_value would be class shufflebase_value;</span> <span class="cm">however, this type is shared by other auxiliary classes;</span> <span class="cm">they depend on each other, causing the compiler to fail. */</span> <span class="p">};</span> <span class="cp">#endif </span><span class="cm">/* #boost.traits.shufflebase */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.traits */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost */</span><span class="cp"></span> <span class="cp">#define BOOST_RANGE_ADAPTOR_SHUFFLEBASE_DEFINED</span> <span class="cp">#endif</span> <span class="cp">#ifndef BOOST_RANGE_ADAPTOR_SHUFFLEBASE_IMPLEMENTED</span> <span class="cp">#if 1</span> <span class="k">namespace</span> <span class="n">boost</span> <span class="p">{</span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">adaptors</span> <span class="p">{</span> <span class="cp">#if 3</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="cp">#if 4</span> <span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="k">struct</span> <span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="k">const</span> <span class="o">&gt;</span> <span class="k">operator</span> <span class="o">|</span> <span class="p">(</span><span class="n">P_R</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">,</span> <span class="n">shufflebase_forwarder</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="k">const</span> <span class="o">&gt;</span> <span class="p">(</span><span class="n">p_r</span><span class="p">);</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.adaptors.shufflebase_range.operator| */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors.detail */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_range</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">shufflebase_range</span> <span class="p">(</span><span class="n">P_R</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">)</span> <span class="o">:</span><span class="n">base</span> <span class="p">(</span><span class="n">iterator</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">begin</span> <span class="p">(</span><span class="n">p_r</span><span class="p">)),</span> <span class="n">iterator</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">end</span> <span class="p">(</span><span class="n">p_r</span><span class="p">)))</span> <span class="p">{}</span> <span class="cp">#endif </span><span class="cm">/* !boost.adaptors.shufflebase_range.shufflebase_range */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.adaptors */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="k">typename</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">reference</span> <span class="k">const</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="k">operator</span> <span class="o">*</span> <span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.shufflebase_iterator.operator * */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="k">operator</span> <span class="n">reference</span> <span class="k">const</span> <span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="k">this</span> <span class="o">-&gt;</span> <span class="n">m_ref</span><span class="p">.</span> <span class="n">base</span> <span class="p">();</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_reference::reference */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="k">operator</span> <span class="o">=</span> <span class="p">(</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_v</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="k">this</span> <span class="o">-&gt;</span> <span class="n">m_ref</span> <span class="p">.</span><span class="n">assign</span> <span class="p">(</span><span class="n">p_v</span><span class="p">);</span> <span class="k">return</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_reference::operator = */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">shufflebase_reference</span> <span class="p">(</span><span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_ref</span><span class="p">)</span> <span class="o">:</span><span class="n">m_ref</span> <span class="p">(</span><span class="n">p_ref</span><span class="p">)</span> <span class="p">{}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_reference.shufflebase_reference */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">shufflebase_value</span> <span class="p">(</span><span class="k">class</span> <span class="nc">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">)</span> <span class="o">:</span><span class="n">m_adapted</span> <span class="p">(</span><span class="n">p_r</span><span class="p">),</span> <span class="n">m_base</span> <span class="p">(</span><span class="n">p_r</span><span class="p">.</span> <span class="n">base</span> <span class="p">())</span> <span class="p">{}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_value.shufflebase_value */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;::</span> <span class="k">operator</span> <span class="n">adapted</span> <span class="k">const</span> <span class="o">&amp;</span> <span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span> <span class="o">-&gt;</span> <span class="n">m_adapted</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_value.adapted &amp; */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="k">typename</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">iterator_traits</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="n">P_I</span> <span class="o">::</span><span class="n">base_type</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">shufflebase_reference</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span> <span class="n">base</span> <span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="k">this</span> <span class="o">-&gt;</span> <span class="n">m_ref</span> <span class="p">.</span><span class="n">base</span> <span class="p">()</span> <span class="p">.</span><span class="n">base</span> <span class="p">();</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_reference.base */</span><span class="cp"></span> <span class="cp">#if 3</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="k">typename</span> <span class="n">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">base_value</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">shufflebase_value</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">base</span> <span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span> <span class="o">-&gt;</span> <span class="n">m_base</span><span class="p">;</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.detail.shufflebase_value.base */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost.detail */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;::</span> <span class="n">shufflebase_iterator</span> <span class="p">(</span><span class="n">P_I</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_i</span><span class="p">)</span> <span class="o">:</span><span class="n">inherited</span> <span class="p">(</span><span class="n">p_i</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.shufflebase_iterator. */</span><span class="cp"></span> <span class="cp">#if 2</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_I</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="kt">void</span> <span class="n">shufflebase_iterator</span> <span class="o">&lt;</span> <span class="n">P_I</span> <span class="o">&gt;</span> <span class="o">::</span><span class="n">assign</span> <span class="p">(</span><span class="n">value_type</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_v</span><span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="o">*</span><span class="k">this</span> <span class="o">-&gt;</span> <span class="n">base</span> <span class="p">().</span> <span class="n">base</span> <span class="p">()</span> <span class="o">=</span> <span class="n">p_v</span><span class="p">.</span> <span class="n">base</span> <span class="p">();</span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* !boost.shufflebase_iterator.assign */</span><span class="cp"></span> <span class="p">}</span> <span class="cp">#endif </span><span class="cm">/* &amp;boost */</span><span class="cp"></span> <span class="cp">#define BOOST_RANGE_ADAPTOR_SHUFFLEBASE_IMPLEMENTED</span> <span class="cp">#endif</span> </pre></div></div><p> Having this, the following code becomes valid: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/array.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/algorithm/copy.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/adaptor/transformed.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/bind.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/algorithm/sort.hpp&gt;</span><span class="cp"></span> <span class="k">struct</span> <span class="n">underlying</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">m_</span><span class="p">;</span> <span class="p">};</span> <span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">[])</span> <span class="p">{</span> <span class="k">enum</span> <span class="n">LocalParam</span> <span class="p">{</span> <span class="n">BASE</span> <span class="o">=</span> <span class="mo">073</span><span class="p">,</span> <span class="n">VALUE</span> <span class="o">=</span> <span class="mo">030</span> <span class="p">};</span> <span class="k">typedef</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">array</span> <span class="o">&lt;</span> <span class="n">underlying</span><span class="p">,</span> <span class="o">+</span><span class="n">BASE</span> <span class="o">-</span> <span class="mo">01</span> <span class="o">&gt;</span> <span class="n">mycont</span><span class="p">;</span> <span class="n">mycont</span> <span class="n">v</span><span class="p">;</span> <span class="k">for</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">range_iterator</span> <span class="o">&lt;</span> <span class="n">mycont</span> <span class="o">&gt;::</span> <span class="n">type</span> <span class="n">p</span> <span class="p">((</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">begin</span> <span class="p">(</span><span class="n">v</span><span class="p">)));</span> <span class="n">p</span> <span class="o">&lt;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">end</span> <span class="p">(</span><span class="n">v</span><span class="p">);</span> <span class="o">++</span><span class="n">p</span><span class="p">)</span> <span class="n">p</span> <span class="o">-&gt;</span> <span class="n">m_</span> <span class="o">=</span> <span class="n">p</span> <span class="o">==</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">begin</span> <span class="p">(</span><span class="n">v</span><span class="p">)</span><span class="o">?</span> <span class="o">+</span><span class="nl">VALUE</span><span class="p">:</span> <span class="n">p</span> <span class="p">[</span><span class="o">-</span><span class="mo">01</span><span class="p">]</span> <span class="p">.</span><span class="n">m_</span> <span class="o">*</span> <span class="n">VALUE</span> <span class="o">%</span> <span class="n">BASE</span><span class="p">;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">copy</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">)),</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">ostream_iterator</span> <span class="o">&lt;</span> <span class="kt">int</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">istream</span> <span class="o">::</span><span class="n">char_type</span> <span class="o">&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">));</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">sort</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">))</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">shufflebase</span><span class="p">);</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">copy</span> <span class="p">(</span><span class="n">v</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">adaptors</span> <span class="o">::</span><span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span> <span class="o">::</span><span class="n">bind</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">underlying</span> <span class="o">::</span><span class="n">m_</span><span class="p">,</span> <span class="n">_1</span><span class="p">)),</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">ostream_iterator</span> <span class="o">&lt;</span> <span class="kt">int</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">istream</span> <span class="o">::</span><span class="n">char_type</span> <span class="o">&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">));</span> <span class="k">return</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span> <span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">.</span><span class="n">flush</span> <span class="p">()</span><span class="o">?</span> <span class="o">+</span><span class="nl">EXIT_SUCCESS</span><span class="p">:</span> <span class="o">+</span><span class="n">EXIT_FAILURE</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> and it produces the following output: </p> <p> 24 45 18 19 43 29 47 7 50 20 8 15 6 26 34 49 55 22 56 46 42 5 2 48 31 36 38 27 58 35 14 41 40 16 30 12 52 9 39 51 44 53 33 25 10 4 37 3 13 17 54 57 11 28 23 21 32 1 </p> <p> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 </p> giecrilj@… https://svn.boost.org/trac10/ticket/6250 https://svn.boost.org/trac10/ticket/6250 Report #6240: iterator_size Thu, 08 Dec 2011 10:43:21 GMT Wed, 21 Nov 2012 22:20:44 GMT <p> Could you add iterator_size to boost/iterator/iterator_traits.hpp? </p> <p> It'd be size_t for pointers and, since std::iterator_traits does not yet define size_type, make_unsigned iterator_difference. </p> <p> It'd be used for the size of a range as given by a valid pair of iterators. </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/6240 https://svn.boost.org/trac10/ticket/6240 Report #6236: code_converter does not allocate second buffer Wed, 07 Dec 2011 23:36:55 GMT Wed, 07 Dec 2011 23:40:04 GMT <p> The code_converter will not allocate the second buffer for bidirectional devices. </p> <p> The open method checks </p> <blockquote> <p> if (can_write::value &amp;&amp; !is_double::value) </p> </blockquote> <p> but it should be </p> <blockquote> <p> if (can_write::value &amp;&amp; is_double::value) </p> </blockquote> Steve Clementi <sclementi2@…> https://svn.boost.org/trac10/ticket/6236 https://svn.boost.org/trac10/ticket/6236 Report #6216: Add an unwrap adaptor to Range Mon, 05 Dec 2011 16:28:51 GMT Mon, 05 Dec 2011 16:28:51 GMT <p> Iterator adaptors can be easily unwrapped by calling <code>iterator .base ()</code>; range adaptors should provide a similar functionality. </p> <p> My implementation: </p> <div class="wiki-code"><div class="code"><pre><span class="k">namespace</span> <span class="n">boost</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">adaptors</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">detail</span> <span class="p">{</span> <span class="k">struct</span> <span class="n">unwrap_forwarder</span> <span class="p">{};</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_R</span> <span class="o">&gt;</span> <span class="kr">inline</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">iterator_range</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">range_iterator</span> <span class="o">&lt;</span> <span class="n">P_R</span> <span class="o">&gt;::</span> <span class="n">type</span><span class="o">::</span> <span class="n">base_type</span> <span class="o">&gt;</span> <span class="k">operator</span> <span class="o">|</span> <span class="p">(</span><span class="n">P_R</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_r</span><span class="p">,</span> <span class="n">detail</span><span class="o">::</span> <span class="n">unwrap_forwarder</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">make_iterator_range</span> <span class="p">(</span><span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">begin</span> <span class="p">(</span><span class="n">p_r</span><span class="p">).</span> <span class="n">base</span> <span class="p">(),</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">end</span> <span class="p">(</span><span class="n">p_r</span><span class="p">).</span> <span class="n">base</span> <span class="p">());</span> <span class="p">}</span> <span class="cm">/* !boost.adaptors.|unwrapped X */</span> <span class="p">}</span> <span class="cm">/* &amp;boost.adaptors.detail X */</span> <span class="k">namespace</span> <span class="p">{</span> <span class="n">detail</span><span class="o">::</span> <span class="n">unwrap_forwarder</span> <span class="k">const</span> <span class="p">(</span><span class="o">&amp;</span><span class="n">unwrapped</span><span class="p">)</span> <span class="p">((</span><span class="n">detail</span><span class="o">::</span> <span class="n">unwrap_forwarder</span> <span class="p">()));</span> <span class="p">}</span> <span class="p">}</span> <span class="cm">/* &amp;boost.adaptors X */</span> <span class="p">}</span> <span class="cm">/* &amp;boost X */</span> </pre></div></div><p> My test: </p> <div class="wiki-code"><div class="code"><pre><span class="kt">int</span> <span class="nf">main</span> <span class="p">()</span> <span class="p">{</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">iterator_range</span> <span class="o">&lt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">string</span><span class="o">::</span> <span class="n">const_iterator</span> <span class="o">&gt;</span> <span class="p">((</span><span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">equal_range</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">string</span> <span class="p">()</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">adaptors</span><span class="o">::</span> <span class="n">transformed</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">negate</span> <span class="o">&lt;</span> <span class="kt">int</span> <span class="o">&gt;</span> <span class="p">()),</span> <span class="mi">0</span><span class="p">)</span> <span class="o">|</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">adaptors</span><span class="o">::</span> <span class="n">unwrapped</span><span class="p">));</span> <span class="p">}</span> </pre></div></div> ne01026@… https://svn.boost.org/trac10/ticket/6216 https://svn.boost.org/trac10/ticket/6216 Report #6197: Maximum file name length for ODS-2 (OpenVMS) not mentioned in portability guide Fri, 02 Dec 2011 10:40:43 GMT Fri, 02 Dec 2011 10:40:43 GMT <p> In the "Path Name Protablity Guide" there is a list of length limits for names in paths for different operating systems. There should also be mentioned that the standard OpenVMS file system (ODS-2) allows only 39 characters for the filename (and another 39 for the extension). </p> <p> There is exactly one header file in the current boost distribution which has more than 39 characters in the filename (Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6196" title="#6196: Bugs: file name weighted_p_square_cumulative_distribution.hpp is too long ... (closed: fixed)">#6196</a>). </p> cmatuszewski <c.matuszewski@…> https://svn.boost.org/trac10/ticket/6197 https://svn.boost.org/trac10/ticket/6197 Report #6188: boost directory_iterator construct throw segmentation fault Thu, 01 Dec 2011 04:13:41 GMT Sun, 22 Jan 2012 15:50:02 GMT <p> Hi, if i view content of directory in ubuntu only i get a segmentation fault it allways happents in (/proc) directory. </p> anonymous https://svn.boost.org/trac10/ticket/6188 https://svn.boost.org/trac10/ticket/6188 Report #6180: attributes string ascii escape "&#nn;" shouldn't throw exception Mon, 28 Nov 2011 12:49:07 GMT Mon, 28 Nov 2011 12:49:07 GMT <p> In boost/property_tree/detail/rapidxml.hpp </p> <p> At member function template </p> <pre class="wiki">template&lt;class StopPred, class StopPredPure, int Flags&gt; static Ch *skip_and_expand_character_refs(Ch *&amp;text) </pre><p> It supports escape "&amp;amp;", "&amp;quot;", "&amp;gt;", "&amp;lt;" and "&amp;#nn;". (nn is number, xnn is also supported. When the member function template find the charactor '&amp;' it starts parsing. And if it couldn't find the correct match, escape string is ignore and just copy '&amp;' verbatim. But in the case of "&amp;#nn", the error below would occur. And this error throw the parse_error exception. </p> <pre class="wiki">BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ;", src); </pre><p> I expect just ignore instead of the error. This behavior is same as other escape string's manner. </p> <p> I attached patch. Could you check it? </p> kondo@… https://svn.boost.org/trac10/ticket/6180 https://svn.boost.org/trac10/ticket/6180 Report #6176: rolling_mean not as flexible as mean Sun, 27 Nov 2011 08:39:44 GMT Sun, 27 Nov 2011 08:39:44 GMT <p> The mean_impl struct has a <a class="missing wiki">SumFeature</a> template parameters that allows it to be used to calculate the mean of weights and the mean of variates in addition to the standard mean. </p> <p> There is no corresponding template parameter for rolling_mean_impl, so it is less flexible. If this were fixed, it would be possible to add new accumulators such as rolling_mean_of_weights, rolling_mean_of_variates, analogous to mean_of_weights, mean_of_variates. </p> s.d.c.west@… https://svn.boost.org/trac10/ticket/6176 https://svn.boost.org/trac10/ticket/6176 Report #6160: support for (istream >> array < char >) Tue, 22 Nov 2011 00:38:37 GMT Mon, 28 Nov 2011 17:17:25 GMT <ol><li><code>array &lt; T &gt;</code> is a replacement for <code>T []</code> </li><li>the standard library provides the syntax <code>(istream &gt;&gt; char [])</code> and <code>(ostream &lt;&lt; char const [])</code> </li><li>Currently, <code>(istream &gt;&gt; array &lt; char &gt;)</code> does not mean anything </li><li>this functionality cannot be simulated even with <code>std:: copy_n &lt; istreambuf_iterator &gt;</code> without manual termination and much verbosity </li></ol><h2 class="section" id="Myimplementation">My implementation</h2> <div class="wiki-code"><div class="code"><pre> <span class="cp">#include</span> <span class="cpf">&lt;boost/array.hpp&gt; /* for ::boost:: array */</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/version.hpp&gt;</span><span class="cp"></span> <span class="cp">#if +BOOST_VERSION &lt;= 0313720</span> <span class="cp">#include</span> <span class="cpf">&lt;iomanip&gt; /* for ::std:: setw */</span><span class="cp"></span> <span class="k">namespace</span> <span class="n">boost</span> <span class="p">{</span> <span class="cm">/* helper classes to prevent ambiguity in matching array &lt; char &gt; */</span> <span class="k">namespace</span> <span class="n">detail_</span> <span class="p">{</span> <span class="cm">/* normally, other char for every character type is char */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_C</span> <span class="o">&gt;</span> <span class="k">class</span> <span class="nc">other_char</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="k">typedef</span> <span class="kt">char</span> <span class="n">type</span><span class="p">;</span> <span class="p">};</span> <span class="cm">/* but other_char is undefined for char */</span> <span class="k">template</span> <span class="o">&lt;&gt;</span> <span class="k">class</span> <span class="nc">other_char</span> <span class="o">&lt;</span> <span class="kt">char</span> <span class="o">&gt;</span> <span class="p">{};</span> <span class="cm">/* class same_stream fails for istream */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_S</span><span class="p">,</span> <span class="k">class</span> <span class="nc">P_C</span> <span class="o">=</span> <span class="k">typename</span> <span class="n">other_char</span> <span class="o">&lt;</span> <span class="k">typename</span> <span class="n">P_S</span><span class="o">::</span> <span class="n">char_type</span> <span class="o">&gt;::</span> <span class="n">type</span> <span class="o">&gt;</span> <span class="k">class</span> <span class="nc">same_stream</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="k">typedef</span> <span class="n">P_S</span> <span class="n">stream</span><span class="p">;</span> <span class="p">};</span> <span class="p">}</span> <span class="cm">/* template input */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_C</span><span class="p">,</span> <span class="k">class</span> <span class="nc">P_T</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="kt">size_t</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_istream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="k">operator</span> <span class="o">&gt;&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_istream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_s</span><span class="p">,</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">array</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_a</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p_s</span> <span class="o">&gt;&gt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">setw</span> <span class="p">(</span><span class="n">p_a</span><span class="p">.</span> <span class="n">static_size</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="n">p_a</span><span class="p">.</span> <span class="n">data</span> <span class="p">();</span> <span class="p">}</span> <span class="cm">/* character input, disabled for type char to avoid ambiguity */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_C</span><span class="p">,</span> <span class="k">class</span> <span class="nc">P_T</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="kt">size_t</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="k">typename</span> <span class="n">detail_</span><span class="o">::</span> <span class="n">same_stream</span> <span class="o">&lt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_istream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&gt;::</span> <span class="n">stream</span> <span class="o">&amp;</span><span class="k">operator</span> <span class="o">&gt;&gt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_istream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_s</span><span class="p">,</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">array</span> <span class="o">&lt;</span> <span class="kt">char</span><span class="p">,</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_a</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p_s</span> <span class="o">&gt;&gt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">setw</span> <span class="p">(</span><span class="n">p_a</span><span class="p">.</span> <span class="n">static_size</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="n">p_a</span><span class="p">.</span> <span class="n">data</span> <span class="p">();</span> <span class="p">}</span> <span class="cm">/* template output */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_C</span><span class="p">,</span> <span class="k">class</span> <span class="nc">P_T</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="kt">size_t</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_ostream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="k">operator</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_ostream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_s</span><span class="p">,</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">array</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_a</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p_s</span> <span class="o">&lt;&lt;</span> <span class="n">p_a</span><span class="p">.</span> <span class="n">begin</span> <span class="p">();</span> <span class="p">}</span> <span class="cm">/* character output, disabled for type char */</span> <span class="k">template</span> <span class="o">&lt;</span> <span class="k">class</span> <span class="nc">P_C</span><span class="p">,</span> <span class="k">class</span> <span class="nc">P_T</span><span class="p">,</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="kt">size_t</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">static</span> <span class="kr">inline</span> <span class="k">typename</span> <span class="n">detail_</span><span class="o">::</span> <span class="n">same_stream</span> <span class="o">&lt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_ostream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&gt;::</span> <span class="n">stream</span> <span class="o">&amp;</span><span class="k">operator</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">basic_ostream</span> <span class="o">&lt;</span> <span class="n">P_C</span><span class="p">,</span> <span class="n">P_T</span> <span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">p_s</span><span class="p">,</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">array</span> <span class="o">&lt;</span> <span class="kt">char</span><span class="p">,</span> <span class="n">P_N</span> <span class="o">&gt;</span> <span class="k">const</span> <span class="o">&amp;</span><span class="n">p_a</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p_s</span> <span class="o">&lt;&lt;</span> <span class="n">p_a</span><span class="p">.</span> <span class="n">begin</span> <span class="p">();</span> <span class="p">}}</span> <span class="cp">#endif </span><span class="cm">/* BOOST_VERSION */</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;cstdlib&gt; /* for EXIT_SUCCESS */</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;cstdio&gt; /* for BUFSIZ */</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;iostream&gt; /* for ::std:: cin */</span><span class="cp"></span> <span class="kt">int</span> <span class="n">main</span> <span class="p">()</span> <span class="p">{</span> <span class="c1">// char (&amp;x) [+BOOST_VERSION] = 0;</span> <span class="cp">#ifdef ARRAY_IN_NATIVE</span> <span class="cm">/* native code */</span> <span class="kt">char</span> <span class="n">t</span> <span class="p">[</span><span class="o">+</span><span class="n">BUFSIZ</span><span class="p">];</span> <span class="k">return</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">setw</span> <span class="p">(</span><span class="o">+</span><span class="n">BUFSIZ</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="n">t</span> <span class="o">&amp;&amp;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">t</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="o">?</span> <span class="o">+</span><span class="nl">EXIT_SUCCESS</span><span class="p">:</span> <span class="o">+</span><span class="n">EXIT_FAILURE</span><span class="p">;</span> <span class="cp">#else </span><span class="cm">/* ARRAY_IN_NATIVE */</span><span class="cp"></span> <span class="cm">/* equivalent Boost code */</span> <span class="o">::</span><span class="n">boost</span><span class="o">::</span> <span class="n">array</span> <span class="o">&lt;</span> <span class="kt">char</span><span class="p">,</span> <span class="o">+</span><span class="n">BUFSIZ</span> <span class="o">&gt;</span> <span class="n">t</span><span class="p">;</span> <span class="cm">/* check that character input compiles for wchar_t */</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="k">sizeof</span> <span class="p">(</span><span class="n">std</span><span class="o">::</span> <span class="n">wcin</span> <span class="o">&gt;&gt;</span> <span class="n">t</span><span class="p">);</span> <span class="k">return</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">t</span> <span class="o">&amp;&amp;</span> <span class="o">::</span><span class="n">std</span><span class="o">::</span> <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">t</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="o">?</span> <span class="o">+</span><span class="nl">EXIT_SUCCESS</span><span class="p">:</span> <span class="o">+</span><span class="n">EXIT_FAILURE</span><span class="p">;</span> <span class="cp">#endif </span><span class="cm">/* ARRAY_IN_NATIVE */</span><span class="cp"></span> <span class="p">}</span> </pre></div></div> giecrilj@… https://svn.boost.org/trac10/ticket/6160 https://svn.boost.org/trac10/ticket/6160 Report #6155: VS2010 compile error in lambda, if posix_time.hpp is included. Sun, 20 Nov 2011 13:13:21 GMT Sun, 20 Nov 2011 13:35:39 GMT <p> boost 1.46.1 compiles ok.<br /> boost 1.48 gives:<br /> "error C2663: 'std::vector&lt;_Ty&gt;::at' : 2 overloads have no legal conversion for 'this' pointer" </p> <p> See annotations in attached testcase. </p> <p> Compiler error? </p> fzuuzf@… https://svn.boost.org/trac10/ticket/6155 https://svn.boost.org/trac10/ticket/6155 Report #6150: [units] The Euro sign is not correctly encoded (in UTF8 or ISO-8859-1) in a source file Sat, 19 Nov 2011 19:35:54 GMT Fri, 06 Jul 2018 09:37:00 GMT <p> An <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/libs/units/example/autoprefixes.cpp"><span class="icon">​</span>example source file</a> contains the Euro currency symbol, but is encoded neither in UTF-8 nor in ISO-8859-x. Could you replace that wrongly encoded symbol with a standard one, e.g., UTF8 (i.e., €)? </p> <p> Among other things, that issue: </p> <ul><li>wrongly displays in Web browser (as seen <a class="ext-link" href="http://svn.boost.org/svn/boost/trunk/libs/units/example/autoprefixes.cpp"><span class="icon">​</span>here</a>) </li><li>triggers errors when performing RPM packaging </li></ul> denis.arnaud_boost@… https://svn.boost.org/trac10/ticket/6150 https://svn.boost.org/trac10/ticket/6150 Report #6145: MinGW / GCC 4.6.1 warns about conflicts between Boost.Thread and Boost.InterProcess (Win32 C API) Fri, 18 Nov 2011 18:28:21 GMT Thu, 06 Nov 2014 04:14:10 GMT <p> I compile boost-1.48 with GCC 4.6.1 using MinGW-32 3.10 on Windows XP. </p> <p> My compiling options are : </p> <pre class="wiki">g++ -std=c++0x </pre><p> I encounter the following conflicts : </p> <pre class="wiki">~/boost-1.48/interprocess/detail/win32_api.hpp:808:116: warning: declaration of 'void* boost::interprocess::winapi::CreateMutexA(boost::interprocess::winapi::interprocess_security_attributes*, int, const char*)' with C language linkage [enabled by default] ~/boost-1.48/thread/win32/thread_primitives.hpp:119:55: warning: conflicts with previous declaration 'void* boost::detail::win32::CreateMutexA(boost::detail::win32::_SECURITY_ATTRIBUTES*, int, const char*)' [enabled by default] </pre><pre class="wiki">~/boost-1.48/interprocess/detail/win32_api.hpp:813:127: warning: declaration of 'void* boost::interprocess::winapi::CreateSemaphoreA(boost::interprocess::winapi::interprocess_security_attributes*, long int, long int, const char*)' with C language linkage [enabled by default] ~/boost-1.48/thread/win32/thread_primitives.hpp:120:55: warning: conflicts with previous declaration 'void* boost::detail::win32::CreateSemaphoreA(boost::detail::win32::_SECURITY_ATTRIBUTES*, long int, long int, const char*)' [enabled by default] </pre><p> The problem looks like closed tickets <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4217" title="#4217: Bugs: On Mingw-w64-i386 windows 7 plus gcc 4.5.0 gcc version 4.5.0 20100303 ... (closed: fixed)">#4217</a> and <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5030" title="#5030: Bugs: Windows API declaration mismatch (closed: invalid)">#5030</a>. </p> <p> It looks like "extern C" modifier make the compiler to ignore namespace declarations, hence the conflicts. </p> <p> For example, discarding namespaces, <strong>Boost.Thread</strong> declares CreateMutexA() like this : </p> <pre class="wiki">extern "C" { struct _SECURITY_ATTRIBUTES; __declspec(dllimport) void* __stdcall CreateMutexA('''boost::detail::win32::_SECURITY_ATTRIBUTES'''*,int,char const*); } </pre><p> whereas <strong>Boost.Interprocess</strong> declares it like this : </p> <pre class="wiki">struct interprocess_security_attributes { unsigned long nLength; void *lpSecurityDescriptor; int bInheritHandle; }; extern "C" __declspec(dllimport) void * __stdcall CreateMutexA('''boost::interprocess::winapi::interprocess_security_attributes'''*, int, const char *); </pre><p> To avoid the compiler warnings, the same type should be used for the first parameter of CreateMutexA(). </p> Cyril Othenin-Girard <cog@…> https://svn.boost.org/trac10/ticket/6145 https://svn.boost.org/trac10/ticket/6145 Report #6144: Boost::Pool doc needs a FAQ Q/A about thread-safety Fri, 18 Nov 2011 14:00:06 GMT Mon, 16 Jul 2012 20:05:01 GMT <p> See <a class="ext-link" href="http://stackoverflow.com/questions/1663284/is-boostobject-pool-synchronized"><span class="icon">​</span>http://stackoverflow.com/questions/1663284/is-boostobject-pool-synchronized</a> </p> <p> Thread-safety is only mentioned in the singleton pool doc, not saying that all the remaining is not thread-safe. Thread-safety could be something wanted for memory alloc/dealloc, on boost::pool too (even if performance is one of its goals). </p> moala@… https://svn.boost.org/trac10/ticket/6144 https://svn.boost.org/trac10/ticket/6144 Report #6142: boost::mpl/has_xxx.hpp gives several errors Fri, 18 Nov 2011 13:04:39 GMT Tue, 17 Feb 2015 21:09:23 GMT <p> when using boost 1.47.0 with gcc 4.1.2 and -Wundef -Werror, it gives the following errors </p> <pre class="wiki">boost/mpl/has_xxx.hpp:344:9: error: "BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION" is not defined boost/mpl/has_xxx.hpp:357:9: error: "BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES" is not defined mpl/has_xxx.hpp:386:9: error: "BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION" is not defined boost/mpl/has_xxx.hpp:459:8: error: "BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE" is not defined </pre><p> This problem has been already addressed by bug report 4666, but apparently its part for MPL has been forgotten. Therefore I would like to resurrect this problem again. </p> <p> Either the logic of defining these four #define's needs to be revisited in the header file, or their usage must be rewritten to check whether the #define is defined at all. For the latter case, I'm attaching a patch. </p> <p> Should you need more information, just ping me. Ivo Raisr </p> Ivo Raisr <ivosh@…> https://svn.boost.org/trac10/ticket/6142 https://svn.boost.org/trac10/ticket/6142 Report #6140: error: "MSVC_WORKAROUND_GUARD" is not defined Fri, 18 Nov 2011 11:27:37 GMT Sun, 05 Feb 2012 04:33:03 GMT <pre class="wiki">boost/parameter/aux_/unwrap_cv_reference.hpp:47:1: error: "MSVC_WORKAROUND_GUARD" is not defined boost/parameter/aux_/unwrap_cv_reference.hpp:47:1: error: "MSVC" is not defined </pre><p> There is a problem in boost/parameter/aux_/unwrap_cv_reference.hpp at line 47. It contains the following code: </p> <pre class="wiki">#if BOOST_WORKAROUND(MSVC, == 1200) </pre><p> but preprocessing fails with the errors above. I checked all boost header files and even documentation for boost/detail/workaround.hpp says, that correct form must be: </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC, == 1200) </pre><p> After this change, preprocessing is ok. There are no other occurrences of this bug in boost 1.47.0. This bug is present also in boost 1.48.0. </p> <p> Should you need more information, just ping me. </p> <p> Ivo Raisr </p> Ivo Raisr <ivosh@…> https://svn.boost.org/trac10/ticket/6140 https://svn.boost.org/trac10/ticket/6140 Report #6135: Significant speed-up in gamma rng by switching from Knuth method to Marsaglia and Tsang (2000) Thu, 17 Nov 2011 18:59:40 GMT Thu, 17 Nov 2011 18:59:40 GMT <p> When compared to the GNU Scientific Library (GSL), the generation of Gamma-distributed random numbers is very slow in Boost. A simple test, generating 100000000 random numbers, reveals </p> <p> GSL : 22.3233 MSamples/s<br /> Boost : 5.41275 MSamples/s </p> <p> where MSamples/s is million samples per second. The difference is due to Boost using the Knuth method, whereas the GSL implements a newer method by Marsaglia and Tsang (2000). </p> <p> With the attached patch, which implements the newer method, the performance improves to </p> <p> GSL : 22.7472 MSamples/s<br /> Boost : 14.5018 MSamples/s </p> <p> The remaining difference between Boost and GSL can be traced back to GSL using Zigguraut rather than Box-Muller to generate Normal random numbers. At some point I might submit a patch for normal_distribution.hpp that implements the Zigguraut algorithm. </p> <p> The attached patch exactly follows gsl_ran_gamma of GSL v1.15 (gsl-1.15/randdist/gamma.c) </p> Jan Drugowitsch <jdrugo@…> https://svn.boost.org/trac10/ticket/6135 https://svn.boost.org/trac10/ticket/6135 Report #6128: rolling_variance addition Wed, 16 Nov 2011 16:50:52 GMT Thu, 26 Jun 2014 19:19:44 GMT <p> LS, </p> <p> I have just finished writing an implementation and test of a rolling_variance which I would be happy to contribute to the framework. </p> <p> It includes a redone version of rolling_mean which avoids potential overflow and accuracy issues. The rolling_variance currently returns zero when there are less than 2 samples available. </p> <p> I'd be happy to do assist to make this fit the accumulator framework better and I include a first draft of the code. Nothing spectacular, but I have not seen the 'rolling' version being published anywhere in the exact form needed, making this non-trivial to implement anyway. </p> <ul><li>Pieter </li></ul> Pieter Ober <jaapaap@…> https://svn.boost.org/trac10/ticket/6128 https://svn.boost.org/trac10/ticket/6128 Report #6122: split_unix() strips an empty quoted string. Sun, 13 Nov 2011 15:38:25 GMT Sun, 13 Nov 2011 15:38:25 GMT <p> the split_unix() strips any empty string from input, e.g.: </p> <pre class="wiki">input = "path_to_exec arg0 \"\" arg1"; result vector: [0] = "path_to_exec" [1] = "arg0" [2] = "arg1" </pre> pluto@… https://svn.boost.org/trac10/ticket/6122 https://svn.boost.org/trac10/ticket/6122 Report #6116: In chain.hpp there is a variable named "null" Fri, 11 Nov 2011 22:00:57 GMT Fri, 11 Nov 2011 22:00:57 GMT <p> In boost/iostreams/chain.hpp on line 322 (of version 1.46 and others) there is a variable named "null". While that is legal C++, it is unfortunately all too common for people to place something like "#define null 0" somewhere else in their code base. It would be nice if that variable name could be made something like "null_device" which is less likely to cause a problem due to other code. </p> herod.scott at gmail.com https://svn.boost.org/trac10/ticket/6116 https://svn.boost.org/trac10/ticket/6116 Report #6109: Enable native typeof for IBMCPP Wed, 09 Nov 2011 22:31:30 GMT Tue, 22 Jul 2014 00:02:36 GMT <p> IBM XL C/C++ has native typeof support. </p> hstong@… https://svn.boost.org/trac10/ticket/6109 https://svn.boost.org/trac10/ticket/6109 Report #6106: New map[] directive to augment qi::symbols when doing binary parsing Tue, 08 Nov 2011 19:16:22 GMT Wed, 09 Nov 2011 06:51:45 GMT <p> qi::symbols is an exceptionally useful parser, but it is strongly tied to character strings as its input type. When doing binary parsing, one of the common tasks is de-serializing objects from the binary stream, an activity which can strongly benefit from Nabialek trick (<a class="ext-link" href="http://boost-spirit.com/home/articles/qi-example/nabialek-trick/"><span class="icon">​</span>http://boost-spirit.com/home/articles/qi-example/nabialek-trick/</a>). Another common use case are extensible enum types, a feat which is somewhat cumbersome to handle with attribute transformations. </p> <p> This is my first attempt at implementing a qi directive, so it's probably far from perfect. One of the immediate shortcomings I want to resolve is direct dependency on std::map which is also passed by value between instances. </p> <p> The implementation and a short example demonstrating Nabialek trick is attached. </p> oakad@… https://svn.boost.org/trac10/ticket/6106 https://svn.boost.org/trac10/ticket/6106 Report #6101: overhead with creating multi_array_ref with GCC 3.4.6 Mon, 07 Nov 2011 08:53:09 GMT Mon, 07 Nov 2011 08:53:09 GMT <p> We spotted this with profiler and had to switch from boost::const_multi_array_ref to just std:pair of pointers. </p> <p> GCC 3.4.6 generates huge code for this primitive function (to represent a raw pointer as a 1D-array), comparing to GCC 4.4.4: </p> <pre class="wiki">boost::const_multi_array_ref&lt;int,1&gt; make(const int* begin, const boost::array&lt;int,1&gt;&amp; size) { return boost::const_multi_array_ref&lt;int,1&gt;(begin, size); } </pre><p> The generated code and compilation options are attached. </p> Maxim Yanchenko <Maxim.Yanchenko@…> https://svn.boost.org/trac10/ticket/6101 https://svn.boost.org/trac10/ticket/6101 Report #6097: wrong filesystem::path::stem() and ..::extension() documentation Sun, 06 Nov 2011 09:07:01 GMT Wed, 15 Aug 2012 20:13:21 GMT <p> At <a href="http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/reference.html">http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/reference.html</a> we can see that path::stem is declared as </p> <pre class="wiki">path stem(const path&amp; p) const; </pre><p> while in reality it does not take any arguments. </p> <p> Same problem with extension(). </p> anonymous https://svn.boost.org/trac10/ticket/6097 https://svn.boost.org/trac10/ticket/6097 Report #6096: Consider __GNUC__ in and.hpp / or.hpp Fri, 04 Nov 2011 22:36:59 GMT Fri, 04 Nov 2011 22:36:59 GMT <p> In boost mpl header files - "and.hpp" and "or.hpp", we try to undef macros from is0646.h under Windows for processing boost headers. I see that we excluse GCCXML tool under this condition. Since we widely use mingw's 'cpp' to generate dependency files, can we also include <span class="underline">GNUC</span> macro as part of this condition? </p> <p> I am attaching the patch for this case. </p> Karthik Rajagopalan <karthik.rajagopalan@…> https://svn.boost.org/trac10/ticket/6096 https://svn.boost.org/trac10/ticket/6096 Report #6089: Non const & used in ptr_map::insert Thu, 03 Nov 2011 18:24:57 GMT Tue, 17 Jan 2017 22:15:34 GMT <p> The boost::ptr_map inserter takes a "key_type &amp;" rather than a "const key_type &amp;." This is annoying if you have a function that takes a const &amp;. I've attached a patch which should fix the problem. </p> jdoliner@… https://svn.boost.org/trac10/ticket/6089 https://svn.boost.org/trac10/ticket/6089 Report #6088: Function boost::asio::buffer() doesn't support boost::container::vector. Thu, 03 Nov 2011 16:36:17 GMT Thu, 03 Nov 2011 16:36:17 GMT <p> Function boost::asio::buffer() isn't overloaded for containers from library Boost.container. </p> Vladislav <phprus@…> https://svn.boost.org/trac10/ticket/6088 https://svn.boost.org/trac10/ticket/6088 Report #6085: Make use of statvfs() for OpenBSD with Boost.Filesystem Thu, 03 Nov 2011 11:27:58 GMT Sat, 30 Mar 2013 00:20:28 GMT <p> The attached patch makes use of statvfs() for OpenBSD with Boost.Filesystem which OpenBSD has had for many releases now. </p> brad@… https://svn.boost.org/trac10/ticket/6085 https://svn.boost.org/trac10/ticket/6085 Report #6075: Can we add policy based disabling of error checking inside math distributions? Mon, 31 Oct 2011 13:41:37 GMT Mon, 31 Oct 2011 13:41:37 GMT <p> ..from the boost dev mailing list.. </p> <p> I wrote: Would it be possible to move the detail::check_scale(d) etc into the Policy class? That way I could provide a different policy that get's eliminated compile time via an implementation like "inline policy::check_scale(d){return;}" </p> <p> John wrote: I don't think we could move all the checks inside the policy class as each distribution is more or less different, but we could pass a compile time param to the checking functions to have the same effect. In fact can you file a bug report so I don't forget? </p> thijs@… https://svn.boost.org/trac10/ticket/6075 https://svn.boost.org/trac10/ticket/6075 Report #6073: typed subarray from incompatible/raw memory Mon, 31 Oct 2011 09:28:39 GMT Mon, 31 Oct 2011 09:28:39 GMT <p> Consider this example: </p> <pre class="wiki">struct A { double x, y; }; struct B : A { double z; }; struct C { A a; double z; }; struct D { double z; A a; }; struct unknown { ...; A a; ....; }; </pre><p> Let's say I have in memory an n-dimensional array of B, or C, or D, or even unknown structure where I know only total size of the element and offset of A inside it, both in run-time (e.g. a binary file produced by <a class="missing wiki">NumPy</a>.mmap). </p> <p> What I need is a multi_array_view that could behave as an multi_array of A, given the sizeof of "real" element containing A, and offset of A inside it, like this: </p> <pre class="wiki">void* p = mmap(...); size_t el_size = size_of_element_in_p; size_t offset = offset_of_A_inside_element; boost::multi_array::multi_array_typed_view&lt;A, NumDims&gt; my_view(p, extents, el_size, offset ); </pre><p> Strided view (boost::detail::multi_array::multi_array_view) could do the job in simple cases when size of "real" element is a multiple of sizeof(A), but not in the above case. </p> Maxim Yanchenko <Maxim.Yanchenko@…> https://svn.boost.org/trac10/ticket/6073 https://svn.boost.org/trac10/ticket/6073 Report #6072: Bad iterator difference for m.begin1() - m.end1() in ublas Sun, 30 Oct 2011 12:20:23 GMT Sun, 30 Oct 2011 12:20:23 GMT <p> In functional.hpp at a couple of places, for example: </p> <blockquote> <p> static BOOST_UBLAS_INLINE difference_type distance_i (difference_type k, size_type /* size_i */, size_type size_j) { </p> <blockquote> <p> return size_j != 0 ? k / size_j : 0; </p> </blockquote> <p> } </p> </blockquote> <p> k [ / | % ] size_[ i | j ] is used, where k is difference_type (signed), size_i|j is size_type (unsigned). This results in promoting k to unsigned, and can yield very strange results when k is negative. </p> <p> For example, m being a size 2x2 ublas::matrix, m.begin1() - m.end1() yields 2147483646 instead of -2. </p> <p> Putting a static_cast&lt;difference_type&gt;(size_i|j) in functional.hpp seems to solve the problem. </p> Robin Palotai <palotai.robin@…> https://svn.boost.org/trac10/ticket/6072 https://svn.boost.org/trac10/ticket/6072 Report #6070: extends::operator() and operator= eagerly compute return type can result in hard error Sat, 29 Oct 2011 04:21:54 GMT Sat, 29 Oct 2011 04:21:54 GMT <p> In the cases when unary operator() and operator= are invalid in a particular domain, the return types of extends::operator() and operator= should not be computed. (Well, ideally, those functions shouldn't exist at all, but we live in an imperfect world.) Trouble is, as soon as the extends template is instantiated, the return types for those functions are eagerly computed, causing the generator to operate on a type that it may not be able to handle. This can cause a hard error. </p> <p> See <a class="ext-link" href="http://lists.boost.org/proto/2011/10/0595.php"><span class="icon">​</span>http://lists.boost.org/proto/2011/10/0595.php</a> for a full description of this issue. </p> <p> The attached patch addresses the issue. It may have compile time implications, though. </p> Eric Niebler https://svn.boost.org/trac10/ticket/6070 https://svn.boost.org/trac10/ticket/6070 Report #6066: Getting back std::string from a utree string node throws std::bad_cast Thu, 27 Oct 2011 13:50:21 GMT Thu, 27 Oct 2011 13:50:21 GMT <p> When using: </p> <p> std::string s1("test"); boost::spirit::utree u = s1; </p> <p> Either of: </p> <blockquote> <p> std::string s2 = u.get&lt;std::string&gt;(); </p> </blockquote> <p> or </p> <blockquote> <p> std::string s2 = u.get&lt;boost::spirit::utf8_string_type&gt;(); </p> </blockquote> <p> fail with a "std::bad_cast" thrown. </p> <p> Proceeding with: </p> <blockquote> <p> boost::spirit::utf8_string_range_type rt = u.get&lt;spirit::utf8_string_range_type&gt;(); std::string s2(rt.begin(), rt.end()); </p> </blockquote> <p> works fine... </p> <p> Please see attached file for a complete example. </p> Rémy Chibois <rchibois@…> https://svn.boost.org/trac10/ticket/6066 https://svn.boost.org/trac10/ticket/6066 Report #6065: Accessing Windows paths with non-ANSI characters fails with g++ Thu, 27 Oct 2011 13:20:17 GMT Thu, 27 Oct 2011 13:20:17 GMT <p> For example, the tut5 example in Boost.Filesystem's tutorial does not work with g++ 4.4.1 (it fails to create the filenames with smileys), but that example does work with Visual C++ 10.0. </p> <p> "ANSI" here refers to the process' "ANSI codepage". </p> <p> By default in a US or Western European Windows installation that's codepage 1252, Windows ANSI Western. </p> <p> Cause: Boost.Filesystem uses extensions in the Dinkumware standard library implementation to provide general Unicode access to paths in Windows. g++'s standard library lacks those extension as of version 4.4.1 (and probably up to and including the latest version). Extending the g++ standard library in a similar way as Dinkumware was discussed in June 2011, &lt;url: http://gcc.gnu.org/ml/libstdc++/2011-06/msg00066.html&gt;, but as far as I know nothing more came of that. </p> <p> Boost.Filesystem v2 worked around the g++ implementation by using Windows short filenames and the Windows API-funcion <a class="missing wiki">CreateFile</a> for creation of files. One problem is that the user IN PRINCIPLE can turn off generation of short filenames as a marginal optimization. However, Windows uses short filenames in the registry, reportedly MSI (the Microsoft Installer) uses short filenames, etc., so it's a very unlikely scenario. In the unlikely event that a user does turn off short names, then programs using the v2 workaround will fail in the same way as if they didn't have the workaround, i.e. as currently. </p> alf.p.steinbach@… https://svn.boost.org/trac10/ticket/6065 https://svn.boost.org/trac10/ticket/6065 Report #6063: resize does not offset rectangles (etc.) correctly or crashes Wed, 26 Oct 2011 21:18:46 GMT Mon, 10 Feb 2014 22:06:28 GMT <p> When using the 'corner_fill_arc' parameter to polygon_set_concept&lt;T&gt;::resize(), a minkowski sum using a polygonalized circle is used to get the offset shape. </p> <p> A symptom of the problem is demonstrated by the following code: </p> <pre class="wiki"> { polygon_set_data&lt;int&gt; ps1, ps2, ps3; ps1.insert(rectangle_data&lt;int&gt;(0, 0, 50, 50)); ps2.insert(rectangle_data&lt;int&gt;(0, 0, 50, 50)); ps3.insert(rectangle_data&lt;int&gt;(0, 0, 50, 50)); std::cout &lt;&lt; "rect before resize: " &lt;&lt; ps1 &lt;&lt; std::endl; ps1.resize(6, true, 0); ps2.resize(6, true, 5); ps3.resize(6, true, 6); rectangle_data&lt;int&gt; ps1_extents, ps2_extents, ps3_extents; extents(ps1_extents, ps1); extents(ps2_extents, ps2); extents(ps3_extents, ps3); std::cout &lt;&lt; "extents of resized rect with '0' (4) segments in circle: " &lt;&lt; ps1_extents &lt;&lt; std::endl; std::cout &lt;&lt; "extents of resized rect with 5 segments in circle: " &lt;&lt; ps2_extents &lt;&lt; std::endl; std::cout &lt;&lt; "extents of resized rect with 6 segments in circle: " &lt;&lt; ps3_extents &lt;&lt; std::endl; } </pre><p> If I put this at the end of the gtl_boost_unit_test.cpp, I get the following output: </p> <pre class="wiki">rect before resize: Polygon Set Data { &lt;0 0, 50 0&gt;:1 &lt;50 0, 50 50&gt;:-1 &lt;0 50, 50 50&gt;:-1 &lt;0 0, 0 50&gt;:1 } extents of resized rect with '0' (4) segments in circle: -5 54 -5 54 extents of resized rect with 5 segments in circle: -6 54 -6 55 extents of resized rect with 6 segments in circle: -6 55 -6 56 </pre><p> This shows that the extents of the offset shape vary as the number of segments does - which should not be the case! </p> <p> The extents should all be: -6 56 -6 56 </p> <hr /> <p> The problem (to my eyes) is that the polygonalized circle does not generally have the right shape to get proper offsets in axis-oriented directions, so the offset is basically multiplied by some factor of sqrt(2). Attached is an image of the circle generated with num_circle_segments=16. The radius of the circle - i.e. distance from center to each vertex - is 2. The grid spacing is 1. As can be seen, the top/bottom and left/right sides of the circle do not lie on the grid. If the circle started with a vertex at(0,2) this would not occur and one would presumably get proper offsets in axis-aligned directions. Alternately one could offset all the vertices slightly farther, but this would offset some vertices farther than desired. </p> <p> I would guess the fix is to change the behaviour of make_arc(), which generates these points, but I'm not sure exactly what the original author's intent was - so maybe just using a new function would be best (after all, the complexity of make_arc is overkill when you're generating a simple full circle) </p> <hr /> <p> Another problem is that the behaviour of the 'corner_fill_arc' parameter is not really well described. Using this gives much more than corner-filling behaviour - it gives different offsets in different directions. I would suggest explaining it as it is - a minkowski sum with a polygonalized circle, with all that implies. </p> <p> E.g. for a 45-degree segment the offset will differ from a 90-degree segment unless you pick the right value of num_circle_segments. </p> <p> Maybe a more comprehensible solution would be to implement corner rounding by the intersection of the normal resize()d shape (as given by corner_fill_arc=false) with the resize()d shape given by corner_fill_arc=true with a larger 'resizing' (picked so that the minimum resizing equals the original resizing). </p> <p> This would only affect corners, instead of the whole shape. </p> dbfaken@… https://svn.boost.org/trac10/ticket/6063 https://svn.boost.org/trac10/ticket/6063 Report #6056: units/test_output: unqualified sqrt() fails to compile on SunCC/SunOS Tue, 25 Oct 2011 10:59:36 GMT Tue, 25 Oct 2011 11:02:26 GMT <p> Compiling Boost/units test_output on SunOS with SunCC: </p> <pre class="wiki">] sunCC -library=stlport4 -I../ ../libs/units/test/test_output.cpp "../libs/units/test/test_output.cpp", line 242: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 242: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 336: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 336: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 384: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 384: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 393: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 393: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 394: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 394: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 395: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 395: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 396: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 396: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 397: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 397: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 413: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 413: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 414: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 414: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 415: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 415: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 416: Error: The function "pow" must have a prototype. "../libs/units/test/test_output.cpp", line 416: Error: The function "pow" must have a prototype. 24 Error(s) detected. </pre><p> The standard math header included here - <strong>&lt;cmath&gt;</strong> - does not inject math functions into the global namespace. The only standard way to use these functions (pow included) is via std:: namespace. </p> <p> All the uses of pow should be converted to std::pow, otherwise compilers with strictly conforming standard headers (like SunCC) will not be able to compile. </p> <p> std::pow works fine with all the compilers I tried (SunCC, g++). </p> <p> (suggested patch attached) </p> Fedor Sergeev <Fedor.Sergeev@…> https://svn.boost.org/trac10/ticket/6056 https://svn.boost.org/trac10/ticket/6056 Report #6055: unqualified sqrt() fails to compile on SunCC/SunOS Tue, 25 Oct 2011 10:34:51 GMT Tue, 25 Oct 2011 10:38:54 GMT <p> Compiling uBlas' test_complex_norms on SunOS with SunCC: </p> <pre class="wiki">] sunCC -library=stlport4 -I../ ../libs/numeric/ublas/test/test_complex_norms.cpp "../libs/numeric/ublas/test/test_complex_norms.cpp", line 37: Error: The function "sqrt" must have a prototype. "../libs/numeric/ublas/test/test_complex_norms.cpp", line 37: Error: The function "sqrt" must have a prototype. "../libs/numeric/ublas/test/test_complex_norms.cpp", line 65: Error: The function "sqrt" must have a prototype. "../libs/numeric/ublas/test/test_complex_norms.cpp", line 65: Error: The function "sqrt" must have a prototype. 4 Error(s) detected. </pre><p> The standard math header included here - &lt;cmath&gt; - does not inject math functions into the global namespace. The only standard way to use these functions (sqrt included) is via std:: namespace. </p> <p> All the uses of sqrt should be converted to std::sqrt, otherwise compilers with strictly conforming STLs (like SunCC -stlport4) will not be able to compile. </p> <p> std::sqrt works fine with all the compilers I tried (SunCC, g++). </p> <p> (suggested patch attached) </p> Fedor Sergeev <Fedor.Sergeev@…> https://svn.boost.org/trac10/ticket/6055 https://svn.boost.org/trac10/ticket/6055 Report #6047: functions round_cast and trunc_cast Sat, 22 Oct 2011 11:48:56 GMT Sat, 22 Oct 2011 11:48:56 GMT <p> The functions are general versions of iround, and alike functions. </p> <pre class="wiki">template &lt; class R, class T, class Policy &gt; inline R round_cast( T const&amp; x, Policy const&amp; pol ) { BOOST_MATH_STD_USING T r = boost::math::round(x,pol); if( r &gt; boost::integer_traits&lt;R&gt;::const_max || r &lt; boost::integer_traits&lt;R&gt;::const_min ) return static_cast&lt;R&gt;( boost::math::policies::raise_rounding_error( "cz::ar::round_cast&lt;target_type,%1%&gt;(%1%)", 0, x, pol ) ); return static_cast&lt;R&gt;(r); } template &lt; class R, class T &gt; inline R round_cast( T const&amp; x ) { return round_cast&lt;R&gt;( x, boost::math::policies::policy&lt;&gt;() ); } </pre><p> Analogically for trunc()... </p> 1czajnik@… https://svn.boost.org/trac10/ticket/6047 https://svn.boost.org/trac10/ticket/6047 Report #6045: Date/Time: dst_calculator::local_is_dst doesn't deal with DST changeover at end of day Thu, 20 Oct 2011 23:26:32 GMT Tue, 03 Mar 2015 15:07:36 GMT <p> Hello boosters, </p> <p> dst_calculator::local_is_dst assumes that the hour lost in the "forward" DST changeover (in Spring, when DST begins) fully occurs within a single day. If your time zone rule specifies that DST begins at 23:59:99.999 on October 15th, with a duration of an hour, and you attempt to create a ptime for 00:00:00.000 on October 16th, it will succeed even though it ought to return invalid_time_label. </p> <p> I admit that this seems like an odd case, and personally I would expect all DST offsets to be in the 0h-3h range. However if you are creating custom time zones based on the win32 time zone information, the <a class="missing wiki">GetTimeZoneInformation</a> API returns a TIME_ZONE_INFORMATION struct with values returned a millisecond before midnight. Specifically this happens with Brasilian standard/daylight time. </p> <p> For now I am "cleaning up" these odd values returned from windows, but boost probably should do this calculation correctly to begin with. </p> <p> I can provide a repro case if need be, although I think the behaviour of the code in question is pretty clear. </p> <p> Thanks, </p> <p> Matt Adam </p> Matt Adam <matt.adam@…> https://svn.boost.org/trac10/ticket/6045 https://svn.boost.org/trac10/ticket/6045 Report #6037: Errors at https://svn.boost.org/trac/ Wed, 19 Oct 2011 22:51:12 GMT Sun, 26 Jan 2014 21:49:55 GMT <p> bin: Error ([Errno 2] No such file or directory: '/opt/trac/bin/VERSION') Boost C++ Libraries cache: Error ([Errno 2] No such file or directory: '/opt/trac/cache/VERSION') include: Error ([Errno 2] No such file or directory: '/opt/trac/include/VERSION') lib: Error ([Errno 2] No such file or directory: '/opt/trac/lib/VERSION') OSL Test trac share: Error ([Errno 2] No such file or directory: '/opt/trac/share/VERSION') </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/6037 https://svn.boost.org/trac10/ticket/6037 Report #6034: Problem of the split function in boost/date_time/time_parsing.hpp Wed, 19 Oct 2011 12:13:46 GMT Wed, 19 Oct 2011 12:21:07 GMT <p> If we call the function <strong>split</strong> with the string "2010-01-01" and " " as delimiter then the function sets the variables <strong>first</strong> and <strong>second</strong> with "2010-01-01" Maybe we should write this piece of code to initialize the parameter <strong>second</strong> with the correct value. </p> <pre class="wiki">bool split(const std::string&amp; s, char sep, std::string&amp; first, std::string&amp; second) { int sep_pos = static_cast&lt;int&gt;(s.find(sep)); first = s.substr(0,sep_pos); second = sep_pos == -1 ? "" : s.substr(sep_pos+1); return true; } </pre> fbriol@… https://svn.boost.org/trac10/ticket/6034 https://svn.boost.org/trac10/ticket/6034 Report #6026: phoenix block statement tries to copy objects instead of references Fri, 14 Oct 2011 16:17:15 GMT Mon, 09 May 2016 15:02:25 GMT <p> Let's use a simplest class, that can't be copied: </p> <pre class="wiki">class A { A() {} A(const A&amp;); public: static A* construct() { return new A(); } const A&amp; operator&lt;&lt;(const char *p) const { return *this; } }; A *pa = A::construct(); A &amp;a = *pa; </pre><p> The code which use this object one time normally works: </p> <pre class="wiki">(boost::phoenix::ref(a) &lt;&lt; boost::phoenix::placeholders::_1)("aaa"); </pre><p> But when I try to use this object two times, I get an error: </p> <pre class="wiki">( boost::phoenix::ref(a) &lt;&lt; boost::phoenix::placeholders::_1 ,boost::phoenix::ref(a) &lt;&lt; boost::phoenix::placeholders::_1 )("aaa"); </pre><p> Result: 'A::A' : cannot access private member declared in class 'A' </p> <p> Expecting: pass compilation and invoke "A::operator&lt;&lt;" two times. </p> <p> Note: preprocessing directive "BOOST_SPIRIT_USE_PHOENIX_V3" was defined. </p> armagvvg@… https://svn.boost.org/trac10/ticket/6026 https://svn.boost.org/trac10/ticket/6026 Report #6024: Behaviour and documentation don't match Fri, 14 Oct 2011 07:33:14 GMT Fri, 14 Oct 2011 07:33:14 GMT <p> Hi, </p> <blockquote class="citation"> <p> explicit char_separator() </p> </blockquote> <p> Explicit? Doesn't explicit only apply to one argument constructors? </p> <blockquote class="citation"> <p> The function std::isspace() is used to identify dropped delimiters and std::ispunct() is used to identify kept delimiters. In addition, empty tokens are dropped. </p> </blockquote> <blockquote> <p> std::string s("<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">[5]</a>[]9"); BOOST_FOREACH(auto i, boost::tokenizer&lt;&gt;(s)) </p> <blockquote> <p> std::cout &lt;&lt; i &lt;&lt; std::endl; </p> </blockquote> </blockquote> <p> This outputs only numbers. Shouldn't the brackets be included too? </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/6024 https://svn.boost.org/trac10/ticket/6024 Report #6018: Add touch() and create_file() functions Thu, 13 Oct 2011 12:38:26 GMT Thu, 13 Oct 2011 12:38:51 GMT <p> A function with the functionality of the POSIX touch utility would be a great convenience. It meets both the need to update times and the need to create a file. </p> <p> OTOH, it is a bit of a mishmash of logically separate features. Maybe what is really needed is a create_file() function that errors if the file already exists and a touch() function that errors if the file doesn't exist. </p> <p> Alternatively, both could return a bool, true if successful, and not consider it an error if the file, respectfully, already/doesn't exist. </p> Beman Dawes https://svn.boost.org/trac10/ticket/6018 https://svn.boost.org/trac10/ticket/6018 Report #6010: Linkage problems in assignment.hpp Tue, 11 Oct 2011 18:03:01 GMT Thu, 24 Jan 2013 19:45:32 GMT <p> Original report in uBlas mailing list: </p> <pre class="wiki">Hi, I started using ublas's "&lt;&lt;=" assignment, and I'm starting to regret it. First symptom: if I compile with the gcc flag -Wmissing-prototypes I get the following warnings: In file included from /Users/devernay/Development/stereocam/surf/CameraMatrixP.hpp:16, from /Users/devernay/Development/stereocam/surf/TriFocalTensor/Trifocaltensor.hpp:18, from /Users/devernay/Development/stereocam/surf/TriFocalTensor/TrifocaltensorBundleAdjustement.cpp:20: /opt/local/include/boost/numeric/ublas/assignment.hpp:454: warning: no previous prototype for 'boost::numeric::ublas::begin1_manip boost::numeric::ublas::begin1()' /opt/local/include/boost/numeric/ublas/assignment.hpp:498: warning: no previous prototype for 'boost::numeric::ublas::begin2_manip boost::numeric::ublas::begin2()' /opt/local/include/boost/numeric/ublas/assignment.hpp:543: warning: no previous prototype for 'boost::numeric::ublas::next_row_manip boost::numeric::ublas::next_row()' /opt/local/include/boost/numeric/ublas/assignment.hpp:587: warning: no previous prototype for 'boost::numeric::ublas::next_column_manip boost::numeric::ublas::next_column()' /opt/local/include/boost/numeric/ublas/assignment.hpp:888: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_row_policy&lt;boost::numeric::ublas::traverse_policy::wrap&gt; boost::numeric::ublas::traverse_policy::by_row()' /opt/local/include/boost/numeric/ublas/assignment.hpp:892: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_row_policy&lt;boost::numeric::ublas::traverse_policy::wrap&gt; boost::numeric::ublas::traverse_policy::by_row_wrap()' /opt/local/include/boost/numeric/ublas/assignment.hpp:896: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_row_policy&lt;boost::numeric::ublas::traverse_policy::no_wrap&gt; boost::numeric::ublas::traverse_policy::by_row_no_wrap()' /opt/local/include/boost/numeric/ublas/assignment.hpp:900: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_column_policy&lt;boost::numeric::ublas::traverse_policy::wrap&gt; boost::numeric::ublas::traverse_policy::by_column()' /opt/local/include/boost/numeric/ublas/assignment.hpp:904: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_column_policy&lt;boost::numeric::ublas::traverse_policy::wrap&gt; boost::numeric::ublas::traverse_policy::by_column_wrap()' /opt/local/include/boost/numeric/ublas/assignment.hpp:908: warning: no previous prototype for 'boost::numeric::ublas::traverse_policy::by_column_policy&lt;boost::numeric::ublas::traverse_policy::no_wrap&gt; boost::numeric::ublas::traverse_policy::by_column_no_wrap()' But the second symptom is more critical: Since these symbols are defined in EVERY file that includes them, I cannot link anything and I get tons of "multiply defined symbols". Looking at the file, I found out that: - begin1(), begin2(), and a few others are not inlined, but conditionally inlined, using BOOST_UBLAS_INLINE (which inlines only if NDEBUG is defined), and are NOT members of classes, thus the multiply defined symbols... - boost::numeric::ublas::traverse_policy::by_row() and other are just defined, and not inlined. So, really, what's the solution? Here's what I think: BOOST_UBLAS_INLINE should ONY be used for class members, NOT for functions, which should be simply declared "inline". by_row() and friends should either be inlined or declared as static members of an empty class. I tried putting the magic word "inline" in front of each of these, and it works. fred </pre> nasos_i@… https://svn.boost.org/trac10/ticket/6010 https://svn.boost.org/trac10/ticket/6010 Report #5997: Listening on multiple endpoints (doc / acceptor group) Sat, 08 Oct 2011 11:11:44 GMT Sat, 08 Oct 2011 11:11:44 GMT <p> Could you add an example of listening on multiple endpoints? I assume this requires multiple acceptors. Those could be stored in a ptr container. Maybe an acceptor group (like thread group) might be useful? </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/5997 https://svn.boost.org/trac10/ticket/5997 Report #5996: Warnings when compiled with "-Wshadow" Sat, 08 Oct 2011 10:30:46 GMT Fri, 27 Apr 2012 07:37:28 GMT <p> g++ 4.4.5 reports warnings when compiles various components with "-Wshadow", files: </p> <pre class="wiki">boost/ptr_container/exception.hpp boost/ptr_container/detail/move.hpp boost/ptr_container/detail/static_move_ptr.hpp boost/ptr_container/detail/reversible_ptr_container.hpp boost/unordered/detail/equivalent.hpp boost/unordered/detail/buckets.hpp boost/unordered/detail/emplace_args.hpp boost/unordered/detail/unique.hpp boost/concept_check.hpp </pre><p> Similar tickets: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5439" title="#5439: Bugs: warning on dynamic bitset (closed: fixed)">#5439</a>, <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4362" title="#4362: Patches: boost/archive gcc warning cleanup (closed: fixed)">#4362</a>, <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4365" title="#4365: Patches: boost/signals gcc warning cleanup (closed: fixed)">#4365</a> . </p> <p> Those warnings exists in both Boost 1.47.0 and svn trunk 74788, I attached a patch file against svn trunk 74788. </p> Shuo Chen <giantchen@…> https://svn.boost.org/trac10/ticket/5996 https://svn.boost.org/trac10/ticket/5996 Report #5992: opening wide character string paths in memory-mapped file Fri, 07 Oct 2011 15:08:11 GMT Sat, 13 Feb 2016 19:10:22 GMT <p> Without support for wide character string paths, we cannot easily open files with Unicode paths in Windows. This makes interprocess/file_mapping practically unusable for Windows programming. A suggestion might be to abstract out the use of raw strings for paths by using filesystem. </p> <p> Without the fix, we are using Win32 API to open memory-mapped files and forking the code for other platforms. </p> Jim Park <jim@…> https://svn.boost.org/trac10/ticket/5992 https://svn.boost.org/trac10/ticket/5992 Report #5988: boost::filesystem::absolute doesn't work with ../relative_path or ./relative_path Fri, 07 Oct 2011 04:21:02 GMT Fri, 07 Oct 2011 07:09:20 GMT <p> In boost filesystem v3, boost::filesystem::absolute only appends the relative path to base path. It should also remove "./" from relative paths and "backtrack" on base path if relative path contains "../../" etc. </p> <p> For example, Input: </p> <blockquote> <p> "d:\current\path" ".\..\relative\path" </p> </blockquote> <p> Result obtained: </p> <blockquote> <p> "d:\current\path\.\..\relative\path" </p> </blockquote> <p> Desired result: </p> <blockquote> <p> "d:\current\relative\path" </p> </blockquote> Sachin Garg <schngrg@…> https://svn.boost.org/trac10/ticket/5988 https://svn.boost.org/trac10/ticket/5988 Report #5987: Error in boost-build/jam_src/build.bat Fri, 07 Oct 2011 03:26:13 GMT Fri, 07 Oct 2011 03:26:13 GMT <p> in :Start if "_%1_" == "<span class="underline">" ( </span></p> <blockquote> <p> call :Guess_Toolset if not errorlevel 1 goto Setup_Toolset </p> </blockquote> <p> ) else ( </p> <blockquote> <p> call :Test_Option "%1" if not errorlevel 1 ( &lt;-- error here </p> <blockquote> <p> call :Guess_Toolset if not errorlevel 1 goto Setup_Toolset </p> </blockquote> <p> ) else ( </p> <blockquote> <p> setlocal &amp; endlocal set "BOOST_JAM_TOOLSET=%1" shift goto Setup_Toolset </p> </blockquote> <p> ) </p> </blockquote> <p> ) </p> <p> is incorrect, will always ignore specified toolset, should be </p> <p> if "_%1_" == "<span class="underline">" ( </span></p> <blockquote> <p> call :Guess_Toolset if not errorlevel 1 goto Setup_Toolset </p> </blockquote> <p> ) else ( </p> <blockquote> <p> call :Test_Option "%1" if errorlevel 1 ( </p> <blockquote> <p> call :Guess_Toolset if not errorlevel 1 goto Setup_Toolset </p> </blockquote> <p> ) else ( </p> <blockquote> <p> setlocal &amp; endlocal set "BOOST_JAM_TOOLSET=%1" shift goto Setup_Toolset </p> </blockquote> <p> ) </p> </blockquote> <p> ) which then allows </p> <blockquote class="citation"> <p> build mingw </p> </blockquote> <p> to work correctly </p> multisitetracker@… https://svn.boost.org/trac10/ticket/5987 https://svn.boost.org/trac10/ticket/5987 Report #5985: Quickbook needs Users Guide documentation Thu, 06 Oct 2011 11:24:47 GMT Wed, 09 Apr 2014 02:26:31 GMT <p> Quickbook is currently a disaster to learn to use. The markup itself seems easy, and the "Chapter 33. Quickbook 1.5" docs are fine as far as they go. But without a Users Guide, a new user is left groping in the dark. </p> <p> A Users Guide should answer the question "How do I build my docs?". It should begin with the simplest possible example .qbk and Jamfile, and then progress from there. It should include a description and examples of how to invoke bjam to build QB docs. </p> <p> This ticket is a superset of <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1205" title="#1205: Feature Requests: Quickbook getting started (closed: duplicate)">#1205</a> </p> Beman Dawes https://svn.boost.org/trac10/ticket/5985 https://svn.boost.org/trac10/ticket/5985 Report #5970: Support chaining Mon, 03 Oct 2011 13:10:47 GMT Mon, 03 Oct 2011 13:10:47 GMT <p> Could the process functions return *this such that chaining is possible? </p> <p> For example: boost::crc_32_type().process_bytes(d, cb_d).get_checksum(). </p> Olaf van der Spek <olafvdspek@…> https://svn.boost.org/trac10/ticket/5970 https://svn.boost.org/trac10/ticket/5970 Report #5966: Cannot send std::map with more than 1 key/value pair Fri, 30 Sep 2011 19:19:05 GMT Tue, 01 Jan 2013 11:33:11 GMT <p> Sending a std::map (or std::set) of size greater than 1 causes an MPI_ERR_TRUNCATE error. The following code reproduces this error: </p> <pre class="wiki">#include &lt;boost/mpi.hpp&gt; #include &lt;boost/serialization/map.hpp&gt; int main( int argc, char * argv [] ) { boost::mpi::environment env(argc, argv); boost::mpi::communicator world; if(world.rank()==0){ std::map&lt;int,int&gt; test; test[1]=50; test[2]=100; world.send(1, 1, boost::mpi::skeleton(test)); world.send(1, 1, boost::mpi::get_content(test)); std::cout &lt;&lt; "sent" &lt;&lt; std::endl; } else{ std::map&lt;int,int&gt; test; world.recv(0,1,boost::mpi::skeleton(test)); world.recv(0,1,boost::mpi::get_content(test)); std::cout &lt;&lt; test.size() &lt;&lt; std::endl; } } </pre> Tim Jacobs <TimJacobs2@…> https://svn.boost.org/trac10/ticket/5966 https://svn.boost.org/trac10/ticket/5966 Report #5965: indirect_iterator conflicts with forward declaration Fri, 30 Sep 2011 10:12:33 GMT Wed, 21 Nov 2012 20:30:44 GMT <p> indirect_iterator, or more precisely its base class indirect_base, checks whether it can dereference its argument twice. This ends in an error, if the target type is incomplete (from a forward declaration). The error occurs even if the dereferencing is not used in the affected code unit. (It is concept checking.) </p> <p> /usr/include/boost/detail/is_incrementable.hpp:84: error: cannot increment a pointer to incomplete type ‘Derived’ </p> <p> indirect_iterator handles pointers. Pointers and forward declaration should complete each other well. So indirect_iterator should never try to dereference if it is not forced by using code. Concept checking does not work here satisfactorily. </p> <p> I appended exemplary code which I compiled with GCC 4.4.3. </p> <p> Best regards, </p> <p> Simon </p> Simon <simon.siemens@…> https://svn.boost.org/trac10/ticket/5965 https://svn.boost.org/trac10/ticket/5965 Report #5963: Patch [Fixes #5961]: Disallow comparisons of differing iterator types in ptr_container Thu, 29 Sep 2011 14:10:28 GMT Fri, 30 Sep 2011 11:01:42 GMT <p> Patch removes support for comparing differing iterator types from ptr_container's void_ptr_iterator. The comparators in question are == != &lt; &lt;= &gt; &gt;=. </p> <p> Changes are: </p> <ul><li>Add container type template parameter to void_ptr_iterator. This is what ensures compared iterators of differing types are still for the same referenced container type. </li></ul><ul><li>Add self type as template argument to base class for containers ptr_array, ptr_circular_buffer, ptr_deque, ptr_list, ptr_set, ptr_multiset, ptr_unordered_set, ptr_unordered_multiset, and ptr_vector </li></ul><ul><li>Pass container type template parameter from sequence_config and set_config to iterator typedefs, from ptr_sequence_adapter to reversible_ptr_container, and from ptr_set_adapter and ptr_multiset_adapter through ptr_set_adapter_base to associative_ptr_container </li></ul> Rob Desbois <rob.desbois@…> https://svn.boost.org/trac10/ticket/5963 https://svn.boost.org/trac10/ticket/5963 Report #5961: ptr_container supports comparison of iterators of different types Thu, 29 Sep 2011 10:11:47 GMT Thu, 29 Sep 2011 10:11:47 GMT <p> The void_ptr_iterator, which handles much of the ptr_container iterator functionality, oddly supports comparison operations between iterators of differing types. </p> <p> For example: </p> <pre class="wiki"> ptr_vector&lt;int&gt; vi; ptr_vector&lt;string&gt; vs; bool eq = (vi.begin() == vs.begin()); </pre><p> The affected operators are: == != &lt; &lt;= &gt; &gt;= </p> Rob Desbois <rob.desbois@…> https://svn.boost.org/trac10/ticket/5961 https://svn.boost.org/trac10/ticket/5961 Report #5949: bootstrap.sh and -isysroot under MacOSX Tue, 27 Sep 2011 16:05:26 GMT Tue, 27 Sep 2011 16:05:26 GMT <p> bootstrap.sh (which needs to made executable) eventually calls tools/build/v2/engine/build.sh, which in turn calls 'cc'. On the Mac to be able to run 'cc' without much fuss you need to pass the -isysroot option with th proper Developer SDK directory. Alas, build.hs does not foresee the use such option. I'd make much simpler the life on MacOSX circumventing Xcode. </p> <p> Marco Antoniotti </p> Marco Antoniotti <marco.antoniotti@…> https://svn.boost.org/trac10/ticket/5949 https://svn.boost.org/trac10/ticket/5949 Report #5948: ptr_map_adapter::insert( key_type& key, mapped_type x ) should have const kex paramter Tue, 27 Sep 2011 11:31:22 GMT Tue, 27 Sep 2011 11:31:22 GMT <p> ptr_map_adapter::insert( key_type&amp; key, mapped_type x ) </p> <p> should be </p> <p> ptr_map_adapter::insert( <strong>const</strong> key_type&amp; key, mapped_type x ) </p> <p> as the other insert methods are. </p> M.Mayer@… https://svn.boost.org/trac10/ticket/5948 https://svn.boost.org/trac10/ticket/5948 Report #5947: Use CLOCK_PROCESS_CPUTIME_ID on platform providing them Tue, 27 Sep 2011 11:30:41 GMT Sun, 03 Jun 2012 14:11:46 GMT <p> The posix implementation of process real cpu clock uses the times() function. The resolution is better if we use </p> <blockquote> <p> ::clock_gettime( CLOCK_PROCESS_CPUTIME_ID, &amp;ts ); </p> </blockquote> <p> on platforms for which the CLOCK_PROCESS_CPUTIME_ID is supported. </p> viboes https://svn.boost.org/trac10/ticket/5947 https://svn.boost.org/trac10/ticket/5947 Report #5945: Error in Connected Components Result Tue, 27 Sep 2011 06:16:08 GMT Tue, 27 Sep 2011 17:30:41 GMT <p> I've been using the connected components function from the parallel Boost graph library. The function has helped my coding and I'm grateful to the authors. I have tested the function on various graphs and verified its results. However, in one test case, the function leaves a vertex out of its rightful component when running with 16 processes. The problem does not occur when running with fewer processes. As the graph where the problem occurs is complicated, I would be unreasonable to ask for too much help in resolving the problem. However, any pointers would be greatly appreciated. </p> <p> In the attached code, I build and run the connected components function on a graph. I build the graph from 16 attached files numbered 'a' to 'p'. The i-th file contains the number and owner-local pairs of adjacent vertices of consecutive vertices to be stored on the i-th process. After adding the vertices and edges between them, I first verify there is an edge between the problem vertex (0,20) and another vertex, then run the connected components function. Then printing the parent of problem vertex and its children shows the vertex is in a separate component from its neighbor. </p> <p> It would be great if you could look over the code and point out any obvious errors. Thank you! </p> Lau Yang Hao <lauyh@…> https://svn.boost.org/trac10/ticket/5945 https://svn.boost.org/trac10/ticket/5945 Report #5943: clang++ on windows support (was: clang-linux-3.0 output path for clang++ on Windows) Mon, 26 Sep 2011 16:22:01 GMT Tue, 06 May 2014 08:14:36 GMT <p> I'm doing some test builds on Windows 7 using LLVM and clang from their current SVN trunks. </p> <p> I define the toolset in my user-config.jam: </p> <pre class="wiki"># -------------------- # clang configuration. # -------------------- using clang : # version 3.0 : # compiler g:/dev/llvm/_svn/build/bin/Release/clang++ : # options &lt;cxxflags&gt;-Wno-mismatched-tags &lt;cxxflags&gt;-Wno-unused-variable ; </pre><p> This is inspired by Jürgen Hunold's post in <a class="ext-link" href="http://lists.boost.org/Archives/boost/2011/09/186080.php"><span class="icon">​</span>configuring the clang toolset</a>. </p> <p> Then I call bootstrap.bat, works well. </p> <p> Finally, I try to run Boost.Array test getting this: </p> <pre class="wiki">g:\dev\boost\_svn\trunk\libs\array\test&gt;bjam ...patience... ...found 291 targets... ...updating 51 targets... common.mkdir ..\..\..\bin.v2\libs\array common.mkdir ..\..\..\bin.v2\libs\array\test common.mkdir ..\..\..\bin.v2\libs\array\test\array0.test common.mkdir ..\..\..\bin.v2\libs\array\test\array0.test\clang-linux-3.0 common.mkdir ..\..\..\bin.v2\libs\array\test\array0.test\clang-linux-3.0\debug compile.c++.without-pth ..\..\..\bin.v2\libs\array\test\array0.test\clang-linux-3.0\debug\array0.obj ... </pre><p> The process eventually stops due to compilation errors, but this is not relevant to this particular issue I'm reporting. </p> <p> Given the system I'm using, the problem is with the output path specified by Boost.Build which is </p> <pre class="wiki">...\clang-linux-3.0 </pre><p> Given that I use Windows, this path does not look right. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/5943 https://svn.boost.org/trac10/ticket/5943 Report #5937: Sun C++ 5.11 Linux compilation errors: operations.cpp Sat, 24 Sep 2011 12:46:46 GMT Tue, 27 Sep 2011 17:59:30 GMT <p> CC: Sun C++ 5.11 Linux_i386 2010/08/13 usage: CC [ options ] files. Use 'CC -flags' for details </p> <p> "libs/filesystem/v3/src/operations.cpp", line 1760: Error: DT_UNKNOWN is not defined. </p> <p> "libs/filesystem/v3/src/operations.cpp", line 1766: Error: DT_DIR is not defined. </p> <p> "libs/filesystem/v3/src/operations.cpp", line 1768: Error: DT_REG is not defined. </p> <p> "libs/filesystem/v3/src/operations.cpp", line 1770: Error: DT_LNK is not defined. </p> <p> 4 Error(s) detected. </p> <blockquote> <p> "CC" -library=stlport4 -xO4 -mt -erroff=%none -m64 -DBOOST_ALL_NO_LIB=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DNDEBUG -I"." -c -o "/home/pal/work/cpp/tmp/boost/bin.v2/libs/filesystem/build/sun/release/address-model-64/link-static/stdlib-sun-stlport/threading-multi/v3/src/operations.o" "libs/filesystem/v3/src/operations.cpp" </p> </blockquote> Peter Loibl <boost@…> https://svn.boost.org/trac10/ticket/5937 https://svn.boost.org/trac10/ticket/5937 Report #5925: shared_array: size, begin, end, data? Wed, 21 Sep 2011 21:09:23 GMT Wed, 21 Sep 2011 21:09:23 GMT <p> Could the size, begin, end and data member functions be added to shared_array? It'd be quite handy to have size() available. </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5925 https://svn.boost.org/trac10/ticket/5925 Report #5918: Py3k MPI build failure Wed, 21 Sep 2011 14:27:08 GMT Wed, 21 Sep 2011 19:29:10 GMT <p> MPI building fails on a reference to PyInt_Type that no longer exists in py3k. </p> <p> Attached patch does a PyInt_Type -&gt; PyLong_Type (which is probably what it should have been in the first place since it uses long(0)). </p> Dan Eicher <dan@…> https://svn.boost.org/trac10/ticket/5918 https://svn.boost.org/trac10/ticket/5918 Report #5917: cc toolset broken Tue, 20 Sep 2011 11:49:17 GMT Thu, 05 Apr 2018 07:39:47 GMT <p> I want to build Boost using the <strong>cc</strong> toolset. It bootstraps fine, but the build system fails to find the toolset when I run b2. </p> <pre class="wiki">$ export CC=gcc $ ./bootstrap.sh --with-toolset=cc -n Building Boost.Build engine with toolset cc... tools/build/v2/engine/bin.macosxx86_64/b2 -n Detecting Python version... 2.7 -n Detecting Python root... /opt/local/Library/Frameworks/Python.framework/Versions/2.7 -n Unicode/ICU support for Boost.Regex?... not found. Backing up existing Boost.Build configuration in project-config.jam.6 Generating Boost.Build configuration in project-config.jam... Bootstrapping is done. To build, run: ./b2 To adjust configuration, edit 'project-config.jam'. Further information: - Command line help: ./b2 --help - Getting started guide: http://www.boost.org/more/getting_started/unix-variants.html - Boost.Build documentation: http://www.boost.org/boost-build2/doc/html/index.html $ ./b2 cc.jam: No such file or directory tools/build/v2/build/toolset.jam:38: in toolset.using rule cc.init unknown in module toolset. tools/build/v2/build/project.jam:888: in using project-config.jam:12: in modules.load tools/build/v2/build-system.jam:257: in load-config tools/build/v2/build-system.jam:423: in load-configuration-files tools/build/v2/build-system.jam:555: in load tools/build/v2/kernel/modules.jam:283: in import tools/build/v2/kernel/bootstrap.jam:142: in boost-build boost-build.jam:17: in module scope </pre> anonymous https://svn.boost.org/trac10/ticket/5917 https://svn.boost.org/trac10/ticket/5917 Report #5912: tools/build/v2/contrib/boost.jam update Mon, 19 Sep 2011 05:54:05 GMT Mon, 19 Sep 2011 05:54:05 GMT <p> Boost has introduced new built libraries <code>libboost_chrono*</code> and <code>libboost_exception*</code>, which is not supported by the current <code>boost.jam</code>. </p> <p> I have attached a patch for this update. </p> <p> Note: <code>libboost_exception*</code> only has static variants right now, so <code>BOOST_EXCEPTION_DYN_LINK</code> is not needed to be defined. </p> Ai Azuma <ai.azuma@…> https://svn.boost.org/trac10/ticket/5912 https://svn.boost.org/trac10/ticket/5912 Report #5904: Patch to suppress "unreachable code" warning from Visual Studio 2008/2010 (VC90/VC100) Fri, 16 Sep 2011 11:20:18 GMT Mon, 19 Sep 2011 18:35:00 GMT <p> Probably as a result of ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3311" title="#3311: Bugs: Unintentionally unthrown exceptions (closed: fixed)">#3311</a>, Visual Studio correctly identifies unreachable code when instantiating a boost::iostreams::stream with a Device that doesn't support certain functionality (e.g. a write-only Sink). Since the relevant code is reachable for other kinds of Device, the simplest fix is to just suppress the warning. The equivalent warning for Borland is already suppressed in boost/iostreams/detail/config/disable_warnings.hpp. </p> <p> Code: </p> <pre class="wiki">#include &lt;deque&gt; #include &lt;boost/iostreams/stream.hpp&gt; #include &lt;boost/iostreams/device/back_inserter.hpp&gt; boost::iostreams::stream&lt; boost::iostreams::back_insert_device&lt; std::deque&lt; char &gt; &gt; &gt; s; </pre><p> Result (provided not /Od): </p> <pre class="wiki">1&gt;...\boost_1_47_0\boost\iostreams\detail\adapter\concept_adapter.hpp(77) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(259) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(260) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(261) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(263) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(266) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\adapter\concept_adapter.hpp(95) : warning C4702: unreachable code 1&gt;...\boost_1_47_0\boost\iostreams\detail\streambuf\indirect_streambuf.hpp(333) : warning C4702: unreachable code </pre><p> Patch for boost/iostreams/detail/config/disable_warnings.hpp: </p> <pre class="wiki">17a18 &gt; # pragma warning(disable:4702) // Unreachable code. </pre><p> Please would someone apply this for Boost 1.48.0? </p> gareth.sylvester-bradley@… https://svn.boost.org/trac10/ticket/5904 https://svn.boost.org/trac10/ticket/5904 Report #5902: Division by zero when requesting null sized buffers Fri, 16 Sep 2011 10:06:40 GMT Mon, 16 Jul 2012 20:00:31 GMT <p> The following code yields a division by zero in pool::malloc_need_resize() : </p> <pre class="wiki"> boost::pool&lt;&gt; p(0, 1, 1); p.malloc(); </pre><p> The code above requests at most one buffer of size zero. The expected behavior would be one of (i) malloc fails, (ii) malloc returns a null sized buffer. </p> <p> Regards </p> Étienne Dupuis <e.dupuis@…> https://svn.boost.org/trac10/ticket/5902 https://svn.boost.org/trac10/ticket/5902 Report #5898: bzip2_decompressor still does not handle pbzip2-compressed files correctly Wed, 14 Sep 2011 00:39:57 GMT Wed, 14 Sep 2011 00:39:57 GMT <p> This is an extension of ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3853" title="#3853: Bugs: bzip2_decompressor reads only one block of a pbzip2-created files (closed: fixed)">#3853</a>. I believe that the bug was not resolved correctly. In particular, there appears to be a subtle problem which occurs when the boundary between two bz streams falls at precisely the wrong place in the input buffer. </p> <p> The attached piece of code illustrates the problem. It may be compiled with, say: </p> <blockquote> <p> g++ testpbzip2.cc -o testpbzip2 -lboost_iostreams -lbz2 ./testpbzip2 </p> </blockquote> <p> The input file (which is inlined in the source file) was created using the following commands: </p> <p> dd if=/dev/zero of=file bs=1000 count=901 pbzip2 -9 file </p> <p> The problem was initially found on a real file with the default buffer size of 4096. The smallest example that I've found which exercises the problem at this buffer size is 160kB, and hence not attached to this ticket. It is available on request. </p> Andrew.Bromage@… https://svn.boost.org/trac10/ticket/5898 https://svn.boost.org/trac10/ticket/5898 Report #5896: Range directory iterators Tue, 13 Sep 2011 22:42:39 GMT Thu, 19 Apr 2012 15:26:00 GMT <p> With C++11 now finalized as a standard, and compilers being more compliant every day, it makes sense to have range-based versions of the directory_iterator classes. This would make it much easier to use the range-based for loop, as well as Boost.Range functionality. </p> <p> Basically, it could just be a couple of helper functions that create a boost::iterator_range&lt;bfs::directory_iterator&gt; instance. </p> jmckesson@… https://svn.boost.org/trac10/ticket/5896 https://svn.boost.org/trac10/ticket/5896 Report #5889: Add way to get the path to the running executable Sat, 10 Sep 2011 21:40:26 GMT Wed, 20 Apr 2016 15:13:33 GMT <p> The filesystem component is missing a function to return the path to the currently running executable. This is useful for finding associated program files without resorting to e.g. environmental variables. </p> <p> A discussion of the current system-specific ways to do this: </p> <blockquote> <p> <a class="ext-link" href="http://stackoverflow.com/q/1023306"><span class="icon">​</span>http://stackoverflow.com/q/1023306</a> and <a class="ext-link" href="http://stackoverflow.com/q/933850"><span class="icon">​</span>http://stackoverflow.com/q/933850</a> </p> </blockquote> <p> An example of a similar function exists in the Qt library: QCoreApplication::applicationFilePath() </p> ergosys@… https://svn.boost.org/trac10/ticket/5889 https://svn.boost.org/trac10/ticket/5889 Report #5888: [Documentation] iterator_facade docs -- const correctness problem. Sat, 10 Sep 2011 19:10:50 GMT Wed, 21 Nov 2012 22:17:18 GMT <p> On this documentation page, second box: <a href="http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/iterator_facade.html#a-constant-node-iterator">http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/iterator_facade.html#a-constant-node-iterator</a> there is a problem with const-correctness on the dereference function. </p> <p> For the const_node_iterator, Value = const node_base, thus yielding </p> <pre class="wiki">const node_base&amp; dereference() const { return *m_node; } const node_base* m_node; </pre><p> However, for node_iterator, Value = node_base: </p> <pre class="wiki">node_base&amp; dereference() const { return *m_node; // Error: cannot convert const variable to non_const reference } node_iterator* m_node; </pre><p> Correct would be to const-overload dereference: </p> <pre class="wiki">typedef boost::iterator_facade&lt; node_iter&lt;Value&gt; , Value , boost::forward_traversal_tag &gt; super; typename super::reference dereference() { return *m_node; } const typename super::reference dereference() const { return *m_node; } </pre> Frank Erens <seysayux@…> https://svn.boost.org/trac10/ticket/5888 https://svn.boost.org/trac10/ticket/5888 Report #5883: Neither <dependency> nor <use> works on prebuilt library targets Fri, 09 Sep 2011 18:11:25 GMT Fri, 10 Aug 2012 06:04:45 GMT <p> For example, suppose I have a jamroot file as follows; </p> <pre class="wiki">run test.cpp : : : : test.run ; explicit test.run ; lib gmp : : &lt;dependency&gt;test.run ; explicit gmp ; exe main.exe : gmp main.cpp ; explicit main.exe ; </pre><p> Here, I just expect that <code>&lt;dependency&gt;</code> feature on the <code>lib</code> target introduces a dependency on the <code>test.run</code> target. However, command line invocation like </p> <pre class="wiki">bjam main.exe </pre><p> pulls neither the build nor run of <code>test.run</code> at all, and only <code>main.exe</code> is built. </p> anonymous https://svn.boost.org/trac10/ticket/5883 https://svn.boost.org/trac10/ticket/5883 Report #5882: Add <define>_GLIBCXX_DEBUG for <runtime-debugging>on in gcc.jam Fri, 09 Sep 2011 17:12:40 GMT Thu, 09 Aug 2012 07:39:24 GMT <p> Right now runtime-debugging does zilch for GCC, which is pretty nonsensical. I'd like to see: </p> <p> toolset.flags gcc.compile OPTIONS &lt;runtime-debugging&gt;on : &lt;define&gt;_GLIBCXX_DEBUG ; </p> matt.chambers42@… https://svn.boost.org/trac10/ticket/5882 https://svn.boost.org/trac10/ticket/5882 Report #5877: Ambiguous call building Boost.Python quickstart example Thu, 08 Sep 2011 13:12:59 GMT Fri, 07 Dec 2012 22:37:16 GMT <p> If I use .\b2 to do a build of plain vanilla Boost 1.47 on 32-bit Windows 7 using Python 3.2 and MSVC 10.0 SP1, it completes without error. I then add the lib= and include= environment variables as instructed at the end of the build, and CD to the python quickstart example. </p> <p> When I then use b2 to build the quickstart example, it fails with: </p> <pre class="wiki">embedding.cpp embedding.cpp(39) : error C2668: 'std::basic_string&lt;_Elem,_Traits,_Ax&gt;::basic_st ring' : ambiguous call to overloaded function with [ _Elem=char, _Traits=std::char_traits&lt;char&gt;, _Ax=std::allocator&lt;char&gt; ] c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xstring(700): c ould be 'std::basic_string&lt;_Elem,_Traits,_Ax&gt;::basic_string(std::basic_string&lt;_E lem,_Traits,_Ax&gt; &amp;&amp;)' with [ _Elem=char, _Traits=std::char_traits&lt;char&gt;, _Ax=std::allocator&lt;char&gt; ] c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xstring(590): o r 'std::basic_string&lt;_Elem,_Traits,_Ax&gt;::basic_string(const _Elem *)' with [ _Elem=char, _Traits=std::char_traits&lt;char&gt;, _Ax=std::allocator&lt;char&gt; ] while trying to match the argument list '(boost::python::detail::method_ result)' </pre><p> and </p> <pre class="wiki">embedding.cpp(56) : error C2065: 'initembedded_hello' : undeclared identifier </pre><p> Of course, the second error may be caused by the first. </p> <p> See <a class="ext-link" href="http://mail.python.org/pipermail/cplusplus-sig/2011-September/016147.html"><span class="icon">​</span>http://mail.python.org/pipermail/cplusplus-sig/2011-September/016147.html</a> for a more complete history and console listing. </p> paul@… https://svn.boost.org/trac10/ticket/5877 https://svn.boost.org/trac10/ticket/5877 Report #5876: Serialization - tracking of non-versioned classes Thu, 08 Sep 2011 09:42:18 GMT Tue, 05 Apr 2016 10:51:57 GMT <p> I quote a case from my workplace. The issue came up for std::vector&lt;int&gt;, but I use a simple struct X to reproduce the problem. See the attached file for detailed instructions. </p> <p> Opened by Yakov Galka 9/8/2011 (Today) 8:31 AM Edit </p> <p> The following code: </p> <pre class="wiki"> struct X { ... }; X x2; BoostLoad("SerializationBug.dat", x2); #if FLAG volatile int x = 0; if(x) { X *x3; BoostLoad("this code is never executed", x3); } #endif </pre><p> Produces different results depending on whether FLAG == 0 or 1, although it's clear that it must not change it's behavior. </p> <p> After some research it happens that the handling of tracking level is broken in boost since at least boost 1.46.1. </p> <p> Assigned to Yakov Galka by Yakov Galka 9/8/2011 (Today) 8:31 AM Notified ######. </p> <p> Edited by Yakov Galka 9/8/2011 (Today) 8:53 AM [Revised 11:44 AM] Edit </p> <p> It happens for objects with implementation level of object_serializable. That is: </p> <pre class="wiki">BOOST_CLASS_IMPLEMENTATION(X, boost::serialization::object_serializable) </pre><p> For greater implementation level, the tracking level is read from the archive. However it still must affect the saving of objects to any archives (binary, xml, text). </p> <p> If it's not clear enough, the above code reads/writes the the file correctly when FLAG == 0, but tries to load x2 as-if it's tracked when FLAG == 1. </p> <p> Edited by Yakov Galka 9/8/2011 (Today) 10:38 AM Edit I've successfully reproduced this same bug in boost 1.33.1, although there it's silent (no crash, just wrong data is read). Boost serialization is broken really hard on the low-level: </p> <p> basic_iserializer::tracking() decides whether the class should be tracked or not based on m_bpis value. However it can't decide this based on the information it has, since it's shared among objects serialized trough a pointer and not through a pointer. </p> <p> Possible Fix: make basic_iserializer::tracking return the tracking level instead of a boolean value and let the caller decide what this tracking level means. It's a lot of work, and it may break computability with archives serialized incorrectly in 1.33.1, which happens to be possible. We are screwed anyway. </p> <p> Edited by Yakov Galka 9/8/2011 (Today) 11:44 AM </p> <p> Revised Yakov Galka's 8:53 AM entry from 9/8/2011 </p> ybungalobill@… https://svn.boost.org/trac10/ticket/5876 https://svn.boost.org/trac10/ticket/5876 Report #5864: unable to compile boost::mpi under Windows using msvc-2008-compiller Mon, 05 Sep 2011 06:27:08 GMT Sat, 03 Aug 2013 23:32:39 GMT <p> My steps to reproduce: </p> <ol><li>Setup environment for msvc-2008 compiler using bat-file for Visual Studio 2008 command line environment. </li><li>Compile library openmpi-1.4.3 using cmake (as specified in its documentation) and install it to "d:\Libs\mpi-1.4.3\Release". </li><li>Add path to "d:\Libs\mpi-1.4.3\Release\bin" to my PATH environment. </li><li>Check, that mpic++ works good: <pre class="wiki">&gt; mpic++ --showme cl.exe /I"d:/Libs/mpi-1.4.3/Release/include" /TP /EHsc /D "OMPI_IMPORTS" /D "OPAL_IMPORTS" /D "ORTE_IMPORTS" /link /LIBPATH:"d:/Libs/mpi-1.4.3/Release/lib" libmpi.lib libopen-pal.lib libopenrte.lib libmpi_cxx.lib libmpi.lib libopen-pal.lib libopen-rte.lib advapi32.lib Ws2_32.lib shlwapi.lib </pre></li><li>Add string 'using mpi ;' to my &lt;boost_dir&gt;\tools\build\v2\user-config.jam file. </li><li>Try to compile boost::mpi: <pre class="wiki">&gt; bjam.exe --prefix=d:\Programming\mpi-work\boost-mpi\installed --build-dir=d:\Programming\mpi-work\boost-mpi\bld --with-mpi install </pre></li></ol><p> As a result I got the error: </p> <pre class="wiki">Системе не удается найти указанный путь. Системе не удается найти указанный путь. Системе не удается найти указанный путь. Системе не удается найти указанный путь. MPI auto-detection failed: unknown wrapper compiler mpic++ Please report this error to the Boost mailing list: http://www.boost.org You will need to manually configure MPI support. </pre><p> ('Системе не удается найти указанный путь.' - means 'System can't find specified path') </p> <p> The same result I got using b2.exe instead of bjam.exe. </p> <p> I tried to read the documentation to setup exact paths to openmpi for mpi module in the user-config.jam. But I couldn't understand, where should I put include- and library-paths in it. </p> <p> My environment - Windows XP SP2 x32, Visual Studio 2008 with compiler version 15.00.21022.08. I have attached partial command line environment as file to the bug report. </p> Slav Grig <armagvvg@…> https://svn.boost.org/trac10/ticket/5864 https://svn.boost.org/trac10/ticket/5864 Report #5863: Warnings when including boost/mpi/skeleton_and_content.hpp Sun, 04 Sep 2011 19:56:09 GMT Tue, 01 Jan 2013 11:35:43 GMT <p> Unused identifiers at boost/mpi/detail/ignore_iprimitive.hpp line 55; boost/mpi/detail/ignore_oprimitive.hpp line 47; </p> <p> Just comment out or remove it. ;-) </p> <p> Regards, Júlio. </p> Júlio Hoffimann Mendes <julio.hoffimann@…> https://svn.boost.org/trac10/ticket/5863 https://svn.boost.org/trac10/ticket/5863 Report #5862: broken links in "New Iterator Concepts" Sat, 03 Sep 2011 16:50:29 GMT Wed, 21 Nov 2012 22:14:14 GMT <p> In <a href="http://www.boost.org/doc/libs/1_47_0/libs/iterator/doc/new-iter-concepts.html">New Iterator Concepts</a>: </p> <dl class="wiki"><dt>is</dt><dd><a class="ext-link" href="http://anubis.dkuug.dk/JTC1/SC22/WG21/docs/lwg-active.html#200"><span class="icon">​</span>issue 200</a> </dd><dt>let</dt><dd><a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#200"><span class="icon">​</span>issue 200</a> </dd></dl> <dl class="wiki"><dt>is</dt><dd>once <a class="ext-link" href="http://anubis.dkuug.dk/JTC1/SC22/WG21/docs/lwg-active.html#299"><span class="icon">​</span>issue 299</a> is resolved </dd><dt>let</dt><dd>since <a class="ext-link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#299"><span class="icon">​</span>issue 299</a> has been resolved </dd></dl> Christopher Yeleighton <giecrilj@…> https://svn.boost.org/trac10/ticket/5862 https://svn.boost.org/trac10/ticket/5862 Report #5861: Iterators documentation is invalid Sat, 03 Sep 2011 15:36:19 GMT Wed, 21 Nov 2012 22:10:47 GMT <p> under /doc/libs/1_47_0/libs/iterator/: </p> <p> … href="/favicon.ico" type="image/ico"&gt;&lt;link rel="stylesheet" type="text/css" h… </p> <p> (unclosed link element in <a class="ext-link" href="http://www.w3.org/TR/xhtml1"><span class="icon">​</span>XHTML</a> mode) </p> Christopher Yeleighton <giecrilj@…> https://svn.boost.org/trac10/ticket/5861 https://svn.boost.org/trac10/ticket/5861 Report #5858: Issue to compile in VS 2008, VC 9.0.30729.1 SP without Microsoft extensions Fri, 02 Sep 2011 18:03:25 GMT Wed, 21 Nov 2012 20:03:45 GMT <p> The issue appears first in 1.35.0 version. The version 1.34.1 is still OK. It is only appears when microsoft extentions are disabled. The library is "Iterator". For version 1.35.1: the file is iterator_concepts.hpp, line nuber is 136: </p> <pre class="wiki">BOOST_concept(SinglePassIterator, (Iterator)) : IncrementableIterator &lt;Iterator&gt; , boost::EqualityComparable &lt;Iterator&gt; { ---&gt;&gt;&gt; BOOST_CONCEPT_ASSERT(( boost::Convertible&lt; BOOST_DEDUCED_TYPENAME SinglePassIterator::traversal_category , boost::single_pass_traversal_tag &gt; )); }; </pre><p> The first line of error message is \boost\include\boost-1_35_0\boost/iterator/iterator_concepts.hpp(136) : error C2146: syntax error : missing ',' before identifier 'traversal_category' </p> Dr. Sergey Kiselev <SergK13@…> https://svn.boost.org/trac10/ticket/5858 https://svn.boost.org/trac10/ticket/5858 Report #5853: Predefined macro __ppc not checked by various boost headers Thu, 01 Sep 2011 16:52:12 GMT Mon, 12 Dec 2011 22:46:15 GMT <p> Various boost headers implement variant definitions and logic depending on the processor defined for the compilation. There are variations taking into account compilation on the powerpc family of processors but some of the headers in question do not include checking for powerpc compilation via presence of the __ppc predefined macro (they check against other predefineds: __ppc__, __powerpc__, etc, but the WindRiver vxworks gnu compiler for powerpc only defines __ppc). </p> <p> Boost headers in question: </p> <p> boost/detail/endian.hpp<br /> boost/interprocess/detail/atomic.hpp<br /> boost/numeric/interval/hw_rounding.hpp<br /> boost/numeric/interval/detail/ppc_rounding_control.hpp </p> <p> The trunk was checked to be certain that fixes had not yet been applied. No other related bug reports found either. </p> gshapiro@… https://svn.boost.org/trac10/ticket/5853 https://svn.boost.org/trac10/ticket/5853 Report #5850: last_write_time on Windows may not work on SMB2-network-mounted drive Wed, 31 Aug 2011 15:22:13 GMT Tue, 11 Oct 2011 12:21:05 GMT <p> Consider the following logical operation against a file on a network-mounted drive served over SMB2: </p> <ol><li>fopen("r+b")/fwrite/fclose a file. </li><li>boost::filesystem::last_write_time(file, some other specific time) </li><li>fopen("rb")/fclose a file. </li></ol><p> As soon as the file is opened in step 3, it appears that the SMB2/redirector actually closes the file and "flushes" its pending write in service of step 1. This has the effect of overwriting the time modification in step 2. </p> <p> I believe this is happening because boost's non-POSIX/Windows implementation of last_write_time uses <a class="missing wiki">CreateFile</a>() and asks only for FILE_WRITE_ATTRIBUTES. Using GENERIC_WRITE appears to work correctly. </p> <p> Also note, calling utime() instead of boost::filesystem::last_write_time() works correctly. </p> <p> Please see attached test code demonstrating boost's failure, utime()'s success, and native API workaround. </p> <p> Please feel free to contact me for follow up. Thanks, -Ken </p> Ken Harris <kharris@…> https://svn.boost.org/trac10/ticket/5850 https://svn.boost.org/trac10/ticket/5850 Report #5849: all_to_all() passes invalid args to allocate when sending lots of data Wed, 31 Aug 2011 09:10:52 GMT Tue, 01 Jan 2013 11:39:18 GMT <p> For boost 1.47.0 code of the following form fails... </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">mpi</span><span class="o">::</span><span class="n">communicator</span> <span class="n">communicator</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">Thing</span><span class="o">*&gt;</span> <span class="o">&gt;</span> <span class="n">in_values</span><span class="p">(</span><span class="n">communicator</span><span class="p">.</span><span class="n">size</span><span class="p">());</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">list</span><span class="o">&lt;</span><span class="n">Thing</span><span class="o">*&gt;</span> <span class="o">&gt;</span> <span class="n">out_values</span><span class="p">(</span><span class="n">communicator</span><span class="p">.</span><span class="n">size</span><span class="p">());</span> <span class="c1">// Point the lists in in_values to more than numeric_limits&lt;int&gt;::max() bytes of data</span> <span class="n">boost</span><span class="o">::</span><span class="n">mpi</span><span class="o">::</span><span class="n">all_to_all</span><span class="p">(</span><span class="n">communicator</span><span class="p">,</span><span class="n">in_values</span><span class="p">,</span><span class="n">out_values</span><span class="p">);</span> </pre></div></div></div><p> Such code ends up passing the allocator, using openmpi-1.4.3, an invalid argument. </p> <p> Looking at all_to_all.hpp and the method... </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span> <span class="kt">void</span> <span class="n">all_to_all_impl</span><span class="p">(</span><span class="k">const</span> <span class="n">communicator</span><span class="o">&amp;</span> <span class="n">comm</span><span class="p">,</span> <span class="k">const</span> <span class="n">T</span><span class="o">*</span> <span class="n">in_values</span><span class="p">,</span> <span class="kt">int</span> <span class="n">n</span><span class="p">,</span> <span class="n">T</span><span class="o">*</span> <span class="n">out_values</span><span class="p">,</span> <span class="n">mpl</span><span class="o">::</span><span class="n">false_</span><span class="p">)</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> </pre></div></div></div><p> I think I see why this happens. The method begins as follows... </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">send_sizes</span><span class="p">(</span><span class="n">size</span><span class="p">);</span> <span class="c1">// The displacements for each outgoing value.</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">send_disps</span><span class="p">(</span><span class="n">size</span><span class="p">);</span> <span class="c1">// The buffer that will store all of the outgoing values</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">char</span><span class="p">,</span> <span class="n">allocator</span><span class="o">&lt;</span><span class="kt">char</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">outgoing</span><span class="p">;</span> <span class="c1">// Pack the buffer with all of the outgoing values.</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">dest</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">dest</span> <span class="o">&lt;</span> <span class="n">size</span><span class="p">;</span> <span class="o">++</span><span class="n">dest</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// Keep track of the displacements</span> <span class="n">send_disps</span><span class="p">[</span><span class="n">dest</span><span class="p">]</span> <span class="o">=</span> <span class="n">outgoing</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="c1">// Our own value will never be transmitted, so don&#39;t pack it.</span> <span class="k">if</span> <span class="p">(</span><span class="n">dest</span> <span class="o">!=</span> <span class="n">rank</span><span class="p">)</span> <span class="p">{</span> <span class="n">packed_oarchive</span> <span class="n">oa</span><span class="p">(</span><span class="n">comm</span><span class="p">,</span> <span class="n">outgoing</span><span class="p">);</span> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="n">oa</span> <span class="o">&lt;&lt;</span> <span class="n">in_values</span><span class="p">[</span><span class="n">dest</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="n">i</span><span class="p">];</span> <span class="p">}</span> <span class="c1">// Keep track of the sizes</span> <span class="n">send_sizes</span><span class="p">[</span><span class="n">dest</span><span class="p">]</span> <span class="o">=</span> <span class="n">outgoing</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="n">send_disps</span><span class="p">[</span><span class="n">dest</span><span class="p">];</span> <span class="p">}</span> </pre></div></div></div><p> If outgoing.size() or (outgoing.size() - send_disps[dest]) is greater than numeric_limits&lt;int&gt;::max(), then send_disps[dest] or send_sizes[dest] flips over to negative values or is simply junk. After that happens the rest of the code in all_to_all_impl() doesn't really make any sense. </p> <p> My guess is that instead of using int here... </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">send_sizes</span><span class="p">(</span><span class="n">size</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">send_disps</span><span class="p">(</span><span class="n">size</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">recv_sizes</span><span class="p">(</span><span class="n">size</span><span class="p">);</span> <span class="p">...</span> </pre></div></div></div><p> you should use allocator::size_type. </p> Kelly Davis <kdavis@…> https://svn.boost.org/trac10/ticket/5849 https://svn.boost.org/trac10/ticket/5849 Report #5821: not able to handle linux path starting with ~/ Mon, 29 Aug 2011 11:36:10 GMT Mon, 29 Aug 2011 11:36:10 GMT <p> Hi, </p> <blockquote> <p> I had a complete path like ~/test/test1. but when I was using the path with is_complete fucntion, it gives wrong result. </p> </blockquote> vivek_kumar@… https://svn.boost.org/trac10/ticket/5821 https://svn.boost.org/trac10/ticket/5821 Report #5819: error in solaris_fenced_block.hpp in solaris 10 sun c++ 5.8 Sun, 28 Aug 2011 21:20:41 GMT Fri, 15 Feb 2013 11:42:13 GMT <p> "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/asio/detail/solaris_fenced_block.hpp", line 37: Error: The function "membar_consumer" must have a prototype. "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/asio/detail/solaris_fenced_block.hpp", line 43: Error: The function "membar_producer" must have a prototype. "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/asio/detail/impl/socket_ops.ipp", line 952: Error: msg_flags is not a member of msghdr. "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/bind/bind.hpp", line 69: Error: boost::_bi::F is not a namespace or class name. "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/bind/bind_template.hpp", line 15: Where: While specializing "boost::_bi::result_traits&lt;boost::_bi::unspecified, void(QuickFAST::Communication::MulticastReceiver::*)(const boost::system::error_code&amp;,QuickFAST::Communication::LinkedBuffer*,unsigned long)&gt;". "/sr/gldev/wfpvcs/tunis/bbouzayani/QuickFast_SOL10/boost_1_47_0/stage/include/./boost/bind/bind_template.hpp", line 15: Where: Specialized in boost::_bi::bind_t&lt;boost::_bi::unspecified, void(QuickFAST::Communication::MulticastReceiver::*)(const boost::system::error_code&amp;,QuickFAST::Communication::LinkedBuffer*,unsigned long), boost::_bi::list4&lt;boost::_bi::value&lt;QuickFAST::Communication::MulticastReceiver*&gt;, boost::arg&lt;1&gt;, boost::_bi::value&lt;QuickFAST::Communication::Linked </p> bouzayanibilel@… https://svn.boost.org/trac10/ticket/5819 https://svn.boost.org/trac10/ticket/5819 Report #5815: booast asio crash in io_service run Fri, 26 Aug 2011 17:45:14 GMT Sun, 16 Oct 2011 18:00:21 GMT <p> Boost Asio crashes on slackware linux with g++ (GCC) 4.5.2 I made a simple http server startig from the examples on the website. When I add a deadline timer to shutdown the connection, only adding it in the connection class and and initializing it with the io_service makes the program to seg fault in io_service run. </p> mileandrei@… https://svn.boost.org/trac10/ticket/5815 https://svn.boost.org/trac10/ticket/5815 Report #5811: indirected range adaptor not satisfied with unary dereference operator Thu, 25 Aug 2011 19:17:26 GMT Tue, 24 Oct 2017 11:58:04 GMT <p> The documentation for Range's indirected adaptor claims that it is usable with anything that has an unary operator*(). </p> <p> When using it with a range of optional&lt;int&gt;, it seems to require an element_type inner type, which optional doesn't expose and the docs does not require. </p> <p> The following testcase fails to compile with VC10 and GCC 4.2.3: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/optional.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/range/adaptors.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;vector&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">optional</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">v</span><span class="p">;</span> <span class="n">v</span> <span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="n">indirected</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> Lars Viklund <zao@…> https://svn.boost.org/trac10/ticket/5811 https://svn.boost.org/trac10/ticket/5811 Report #5806: Property tree supporting custom allocators such as the boost pool ones Tue, 23 Aug 2011 10:15:35 GMT Wed, 21 Jan 2015 13:14:19 GMT <p> I'm currently working on a c++ extension based on custom allocators and i wanted to use property_tree in my serialization section as it seems very well designed, but i'm stuck with the fact that basic_ptree doesn't allow an allocator type to be passed as argument. It would be very nice to add custom allocation to property_tree so that we can : first customize internal ptree allocations and then use customized version of STL with it. regards. </p> vivien.millet@… https://svn.boost.org/trac10/ticket/5806 https://svn.boost.org/trac10/ticket/5806 Report #5804: Anonymous SVN inaccessible Mon, 22 Aug 2011 18:08:11 GMT Tue, 04 Oct 2011 20:09:48 GMT <p> The SVN checkout URL on the Downloads page asks for a username and password and none is given for anonymous access. </p> mathstuf@… https://svn.boost.org/trac10/ticket/5804 https://svn.boost.org/trac10/ticket/5804 Report #5786: Section 5.2 in Getting Started Guide is misleading Tue, 16 Aug 2011 11:19:14 GMT Tue, 16 Aug 2011 11:19:14 GMT <p> Section 5.2 of the Getting Started Guide: "Or, Simplified Build From Source" says to run: </p> <p> bootstrap </p> <p> .\b2 </p> <p> This does work (except when it gets the toolchain wrong) and successfully builds boost, and the output does correctly list the include and library paths. </p> <p> However, it leaves boost in a state inconsistent with the instructions in Section 6.1 and 6.2. These have examples which assume the libraries are in the lib subdirectory of the boost root (which it looks like they are for pre-compiled builds), whereas the instructions in 5.2 leave them in the stage/lib subdirectory. </p> <p> There is an "install" option which puts the libraries in another location, but this isn't mentioned in the Getting Started Guide. </p> <p> Section 5.4 also doesn't mention that the paths are listed in the expected build output, so this is easy to miss if you are not specifically looking for it. </p> <p> This means that following the instructions for building from source in the Getting Started Guide doesn't work, as Section 6.4 will fail with link errors. </p> john.reynolds@… https://svn.boost.org/trac10/ticket/5786 https://svn.boost.org/trac10/ticket/5786 Report #5785: regression in parsing a list of lists Mon, 15 Aug 2011 16:54:36 GMT Mon, 15 Aug 2011 16:54:36 GMT <p> The following code doesn't compile in boost-1.47.0, but compiles fine in boost-1.44.0: </p> <pre class="wiki">#include &lt;boost/spirit/include/qi.hpp&gt; #include &lt;boost/fusion/include/std_pair.hpp&gt; int main () { std::string str ("0.1:1.5,0.2:4,-1.2:5.5;1:2,3:4,5:6;10:20,20:30,30:40"); using namespace boost::spirit::qi; std::vector&lt;std::vector&lt;std::pair&lt;double, double&gt; &gt; &gt; v; phrase_parse (str.begin(), str.end (), ((double_ &gt;&gt; ':' &gt;&gt; double_) % ',') % ';', space, v); return 0; } </pre><p> The (final) error message is: </p> <pre class="wiki">include/boost/spirit/home/support/container.hpp:278: error: no matching function for call to ‘std::vector&lt;std::pair&lt;double, double&gt;, std::allocator&lt;std::pair&lt;double, double&gt; &gt; &gt;::insert(__gnu_cxx::__normal_iterator&lt;std::pair&lt;double, double&gt;*, std::vector&lt;std::pair&lt;double, double&gt;, std::allocator&lt;std::pair&lt;double, double&gt; &gt; &gt; &gt;, const double&amp;)’ </pre> matt@… https://svn.boost.org/trac10/ticket/5785 https://svn.boost.org/trac10/ticket/5785 Report #5769: fstream.hpp facilities not usable for paths containing characters outside of the current Windows ("ANSI") code page on GCC (mingw/mingw-w64) Wed, 10 Aug 2011 13:25:49 GMT Fri, 06 Oct 2017 07:58:24 GMT <p> GCC's libstdc++ does not follow MS VC++'s lead in extending std::fstream and std::filebuf to take paths made up of wchar_t strings. </p> <p> boost::filesystem::filebuf and {i,o,}fstream rely on this functionality. In its absence, they fall back to converting the path's wchar_t representation into a char string in the Windows ("ANSI") code page of the current system locale (actually, they incorrectly use the current thread codepage, see <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5592" title="#5592: Bugs: Use CP_ACP not CP_THREAD_ACP [windows] (closed: fixed)">#5592</a>). </p> <p> The fstream facilities are therefore unusable with GCC when you build a Windows program that manipulates paths containing characters that are not representable in the current Windows code page. </p> <p> When compiled with the GCC from mingw-w64, the attached test will fail to create a file. Examination with Process Monitor reveals that the program tries to create a file with the name of "umbre??a", because the ☂ character is not representable in any Windows code page. </p> <p> GCC provides a <span class="underline">gnu_cxx::stdio_filebuf, which may be constructed from a FILE* or file descriptor; this could be used in concert with MSVCRT's _wfopen or _wopen functions, by boost::filesystem::{i,o,}fstream to provide the missing functionality. </span></p> sam@… https://svn.boost.org/trac10/ticket/5769 https://svn.boost.org/trac10/ticket/5769 Report #5766: Uninitialized variable warnings with GCC 4.4.5-6 Tue, 09 Aug 2011 12:41:52 GMT Fri, 05 Apr 2013 21:16:03 GMT <p> Uninitialized variable warnings with Redhat GCC 4.4.5-6 (x86-64), Boost <a class="changeset" href="https://svn.boost.org/trac10/changeset/73613" title="Updated jamfile for gcc 4.4 and 4.3">r73613</a>: </p> <p> In file included from /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/overlay.hpp:21, </p> <blockquote> <p> from /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp:27, from /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/difference.hpp:14, from /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/geometry.hpp:47, from /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry.hpp:17, from /home/wash/hpx/examples/geometry/point_geometry/server/point.cpp:16: </p> </blockquote> <p> /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp: In member function ‘bool boost::geometry::detail::overlay::sort_on_segment_and_distance&lt;<a class="missing wiki">TurnPoints</a>, Indexed, Geometry1, Geometry2, Reverse1, Reverse2, Strategy&gt;::operator()(const Indexed&amp;, const Indexed&amp;) const [with <a class="missing wiki">TurnPoints</a> = std::deque&lt;boost::geometry::detail::overlay::traversal_turn_info&lt;boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt; &gt;, std::allocator&lt;boost::geometry::detail::overlay::traversal_turn_info&lt;boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt; &gt; &gt; &gt;, Indexed = boost::geometry::detail::overlay::indexed_turn_operation&lt;boost::geometry::detail::overlay::traversal_turn_operation&lt;boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt; &gt; &gt;, Geometry1 = boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;, true, true, std::vector, std::vector, std::allocator, std::allocator&gt;, Geometry2 = boost::geometry::model::polygon&lt;boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;, true, true, std::vector, std::vector, std::allocator, std::allocator&gt;, bool Reverse1 = false, bool Reverse2 = false, Strategy = boost::geometry::strategy::side::side_by_triangle&lt;void&gt;]’: /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: warning: ‘pi.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[1ul]’ may be used uninitialized in this function [-Wuninitialized] /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: note: ‘pi.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[1ul]’ was declared here /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: warning: ‘pi.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[0ul]’ may be used uninitialized in this function [-Wuninitialized] /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: note: ‘pi.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[0ul]’ was declared here /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: warning: ‘pj.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[1ul]’ may be used uninitialized in this function [-Wuninitialized] /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: note: ‘pj.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[1ul]’ was declared here /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: warning: ‘pj.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[0ul]’ may be used uninitialized in this function [-Wuninitialized] /shared/boost/trunk/stage/gcc-4.4.5-release/include/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp:114: note: ‘pj.boost::geometry::model::d2::point_xy&lt;double, boost::geometry::cs::cartesian&gt;::&lt;anonymous&gt;.boost::geometry::model::point&lt;double, 2ul, boost::geometry::cs::cartesian&gt;::m_values[0ul]’ was declared here </p> Bryce Adelstein Lelbach https://svn.boost.org/trac10/ticket/5766 https://svn.boost.org/trac10/ticket/5766 Report #5765: Container Device/Sink bug Tue, 09 Aug 2011 11:49:15 GMT Tue, 09 Aug 2011 11:49:15 GMT <p> i think write should be like this, otherwise if one seeks back (after writing to overwrite replace some data, number of bytes seeked back will be duplicated on the next write. (original line changed/replaced is commented out in code) </p> <div class="wiki-code"><div class="code"><pre> <span class="n">std</span><span class="o">::</span><span class="n">streamsize</span> <span class="n">write</span><span class="p">(</span><span class="k">const</span> <span class="n">char_type</span><span class="o">*</span> <span class="n">s</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">streamsize</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">streamsize</span> <span class="n">result</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="k">if</span> <span class="p">(</span><span class="n">pos_</span> <span class="o">!=</span> <span class="n">container_</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="p">{</span> <span class="n">std</span><span class="o">::</span><span class="n">streamsize</span> <span class="n">amt</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">streamsize</span><span class="o">&gt;</span><span class="p">(</span><span class="n">container_</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="n">pos_</span><span class="p">);</span> <span class="n">result</span> <span class="o">=</span> <span class="p">(</span><span class="n">min</span><span class="p">)(</span><span class="n">n</span><span class="p">,</span> <span class="n">amt</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">s</span> <span class="o">+</span> <span class="n">result</span><span class="p">,</span> <span class="n">container_</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">pos_</span><span class="p">);</span> <span class="n">pos_</span> <span class="o">+=</span> <span class="n">result</span><span class="p">;</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">&lt;</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="n">container_</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">container_</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">s</span> <span class="o">+</span> <span class="n">result</span><span class="p">,</span> <span class="n">s</span> <span class="o">+</span> <span class="n">n</span><span class="p">);</span> <span class="c1">//container_.insert(container_.end(), s, s + n);</span> <span class="n">pos_</span> <span class="o">=</span> <span class="n">container_</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="p">}</span> <span class="k">return</span> <span class="n">n</span><span class="p">;</span> <span class="p">}</span> </pre></div></div> aris.basic@… https://svn.boost.org/trac10/ticket/5765 https://svn.boost.org/trac10/ticket/5765 Report #5745: Use native typeof support for Oracle Solaris Studio C++ compiler Mon, 01 Aug 2011 14:51:58 GMT Tue, 09 Aug 2011 09:50:47 GMT <p> Oracle Solaris Studio (former SunStudio) C++ compiler supports native typeof since version 5.9. At the same time, support for typeof emulation is not so good (many compilation errors). It would be beneficial for Boost users if Boost used native typeof instead of emulation. </p> <p> Here is proposed patch: </p> <pre class="wiki">*** boost/typeof/typeof.hpp 2011-08-01 18:46:33.411406362 +0400 --- boost/typeof/typeof.hpp.new 2011-08-01 18:46:43.680746049 +0400 *************** *** 155,160 **** --- 155,176 ---- # else # error native typeof is not supported # endif + #elif defined(__SUNPRO_CC) + # if (__SUNPRO_CC &lt; 0x590 ) + # ifdef BOOST_TYPEOF_NATIVE + # error native typeof is not supported + # endif + # ifndef BOOST_TYPEOF_EMULATION + # define BOOST_TYPEOF_EMULATION + # endif + # else + # ifndef BOOST_TYPEOF_EMULATION + # ifndef BOOST_TYPEOF_NATIVE + # define BOOST_TYPEOF_NATIVE + # endif + # define BOOST_TYPEOF_KEYWORD __typeof__ + # endif + # endif #else //unknown compiler # ifndef BOOST_TYPEOF_NATIVE # ifndef BOOST_TYPEOF_EMULATION </pre> Maxim Kartashev <maxim.kartashev@…> https://svn.boost.org/trac10/ticket/5745 https://svn.boost.org/trac10/ticket/5745 Report #5743: Serializable boost::multi_array class Sat, 30 Jul 2011 14:02:58 GMT Sat, 17 Nov 2012 22:04:26 GMT <p> An interface for Boost.Serialization library. I tried to make it myself, but as an external user is difficulty to understand safely the concepts and relevant attributes to serialize. </p> <p> Thank you. </p> Júlio Hoffimann <julio.hoffimann@…> https://svn.boost.org/trac10/ticket/5743 https://svn.boost.org/trac10/ticket/5743 Report #5734: possible handle leak in posix implementation copy_file_api Tue, 26 Jul 2011 04:04:07 GMT Tue, 26 Jul 2011 14:49:21 GMT <p> There is possible handle leak in POSIX implementation of function <strong>copy_file_api</strong>. </p> <pre class="wiki">... if ((infile = ::open(from_p.c_str(), O_RDONLY))&lt; 0) { return false; } struct stat from_stat; if (::stat(from_p.c_str(), &amp;from_stat)!= 0) { return false; } ... </pre><p> if <strong>::stat</strong> failed, then function exits without closing <strong>infile</strong> handle. </p> <p> This problem exists both in <strong>v3</strong> and <strong>v2</strong> implementations of filesystem. Also this problem exists in previous releases. </p> alexey.kutumov@… https://svn.boost.org/trac10/ticket/5734 https://svn.boost.org/trac10/ticket/5734 Report #5721: Modulo operation for boost::rational Tue, 19 Jul 2011 20:41:10 GMT Tue, 19 Jul 2011 20:41:10 GMT <p> boost::rational currently omits to define modulo on rational numbers. The attached patches adds operator%= to boost::rational and therefore allows it to use ordered_euclidian_ring_operators. </p> mlang@… https://svn.boost.org/trac10/ticket/5721 https://svn.boost.org/trac10/ticket/5721 Report #5712: terminate called recursively with filesystem header Mon, 18 Jul 2011 22:15:37 GMT Mon, 18 Jul 2011 22:15:37 GMT <p> Hello, </p> <p> I'm using boost::filesystem within my project (boost 1.47.0). I have compiled the boost under cygwin with bjam. I have some problems with exception throws / catches: The following example shows the problem: </p> <p> #include &lt;stdexcept&gt; #include &lt;boost/filesystem.hpp&gt; </p> <p> int main(int argc, char* argv[]) { </p> <blockquote> <p> throw std::runtime_error("xxx"); return 0; </p> </blockquote> <p> } </p> <p> If I compile this code under Cygwin and link cygboost_filesystem, cygboost_system and libbost_exception, the programs terminates with this messages: terminate called after throwing an instance of 'std::runtime_error' terminate called recursively </p> <p> If I remove the boost/filesystem include the program produce the correct message: terminate called after throwing an instance of 'std::runtime_error' </p> <blockquote> <p> what(): xxx </p> </blockquote> <p> If I change the program to: </p> <p> int main(int argc, char* argv[]) { </p> <blockquote> <p> try { </p> <blockquote> <p> throw std::runtime_error("xxx"); </p> </blockquote> <p> } catch (...) {} return 0; </p> </blockquote> <p> } </p> <p> the program breaks down with the filesystem include: terminate called after throwing an instance of 'std::runtime_error' terminate called recursively </p> <p> without the include always works fine. </p> <p> Thanks a lot </p> philipp.kraus@… https://svn.boost.org/trac10/ticket/5712 https://svn.boost.org/trac10/ticket/5712 Report #5706: Gcc 4.6 warnings for Boost Graph Sun, 17 Jul 2011 11:07:20 GMT Tue, 24 Jan 2017 20:26:11 GMT <p> Dear authors, </p> <p> Compiling our applications with newest gcc-4.6- some warnings regarding boost graph are displayed. We would appreciate if you could silence them. </p> <p> Please find below gcc output </p> <p> Ubuntu oneiric 64 bits boost 1.47/ trunk , gcc Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/lto-wrapper Target: x86_64-linux-gnu </p> <pre class="wiki"> /adnet/boost-1.47.0/include/boost/graph/detail/adj_list_edge_iterator.hpp: In member function ‘void boost::vec_adj_list_impl&lt;Graph, Config, Base&gt;::copy_impl(const boost::vec_adj_list_impl&lt;Graph, Config, Base&gt;&amp;) [with Graph = boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, Config = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_bundle_t, pce::te::node_te_attributes, boost::no_property&gt;, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt;, pce::te::graph_te_attributes, boost::listS&gt;::config, Base = boost::directed_graph_helper&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_bundle_t, pce::te::node_te_attributes, boost::no_property&gt;, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt;, pce::te::graph_te_attributes, boost::listS&gt;::config&gt;, boost::vec_adj_list_impl&lt;Graph, Config, Base&gt; = boost::vec_adj_list_impl&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_bundle_t, pce::te::node_te_attributes, boost::no_property&gt;, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt;, pce::te::graph_te_attributes, boost::listS&gt;::config, boost::directed_graph_helper&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, pce::te::node_te_attributes, pce::te::link_te_attributes, pce::te::graph_te_attributes, boost::listS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_bundle_t, pce::te::node_te_attributes, boost::no_property&gt;, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt;, pce::te::graph_te_attributes, boost::listS&gt;::config&gt; &gt;]’: /adnet/boost-1.47.0/include/boost/graph/detail/adj_list_edge_iterator.hpp:95:84: warning: ‘*((void*)&amp; ei_end +32)’ may be used uninitialized in this function [-Wuninitialized] /adnet/boost-1.47.0/include/boost/graph/detail/adjacency_list.hpp:2128:27: note: ‘*((void*)&amp; ei_end +32)’ was declared here /adnet/boost-1.47.0/include/boost/graph/detail/adj_list_edge_iterator.hpp:70:9: warning: ‘*((void*)(&amp; ei)+48).__gnu_cxx::__normal_iterator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;*, std::vector&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;, std::allocator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt; &gt; &gt; &gt;::_M_current’ may be used uninitialized in this function [-Wuninitialized] /adnet/boost-1.47.0/include/boost/graph/detail/adjacency_list.hpp:2128:23: note: ‘*((void*)(&amp; ei)+48).__gnu_cxx::__normal_iterator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;*, std::vector&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;, std::allocator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt; &gt; &gt; &gt;::_M_current’ was declared here /adnet/boost-1.47.0/include/boost/graph/detail/adjacency_list.hpp:2117:19: warning: ‘*((void*)(&amp; ei)+32).__gnu_cxx::__normal_iterator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;*, std::vector&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt;, std::allocator&lt;boost::detail::sep_&lt;long unsigned int, boost::property&lt;boost::edge_bundle_t, pce::te::link_te_attributes, boost::no_property&gt; &gt; &gt; &gt; &gt;::_M_current’ may be used uninitialized in this function [-Wuninitialized] </pre><p> Thank you in advance and best regards </p> <p> R. </p> ramon.casellas@… https://svn.boost.org/trac10/ticket/5706 https://svn.boost.org/trac10/ticket/5706 Report #5702: Filename is returned within quotes instead without Sat, 16 Jul 2011 09:30:02 GMT Tue, 19 Jul 2011 07:31:08 GMT <p> In the reference (<a href="http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/reference.html#path-decomposition">http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/reference.html#path-decomposition</a>) it is said that for example the filename returned by filename() will be without the quotes: </p> <div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">path</span><span class="p">(</span><span class="s">&quot;/foo/bar.txt&quot;</span><span class="p">).</span><span class="n">filename</span><span class="p">();</span> <span class="c1">// outputs &quot;bar.txt&quot; (without the quotes)</span> </pre></div></div><p> But actually I'm getting an output with the filename enclosed in quotes like: </p> <pre class="wiki">"bar.txt" </pre><p> I'm using Windows Vista. </p> moritz@… https://svn.boost.org/trac10/ticket/5702 https://svn.boost.org/trac10/ticket/5702 Report #5698: Contains parameter Thu, 14 Jul 2011 14:52:50 GMT Thu, 14 Jul 2011 14:52:50 GMT <p> I tested this </p> <pre class="wiki"> template&lt;typename Args, typename Tag&gt; struct contains_parameter : mpl::not_&lt; typename boost::is_void&lt; typename parameter::binding&lt; Args, Tag, void &gt;::type &gt;::type &gt; {}; </pre><p> which first appeared here: </p> <p> <a class="ext-link" href="http://boost.2283326.n4.nabble.com/boost-users-Boost-Parameter-ArgumentPack-is-type-contained-td3415943.html"><span class="icon">​</span>http://boost.2283326.n4.nabble.com/boost-users-Boost-Parameter-ArgumentPack-is-type-contained-td3415943.html</a> </p> <p> and would like to suggest it as an addition. </p> er.ci.2020@… https://svn.boost.org/trac10/ticket/5698 https://svn.boost.org/trac10/ticket/5698 Report #5687: some evaluation functions do not work with BOOST_RESULT_OF_USE_DECLTYPE Tue, 12 Jul 2011 11:45:37 GMT Tue, 28 Aug 2012 01:43:00 GMT <p> Codes using <code>phoenix::construct</code> fail to compile in C++0x with <code>BOOST_RESULT_OF_USE_DECLTYPE</code> (Tested on gcc 4.6.1 and clang TOT). Here is a minimal test code: </p> <pre class="wiki">#define BOOST_RESULT_OF_USE_DECLTYPE #include &lt;boost/phoenix/core.hpp&gt; #include &lt;boost/phoenix/object/construct.hpp&gt; int main (int argc, char* argv[]) { boost::phoenix::construct&lt;int&gt;()(); return 0; } </pre><p> Also, you can get the compile error by compiling <code>libs/phoenix/test/object/new_delete_tests.cpp</code> with <code>BOOST_RESULT_OF_USE_DECLTYPE</code>. </p> Michel MORIN <mimomorin@…> https://svn.boost.org/trac10/ticket/5687 https://svn.boost.org/trac10/ticket/5687 Report #5680: bootstrap Boost.Build fails with MinGW 20110530: missing sys/wait.h, sys/resource.h, ar.h Fri, 08 Jul 2011 18:32:13 GMT Sun, 19 Apr 2015 20:40:33 GMT <p> My OS is Windows XP Pro. </p> <p> To reproduce: </p> <ul><li>Install MinGW 20110530. </li><li>Download and uncompress boost_1_46_1.tar.bz2. </li><li>Launch MinGW Shell from Start menu. </li><li>Verify path: </li></ul><pre class="wiki">$ printenv PATH .:/mingw/bin:/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem </pre><ul><li>cd and run bootstrap: </li></ul><pre class="wiki">$ cd boost_1_46_1/tools/build/v2 $ sh bootstrap.sh Bootstrapping the build engine with toolset gcc... Failed to bootstrap the build engine Consult 'bootstrap.log' for more details $ cat bootstrap.log ### ### Using 'gcc' toolset. ### rm -rf bootstrap mkdir bootstrap gcc -o bootstrap/jam0 command.c compile.c debug.c expand.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c builtins.c:32:23: fatal error: sys/wait.h: No such file or directory compilation terminated. execunix.c:17:26: fatal error: sys/resource.h: No such file or directory compilation terminated. fileunix.c:97:17: fatal error: ar.h: No such file or directory compilation terminated. </pre><p> Surrounding the above failed includes with #ifndef <code>__</code>MINGW32<code>__</code> ... #endif did not fix the problem. </p> Alex Millian Hankins <lx_boost@…> https://svn.boost.org/trac10/ticket/5680 https://svn.boost.org/trac10/ticket/5680 Report #5677: Bootstrap fails with python versions 3.1 and up Thu, 07 Jul 2011 21:15:11 GMT Thu, 26 Oct 2017 13:56:07 GMT <p> Using bootstrap.sh to build boost with python versions 3.1 and up generates output similar to the following and the subsequent build fails for boost.python: </p> <p> Detecting Python version... 3.2 Detecting Python root... File "&lt;string&gt;", line 1 </p> <blockquote> <p> import sys; print sys.prefix </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> <a class="missing wiki">SyntaxError</a>: invalid syntax </p> <p> This appears to be caused by the code checking for the python root using a form of the 'print' function that is no longer valid in later versions of python. Attached is a patch that fixes this issue. </p> Eric Barr <eric.barr@…> https://svn.boost.org/trac10/ticket/5677 https://svn.boost.org/trac10/ticket/5677 Report #5673: Quick allocator error in multi thread Wed, 06 Jul 2011 12:48:01 GMT Tue, 25 Oct 2011 16:16:17 GMT <p> Compiler: <strong>MSVS 2008</strong> use macros <strong>BOOST_SP_USE_QUICK_ALLOCATOR</strong> </p> <p> Exception (Access vialation by reading address) occured by constructor of <strong>shared_ptr</strong>. </p> <p> Cause of exception is multi thread creation of static mutex in quick allocator. </p> <p> shared_ptr call quick allocator. quick allocator use next code: </p> <pre class="wiki">lightweight_mutex::scoped_lock lock( mutex() ); </pre><p> function <strong>mutex()</strong> return internal static variable: </p> <pre class="wiki">boost_1_44_0\boost\smart_ptr\detail\quick_allocator.hpp template&lt;unsigned size, unsigned align_&gt; struct allocator_impl { ... static lightweight_mutex &amp; mutex() { static freeblock&lt; sizeof( lightweight_mutex ), boost::alignment_of&lt; lightweight_mutex &gt;::value &gt; fbm; static lightweight_mutex * pm = new( &amp;fbm ) lightweight_mutex; return *pm; } ... } </pre><p> 2 thread call mutex() (first time for this instantiation of template class allocator_impl). One start init <strong>pm</strong> and go to sleep. Other check that <strong>pm</strong> is initialized and return its value (in my case NULL) and raise exception. <br /> Initialization of static variable in C++ is not safe for multi thread. This code is incorrect. In dependence from realization of static variable you will be have access vialation or memory leak - flag of static variable initialization (construction) set before or after initialization. <br /> In MSVS 2008 flag set before and you take access vialation. <br /><br /> <strong>Decision</strong> <br /> Not resolve, but minimize problem. <br /> Idea:<br /> As I understand, This problem can appear in first initialization of <span class="underline">every</span> instantiation of shared_ptr - first use <span class="underline">every</span> instantiation of allocator_impl. <br /> If you synchronize of initialization <strong>pm</strong> then problem can appear only first initialization of <span class="underline">any</span> instantiation of shared_ptr. And I can create first fictive shared_ptr in non-multi thread and then normal use shared_ptr in multi thread. <br /> Realization:<br /> </p> <pre class="wiki">boost_1_44_0\boost\smart_ptr\detail\quick_allocator.hpp lightweight_mutex &amp; global_mutex() { static freeblock&lt; sizeof( lightweight_mutex ), boost::alignment_of&lt; lightweight_mutex &gt;::value &gt; fbm; static lightweight_mutex * pm = new( &amp;fbm ) lightweight_mutex; return *pm; } template&lt;unsigned size, unsigned align_&gt; struct allocator_impl { static lightweight_mutex &amp; mutex() { static freeblock&lt; sizeof( lightweight_mutex ), boost::alignment_of&lt; lightweight_mutex &gt;::value &gt; fbm; static lightweight_mutex * pm = NULL; if(pm == NULL) { lightweight_mutex::scoped_lock lock( global_mutex() ); if(pm == NULL) { pm = new( &amp;fbm ) lightweight_mutex; } } return *pm; } } </pre> Yury Podpruzhnikov <QWERTYura@…> https://svn.boost.org/trac10/ticket/5673 https://svn.boost.org/trac10/ticket/5673 Report #5672: Intel compiler failure with BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF Tue, 05 Jul 2011 17:27:54 GMT Tue, 05 Jul 2011 17:27:54 GMT <p> Attempting to use the Intel 11.1 or 12.0 compiler to test the existence of a nested template using the macro BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF results in a compiler error. When running the has_xxx.cpp MPL test against Intel 12.0, the error message is: </p> <p> "has_xxx.cpp(20): error: more than one instance of overloaded function "has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" matches the argument list: </p> <blockquote> <p> function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute0&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute1&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute2&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute3&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" function template "boost::mpl::aux::yes_tag has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt;::has_xxx_template_test(const volatile boost::mpl::aux::type_wrapper&lt;V&gt; *, has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;::has_xxx_template_introspect&lt;a5&gt;::has_xxx_template_substitute4&lt;V::xxx&gt; *) [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" argument types are: (int) </p> </blockquote> <blockquote> <p> BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(has_xxx_template, xxx, false) <sup> </sup></p> <blockquote> <p> detected during: </p> <blockquote> <p> instantiation of class "has_xxx_template&lt;T, fallback_&gt;::has_xxx_template_introspect&lt;U&gt; [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;, U=a5]" at line 20 instantiation of class "has_xxx_template&lt;T, fallback_&gt; [with T=a5, fallback_=boost::mpl::bool_&lt;false&gt;]" at line 148 of "../../../boost/mpl/assert.hpp" instantiation of class "boost::mpl::assert_arg_pred_not&lt;P&gt; [with P=has_xxx_template&lt;a5, boost::mpl::bool_&lt;false&gt;&gt;]" at line 82" </p> </blockquote> </blockquote> </blockquote> <p> The Intel 11.1 compiler has the same error. </p> <p> John Maddock has reported this to Intel as Intel support ID <a class="missing ticket">#635997</a>. </p> anonymous https://svn.boost.org/trac10/ticket/5672 https://svn.boost.org/trac10/ticket/5672 Report #5658: how to get rid of nasty compiler warning in boost/property_tree/detail/rapidxml.hpp Wed, 29 Jun 2011 07:39:25 GMT Fri, 14 Feb 2014 15:10:46 GMT <p> compiling e.g libs/graph/src/graphml.cpp warns ... </p> <pre class="wiki">/boost/property_tree/detail/rapidxml.hpp: In function `size_t boost::property_t ree::detail::rapidxml::internal::get_index(Ch) [with Ch = char]': ./boost/property_tree/detail/rapidxml.hpp:1413: instantiated from `static unsi gned char boost::property_tree::detail::rapidxml::xml_document&lt;Ch&gt;::whitespace_p red::test(Ch) [with Ch = char]' ./boost/property_tree/detail/rapidxml.hpp:1542: instantiated from `static void boost::property_tree::detail::rapidxml::xml_document&lt;Ch&gt;::skip(Ch*&amp;) [with Stop Pred = boost::property_tree::detail::rapidxml::xml_document&lt;char&gt;::whitespace_pr ed, int Flags = 3072, Ch = char]' ./boost/property_tree/detail/rapidxml.hpp:1377: instantiated from `void boost: :property_tree::detail::rapidxml::xml_document&lt;Ch&gt;::parse(Ch*) [with int Flags = 3072, Ch = char]' ./boost/property_tree/detail/xml_parser_read_rapidxml.hpp:116: instantiated fr om `void boost::property_tree::xml_parser::read_xml_internal(std::basic_istream&lt; typename Ptree::key_type::value_type, std::char_traits&lt;typename Ptree::key_type: :value_type&gt; &gt;&amp;, Ptree&amp;, int, const std::string&amp;) [with Ptree = boost::property_ tree::basic_ptree&lt;std::string, std::string, std::less&lt;std::string&gt; &gt;]' ./boost/property_tree/xml_parser.hpp:52: instantiated from `void boost::proper ty_tree::xml_parser::read_xml(std::basic_istream&lt;typename Ptree::key_type::value _type, std::char_traits&lt;typename Ptree::key_type::value_type&gt; &gt;&amp;, Ptree&amp;, int) [ with Ptree = boost::property_tree::ptree]' libs/graph/src/graphml.cpp:49: instantiated from here ./boost/property_tree/detail/rapidxml.hpp:317: warning: comparison is always fal se due to limited range of data type </pre><p> Caused by the template: </p> <pre class="wiki">template&lt;class Ch&gt; inline size_t get_index(const Ch c) { // If not ASCII char, its sematic is same as plain 'z' if (c &gt; 255) { return 'z'; } return c; } </pre><p> How to avoid ? Just specify additionally a user defined implementation of get_index for the "char" type : </p> <pre class="wiki"> inline size_t get_index(const char c) { return c; } template&lt;class Ch&gt; inline size_t get_index(const Ch c) { // If not ASCII char, its sematic is same as plain 'z' if (c &gt; 255) { return 'z'; } return c; } </pre><p> I checked the code size (using gcc4.0) : same and the difference of the ASM code: "same" </p> <pre class="wiki">14972c14972 &lt; cmpq (%r15), %rdi --- &gt; cmpq %rdi, (%r15) 14974c14974 &lt; jae .L3637 --- &gt; jbe .L3637 15002c15002 &lt; cmpq -16(%rsi), %rdi --- &gt; cmpq %rdi, -16(%rsi) 15004c15004 &lt; jae .L3643 --- &gt; jbe .L3643 15017c15017 &lt; cmpq -16(%rdx), %rdi --- &gt; cmpq %rdi, -16(%rdx) 15019c15019 &lt; jb .L3796 --- &gt; ja .L3796 15487c15487 --- </pre> Dieter Stach <Dieter.Stach@…> https://svn.boost.org/trac10/ticket/5658 https://svn.boost.org/trac10/ticket/5658 Report #5656: Support options without '=' Tue, 28 Jun 2011 14:21:25 GMT Tue, 05 Mar 2013 20:19:02 GMT <p> parse_config_file throws invalid_syntax when a line doesn't contain '=' But for bool options, a '=' should not be required. </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5656 https://svn.boost.org/trac10/ticket/5656 Report #5655: parse_config_file option to not throw if file can't be opened Tue, 28 Jun 2011 14:06:34 GMT Sun, 16 Oct 2011 18:11:36 GMT <p> Could you add an option to parse_config_file to not throw when the file can't be opened? </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5655 https://svn.boost.org/trac10/ticket/5655 Report #5654: Example parse_config_file missing template parameter Tue, 28 Jun 2011 13:40:15 GMT Sun, 12 Aug 2012 20:33:54 GMT <pre class="wiki">store(parse_config_file("example.cfg", desc), vm); </pre><p> parse_config_file needs a template parameter in this case. </p> <p> <a href="http://www.boost.org/doc/libs/1_46_1/doc/html/program_options/overview.html#id2218686">http://www.boost.org/doc/libs/1_46_1/doc/html/program_options/overview.html#id2218686</a> </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5654 https://svn.boost.org/trac10/ticket/5654 Report #5651: Improvements to to_[lower/upper]_copy Tue, 28 Jun 2011 11:40:12 GMT Wed, 28 Dec 2011 18:56:50 GMT <p> to_[lower/upper]_copy implicitly deduces the return type from the input type unless you supply the output as a second parameter. This is not always possible, consider for example: const std::string example = to_lower_copy&lt; std::string &gt;("foo") + to_upper_copy&lt; std::string &gt;("bar"); . To achieve the same we currently need to construct an additional unnecessary temporary which only purpose is to inform the algorithm of the return type. The attached case_conv.hpp introduces 1 new overload for each variant which shouldn't break any existing code. Discussion can be found at: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2011/06/183031.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2011/06/183031.php</a> . </p> sairony@… https://svn.boost.org/trac10/ticket/5651 https://svn.boost.org/trac10/ticket/5651 Report #5649: create_directories() fails with NTFS mounted volumes Tue, 28 Jun 2011 09:49:49 GMT Fri, 06 Sep 2013 20:05:40 GMT <p> When there is an NTFS mounted volume at some level in the path which is passed to <code>create_directories</code>. The function fails because of the first two checks: </p> <div class="wikipage" style="font-size: 80%"><div class="wiki-code"><div class="code"><pre><span class="n">BOOST_FILESYSTEM_DECL</span> <span class="kt">bool</span> <span class="nf">create_directories</span><span class="p">(</span><span class="k">const</span> <span class="n">path</span><span class="o">&amp;</span> <span class="n">p</span><span class="p">,</span> <span class="n">system</span><span class="o">::</span><span class="n">error_code</span><span class="o">*</span> <span class="n">ec</span><span class="p">)</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span> <span class="o">||</span> <span class="n">exists</span><span class="p">(</span><span class="n">p</span><span class="p">))</span> <span class="p">{</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">p</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">is_directory</span><span class="p">(</span><span class="n">p</span><span class="p">))</span> <span class="p">{</span> <span class="p">...</span><span class="k">throws</span><span class="o">/</span><span class="n">returns</span> <span class="n">an</span> <span class="n">error</span><span class="p">...</span> </pre></div></div></div><p> For a mounted volume path p is not <code>empty</code>, it <code>exists</code>, but <code>is_directory(p)</code> fails. This happens because a mounted volume directory is reported by <code>status(p)</code> as <code>file_type::reparse_file</code>. </p> <p> Probably <code>is_directory()</code> should be changed to accept existing NTFS mounted volumes as already existing directories along the path which is to be created. </p> <p> Windows 7 64bit, Boost 1.46.1, filesystem v3, MSVC 9 </p> Tomas Kazmar <tomash.kazmar@…> https://svn.boost.org/trac10/ticket/5649 https://svn.boost.org/trac10/ticket/5649 Report #5647: Should Wave filesystem_compatibility.hpp be absorbed into Filesystem? Mon, 27 Jun 2011 14:56:37 GMT Mon, 27 Jun 2011 14:56:37 GMT <p> Should Wave filesystem_compatibility.hpp be absorbed into Filesystem? </p> <p> If so, how? </p> <ul><li>As a separate header? </li></ul><ul><li>As changes to existing headers&gt; </li></ul> Beman Dawes https://svn.boost.org/trac10/ticket/5647 https://svn.boost.org/trac10/ticket/5647 Report #5646: Test needed for Boost libraries dependent on Filesystem Mon, 27 Jun 2011 14:36:56 GMT Mon, 27 Jun 2011 14:36:56 GMT <p> A (local) test script needs to be developed that tests Boost libraries that are dependent on Filesystem both before and after a set of changes, and reports any differences in outcome. </p> <p> Although the immediate motivation is to better test that Boost.Filesystem changes do not break Boost libraries dependent on Filesystem, such a script would be useful for other libraries. Thus it should not be specific to Boost.Filesystem. </p> Beman Dawes https://svn.boost.org/trac10/ticket/5646 https://svn.boost.org/trac10/ticket/5646 Report #5640: serialization vector backward compatibility problem Fri, 24 Jun 2011 21:17:06 GMT Tue, 07 Feb 2012 17:38:25 GMT <p> We've recently upgraded from 1.40.0 to 1.46.1 and uncovered the following problem with vector serialization. </p> <p> In 1.40.0, the code to load a vector is: </p> <pre class="wiki">#ifndef BOOST_SERIALIZATION_VECTOR_VERSION #define BOOST_SERIALIZATION_VECTOR_VERSION 4 #endif ... template&lt;class Archive, class U, class Allocator&gt; inline void load( Archive &amp; ar, std::vector&lt;U, Allocator&gt; &amp;t, const unsigned int /* file_version */, mpl::true_ ){ collection_size_type count(t.size()); ar &gt;&gt; BOOST_SERIALIZATION_NVP(count); t.resize(count); unsigned int item_version=0; if(BOOST_SERIALIZATION_VECTOR_VERSION &lt; ar.get_library_version()) ar &gt;&gt; BOOST_SERIALIZATION_NVP(item_version); if (!t.empty()) ar &gt;&gt; make_array(detail::get_data(t),t.size()); } </pre><p> In 1.46.1, the same method is </p> <pre class="wiki">#ifndef BOOST_SERIALIZATION_VECTOR_VERSIONED #define BOOST_SERIALIZATION_VECTOR_VERSIONED(V) (V==4 || V==5) #endif ... template&lt;class Archive, class U, class Allocator&gt; inline void load( Archive &amp; ar, std::vector&lt;U, Allocator&gt; &amp;t, const unsigned int /* file_version */, mpl::true_ ){ collection_size_type count(t.size()); ar &gt;&gt; BOOST_SERIALIZATION_NVP(count); t.resize(count); unsigned int item_version=0; if(BOOST_SERIALIZATION_VECTOR_VERSIONED(ar.get_library_version())) { ar &gt;&gt; BOOST_SERIALIZATION_NVP(item_version); } if (!t.empty()) ar &gt;&gt; make_array(detail::get_data(t),t.size()); } </pre><p> Look at the difference when reading in a vector from serialization library version 4. In 1.40.0, the logic assumes that versions greater than 4 should read in item_version. In 1.46.1, the logic assumes that versions equal to 4 or 5 should read in item_version. So, if restoring a file saved with version 4, 1.40.0 will not ready in item_version but 1.46.1 will. </p> <p> We are working around this issue with a trick similar to the header vector_135.hpp, but would like to see this fixed in an upcoming release. </p> <p> After some research, I found this change was made with changeset 55415 for ticket 2271. </p> jfaust@… https://svn.boost.org/trac10/ticket/5640 https://svn.boost.org/trac10/ticket/5640 Report #5638: greg_month::get_month_map_ptr is not thread safe Fri, 24 Jun 2011 08:06:03 GMT Tue, 17 Mar 2015 16:16:58 GMT <p> We recently have found a crash issue related to this function in greg_month.cpp. </p> <p> the block from line 39 is not thread safe. If multiple threads call this function simultaneously, it will lead to a crash. As one thread is populating the map while the other thread may start using the map, or even worse two threads populate the map at the same time. </p> fatbone <fatbone@…> https://svn.boost.org/trac10/ticket/5638 https://svn.boost.org/trac10/ticket/5638 Report #5637: use of mpl::print imposes default constructible requirement on argument Fri, 24 Jun 2011 01:00:34 GMT Tue, 15 Sep 2015 14:44:48 GMT <p> I'm using the following to debug some TMP code that looks like the following. </p> <pre class="wiki">#include &lt;boost/mpl/print.hpp&gt; struct X { X(int); }; boost::mpl::print&lt; X &gt;::type x; boost::mpl::print&lt; X &gt;::type y; </pre><p> I get an error message that the type X is not default constructible. A little investigation yields the definition of mpl::print (simplified for exposition) </p> <pre class="wiki">template &lt;class T&gt; struct print : identity&lt;T&gt; { enum { n = sizeof(T) + -1 }; }; </pre><p> So invoking the print creates an instance with the default constructor which provokes the error in this case. For my purposes, I made the following change which seems to address the problem: </p> <pre class="wiki">template &lt;class T&gt; struct print : identity&lt;T *&gt; { enum { n = sizeof(T) + -1 }; }; </pre><p> I'm using MSVC 9.0. </p> <p> A couple of misceleanous issues besides this: </p> <p> On my current version of GCC - 4.3.4 I get no warning at all. </p> <p> If the same type is printed more than once, I only get the warning on the first instance. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/5637 https://svn.boost.org/trac10/ticket/5637 Report #5636: BGL isomorphism vertex invariant interface change Thu, 23 Jun 2011 22:48:35 GMT Fri, 29 Jul 2011 02:26:06 GMT <p> (This is the last isomorphism ticket I think. :-)) </p> <p> I have one more suggestion about how to handle vertex invariants. To determine whether <code>u</code> and <code>v</code> should be considered equivalent by the isomorphism, instead of providing two functors <code>f</code> and <code>g</code>, calling <code>f(u)</code> and <code>g(v)</code> to get a pair of integers, and finally comparing the result, I think it would be cleaner to have a "binary" predicate <code>p</code> which would be called as <code>p(u,v)</code>. (In reality of course you'd probably want to have it receive <code>g1</code> and <code>g2</code> as well, so it'd really be a 4-arg function.) This should also let you get rid of the <code>vertex_max_invariant</code> parameter perhaps. </p> <p> I'm not sure of how this would impact the performance or how you'd do sorting, but you could probably do it by doing an N<sup>2 traversal and recording for each <code>u</code> in <code>g1</code> how many <code>v</code>s in <code>g2</code> are considered equivalent. This is a bit different from what you're doing now, I think. </sup></p> <p> (The benefit of this would be it becomes easier to impose extra conditions on the isomorphism. Instead of figuring out how to encode everything into an integer -- and worrying about the fact that you make an array of size <code>vertex_max_invariant</code>, so you can't even use all that much of that size -- you can just test it directly.) </p> Evan Driscoll <driscoll@…> https://svn.boost.org/trac10/ticket/5636 https://svn.boost.org/trac10/ticket/5636 Report #5634: BGL isomorphism edge invariants Thu, 23 Jun 2011 22:19:14 GMT Wed, 22 Aug 2012 20:38:06 GMT <p> Can you add a feature that would allow the user to specify edge invariants in a similar way to how it is presently possible to specify vertex invariants? (I.e. an isomorphism is only considered if some functor says that two edges are somehow equivalent.) </p> <p> The motivation for this is I'd like to test isomorphism between finite automata from another library, for testing purposes. I'm considering converting the transition graph to a BGL graph and using the isomorphism function, but I'm not sure that's possible as I can't require that corresponding edges are labeled with the same symbol. </p> <p> (In the meantime I think I may know where to slip it into the code, so I may make my own copy of invariant.hpp and make that change. If I can get it to seemingly work, I'll report back with the patch.) </p> <p> Alternately, it may be possible with something I'm missing; I'm a newbie to the BGL. But I don't know where it'd show up. </p> Evan Driscoll <driscoll@…> https://svn.boost.org/trac10/ticket/5634 https://svn.boost.org/trac10/ticket/5634 Report #5629: base64 encode/decode for std::istreambuf_iterator/std::ostreambuf_iterator Wed, 22 Jun 2011 13:29:41 GMT Wed, 19 Feb 2014 21:27:41 GMT <p> MSVS 2008 The code: </p> <pre class="wiki">#include "boost/archive/iterators/base64_from_binary.hpp" #include "boost/archive/iterators/binary_from_base64.hpp" #include "boost/archive/iterators/transform_width.hpp" //typedefs typedef std::istreambuf_iterator&lt;char&gt; my_istream_iterator; typedef std::ostreambuf_iterator&lt;char&gt; my_ostream_iterator; typedef boost::archive::iterators::base64_from_binary&lt; boost::archive::iterators::transform_width&lt; my_istream_iterator, 6, 8&gt; &gt; bin_to_base64; typedef boost::archive::iterators::transform_width&lt; boost::archive::iterators::binary_from_base64&lt; my_istream_iterator &gt;, 8, 6 &gt; base64_to_bin; void test() { { //INPUT FILE!!! std::ifstream ifs("test.zip", std::ios_base::in|std::ios_base::binary); std::ofstream ofs("test.arc", std::ios_base::out|std::ios_base::binary); std::copy( bin_to_base64( my_istream_iterator(ifs &gt;&gt; std::noskipws) ), bin_to_base64( my_istream_iterator() ), my_ostream_iterator(ofs) ); } { std::ifstream ifs("test.arc", std::ios_base::in|std::ios_base::binary); std::ofstream ofs("test.rez", std::ios_base::out|std::ios_base::binary); std::copy( base64_to_bin( my_istream_iterator(ifs &gt;&gt; std::noskipws) ), base64_to_bin( my_istream_iterator() ), my_ostream_iterator(ofs) ); } } </pre><p> Result: 1) If the INPUT FILE will be any of ZIP-file format. The result was: </p> <blockquote> <p> a) _DEBUG_ERROR("istreambuf_iterator is not dereferencable"); <em>it can be disabled or ignored b) The encoded file "test.rez" will have one superfluous byte than INPUT FILE </em></p> </blockquote> <p> 2) If the INPUT FILE will any other file (binary or text) all will be OK. </p> nen777w@… https://svn.boost.org/trac10/ticket/5629 https://svn.boost.org/trac10/ticket/5629 Report #5625: sp_counted_base implementation using boost.atomic Tue, 21 Jun 2011 14:21:29 GMT Tue, 21 Jun 2011 14:21:29 GMT <p> I've had this code hanging around waiting for Boost.Atomic to make some progress towards submission, review and acceptance. When that happens, or when people have some other C++0x atomics library, this uses it to implement sp_counted_base in a nice simple fashion without the need for all the current platform-specific code. For now, perhaps it might be useful to a few people who are using the out-of-tree Boost.Atomic. </p> Phil Endecott https://svn.boost.org/trac10/ticket/5625 https://svn.boost.org/trac10/ticket/5625 Report #5623: property tree bug Tue, 21 Jun 2011 12:55:38 GMT Wed, 21 Jan 2015 13:13:18 GMT <p> If the xml contains Chinese characters, rapidxml can not be resolved correctly, the problem is rapidxml the "get_index", </p> <blockquote> <p> Revised "static_cast &lt;unsigned char&gt; (ch)" can solve this problem </p> </blockquote> chenlitao1@… https://svn.boost.org/trac10/ticket/5623 https://svn.boost.org/trac10/ticket/5623 Report #5621: Adding custom allocator support in Boost file-system Mon, 20 Jun 2011 06:49:38 GMT Mon, 20 Jun 2011 06:49:38 GMT <p> Please provide the custom allocator support for the string inside the Boost File-system. </p> gokul007@… https://svn.boost.org/trac10/ticket/5621 https://svn.boost.org/trac10/ticket/5621 Report #5619: zlib: Add support for additional flush mode Sat, 18 Jun 2011 07:15:11 GMT Sat, 18 Jun 2011 07:15:11 GMT <p> The zlib filter uses Z_SYNC_FLUSH which is the most widely used flush mode. However SSH requires Z_PARTIAL_FLUSH. For further information please see the "Partial Flush" paragraph at: www.bolet.org/~pornin/deflate-flush.html </p> <p> It would be trivial to add the new flush mode:<br /> </p> <p> <strong>File: zlib.hpp</strong><br /> </p> <p> Add <br /> BOOST_IOSTREAMS_DECL extern const int partial_flush;<br /> </p> <p> Add additional argument to zlib_params:<br /> </p> <blockquote> <p> zlib_params( <br /> </p> </blockquote> <blockquote> <blockquote> <p> int flush_mode = zlib::default_flush_mode<br /> </p> </blockquote> </blockquote> <p> add int flush_mode_ member to zlib_base<br /> </p> <p> init flush_mode_ member in zlib_base::do_init<br /> </p> <p> flush_mode_ = p.flush_mode;<br /> </p> <p> and in the filter function change the xinflate to:<br /> </p> <blockquote> <p> int result = xinflate(flush_mode_);<br /> </p> </blockquote> <p> <strong>File: zlib.cpp</strong><br /> </p> <p> const int partial_flush = Z_PARTIAL_FLUSH;<br /> </p> <p> const int default_flush_mode = sync_flush;<br /> </p> <p> <br /> </p> <p> Please let me know if there is an interest for the diff files. </p> mb@… https://svn.boost.org/trac10/ticket/5619 https://svn.boost.org/trac10/ticket/5619 Report #5616: No output when using a filtering_ostream pointer Thu, 16 Jun 2011 18:35:32 GMT Thu, 16 Jun 2011 18:35:32 GMT <p> When creating a filtering_ostream on the heap, the output is empty. </p> <p> Following code works: </p> <pre class="wiki"> boost::regex pattern("..."); boost::iostreams::regex_filter filter(pattern,"..."); boost::iostreams::filtering_ostream out; out.push(filter); out.push(std::cout); out&lt;&lt;"I am written to std::cout"&lt;&lt;endl; </pre><p> However, following code does not. Nothing is printed on the standard output: </p> <pre class="wiki"> boost::regex pattern("..."); boost::iostreams::regex_filter filter(pattern,"..."); boost::iostreams::filtering_ostream &amp;out = *new boost::iostreams::filtering_ostream(); out.push(filter); out.push(std::cout); out&lt;&lt;"I am not written to std::cout!"&lt;&lt;endl; </pre> anonymous https://svn.boost.org/trac10/ticket/5616 https://svn.boost.org/trac10/ticket/5616 Report #5611: bjam: define the right OS name on Hurd Thu, 16 Jun 2011 01:55:31 GMT Tue, 15 Jul 2014 23:08:21 GMT <p> Report from Pino Toscano (see <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=630652"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=630652</a>): </p> <p> Currently bjam does not identify Hurd when using e.g. os.name in jam scripts: </p> <pre class="wiki"> $ bjam -v | head -n1 Boost.Jam Version 3.1.19. OS=UNKNOWN. </pre><p> The attached patch (which should be suitable for upstream inclusion) sets the correct #define's for Hurd in bjam, adding also the path detection for the bjam test suite. </p> <pre class="wiki"> $ bjam -v | head -n1 Boost.Jam Version 3.1.19. OS=HURD. </pre> smr@… https://svn.boost.org/trac10/ticket/5611 https://svn.boost.org/trac10/ticket/5611 Report #5609: Failed to build Boost.Jam with toolset pathscale Tue, 14 Jun 2011 11:48:02 GMT Sat, 02 Jul 2011 20:37:52 GMT <p> Hi, since <a class="missing wiki">PathScale</a> released their compiler (4.0.10) to the open source community, I wanted to give it a try and aimed at compiling boost. Unfortunately, the bootstrap step fails. </p> <p> $ pathcc --version </p> <p> <a class="missing wiki">PathScale</a> (tm) Compiler Suite: Version 4.0.10 Built on: Thread model: posix GNU gcc version (<a class="missing wiki">PathScale</a> 4.0.10 driver) </p> <p> Copyright <a class="missing wiki">PathScale</a> Inc and others. All Rights Reserved. You can find complete copyright, patent and legal notices in the corresponding documentation. </p> anonymous https://svn.boost.org/trac10/ticket/5609 https://svn.boost.org/trac10/ticket/5609 Report #5606: Graph depends on xpressive, but xpressive doesn't work with Sun's compiler Sun, 12 Jun 2011 22:38:31 GMT Mon, 16 Apr 2012 19:11:12 GMT <p> Graph depends on a library does not work with Sun's compiler. The people from xpressive have declared that they will not attempt to fix the problem. Therefore, the Boost build will forever fail when the sun tool set is used, because graph depends on xpressive. </p> <p> It seems like the rational thing to do would be for graph to realize that attempting to build with Sun's compiler was not going to work, and for it to remove itself from the Boost build automatically with a warning. </p> <p> At the very least, this extremely predictable failure should be documented, especially since it is going to occur from now until the end of time. </p> <p> This behavior has occurred since Boost version 1.44. </p> willchido@… https://svn.boost.org/trac10/ticket/5606 https://svn.boost.org/trac10/ticket/5606 Report #5602: MPI-autodetection on Windows does not work with openmpi Sat, 11 Jun 2011 17:32:39 GMT Sat, 11 Jun 2011 18:45:22 GMT <p> The mpi.jam file has no if test for the openmpi implementation. </p> <p> openmpi supports the mpic++ wrapper compiler and all the options to print the flags and library paths where the libraries to link against are. </p> <p> I have tried but failed to change the mpi.jam script to recognize the openmpi installation. </p> <p> A proper fix is welcome but indications on how to tweak the .jam file are appreciated, </p> finjulhich@… https://svn.boost.org/trac10/ticket/5602 https://svn.boost.org/trac10/ticket/5602 Report #5598: boost/property_tree/detail/json_parser_write.hpp:35: warning: comparison is always true due to limited range of data type Tue, 07 Jun 2011 17:11:38 GMT Tue, 04 Jul 2017 03:44:34 GMT <p> Here is the relevant output: </p> <pre class="wiki">cc1plus: warnings being treated as errors gcc41_64/include/boost/property_tree/detail/json_parser_write.hpp: In function 'std::basic_string&lt;_CharT, std::char_traits&lt;_CharT&gt;, std::allocator&lt;_CharT&gt; &gt; boost::property_tree::json_parser::create_escapes(const std::basic_string&lt;_CharT, std::char_traits&lt;_CharT&gt;, std::allocator&lt;_CharT&gt; &gt;&amp;) [with Ch = char]': gcc41_64/include/boost/property_tree/detail/json_parser_write.hpp:78: instantiated from 'void boost::property_tree::json_parser::write_json_helper(std::basic_ostream&lt;typename Ptree::key_type::value_type, std::char_traits&lt;typename Ptree::key_type::value_type&gt; &gt;&amp;, const Ptree&amp;, int, bool) [with Ptree = boost::property_tree::basic_ptree&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::less&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;]' gcc41_64/include/boost/property_tree/detail/json_parser_write.hpp:162: instantiated from 'void boost::property_tree::json_parser::write_json_internal(std::basic_ostream&lt;typename Ptree::key_type::value_type, std::char_traits&lt;typename Ptree::key_type::value_type&gt; &gt;&amp;, const Ptree&amp;, const std::string&amp;, bool) [with Ptree = boost::property_tree::basic_ptree&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::less&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;]' gcc41_64/include/boost/property_tree/json_parser.hpp:98: instantiated from 'void boost::property_tree::json_parser::write_json(std::basic_ostream&lt;typename Ptree::key_type::value_type, std::char_traits&lt;typename Ptree::key_type::value_type&gt; &gt;&amp;, const Ptree&amp;, bool) [with Ptree = boost::property_tree::basic_ptree&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::less&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;]' json.cc:36: instantiated from here gcc41_64/include/boost/property_tree/detail/json_parser_write.hpp:35: warning: comparison is always true due to limited range of data type make: *** [json.o] Error 1 </pre><p> In the big if() statement, *b (of type Ch, which is char) is being compared with 0xFF. </p> benoit@… https://svn.boost.org/trac10/ticket/5598 https://svn.boost.org/trac10/ticket/5598 Report #5595: Windows: Cannot write to files which have been mapped to memory in other threads/processes Mon, 06 Jun 2011 10:01:54 GMT Thu, 21 Sep 2017 14:00:45 GMT <p> Windows: If I try to open a file for writing which has been memory mapped by using boost::iostreams::mapped_file_source, I get an "Permission denied". </p> <p> Under Linux (e.g. Ubuntu, openSUSE) there is no problem. </p> <p> The cause of this behavior seems to be, that mapped_file_impl::open_file uses <a class="missing wiki">CreateFile</a> WIN32 API with the parameter FILE_SHARE_READ instead of FILE_SHARE_WRITE. </p> <p> Is this supposed to be like this? </p> Armin Pies <armin.pies@…> https://svn.boost.org/trac10/ticket/5595 https://svn.boost.org/trac10/ticket/5595 Report #5591: Inherited attributes and copy() function Fri, 03 Jun 2011 06:00:13 GMT Tue, 16 Apr 2013 06:45:24 GMT <p> rule::copy() and rule::alias() functions doesn't work when used on rules with inherited attributes. </p> <blockquote> <p> using namespace boost::spirit::qi; </p> </blockquote> <p> </p> <blockquote> <p> typedef std::string::iterator iter; </p> </blockquote> <p> </p> <blockquote> <p> rule&lt;iter, int()&gt; a; rule&lt;iter, int()&gt; a_cp; a_cp = a; <em>compiles a_cp = a.copy(); </em>compiles a_cp = a.alias(); <em>compiles </em></p> </blockquote> <p> </p> <blockquote> <p> rule&lt;iter, int(int)&gt; b; rule&lt;iter, int(int)&gt; b_cp; b_cp = b; <em>compiles b_cp = b.copy(); </em>fails to compile b_cp = b.alias(); <em>fails to compile </em></p> </blockquote> Öyvind Strand <oyvind.strand@…> https://svn.boost.org/trac10/ticket/5591 https://svn.boost.org/trac10/ticket/5591 Report #5588: property_tree INFO include directive Wed, 01 Jun 2011 20:40:29 GMT Thu, 01 Dec 2011 23:02:43 GMT <p> When you use #include in C/C++ programs, preprocessor uses path relative to file, where you used '#include'. But in read_info realization '#include' finds file using path, relative to current work directory. So, when you create some complex config structure, you have to you absolute pathes or change current work directory to config file. </p> sarum9in@… https://svn.boost.org/trac10/ticket/5588 https://svn.boost.org/trac10/ticket/5588 Report #5584: gzip_decompressor sometimes truncates data Tue, 31 May 2011 18:57:14 GMT Sun, 16 Oct 2011 18:21:49 GMT <p> Th following trivial sample program <code>boost_gunzip.cc</code> only decompresses files partially. This issue only appears for a minority of the files. </p> <pre class="wiki">#include &lt;boost/iostreams/device/file.hpp&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/filter/gzip.hpp&gt; #include &lt;iostream&gt; #include &lt;ios&gt; int main(int argc, const char *argv[]) { if (argc != 2) { std::cerr &lt;&lt; "need exactly one argument" &lt;&lt; std::endl; return 1; } boost::iostreams::filtering_istream in; in.push(boost::iostreams::gzip_decompressor()); in.push(boost::iostreams::file_source(argv[1], std::ios_base::in | std::ios_base::binary)); while (in.good()) { char c = in.get(); if (in.good()) std::cout &lt;&lt; c; } }; </pre><p> In the following example, <code>gzip_decompressor</code> misses 113 bytes: </p> <pre class="wiki">~$ cat &lt;(for i in `seq 0 100`; do echo 'Mon May 30 23:17:43 EDT 2011'; done) &gt; /tmp/a ~$ md5sum /tmp/a 040fce9cef21c343fd9ab2aecf1515e3 /tmp/a ~$ wc -c /tmp/a 2929 /tmp/a ~$ gzip /tmp/a ~$ md5sum /tmp/a.gz 46bd5683f86075e30124c5a6a1d2f83d /tmp/a.gz ~$ zcat /tmp/a.gz | wc -c 2929 ~$ ./boost_gunzip /tmp/a.gz | wc -c 2816 </pre><p> This is on a RHEL 6.1 64bit system, i.e., using <code>boost-iostreams-1.41.0-11.el6.x86_64</code>. </p> Hans-Andreas Engel <engel@…> https://svn.boost.org/trac10/ticket/5584 https://svn.boost.org/trac10/ticket/5584 Report #5579: 1_40_0 serialization break. Sun, 29 May 2011 16:42:42 GMT Wed, 13 Mar 2013 21:41:07 GMT <p> If you compare 1_39 and 1_40 here, you can see one 1_39 compares the addresses of functions to get type information. Which in 1_40 was 'fixed' so that types across DLL's would be matched. </p> <p> However this of course breaks archive compatibility with 1_39 as the two dll's will have serialized out the CO info twice, and now in 1_40 and beyond it'll only try to read it once.. Leaving the file corrupted. </p> <p> <a href="http://www.boost.org/doc/libs/1_39_0/boost/archive/detail/basic_serializer.hpp">http://www.boost.org/doc/libs/1_39_0/boost/archive/detail/basic_serializer.hpp</a> <a href="http://www.boost.org/doc/libs/1_40_0/boost/archive/detail/basic_serializer.hpp">http://www.boost.org/doc/libs/1_40_0/boost/archive/detail/basic_serializer.hpp</a> </p> <p> I'm not even sure how this can be fixed short of storing a flag to determine how cobject's compare thats based on archive version where the comparison starts... </p> Phil Hartmann <phil.hartmann82@…> https://svn.boost.org/trac10/ticket/5579 https://svn.boost.org/trac10/ticket/5579 Report #5567: boost serialization 1_46_1 incompatible with prior versions due to backwards comparison Thu, 26 May 2011 11:33:41 GMT Sat, 09 Nov 2013 08:24:11 GMT <p> Archive's writing class_id_type between 1_41 &lt;and prior&gt; and being read back in 1_46 will fail. </p> <p> basic_binary_iarchive.hpp line 104 in 1_46 is "if(boost::archive::library_version_type(6) &lt; lvt){" </p> <p> Or 6 &lt; lvt which is lvt &gt;= 7, and because the if before it is 7 &lt; lvt, its essentially lvt == 7. </p> <p> So if the version is 7 serialize in a 16 bit integer, else versions 1 through 6 serialize in a 32 bit integer. </p> <p> The problem here is this is backwards. Version 1-6 are 16 bit, 7 might have been 32bit (because of issues in 1_42/1_43). </p> <p> The code needs to be swapped (assuming consistency throughout the file is to remain). </p> <p> tracking_type also appears to have the same issue (although it seems to be ok) </p> <p> version_type I don't get at all, going back through the basic_binary_iarchive.hpp's I don't see how the code is right at all. Anything less than version 7 should be serializing a 8 bit int from what I can tell. </p> <p> Prior versions can be viewed at: <a href="http://www.boost.org/doc/libs/1_44_0/libs/serialization/src/basic_archive.cpp">http://www.boost.org/doc/libs/1_44_0/libs/serialization/src/basic_archive.cpp</a> <a href="http://www.boost.org/doc/libs/1_41_0/libs/serialization/src/basic_archive.cpp">http://www.boost.org/doc/libs/1_41_0/libs/serialization/src/basic_archive.cpp</a> <a href="http://www.boost.org/doc/libs/1_40_0/libs/serialization/src/basic_archive.cpp">http://www.boost.org/doc/libs/1_40_0/libs/serialization/src/basic_archive.cpp</a> ... </p> <p> Library versions can be viewed at: <a href="http://www.boost.org/doc/libs/1_44_0/boost/archive/basic_binary_iarchive.hpp">http://www.boost.org/doc/libs/1_44_0/boost/archive/basic_binary_iarchive.hpp</a> <a href="http://www.boost.org/doc/libs/1_41_0/boost/archive/basic_binary_iarchive.hpp">http://www.boost.org/doc/libs/1_41_0/boost/archive/basic_binary_iarchive.hpp</a> <a href="http://www.boost.org/doc/libs/1_40_0/boost/archive/basic_binary_iarchive.hpp">http://www.boost.org/doc/libs/1_40_0/boost/archive/basic_binary_iarchive.hpp</a> ... </p> <p> Side Note: IMHO writing code such as 6 &lt; lvt is extremely unintuitive and backwards of how most people think. </p> Phil Hartmann <phil.hartmann82@…> https://svn.boost.org/trac10/ticket/5567 https://svn.boost.org/trac10/ticket/5567 Report #5558: Phoenix bind doesn't support bind<type> construct Mon, 23 May 2011 15:37:50 GMT Mon, 09 May 2016 14:07:41 GMT <p> boost::bind uses bind&lt;type&gt; in situations where it cannot determine the return type. This is useful for situations where you are binding to a method with a variable argument list such as printf. </p> <p> I'm not so much concerned with the bind&lt;type&gt; construct as I'm unsure how to bind to functions such as printf. Is there a syntax for this when utilizing Phoenix bind that I have missed? </p> <p> Using boost::bind -- </p> <blockquote> <p> boost::bind&lt;int&gt;( &amp;printf, "%d ", _1 )(42); </p> </blockquote> <p> Using phoenix::bind -- </p> <blockquote> <p> phx::bind( &amp;printf, "%d ", arg1 )(42); </p> </blockquote> <p> results in compilation error. </p> Michael Caisse https://svn.boost.org/trac10/ticket/5558 https://svn.boost.org/trac10/ticket/5558 Report #5555: wave slex parser identifier + ? adds extra ? to identifier token value Fri, 20 May 2011 00:48:05 GMT Fri, 20 May 2011 00:48:05 GMT <p> Running cpp_tokens on the attached file produces an invalid token for the 'z' identifier. </p> József Mihalicza <jmihalicza@…> https://svn.boost.org/trac10/ticket/5555 https://svn.boost.org/trac10/ticket/5555 Report #5545: ptr_container: unused parameter warnings if exceptions and asserts disabled Mon, 16 May 2011 12:02:38 GMT Mon, 16 May 2011 12:02:38 GMT <p> With exceptions and asserts both disabled, <code>ptr_container_detail::reversible_ptr_container&lt;&gt;::enforce_null_policy()</code> generates unused-parameter warnings. Both its parameters are used only within an invocation of <code>BOOST_PTR_CONTAINER_THROW_EXCEPTION()</code>; with exceptions disabled, that expands to a <code>BOOST_ASSERT()</code>; with asserts disabled, that in turn becomes just <code>(void)0</code> (or equivalent). </p> <p> One way to fix this would be to make <code>BOOST_PTR_CONTAINER_THROW_EXCEPTION</code> expand to <code>BOOST_VERIFY</code> instead of <code>BOOST_ASSERT</code>, so that the parameters are still evaluated even when exceptions and asserts are disabled. This should make no difference when exceptions are enabled, or when exceptions are disabled but asserts are enabled. </p> <p> Minimal example: </p> <pre class="wiki">$ cat test.cpp #include &lt;boost/ptr_container/ptr_vector.hpp&gt; void foo(int *p) { boost::ptr_vector&lt;int&gt;().push_back(p); } $ g++ -W -Wall -fno-exceptions -Iboost -DNDEBUG -c test.cpp In file included from boost/boost/ptr_container/ptr_sequence_adapter.hpp:20, from boost/boost/ptr_container/ptr_vector.hpp:20, from test.cpp:1: boost/boost/ptr_container/detail/reversible_ptr_container.hpp: In instantiation of 'static void boost::ptr_container_detail::reversible_ptr_container&lt;Config, CloneAllocator&gt;::enforce_null_policy(const typename Config::value_type*, const char*) [with Config = boost::ptr_container_detail::sequence_config&lt;int, std::vector&lt;void*, std::allocator&lt;void*&gt; &gt; &gt;, CloneAllocator = boost::heap_clone_allocator]': boost/boost/ptr_container/ptr_sequence_adapter.hpp:246: instantiated from 'void boost::ptr_sequence_adapter&lt;T, VoidPtrSeq, CloneAllocator&gt;::push_back(typename boost::ptr_container_detail::reversible_ptr_container&lt;boost::ptr_container_detail::sequence_config&lt;T, VoidPtrSeq&gt;, CloneAllocator&gt;::value_type) [with T = int, VoidPtrSeq = std::vector&lt;void*, std::allocator&lt;void*&gt; &gt;, CloneAllocator = boost::heap_clone_allocator]' test.cpp:5: instantiated from here boost/boost/ptr_container/detail/reversible_ptr_container.hpp:260: warning: unused parameter 'x' boost/boost/ptr_container/detail/reversible_ptr_container.hpp:260: warning: unused parameter 'msg' </pre><p> (g++ will not emit the warnings if the boost headers are found in the system include directories.) </p> timb@… https://svn.boost.org/trac10/ticket/5545 https://svn.boost.org/trac10/ticket/5545 Report #5541: Partial function application Fri, 13 May 2011 10:35:10 GMT Mon, 16 May 2011 14:32:26 GMT <p> In functional languages, it's common to partially apply a function to some arguments in order to produce a function accepting only the remaining arguments. </p> <p> This can be approximated in C++ through use of our bind and its placeholders, but this requires knowledge of the number of placeholders to use to match the number of remaining parameters. </p> <p> Is it possible to construct Phoenix functions that when invoked with fewer arguments than its arity indicates will produce a function taking the remaining arguments? </p> Lars Viklund <zao@…> https://svn.boost.org/trac10/ticket/5541 https://svn.boost.org/trac10/ticket/5541 Report #5538: boost.mpi miscompiles with gcc4.6 and option -std=c++0x Fri, 13 May 2011 08:24:36 GMT Tue, 01 Jan 2013 11:43:46 GMT <p> Hello </p> <p> boost.mpi with gcc-4.6 and the option -std=c++0x don't get well together here is a very simple example </p> <hr /> <p> #include &lt;boost/mpi.hpp&gt; </p> <hr /> <blockquote> <p> the issue arises with the use of the -std=c++0x flag to use </p> </blockquote> <p> the new c++ standard. It use to work properly with previous g++ version </p> <p> compile without -std=c++0x g++ -I/usr/include/mpi -c t.cpp no errors </p> <p> try compiling with -std=c++0x </p> <blockquote> <p> g++ -I/usr/include/mpi -std=c++0x -c t.cpp </p> </blockquote> <blockquote> <blockquote> <p> 2011-05-12 22:40:17 </p> </blockquote> </blockquote> <p> prudhomm pts/28 In file included from /usr/include/c++/4.6/memory:67:0, </p> <blockquote> <p> from /usr/include/boost/mpi/allocator.hpp:18, from /usr/include/boost/mpi.hpp:22, from t.cpp:3: </p> </blockquote> <p> /usr/include/c++/4.6/bits/stl_uninitialized.h: In function ‘void std::<span class="underline">uninitialized_default_n_a(_ForwardIterator, _Size, _Allocator&amp;) [with _ForwardIterator = char*, _Size = long unsigned int, _Allocator </span></p> <h1 class="section" id="boost::mpi::allocatorchar:">boost::mpi::allocator&lt;char&gt;]’:</h1> <p> /usr/include/c++/4.6/bits/vector.tcc:474:8: instantiated from ‘void std::vector&lt;_Tp, _Alloc&gt;::_M_default_append(std::vector&lt;_Tp, _Alloc&gt;::size_type) [with _Tp = char, _Alloc = boost::mpi::allocator&lt;char&gt;, std::vector&lt;_Tp, _Alloc&gt;::size_type = long unsigned int]’ /usr/include/c++/4.6/bits/stl_vector.h:592:4: instantiated from ‘void std::vector&lt;_Tp, _Alloc&gt;::resize(std::vector&lt;_Tp, _Alloc&gt;::size_type) [with _Tp = char, _Alloc = boost::mpi::allocator&lt;char&gt;, std::vector&lt;_Tp, _Alloc&gt;::size_type = long unsigned int]’ /usr/include/boost/mpi/detail/packed_oprimitive.hpp:96:46: instantiated from here /usr/include/c++/4.6/bits/stl_uninitialized.h:576:6: error: no matching function for call to ‘boost::mpi::allocator&lt;char&gt;::construct(char*)’ /usr/include/c++/4.6/bits/stl_uninitialized.h:576:6: note: candidate is: /usr/include/boost/mpi/allocator.hpp:168:8: note: void boost::mpi::allocator&lt;T&gt;::construct(boost::mpi::allocator&lt;T&gt;::pointer, const T&amp;) [with T = char, boost::mpi::allocator&lt;T&gt;::pointer = char*] /usr/include/boost/mpi/allocator.hpp:168:8: note: candidate expects 2 arguments, 1 provided </p> christophe.prudhomme@… https://svn.boost.org/trac10/ticket/5538 https://svn.boost.org/trac10/ticket/5538 Report #5532: qt4 MOCCABLE_H 's target type is wrong Thu, 12 May 2011 10:30:32 GMT Sun, 16 Oct 2011 18:29:10 GMT <p> At qt4.jam:224 , which reads </p> <blockquote> <p> generators.register [ new moc-inc-generator </p> <blockquote> <p> qt4.moc.inc : MOCCABLE_H : OBJ : &lt;allow&gt;qt4 ] ; </p> </blockquote> </blockquote> <p> has a wrong target type OBJ.It should be CPP. When I use moccable_h like this the compiler will ignore the generated cpp source: exe my-project : [ cast _ moccable-h : xxx.h ] main.cpp ; </p> manjian2006@… https://svn.boost.org/trac10/ticket/5532 https://svn.boost.org/trac10/ticket/5532 Report #5531: MPI-autodetection on Windows does not support MS-MPI v2 Wed, 11 May 2011 19:38:12 GMT Fri, 03 Feb 2012 18:09:07 GMT <p> Hi there. MPI-autodetection (in mpi.jam) on Windows only looks for MS-MPI v1 (to be found in "C:<br />Program Files<br />Microsoft Compute Cluster Pack", as the product v1 was named Compute Cluster Pack), it overlooks MS-MPI v1 (to be found in "C:<br />Program Files<br />Microsoft HPC Pack 2008 SDK" or "C:<br />Program Files<br />Microsoft HPC Pack 2008 R2 SDK"). </p> <p> Simple workaround: Extend mpi.jam to search in all three paths (as in the one attached). Actually, this is the behavior I would like to see by default). </p> <p> Kind regards, Christian. </p> Christian Terboven <christian@…> https://svn.boost.org/trac10/ticket/5531 https://svn.boost.org/trac10/ticket/5531 Report #5525: Flushing problem with gzip and filtering_wostreambuf Fri, 06 May 2011 21:02:42 GMT Fri, 06 May 2011 21:02:42 GMT <p> I have attached a small example which produces a invalid gz file on both windows 64 bit and linux 32 bit (most likely others, but not testet). The code worked with previous versions of boost. </p> jensen.bo@… https://svn.boost.org/trac10/ticket/5525 https://svn.boost.org/trac10/ticket/5525 Report #5524: Ptree walk_path can fail to locate desired path Fri, 06 May 2011 15:56:33 GMT Fri, 06 May 2011 15:56:33 GMT <p> Take a situation with child structure as follows:<br /> a.b<br /> a.b.c </p> <p> If get_child is used and it calls walk_path to navigate this to locate a.b.c it will fail with an exception. I'd argue it should explore other children (besides only 1st) if present before giving up and throwing the exception. In that case the recursion pops from the 1st 'b' and also tries the 2nd 'b' path (or any other 'b') and then finds a match on 'c' which is returned. Currently have to manually walk the XML represented tree and never use the path accessors because of this issue. </p> anonymous https://svn.boost.org/trac10/ticket/5524 https://svn.boost.org/trac10/ticket/5524 Report #5517: ptr_map::replace with key Wed, 04 May 2011 14:03:51 GMT Wed, 04 May 2011 14:03:51 GMT <p> Could you add a ptr_map::replace() variant that takes a key? This is handy when you want to replace a value that might or might not exist. </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5517 https://svn.boost.org/trac10/ticket/5517 Report #5512: jam0.exe is not a valid win32 application Fri, 29 Apr 2011 18:10:31 GMT Fri, 29 Apr 2011 18:10:31 GMT <p> hi, </p> <p> My OS is windows XP. i installed VS 2008 ,VS90SP1-KB957912-x86.exe ,VS90SP1-KB960075-v2-x86.exe,VS90SP1-KB967631-x86.exe,VS90SP1-KB971092-x86.exe,VS90sp1-KB945140-ENU.exe and then installed windows7 sdk. </p> <p> but when i try to build boost library , then error came like this : jam0.exe is not a valid win32 application </p> <p> bjam.log file </p> <p> ### ### Using 'vc9' toolset. ### </p> <p> E:\boost\boost_1_44_0\tools\jam\src&gt;if exist bootstrap rd /S /Q bootstrap </p> <p> E:\boost\boost_1_44_0\tools\jam\src&gt;md bootstrap </p> <p> E:\boost\boost_1_44_0\tools\jam\src&gt;cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c debug.c execnt.c expand.c filent.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c pwd.c class.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c command.c compile.c debug.c execnt.c expand.c filent.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c Generating Code... Compiling... pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c pwd.c class.c w32_getreg.c native.c set.c path.c regex.c Generating Code... Compiling... property-set.c sequence.c order.c Generating Code... </p> <p> E:\boost\boost_1_44_0\tools\jam\src&gt;.\bootstrap\jam0 -f build.jam --toolset=vc9 "--toolset-root=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\..\..\VC\ " clean </p> <p> E:\boost\boost_1_44_0\tools\jam\src&gt;.\bootstrap\jam0 -f build.jam --toolset=vc9 "--toolset-root=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\..\..\VC\ " </p> sharifr2002@… https://svn.boost.org/trac10/ticket/5512 https://svn.boost.org/trac10/ticket/5512 Report #5511: Documentation needs some improvement Thu, 28 Apr 2011 23:17:15 GMT Thu, 24 Oct 2013 21:33:59 GMT <p> Basically the whole library is quite good. But I have a couple of minor complaints. </p> <p> a) The documentation contains sentences like: </p> <pre class="wiki">"iterator begin(); Get the iterator pointing to the beginning of the circular_buffer. </pre><p> I <em>think</em> the refers to the current front of the queue - where ever that falls in the underlying storage. This I could use this iterator to iterate from the oldest item to the most recent item. Naturally the value returned by this function call would change as items are popped of the queue. But it could also refer to the begin (and end) of underlying storage. I don't think it does this - but it's not clear from the documentation. </p> <p> b) I would also like to have a constructor which allows me to pass any pair of random access iterators (ie. a range) and have the circular buffer use that rather than allocating it's own storage. This would make the package more useful to me and i would hope others as well. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/5511 https://svn.boost.org/trac10/ticket/5511 Report #5500: memory leak in async_write Mon, 25 Apr 2011 08:37:06 GMT Mon, 25 Apr 2011 08:37:06 GMT <p> First, call the function "async_write", when the callback function "<a class="missing wiki">HandleWriteRequest</a>" is called, Then, close the socket. </p> <p> Repeat the above operation, the memory will continue to increase. </p> <p> In the attachment, you will see the demo. This program is running in the windows, the IDE is Microsoft visual studio 2008. Boost version is 1.45.0 </p> <p> Best regards. </p> DengrongWu <jeffreywu@…> https://svn.boost.org/trac10/ticket/5500 https://svn.boost.org/trac10/ticket/5500 Report #5499: Serialization backward compatability Sun, 24 Apr 2011 08:01:19 GMT Thu, 26 Jan 2012 10:59:51 GMT <p> Boost 1.33.1 serializes class_id_type as int_least16_t (archive version 3). Current boost tries to load it as int for archive of version 6 and earlier. On my platform (VS2005) int is 32 bits, hence the deserialization fails. </p> <p> The attached code creates and successfully loads 'out.boost103301.dat' when compiling with boost 1.33.1 and crashes due to failed assert in class_id_type constructor when loading with boost 1.46.1. </p> <p> I'm upgrading from 1.33.1 to boost 1.46.1 now, so I mark it as 'Showstopper'. </p> ybungalobill@… https://svn.boost.org/trac10/ticket/5499 https://svn.boost.org/trac10/ticket/5499 Report #5498: Issues with the Interval Library Sat, 23 Apr 2011 09:11:20 GMT Tue, 03 Nov 2015 21:50:32 GMT <p> I am trying to compile some examples; in particular, the trigonometric, hyperbolic trig and transendental (exp, log!!)functions don't compile with default roudning policy (see file I included). It's a kind of show-stopper. </p> <p> Some user requests as well are: </p> <ol><li>Instead of bool when comparing interval, use <a class="missing wiki">TriBool</a> (a result can be _indeterminate_) </li></ol><ol start="2"><li>Interval is missing midpoint() (same as median()). </li></ol><ol start="3"><li>Interval analysis is highly specialised; more user examples would be very welcome. </li></ol><p> I have the books by R.E. Moore but it takes some time to map his results to Interval. </p> <p> best regards </p> <p> Daniel </p> <p> <em> Code </em></p> <p> <em> TestInterval101.cpp </em> <em> Tests for Interval arithmetic. </em> <em> (C) Datasim Education BV 2009-2011 </em></p> <p> #include &lt;boost/numeric/interval.hpp&gt; </p> <p> template&lt;class T, class Policies&gt; std::ostream &amp;operator&lt;&lt;(std::ostream &amp;os, </p> <blockquote> <p> const boost::numeric::interval&lt;T, Policies&gt; &amp;x) { </p> </blockquote> <blockquote> <p> os &lt;&lt; "[" &lt;&lt; x.lower() &lt;&lt; ", " &lt;&lt; x.upper() &lt;&lt; "]"; return os; </p> </blockquote> <p> } </p> <p> typedef boost::numeric::interval&lt;double&gt; Range; </p> <p> int main() { </p> <blockquote> <p> using namespace boost::numeric; </p> </blockquote> <p> </p> <blockquote> <p> <em> Create and manipulate some numbers. Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>(0.0, 1,0); </em></p> </blockquote> <blockquote> <p> Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>(-10.0, 20.0); Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">r3</a>(20.8, 44.9); </p> </blockquote> <blockquote> <p> double t = 2.0; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> += t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> -= t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> *= t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> /= t; </p> </blockquote> <blockquote> <p> Range rTmp(2.0, 3.0); <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> += rTmp; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> -= rTmp; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> *= rTmp; <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> /= rTmp; </p> </blockquote> <blockquote> <p> <em> Numeric operations. Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> + <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>; Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> - <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>; Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> * <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>; Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> / <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>; </em></p> </blockquote> <blockquote> <p> <em> More numeric operations. t = 3.0; <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> + t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> - t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> * t; <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a> / t; </em></p> </blockquote> <blockquote> <p> <em> Algebraic functions. <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = abs(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = sqrt(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = square(<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">r3</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = pow(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>, 2); </em> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a><sup>2 Range <a class="changeset" href="https://svn.boost.org/trac10/changeset/8" title="Initial content for next-gen Boost website. ">r8</a> = nth_root(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>, 4); </sup></p> </blockquote> <blockquote> <p> <em> NONE COMPILES </em> Transcendental functions </p> </blockquote> <p> <em> <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = exp(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); </em> boost::numeric::interval&lt;double, boost::numeric::interval_lib::default_policies&lt;double&gt; &gt; myI; <em> myI = boost::numeric::exp(myI); </em></p> <blockquote> <p> <em><a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = log(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); </em></p> </blockquote> <blockquote> <p> <em> Trigonometric functions </em></p> </blockquote> <p> /* <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = sin(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); </p> <blockquote> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = cos(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = tan(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = asin(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = acos(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = atan(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); </p> </blockquote> <blockquote> <p> <em> Hyperbolic trigonometric functions <a class="changeset" href="https://svn.boost.org/trac10/changeset/4" title="Tweak disclaimer formatting, again">r4</a> = sinh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/5" title="Boost customization">r5</a> = cosh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = tanh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/7" title="Initial content for next-gen Boost website. ">r7</a> = asinh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/8" title="Initial content for next-gen Boost website. ">r8</a> = acosh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>); <a class="changeset" href="https://svn.boost.org/trac10/changeset/6" title="New repository initialized by cvs2svn.">r6</a> = atanh(<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">r2</a>);*/ </em></p> </blockquote> <p> </p> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> dduffy@… https://svn.boost.org/trac10/ticket/5498 https://svn.boost.org/trac10/ticket/5498 Report #5496: Add API for detection of exception Fri, 22 Apr 2011 12:34:20 GMT Tue, 19 Jun 2012 23:41:28 GMT <p> Purpose: detect if it's possible to call boost::current_exception() when writing generic code. </p> <p> Solution: add BOOST_CATCH_EXCEPTION() macro or boost::catch_exception() function and boost::has_current_exception() function. </p> anberlin.myplace@… https://svn.boost.org/trac10/ticket/5496 https://svn.boost.org/trac10/ticket/5496 Report #5492: property_treee : now requires locale Wed, 20 Apr 2011 10:24:29 GMT Wed, 20 Apr 2011 10:24:29 GMT <p> basic_ptree requires std::locale and imbue. locale not provide by special environment(ex : Windows CE). Boost.Config has BOOST_NO_STD_LOCALE, and needs this workaround. </p> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/5492 https://svn.boost.org/trac10/ticket/5492 Report #5483: value_init: Assignment to 'value_initialized', 'initialized' objects doesn't work automatically Sat, 16 Apr 2011 03:25:30 GMT Mon, 04 Feb 2013 22:16:09 GMT <p> Objects of the 'initialized&lt;T&gt;' class (and presumably 'value_initialized&lt;T&gt;' too) do not automatically convert to assignment lvalues and do not provide proper assignment operator methods either. Assignments therefore do not automatically work, for example, declaring 'initialized&lt;int&gt; i;' then writing 'i = 1;'. </p> <p> Tested on Windows XP SP3 with MinGW g++ 4.4.1, as well as the (VS 2008) Visual C++ 9.0 compiler. Both compilers report that no match for operator= can be found in that assignment, and that the method 'initialized&lt;int&gt;&amp; initialized&lt;int&gt;::operator=(initialized&lt;int&gt; const&amp;)' is considered as 'candidate' that would fit with a conversion inbetween (from 'int' to 'initialized&lt;int&gt;'), but it's not being used. Conversion operators such as the one defined as 'initialized&lt;int&gt;::operator int&amp;()' apparently do not automatically qualify for lvalues either. </p> <p> Workarounds specify the necessary conversion or operator method, for example, 'i.operator int&amp;() = 1;' and 'get(i) = 1;' both work. </p> <p> The attached file contains some tests as well as a class implementing a simplified version of the interface of 'initialized&lt;T&gt;' with a fix. The file also contains the error message from g++. I omitted the one from Visual C++ (because I would have to translate it into English) but it essentially says the same. </p> Christian Masloch <cm@…> https://svn.boost.org/trac10/ticket/5483 https://svn.boost.org/trac10/ticket/5483 Report #5481: undesired warnings Sat, 16 Apr 2011 01:18:10 GMT Sun, 18 Dec 2011 00:30:50 GMT <p> Hi, </p> <p> I am building a simple test program (see attachment test_thread.cpp) using Microsoft Visual Studio 2010 with /W4 and /WX options and I am getting errors (see attachment test_thread.err). </p> <p> Yes, I could disable the specific warnings but I prefer that the library not generate such warnings. </p> <p> Regards, </p> <p> Leo </p> Leo Carreon <lcarreon@…> https://svn.boost.org/trac10/ticket/5481 https://svn.boost.org/trac10/ticket/5481 Report #5479: Doxygen: Support for C++0x scoped enums Fri, 15 Apr 2011 16:20:36 GMT Sun, 16 Oct 2011 22:37:38 GMT <p> While generating the doc with doxygen, scoped enums are not documented </p> <p> enum class {E1, E2, E3}; </p> <blockquote> <p> <sup></sup><sup></sup> </p> </blockquote> <p> gives </p> <p> enum class {E1, E2, E3}; </p> <p> Could this be managed? </p> viboes https://svn.boost.org/trac10/ticket/5479 https://svn.boost.org/trac10/ticket/5479 Report #5477: xlC 6.0 - ptr_vector error Fri, 15 Apr 2011 11:39:19 GMT Fri, 15 Apr 2011 11:39:19 GMT <p> Hi, </p> <p> The attached testcase fails on xlC 6.0 but compiles well on xlC 9.0 </p> <p> xlC 6.0 % xlC -qversion C for AIX version 6.0.0.0 % xlC -q64 -I../3rd_party/boost/1_40_0 boost_ptr_vec.cpp "boost_ptr_vec.cpp", line 5.16: 1540-0198 (W) The omitted keyword "private" is assumed for base class "boost::noncopyable". "../3rd_party/boost/1_40_0/boost/ptr_container/ptr_vector.hpp", line 45.9: 1540-0400 (S) "boost::ptr_vector::release" has a conflicting declaration. "../3rd_party/boost/1_40_0/boost/ptr_container/ptr_vector.hpp", line 45.9: 1540-0425 (I) "release" is defined on line 45 of "../3rd_party/boost/1_40_0/boost/ptr_container/ptr_vector.hpp". </p> <p> xlC 9.0: % xlC -qversion IBM XL C/C++ Enterprise Edition for AIX, V9.0 Version: 09.00.0000.0012 xlC -q64 -I/remote/sesnightly/p4/depot/cats/31/3rd_party/boost/1_40_0 boost_ptr_vec.cpp "boost_ptr_vec.cpp", line 5.16: 1540-0198 (W) The omitted keyword "private" is assumed for base class "boost::noncopyable". </p> <p> Is there any patch to make it work on xlC 6.0? </p> <p> Thanks, Radha </p> radha.nitt@… https://svn.boost.org/trac10/ticket/5477 https://svn.boost.org/trac10/ticket/5477 Report #5468: ASIO does not use the standard BOOST ABI mechanism Wed, 13 Apr 2011 19:45:25 GMT Mon, 18 Apr 2011 06:36:39 GMT <p> BOOST libraries should all use the ABI support that is built into boost. For other boost libraries, in the boost/config/user.hpp you can point to your own header files where you can insert the #pragma pack statement. ASIO does not use this mechanism, it has its own headers in asio/detail/push_options.hpp. </p> brian@… https://svn.boost.org/trac10/ticket/5468 https://svn.boost.org/trac10/ticket/5468 Report #5465: MPI auto-detection failed: unknown wrapper compiler mpic++, please report Wed, 13 Apr 2011 02:23:42 GMT Tue, 05 Jun 2018 15:39:24 GMT <p> I added using mpi ; to user-config.jam. I am using gcc. </p> <p> C:\prj\boost\boost_1_46_1&gt;set PATH=c:\mingw-w64-bin_i686-mingw_20110402\bin;c:\mingw-w32-bin_i686-mingw_20110402\bin;c:\mingw-w64-bi n_i686-mingw_20110402\bin;c:\mingw-w32-bin_i686-mingw_20110402\bin;c:\mingw-w64-bin_i686-mingw_20110402\bin;c:\mingw-w32-bin_i686-mi ngw_20110402\bin;c:\mingw-w64-bin_i686-mingw_20110402\bin;c:\mingw-w32-bin_i686-mingw_20110402\bin;c:\mingw-w64-bin_i686-mingw_20110 402\bin;c:\mingw-w32-bin_i686-mingw_20110402\bin;c:\prj\boost\boost_1_46_1\tools\build\v2\engine\src\bin.ntx86.debug;C:\gnuwin32\Get GnuWin32\bin;C:\gnuwin32\GetGnuWin32\gnuwin32\sbin;C:\gnuwin32\GetGnuWin32\gnuwin32\bin;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\syst em32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\Program Files\PHP\;C:\Program Files\PHP;c:\u;c:\x;c:\program files\7-zip;c:\bin;C:\Progr am Files\Csound\bin;C:\Program Files\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\CMake 2.8\bin;C:\Program Files\Common </p> <blockquote> <p> Files\HP\Digital Imaging\bin;C:\Program Files\HP\Digital Imaging\bin\;C:\Program Files\HP\Digital Imaging\bin\Qt\Qt 4.3.3;C:\Progra </p> </blockquote> <p> m Files\<a class="missing wiki">WinMerge</a>;C:\Program Files\<a class="missing wiki">OpenAxiom</a>\bin;C:\Program Files\Notepad++\;c:\tsepro </p> <p> C:\prj\boost\boost_1_46_1&gt;c:\prj\boost\boost_1_46_1\tools\build\v2\engine\src\bin.ntx86.debug\bjam.exe toolset=gcc address-model=64 stage clean --without-python --prefix=c:\prj\boost\boost64\ The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. MPI auto-detection failed: unknown wrapper compiler mpic++ Please report this error to the Boost mailing list: <a class="ext-link" href="http://www.boost.org"><span class="icon">​</span>http://www.boost.org</a> You will need to manually configure MPI support. Performing configuration checks </p> <ul><li>has_icu builds : no </li></ul><p> warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam </p> <ul><li>../config<em>has_gcc_visibility builds : yes </em></li><li>../config<em>has_long_double_support builds : yes </em></li></ul><p> warning: skipping optional Message Passing Interface (MPI) library. note: to enable MPI support, add "using mpi ;" to user-config.jam. note: to suppress this message, pass "--without-mpi" to bjam. note: otherwise, you can safely ignore this message. warning: Unable to construct ./stage-unversioned warning: Unable to construct ./stage-unversioned ...found 1 target... ...updating 1 target... ...updated 1 target... </p> jmichae3@… https://svn.boost.org/trac10/ticket/5465 https://svn.boost.org/trac10/ticket/5465 Report #5454: different behavior to report one kind of errors Mon, 11 Apr 2011 07:30:54 GMT Mon, 11 Apr 2011 07:30:54 GMT <p> If 'configuration file' has option wich not presented in 'options_description', then 'parse_config_file' throws 'logic_error'. </p> <p> If 'options_description' has option wich not presented in 'configuration file', then 'variablesMap[ "option" ].as&lt;...&gt;()' throws 'bad_cast'. </p> <p> It's will be good to have one type of error reporting: exception from 'parse_config_file'. </p> anberlin.myplace@… https://svn.boost.org/trac10/ticket/5454 https://svn.boost.org/trac10/ticket/5454 Report #5452: boost::mpl::plus changes type Sun, 10 Apr 2011 21:35:08 GMT Sun, 10 Apr 2011 21:35:08 GMT <p> The return type of boost::mpl::plus seems to be always integral_c independent of the input types. </p> <p> This is very unconvenient. </p> <p> please make </p> <p> plus&lt;long_&lt;1&gt;, long_&lt;1&gt; &gt;::type </p> <p> return </p> <p> long_&lt;2&gt; </p> Peter Foelsche <foelsche@…> https://svn.boost.org/trac10/ticket/5452 https://svn.boost.org/trac10/ticket/5452 Report #5451: More slice adaptors Sun, 10 Apr 2011 08:39:36 GMT Sun, 10 Apr 2011 08:39:36 GMT <p> It would be very useful to have a slice adaptor which takes only a start index and returns a range running till the end of the orignal range. </p> <p> A slice adaptor which can take negative indexes to mean a distance from the end could also be useful, but might require more overhead on constuction. </p> Yechezkel Mett <ymett.on.boost@…> https://svn.boost.org/trac10/ticket/5451 https://svn.boost.org/trac10/ticket/5451 Report #5448: Windows "\\\\?\\", "\\\\?\\UNC\\", and "\\\\.\\" path meta characters Sat, 09 Apr 2011 14:34:04 GMT Sun, 10 Apr 2011 02:00:38 GMT <p> Windows treats "<br /><br />?<br />", "<br /><br />?<br />UNC<br />", and "<br /><br />.<br />" at the start of a path as meta characters signaling special handling of the remainder of the path. So, for example, "<br /><br />?<br />" should be treated as an empty path! </p> <p> See "Naming Files, Paths, and Namespaces", <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx</a> </p> <p> Ticket 5405 supplied a patch that allows class path to handle a portion of what this implies, but does not deal with the general problem. </p> <p> A few test cases have been added to path_test.cpp, but they are currently commented out. </p> Beman Dawes https://svn.boost.org/trac10/ticket/5448 https://svn.boost.org/trac10/ticket/5448 Report #5446: Exception thrown by tz_database::load_from_file() on linux 2.6.37, boost1.46.1,gcc4.5.2 Sat, 09 Apr 2011 07:38:39 GMT Fri, 20 Nov 2015 15:13:57 GMT <p> Hi, I tried to run the Flight Time Example in boost_1_46_1/doc/html/date_time/examples.html#date_time.examples.simple_time_zone, and an exception was thrown with error message: terminate called after throwing an instance of 'boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;boost::bad_lexical_cast&gt; &gt;' </p> <blockquote> <p> what(): bad lexical cast: source type value could not be interpreted as target </p> </blockquote> <p> When I debug with step into, I found it happened on line "<a class="missing wiki">Africa/Cairo</a>" of the date_time_zonespec.csv, because this is the first timezone which needs to call dst_adjustment_offsets(), and there was a '\r' at the end of the line, then when str_from_delimited_time_duration() called boost::lexical_cast&lt;unsigned short&gt;(*beg) the '\r' made the exception being raised. On linux, std::getline(ifs, buff) in load_from_file() will leave the '\r' in buff, which caused the exception. On win32 this would not happen. So the line ends '\r' needs to be removed in load_from_file() or at the beginning of parse_string(). </p> frankrq2009@… https://svn.boost.org/trac10/ticket/5446 https://svn.boost.org/trac10/ticket/5446 Report #5443: Building multithreading (-mt) libs on Mac OS X 10.6 Fri, 08 Apr 2011 18:00:33 GMT Sat, 09 Apr 2011 23:24:00 GMT <p> The docu (<a href="http://www.boost.org/doc/libs/1_46_1/more/getting_started/unix-variants.html">http://www.boost.org/doc/libs/1_46_1/more/getting_started/unix-variants.html</a>) states that mutli-threading libs will have the "-mt" suffix, but I cannot get such libs to build on my Mac OS X 10.6 (Intel Core 2 Duo). The build process seems to build multi-threaded libs because the directory it creates for itself is, for example: </p> <p> /tmp/boost/bin.v2/libs/regex/build/darwin-4.2.1/release/threading-multi/ </p> <p> But the only resulting binary in that dir is libboost_regex.dylib. </p> <p> Am I building the libs wrong, or is the docu wrong about the -mt suffix, or is this a Mac problem? </p> daniel@… https://svn.boost.org/trac10/ticket/5443 https://svn.boost.org/trac10/ticket/5443 Report #5442: Create CSR graph from GraphViz file Fri, 08 Apr 2011 15:40:57 GMT Sun, 04 Mar 2012 20:21:24 GMT <p> From the 3 graph classes available so far in the BGL (adjacency_list, adjacency_matrix and compressed_sparse_row_graph), CSR is the only one that cannot be created with read_graphviz, which requires a <a class="missing wiki">MutableGraph</a>). </p> <p> However, it will be great to have such a possibility, even by using a different function. </p> Johan Oudinet <johan.oudinet@…> https://svn.boost.org/trac10/ticket/5442 https://svn.boost.org/trac10/ticket/5442 Report #5428: No <ctime> function in Windows CE 6.0 Wed, 06 Apr 2011 10:12:50 GMT Fri, 03 Feb 2012 11:26:15 GMT <p> Windows CE platform is nothing &lt;ctime&gt; function. example std::localtime, std::gmtime, etc... </p> <p> boost/date_time/c_time.hpp is direct use "std::localtime", "std::gmtime". this problem solution is make alternative implementation. </p> <p> Windows CE platform &lt;ctime&gt; sample implementation is there: OpenTimeCE. (I cant paste URL, as spam...) </p> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/5428 https://svn.boost.org/trac10/ticket/5428 Report #5427: endpoint compile error in Windows CE 6.0 Wed, 06 Apr 2011 09:55:02 GMT Wed, 06 Apr 2011 09:55:02 GMT <p> Windows CE is no locale. and no ostringstream::imbue. Windows CE platform needs follow: </p> <pre class="wiki">// boost/asio/ip/detail/impl/endpoint.ipp #if !defined(BOOST_NO_IOSTREAM) &amp;&amp; !defined(_WIN32_WCE) std::string endpoint::to_string(boost::system::error_code&amp; ec) const ... #endif // !defined(BOOST_NO_IOSTREAM) &amp;&amp; !defined(_WIN32_WCE) </pre> Akira Takahashi <faithandbrave@…> https://svn.boost.org/trac10/ticket/5427 https://svn.boost.org/trac10/ticket/5427 Report #5402: bind.hpp generates declared but never referenced warnings for placeholders with armcc Thu, 31 Mar 2011 01:03:57 GMT Tue, 05 Apr 2011 22:33:28 GMT <p> generates spurious variable defined but never referenced under armcc (check for <span class="underline">ARMCC_VERSION) </span></p> <p> "../../boost/bind/placeholders.hpp", line 55: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_1" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;1&gt; _1; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 56: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_2" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;2&gt; _2; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 57: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_3" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;3&gt; _3; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 58: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_4" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;4&gt; _4; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 59: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_5" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;5&gt; _5; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 60: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_6" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;6&gt; _6; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 61: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_7" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;7&gt; _7; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 62: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_8" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;8&gt; _8; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> "../../boost/bind/placeholders.hpp", line 63: Warning: <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/177" title="#177: Support Requests: Boost for Visual C++ 7.1 (closed: None)">#177</a>-D: variable "&lt;unnamed&gt;::_9" was declared but never referenced </p> <blockquote> <p> boost::arg&lt;9&gt; _9; </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> anonymous https://svn.boost.org/trac10/ticket/5402 https://svn.boost.org/trac10/ticket/5402 Report #5400: token_functions.hpp does not compile with exceptions off Thu, 31 Mar 2011 00:50:22 GMT Sat, 07 Feb 2015 03:39:48 GMT <p> uses throw (instead of boost::throw_exception as it should) </p> <p> with exceptions off, you cannot use throw(), try, catch, etc., hence BOOST_TRY, BOOST_CATCH, BOOST_RETHROW </p> anonymous https://svn.boost.org/trac10/ticket/5400 https://svn.boost.org/trac10/ticket/5400 Report #5398: progress.hpp does not compile with exceptions off Thu, 31 Mar 2011 00:41:12 GMT Thu, 31 Mar 2011 07:23:24 GMT <p> uses try/catch instead of BOOST_TRY/BOOST_CATCH </p> <p> with exceptions off, you cannot use throw(), try, catch, etc., hence boost::throw_exception(), BOOST_TRY, BOOST_CATCH, BOOST_RETHROW </p> anonymous https://svn.boost.org/trac10/ticket/5398 https://svn.boost.org/trac10/ticket/5398 Report #5391: Rework BBv2 documentation Wed, 30 Mar 2011 21:54:15 GMT Fri, 25 Oct 2013 18:57:07 GMT <p> There's lots of complaints about the BBv2 documentation Artyom had the good recommendation to structure it as: </p> <ol><li>General Concepts: <ol class="loweralpha"><li>Syntax </li><li>Rules </li><li>etc. </li></ol></li></ol><ol start="2"><li>Tutorial How to do common stuff: <ol class="loweralpha"><li>Build a program </li><li>Build a library </li><li>Build a test </li><li>Configure things conditionally </li><li>Create extensions </li><li>And so on. </li></ol></li></ol><blockquote> <blockquote> <p> Pass on common features of Autotools, CMake, SCons and make sure users can easily figure out how to do. </p> </blockquote> </blockquote> <ol start="3"><li><strong>Full</strong> reference documentation: <ol class="loweralpha"><li>Properties </li><li>Modules </li><li>Rules </li></ol></li></ol><blockquote> <blockquote> <p> And so on. This is even more important then tutorial because user and search for specific functions rules if they documented but he can't if there is no docs. </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> As example I can provide ICU, their tutorials are very poor and basic but their reference docs are really great. </p> </blockquote> </blockquote> René Rivera https://svn.boost.org/trac10/ticket/5391 https://svn.boost.org/trac10/ticket/5391 Report #5390: Add a rule to Boost Build to just run the C++ preprocessor Wed, 30 Mar 2011 21:03:45 GMT Thu, 07 Apr 2011 23:41:22 GMT <p> There is no rule to run the C++ preprocessor in Boost Build I suggest a rule to do this should be added. </p> eldiener@… https://svn.boost.org/trac10/ticket/5390 https://svn.boost.org/trac10/ticket/5390 Report #5380: Windows has triggered a breakpoint in my code Mon, 28 Mar 2011 03:52:20 GMT Sat, 02 Apr 2011 04:37:07 GMT <p> this is the code i used to test (from your website's examples) <strong><a href="http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp">http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp</a></strong> </p> <p> When i used "step into" to debug, i got the following error message: <strong>HEAP[test.exe]: HEAP: Free Heap block c46ce8 modified at c46de0 after it was freed Windows has triggered a breakpoint in test.exe. </strong></p> <p> This may be due to a corruption of the heap, which indicates a bug in test.exe or any of the DLLs it has loaded. </p> <p> This may also be due to the user pressing F12 while test.exe has focus. </p> <p> The output window may have more diagnostic information. <strong> </strong></p> <p> <em>This is the file it stopped:</em> <strong>\boost\asio\detail\impl\win_iocp_socket_service_base.ipp</strong> <em>line stopped: 334</em> </p> <p> <em>line 334 is in function: </em> <strong>void win_iocp_socket_service_base::start_receive_op( </strong></p> <blockquote> <p> win_iocp_socket_service_base::base_implementation_type&amp; impl, WSABUF* buffers, std::size_t buffer_count, socket_base::message_flags flags, bool noop, operation* op)<strong> </strong></p> </blockquote> <p> <em>This is line 334:</em> <strong>int result = ::WSARecv(impl.socket_, buffers, </strong></p> <blockquote> <p> static_cast&lt;DWORD&gt;(buffer_count), &amp;bytes_transferred, &amp;recv_flags, op, 0);<strong> </strong></p> </blockquote> <p> This problem occurs while i send a simple message to the test server, 128 bytes in each request. </p> <p> Version of Boost: 1.46.1 </p> greatstar00@… https://svn.boost.org/trac10/ticket/5380 https://svn.boost.org/trac10/ticket/5380 Report #5377: Use strerror_s to resolve error messages on Windows when possible Sun, 27 Mar 2011 03:39:11 GMT Sun, 27 Mar 2011 03:39:11 GMT <p> In error_code.cpp, conditional macros choose the system call used to resolve error code values to strings (~line 81). The inline documentation mentions that strerror_r is used to provide thread-safety on platforms that expose that call. </p> <p> However, for Windows, the strerror call is always used, which is not thread-safe. </p> <p> Since VS2005, the Windows API has provided strerror_s, a thread-safe alternative to strerror that is similar to strerror_r. </p> <p> If possible, the strerror_s call should be used on Windows platforms that provide it. </p> <p> I am not an expert on the Boost way to select on Windows API versions internally so I hesitate to propose a patch but the form would be similar to that used for the strerror_r calls in that same area of the code. </p> Greg Wiley <a507@…> https://svn.boost.org/trac10/ticket/5377 https://svn.boost.org/trac10/ticket/5377 Report #5364: BOOST_PARAMETER_CONSTRUCTOR vs. static member function as parameter Wed, 23 Mar 2011 21:04:05 GMT Wed, 23 Mar 2011 21:04:05 GMT <p> If the patch associated with <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/2793"><span class="icon">​</span>Ticket 2793</a> is applied, then Boost.Parameter-enabled constructors will work fine when taking in free functions, but not when taking in static member functions that ordinarily have the same signatures as the free functions. </p> expaler https://svn.boost.org/trac10/ticket/5364 https://svn.boost.org/trac10/ticket/5364 Report #5357: system::error_code::operator unspecified_bool_type() should not assume 0 == success. Wed, 23 Mar 2011 00:37:22 GMT Sun, 09 Sep 2012 23:12:50 GMT <p> [The following was submitted for discussion to boost@… on 2011-03-10. It received only one response, which was supportive.] </p> <p> I've found boost.system to be very useful for wrapping return codes from 3rd party libraries (e.g. libcurl). However, one problem I've encountered is that error_code's operator for boolean tests assumes that an error value of 0 == success. While this is often true, it is not universally so and precludes use of boost.system for such tasks as wrapping HTTP status codes (several of which are merely informative and don't indicate an error). </p> <p> I've found it puzzling that the logic for determining whether an error value represents an error doesn't reside in the error_category, where it can be customized as needed. For instance, boolean tests could chain to a is_error() virtual method in the error_category, the default implementation of which preserves the current behavior: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">namespace</span> <span class="n">boost</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">system</span> <span class="p">{</span> <span class="k">class</span> <span class="nc">error_category</span> <span class="o">:</span> <span class="k">public</span> <span class="n">noncopyable</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="c1">// ...</span> <span class="k">virtual</span> <span class="kt">bool</span> <span class="n">is_error</span><span class="p">(</span> <span class="kt">int</span> <span class="n">ev</span> <span class="p">)</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">ev</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// ...</span> <span class="p">};</span> <span class="k">class</span> <span class="nc">error_code</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="c1">// ...</span> <span class="k">operator</span> <span class="n">unspecified_bool_type</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">m_cat</span><span class="o">-&gt;</span><span class="n">is_error</span><span class="p">(</span> <span class="n">m_val</span> <span class="p">)</span> <span class="o">?</span> <span class="nl">unspecified_bool_true</span> <span class="p">:</span> <span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// ...</span> <span class="p">};</span> <span class="p">}</span> <span class="p">}</span> </pre></div></div> mgruenke@… https://svn.boost.org/trac10/ticket/5357 https://svn.boost.org/trac10/ticket/5357 Report #5348: "imperceptible" link in getting started Mon, 21 Mar 2011 12:36:49 GMT Mon, 21 Mar 2011 12:38:09 GMT <p> <a href="http://www.boost.org/doc/libs/1_46_1/more/getting_started/">http://www.boost.org/doc/libs/1_46_1/more/getting_started/</a> </p> <p> I read getting started guide first time. </p> <p> After words </p> <pre class="wiki"> Ready? Let's go! </pre><p> I can't find where to click to go to next page for a long time. </p> <p> I suggest to make these two links left aligned and don't separate them with horizontal line. </p> sorokin@… https://svn.boost.org/trac10/ticket/5348 https://svn.boost.org/trac10/ticket/5348 Report #5342: find_ptr (find wrapper) Sat, 19 Mar 2011 17:12:50 GMT Wed, 14 Mar 2012 14:02:07 GMT <p> Could you add a find wrapper to ptr (unordered) map that returns mapped_type* instead of an iterator (and NULL if not found)? </p> <p> The same could be provided for the other containers, but there it's less useful. </p> olafvdspek@… https://svn.boost.org/trac10/ticket/5342 https://svn.boost.org/trac10/ticket/5342 Report #5341: Patch to improve shared library behavior with serialization Sat, 19 Mar 2011 00:34:50 GMT Thu, 17 Jul 2014 08:13:21 GMT <p> There are some issues that I have come across when using serialization with objects across shared libraries. I have made a patch that resolves the issues I have encountered, and will hopefully make serialization finally be friendly across multiple shared libraries. </p> <p> The primary issue that I had was if there is a serializer created for an object, there can be some shared libraries that have a pointer serializer registered, and others that don't. This is actually quite common if you have the base class of an object declared in a separate library, since serializng a base class with base_object doesn't instanciate a pointer serializer. </p> <p> Here is one case where this would prove to be an issue. Let's say the first time you wrote out a type it had no pointer serializer registered. It would write in the type info that tracking is not required and write out the object. Later, an object of the same type is written out from another shared library, but in this library a pointer serializer is registered. In this case, it will write out the object id, followed by the object itself. When that file is read in, it will read that the type has tracking disabled with the type information, and read the first instance just fine. However, on the second instance it still thinks that tracking is disabled, and will fail to read in the object id, even though it was written out. </p> <p> I solved this issue by re-writing the archive serializer map to manage both pointer and non-pointer serializers. The map itself stores the non-pointer serializers in a multiset, so the serializers for all shared libraries are stored. When a iserializer/oserializer is constructed it is registered for that object type, and when it is destructed it is unregistered. pointer_iserializer/pointer_oserializer also register and unregister themselves with the map, but the behavior is different. What it will do is look at all non-pointer serializers of the proper type currently registered, and for any that don't have any pointer serializer registered for them it will use the pointer serializer currently being registered. When a pointer serializer is unregistered, it will search for an equivalent pointer serialier registered for another serializer for the same type (that was instanciated in a different library), or NULL if there is no such pointer serializer, and replace all instances of the pointer serializer being unregistered with that. Additionally, if a non-pointer serializer is being registered, it will look for an existing pointer serializer for that type to use. (it will quickly be replaced if there is a pointer serializer for that type instanciated in that library) </p> <p> The effect at the end of the day is that for any given serializer, either all libraries or no libraries will have a pointer serializer registered for the corresponding non-pointer serializer. Since unregistration of pointer serializers tries to look for an equivalent to take its place, it should handle dynamic loading and unloading of libraries properly. Also, it should add no runtime cost during the actual usage of the serializers, only during the registration and unregistration. </p> <p> The other issue I was having was I needed to create my own archive, but there was no way to export the archive serializer map symbols unless I put it in the boost serialization library, since it used the BOOST_ARCHIVE_OR_WARCHIVE_DECL() to generate the dllexport/dllimport declspecs. I changed it to use a technique described here. (<a class="ext-link" href="http://support.microsoft.com/kb/168958"><span class="icon">​</span>http://support.microsoft.com/kb/168958</a>) This allows customization for whether the symbols are imported and exported for each instantioation of archive_serializer_map. I also had to change all of the current archives to use this new method to register the archive serializer map. </p> <p> I tried to keep consistent with your coding style and techniques. Since both this patch and the concrete to abstract patch I submitted earlier modify iserializer.hpp, I have also attached a combined patch that applies both. </p> Aaron Barany <akb825@…> https://svn.boost.org/trac10/ticket/5341 https://svn.boost.org/trac10/ticket/5341 Report #5340: Patch to support concrete base classes becomming abstract classes Sat, 19 Mar 2011 00:26:28 GMT Wed, 13 Aug 2014 12:24:35 GMT <p> If you are serializing a pointer to a polymorphic object as a pointer to its base class, and that base class is concrete, it will fail to load if that base class later becomes abstract. That is because the serializer for the base class is automatically registered if it is concrete, but not if it is abstract, making a mismatch in the class id for the object. I have attached a patch that detects this case and registers the serializer for the abstract class if it occurs. </p> <p> This patch contains multiple pieces. Fist, basic_iarchive.cpp is patched in load_pointer() to detect that mismatch in class ids and register the serializer. Second, iserializer.hpp is patched so that register_type() for abstract classes returns the proper pointer serializer. (though it isn't directly registered) Third, pointer_iserializer::load_object_pointer() now uses templates to split into two implementations: one for abstract and one for non-abstract classes. The abstract implementation throws an archive_exception, to which an abstract_class_error field has been added. </p> <p> This patch does not handle going from an abstract base class to a concrete base class, as that would break backwards compatibility. However, it should be more common to go from concrete to abstract than the other way around, and having this support can solve a lot of debugging headaches when it comes up. (headaches that prompted me adding this support) </p> <p> I have tried to keep consistent with your coding style and techniques to make it as seamless to patch as possible. </p> Aaron Barany <akb825@…> https://svn.boost.org/trac10/ticket/5340 https://svn.boost.org/trac10/ticket/5340 Report #5339: asio async_read throws boost::asio::error::invalid_argument on mac OS X Sat, 19 Mar 2011 00:05:20 GMT Sat, 24 Nov 2012 07:31:17 GMT <p> I am trying to write a serial library using Boost's asio, but on mac OS X the async_read throws boost::asio::error::invalid_argument. I have created a custom completion condition to ignore the invalid_argument exceptions, but this causes a busy wait (using a lot of cpu time) yet does not prevent data from being read. </p> <p> I have attached source code and output from both linux and os x. </p> <p> Linux: Ubuntu 10.10 i386 - Boost 1.42.0 Mac OS X: 10.6.6 - Boost 1.45.0 </p> wjwwood@… https://svn.boost.org/trac10/ticket/5339 https://svn.boost.org/trac10/ticket/5339 Report #5318: Path replace_stem() request Wed, 16 Mar 2011 12:57:37 GMT Wed, 16 Mar 2011 12:57:37 GMT <p> There has been a request for a path replace_stem() function to complement replace_extension(). </p> <p> It might make sense to revisit remove_filename(). It should probably have been replace_filename(const path&amp; new_filename=path()); </p> <p> Ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/5317" title="#5317: Bugs: Path filename(), stem(), and extension() problems (new)">#5317</a> should be cleared before addressing these issues. </p> Beman Dawes https://svn.boost.org/trac10/ticket/5318 https://svn.boost.org/trac10/ticket/5318 Report #5317: Path filename(), stem(), and extension() problems Wed, 16 Mar 2011 12:42:49 GMT Wed, 16 Mar 2011 12:42:49 GMT <p> Problem: filename() is specified in terms of *--end(), but path_test.cpp does not actually test this. Since the actual implementation of filename() does not use iteration, such a test should be performed. </p> <p> Resolution: Add something like BOOST_TEST_EQ(p.filename(), *--p.end()); to the decomposition tests. </p> <p> Problem: stem() + extension() should == filename(), but path_test.cpp does not actually test this. </p> <p> Resolution: Add something like BOOST_TEST_EQ(p.filename(), path(p.stem().native() + p.extension().native()));); to the decomposition tests. </p> <p> Problem: path(".foo") should be a stem, not an extension. </p> <p> Resolution: Fix specification, implementation, and add test cases. </p> <p> Problem: Design of Path iterator, and as a consequence, filename(), is too inventive in adding "." KISS. Note that POSIX has similar problems. POSIX dirname() and basename() are not good models; they (1) modify their arguments, and (2) return counter-intuitive results. basename("/foo/") returns "foo", not "" or "." </p> <p> Resolution: Simplify specification, change implementation and test cases accordingly. </p> Beman Dawes https://svn.boost.org/trac10/ticket/5317 https://svn.boost.org/trac10/ticket/5317 Report #5309: Multiple unused parameter warnings in boost/parameter/aux_/tagged_argument.hpp Tue, 15 Mar 2011 15:16:18 GMT Tue, 15 Mar 2011 15:16:18 GMT <p> Ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4954" title="#4954: Patches: Unused parameter warning in boost/parameter/aux_/tagged_argument.hpp (new)">#4954</a> has pointed out one of these warnings already (line 123) however there is one more on line 135 (and possibly others?). </p> <p> Line 123 and line 135 both have the same problem where there is an unused parameter which generates a compiler warning (GCC 4.1.2 on Red Hat Enterprise Linux Server release 5.2). </p> <p> The attached patch fixes both of these. </p> Colin Powers <colin.powers@…> https://svn.boost.org/trac10/ticket/5309 https://svn.boost.org/trac10/ticket/5309 Report #5305: Compiling boost 1.46.1 with bjam under Windows 7 using MSVC 2010 and Intel Compiler XE 2011.0.154 Mon, 14 Mar 2011 09:24:15 GMT Wed, 15 Feb 2012 11:30:57 GMT <p> I noticed an issue with bjam when trying to compile boost 1.46.1 using MSVC 2010 and Intel Compiler XE 2011. Bjam is trying to execute "C:\Program Files\Intel\ComposerXE-2011\bin\ia21//iclvars.bat" when iclvars.bat is actually located in ""C:\Program Files\Intel\ComposerXE-2011\bin". According to Intel's release notes (<a class="ext-link" href="http://software.intel.com/file/31856"><span class="icon">​</span>http://software.intel.com/file/31856</a>), the build environment command script has been changed (Section 3.4.1) which I have copied/pasted for convenience. </p> <blockquote class="citation"> <p> 3.4.1 Build Environment Command Script Change The command window script used to establish the build environment allows the optional specification of the version of Microsoft Visual Studio to use. If you are not using the predefined Start menu shortcut to open a build environment window, use the following command to establish the proper environment: "&lt;install-dir&gt;\bin\compilervars.bat" arch [vs] Where arch is one of followings as appropriate for the target architecture you want to build for: </p> </blockquote> <blockquote class="citation"> <ul><li>ia32 </li><li>ia32_intel64 </li><li>intel64 </li></ul></blockquote> <blockquote class="citation"> <p> vs is optional and can be one of followings. If vs is not specified, the version of Visual Studio specified at installation time for command-line integration is used by default. </p> </blockquote> <blockquote class="citation"> <ul><li>vs2010 </li><li>vs2008 </li><li>vs2005 </li></ul></blockquote> <blockquote class="citation"> <p> If you also have Intel® Visual Fortran Composer XE 2011 installed, this command will also establish the environment for using that compiler. The script file names iclvars.bat and ifortvars.bat have been retained for compatibility with previous releases. </p> </blockquote> <p> The workaround is to use the predefined start menu shortcut to open a build window for building boost. </p> Edward Rankin <erankin@…> https://svn.boost.org/trac10/ticket/5305 https://svn.boost.org/trac10/ticket/5305 Report #5302: [accumulator] Generalise type arithmetics, e.g. make it play well with boost.units. Mon, 14 Mar 2011 05:34:46 GMT Mon, 14 Mar 2011 05:34:46 GMT <p> Accumulators library assumes that for an accumulated type T*T is also of type T. This makes it difficult to play it well with boost.unit for example; specially for the variance accumulator. </p> <p> Based on <a class="ext-link" href="http://groups.google.com/group/boostusers/msg/86ebe100e3a86794"><span class="icon">​</span>http://groups.google.com/group/boostusers/msg/86ebe100e3a86794</a> Below is the goal code: </p> <p> #include&lt;boost/accumulators/accumulators.hpp&gt; #include &lt;boost/accumulators/statistics/variance.hpp&gt; #include&lt;boost/units/systems/si.hpp&gt; #include&lt;boost/units/io.hpp&gt; </p> <p> using namespace boost::accumulators; using namespace boost::units; int main(){ </p> <blockquote> <p> accumulator_set&lt; </p> <blockquote> <p> quantity&lt;si::time&gt;, features&lt; </p> <blockquote> <p> tag::variance, </p> <blockquote class="citation"> <p> a; </p> </blockquote> </blockquote> </blockquote> <p> a(1.0*si::second); a(2.0*si::second); a(3.0*si::second); std::cout </p> <blockquote> <p> &lt;&lt; extract::variance(a) </p> </blockquote> <p> ; return 0; </p> </blockquote> <p> } </p> alfredo.correa@… https://svn.boost.org/trac10/ticket/5302 https://svn.boost.org/trac10/ticket/5302 Report #5301: Boost.Filesystem V3 interface inconsistency Sun, 13 Mar 2011 21:03:22 GMT Sun, 13 Mar 2011 21:03:22 GMT <p> I came across the following interface inconsistency in Boost.Filesystem V3 (Boost 1.46.0) in boost::filesystem::path </p> <p> Windows: </p> <p> const std::string string() const std::wstring&amp; wstring() </p> <p> Linux: </p> <p> const std::string&amp; string() const std::wstring wstring() </p> <p> We converted V2 code looking like this (necessary since filename() in V3 returns a path instead of a string): </p> <p> const std::string&amp; filename=path.filename(); </p> <p> The converted V3 code: </p> <p> const std::string&amp; filename=path.filename().string(); </p> <p> Obviously this code crashes in Linux since filename() returns a temporary object and string() returns a reference to one of its members. </p> <p> However this code works in Windows due to the different return types. </p> <p> My question: </p> <p> Wouldn't it make sense for all methods to return a value instead of a reference? </p> <p> It would ease the transition from V2 to V3 and avoid subtle programming errors. </p> Peter Klotz <peter.klotz@…> https://svn.boost.org/trac10/ticket/5301 https://svn.boost.org/trac10/ticket/5301 Report #5299: Serialization throws an exception for loading binary archive on windows Sun, 13 Mar 2011 14:31:01 GMT Thu, 20 Jun 2013 11:45:53 GMT <p> Serialization throws an exception for loading binary archive on windows. THere is no error when using text or xml archive. No error on Ubuntu when using binary, text or xml archive. </p> <p> I have tested the cpp file on both Window XP-x86 and Window 7-x64. The errors are the same. </p> <p> A minimal and complete example is the following: (in s11n_bug.cpp): </p> <pre class="wiki">#include &lt;fstream&gt; #include &lt;boost/archive/binary_iarchive.hpp&gt; #include &lt;boost/archive/binary_oarchive.hpp&gt; #include &lt;boost/serialization/vector.hpp&gt; #include &lt;boost/serialization/shared_ptr.hpp&gt; #include &lt;boost/serialization/nvp.hpp&gt; typedef std::vector&lt;int&gt; B; class A; typedef boost::shared_ptr&lt;A&gt; a_ptr; typedef boost::shared_ptr&lt;B&gt; b_ptr; class A{ public: A(){} A(b_ptr b) : b_(b){} virtual ~A(){} b_ptr b_; friend class boost::serialization::access; template&lt;class Archive&gt; void serialize(Archive &amp; ar, const unsigned int version){ ar &amp; BOOST_SERIALIZATION_NVP(b_); } }; class DA : public A{ public: DA(){} DA(b_ptr b) : A(b){} template&lt;class Archive&gt; void serialize(Archive &amp; ar, const unsigned int version){ ar &amp; boost::serialization::make_nvp("base", boost::serialization::base_object&lt;A&gt;(*this)); } }; typedef std::vector&lt;a_ptr&gt; VA; typedef boost::shared_ptr&lt;VA&gt; va_ptr; typedef std::vector&lt;va_ptr&gt; VVA; typedef boost::shared_ptr&lt;VVA&gt; vva_ptr; template &lt;typename Archive&gt; void register_types(Archive&amp; ar){ ar.template register_type&lt;DA&gt;(); } b_ptr make_b(){ return b_ptr(new B); } a_ptr make_a(){ return a_ptr(new DA(make_b())); } va_ptr make_va(){ VA va; va.push_back(make_a()); va.push_back(make_a()); return va_ptr(new VA(va)); } vva_ptr make_vva(){ VVA vva; vva.push_back(make_va()); vva.push_back(make_va()); return vva_ptr(new VVA(vva)); } int main(){ std::string filename = "tmp"; std::vector&lt;vva_ptr&gt; thing; thing.push_back(make_vva()); thing.push_back(make_vva()); { std::ofstream ofs(filename.c_str()); boost::archive::binary_oarchive oa(ofs); register_types(oa); oa &lt;&lt; BOOST_SERIALIZATION_NVP(thing); } { std::ifstream ifs(filename.c_str()); boost::archive::binary_iarchive ia(ifs); register_types(ia); ia &gt;&gt; BOOST_SERIALIZATION_NVP(thing); } return 0; } </pre> Wang Peng <wangp.thu@…> https://svn.boost.org/trac10/ticket/5299 https://svn.boost.org/trac10/ticket/5299 Report #5297: boost 1.46.1 bootstrap problem with visual studio 2010 sp1 Sat, 12 Mar 2011 21:57:02 GMT Thu, 05 May 2011 14:42:54 GMT <p> when executing bootstap.exe for boost-1.46.1, the process failed. see attached bjam.log for detail. </p> lto@… https://svn.boost.org/trac10/ticket/5297 https://svn.boost.org/trac10/ticket/5297 Report #5293: support exception-handling feature in gcc Sat, 12 Mar 2011 19:01:16 GMT Sat, 12 Mar 2011 19:01:16 GMT <p> It's not clear to me if the exception-handling is deliberately excluded from the gcc toolset or not, given how small this change is, it almost seems like it. Anyway, I can't see a reason not to support this feature for GCC. Appending this at the end of build/v2/tools/gcc.jam makes it work for me (on darwin). </p> <pre class="wiki">toolset.flags gcc OPTIONS &lt;exception-handling&gt;off : -fno-exceptions ; toolset.flags gcc OPTIONS &lt;exception-handling&gt;on : -fexceptions ; </pre> arvid@… https://svn.boost.org/trac10/ticket/5293 https://svn.boost.org/trac10/ticket/5293 Report #5292: boost::mpi::scatterv and boost::mpi::gatherv added Fri, 11 Mar 2011 16:04:58 GMT Wed, 09 Apr 2014 17:19:48 GMT <p> Two more collective operations for Boost.MPI. I made the headers completely based on the existent one: scatter.hpp and gather.hpp </p> <p> "common use versions" was added too, for those cases where the great buffer is stored contiguously at the root process. </p> <p> The "common use version" of gatherv needs a warning in the docs: Since the process send it's own buffer size and nothing more, all sizes will be gathered before the real call. I don't know if this is tolerable, you have the decision. </p> <p> Other doubt about gatherv implementation: I did switch to the packed_archive_send() / packed_archive_recv() communication, i tried to figure out the difference in send an archive or send using communicator::send when dealing with non-MPI types, but without success. boost::mpi::scatter uses the first and boost::mpi::gather uses the second. Anyway,the snippet of code is commented if you want to switch back. </p> <p> I'm sending a Main.cpp file with the simple tests i made, comment or uncomment the prototypes in pairs: scatterv / gatherv. </p> <p> To see the results in a separate terminal for each process, this is a possible way: </p> <p> <strong>mpicxx Main.cpp -o test &amp;&amp; echo 107 &gt; input.txt &amp;&amp; mpirun -np 4 xterm -e ./test</strong> </p> Júlio Hoffimann <julio.hoffimann@…> https://svn.boost.org/trac10/ticket/5292 https://svn.boost.org/trac10/ticket/5292 Report #5291: bzip2_decompressor does not work properly with a filtering_streambuf Fri, 11 Mar 2011 15:12:00 GMT Mon, 01 Jul 2013 00:20:27 GMT <p> The revision 63057 of boost/iostreams/filter/bzip2.hpp seems to have broken the ability to use the bzip2 decompressor in a filtering streambuf. When I pass a stream into the buffer it throws data_error_magic. Stepping through the code I can see it correctly decode the zipped data, but then it continues to attempt to decode data even after eof is reached. </p> <p> Looking at the changes to bzip2_decompressor_impl I see the following issues: 1.) The function returns true even if _eof is set to true. This causes the "done" flag in the "Read" function in symmetric.hpp to be set to false, which causes the bzip2_decompressor_impl function to execute again, after EOL. 2.) On the second execution when _eof is set, the "close" function resets _eof to false, which can cause the function to throw the exception. </p> <p> In the specific instance I am using, my bzip compressed section is embedded in the middle of the stream, so src_begin won't equal src_end. </p> Chris Steenwyk <chris.steenwyk@…> https://svn.boost.org/trac10/ticket/5291 https://svn.boost.org/trac10/ticket/5291 Report #5284: gcc-4.4.3 compiler warnings with Interprocess+Intrusive Tue, 08 Mar 2011 22:38:21 GMT Wed, 22 Aug 2012 17:24:12 GMT <p> I've been using Boost Interprocess managed_shared_memory for a short time. My project was previously using a cross compiler environment based on gcc-4.4.0/glibc-2.3.6 but is moving to gcc-4.4.3/glibc-2.11.1. gcc-4.4.3 with -O2 is started generating compiler warnings in the Intrusive library when I attempt to execute the construct() method on managed_shared_memory object. -O0 and -O1 are still happy. I'm wondering if anyone else has seen similar, has suggestions on debug/fix, or does this appear to be compiler issue? </p> <p> Program snippet: #include "boost/interprocess/managed_shared_memory.hpp" #include &lt;cstdlib&gt; <em>std::system #include &lt;cstddef&gt; </em></p> <p> int main(int argc, char *argv[]) { </p> <blockquote> <p> using namespace boost::interprocess; typedef std::pair&lt;double, int&gt; <a class="missing wiki">MyType</a>; </p> </blockquote> <blockquote> <p> <em>Construct managed shared memory managed_shared_memory segment(create_only, "<a class="missing wiki">MySharedMemory</a>", 65536); </em></p> </blockquote> <blockquote> <p> <em>Create an object of <a class="missing wiki">MyType</a> initialized to {0.0, 0} <a class="missing wiki">MyType</a> *instance = segment.construct&lt;<a class="missing wiki">MyType</a>&gt; </em></p> <blockquote> <p> ("<a class="missing wiki">MyType</a> instance") <em>name of the object (0.0, 0); </em>ctor first argument </p> </blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> Compiler output: gcc-4.4.3-glibc-2.11.1-grte/x86/bin/g++ -ld -MD -MP -g -O2 -Wall -Werror </p> <blockquote> <p> -fno-omit-frame-pointer -Wno-error -Wno-deprecated -fpic -I/home/mitzel/src/boost_1_46_0 -c -o test.o test.cc </p> </blockquote> <p> In file included from /home/mitzel/src/boost_1_46_0/boost/intrusive/rbtree_algorithms.hpp:58, </p> <blockquote> <p> from /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/rbtree_node.hpp:20, from /home/mitzel/src/boost_1_46_0/boost/intrusive/set_hook.hpp:20, from /home/mitzel/src/boost_1_46_0/boost/intrusive/rbtree.hpp:25, from /home/mitzel/src/boost_1_46_0/boost/intrusive/set.hpp:19, from /home/mitzel/src/boost_1_46_0/boost/interprocess/mem_algo/rbtree_best_fit.hpp:47, from /home/mitzel/src/boost_1_46_0/boost/interprocess/detail/managed_memory_impl.hpp:22, from /home/mitzel/src/boost_1_46_0/boost/interprocess/managed_shared_memory.hpp:21, from test.cc:1: </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/tree_algorithms.hpp: </p> <blockquote> <p> In static member function 'static typename NodeTraits::node_ptr boost::intrusive::detail::tree_algorithms&lt;<a class="missing wiki">NodeTraits</a>&gt;::minimum(typename NodeTraits::node_ptr) [with <a class="missing wiki">NodeTraits</a> = boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;]': </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/tree_algorithms.hpp:490: </p> <blockquote> <p> warning: '&lt;anonymous&gt;' may be used uninitialized in this function </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/tree_algorithms.hpp: </p> <blockquote> <p> In static member function 'static typename NodeTraits::node_ptr boost::intrusive::detail::tree_algorithms&lt;<a class="missing wiki">NodeTraits</a>&gt;::maximum(typename NodeTraits::node_ptr) [with <a class="missing wiki">NodeTraits</a> = boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;]': </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/tree_algorithms.hpp:507: </p> <blockquote> <p> warning: '&lt;anonymous&gt;' may be used uninitialized in this function </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/utilities.hpp: </p> <blockquote> <p> In static member function 'static void boost::intrusive::detail::tree_algorithms&lt;<a class="missing wiki">NodeTraits</a>&gt;::insert_equal_check_impl( bool, typename NodeTraits::node_ptr, typename NodeTraits::node_ptr, <a class="missing wiki">NodePtrCompare</a>, boost::intrusive::detail::tree_algorithms&lt;<a class="missing wiki">NodeTraits</a>&gt;::insert_commit_data&amp;, size_t*) [with <a class="missing wiki">NodePtrCompare</a> = boost::intrusive::detail::key_nodeptr_comp&lt;std::less&lt; boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;::block_ctrl&gt;, boost::intrusive::rbtree_impl&lt;boost::intrusive::setopt&lt;boost::intrusive::detail::base_hook_traits&lt; boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;::block_ctrl, boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;, (boost::intrusive::link_mode_type)0u, boost::intrusive::default_tag, 3&gt;, std::less&lt;boost::interprocess::rbtree_best_fit&lt;boost::interprocess::mutex_family&gt;::block_ctrl&gt;, long unsigned int, true&gt; &gt; &gt;, <a class="missing wiki">NodeTraits</a> = boost::intrusive::rbtree_node_traits&lt;boost::interprocess::offset_ptr&lt;void&gt;, true&gt;]': </p> </blockquote> <p> /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/utilities.hpp:234: warning: '&lt;anonymous&gt;' may be used uninitialized in this function /home/mitzel/src/boost_1_46_0/boost/intrusive/detail/utilities.hpp:234: note: '&lt;anonymous&gt;' was declared here </p> <p> thanks for your time and any suggestions. danny &lt;mitzel@…&gt; </p> Danny Mitzel <mitzel@…> https://svn.boost.org/trac10/ticket/5284 https://svn.boost.org/trac10/ticket/5284 Report #5277: QNX 6.5.0 compilation Mon, 07 Mar 2011 21:14:47 GMT Mon, 14 Mar 2011 00:55:00 GMT <p> Hi, </p> <p> I am compiling boost on QNX 6.5.0 and there are some changes necessary to the source in order to successfully complete the build. </p> <p> Regarding ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3133" title="#3133: Bugs: std::va_list namespace problem (closed: fixed)">#3133</a> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/3133"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/3133</a> it seems that va_list is now in std namespace so this workaround actually causes an error. </p> <p> In order to fix this on my machine I commented out the test for <span class="underline">QNXNTO</span> in boost/serialization/factory.hpp as follows </p> <pre class="wiki">namespace std{ #if defined(__LIBCOMO__) //|| defined(__QNXNTO__) using ::va_list; #endif } // namespace std </pre><p> In addition there is an issue with the rename function included from cstdio. By adding &lt;stdio.h&gt; to the includes in libs/filesystem/v3/src/operations.cpp I was able to get it to work. e.g., </p> <pre class="wiki">#include &lt;cstdio&gt; // for remove, rename #include &lt;cerrno&gt; #include &lt;cassert&gt; // #include &lt;iostream&gt; // for debugging only; comment out when not in use #if defined(__QNXNTO__) #include &lt;stdio.h&gt; #endif </pre><p> finally, I added std::va_list to boost/test/impl/execution_monitor.ipp </p> <pre class="wiki">#if defined(__QNXNTO__) # include &lt;stdio.h&gt; using std::va_list; #endif </pre><p> These changes allow the build to complete successfully, however I don't know if this means the library has been built problem, and I'm sure there is a better way to integrate these changes. </p> godbolt@… https://svn.boost.org/trac10/ticket/5277 https://svn.boost.org/trac10/ticket/5277 Report #5268: mpl::int_<INT_MIN> fails to compile under g++-4.6 although g++-4.5 works. Sat, 05 Mar 2011 17:31:28 GMT Mon, 07 Mar 2011 17:21:25 GMT <p> Under Debian Sid with a 2.6.36 AMD_64 kernel, and g++-4.6, the following code: </p> <pre class="wiki">#include &lt;climits&gt; #include &lt;boost/mpl/int.hpp&gt; boost::mpl::int_&lt;INT_MIN&gt; foo; </pre><p> Produces the errors: </p> <pre class="wiki">/usr/local/include/boost/mpl/aux_/integral_wrapper.hpp: In instantiation of ‘mpl_::int_&lt;-0x00000000080000000&gt;’: test_test.cpp:8:27: instantiated from here /usr/local/include/boost/mpl/aux_/integral_wrapper.hpp:73:96: error: ‘2147483647’ is not a valid template argument for type ‘int’ because it is a non-constant expression /usr/local/include/boost/mpl/aux_/integral_wrapper.hpp:73:96: error: overflow in constant expression [-fpermissive] </pre> Stirling Westrup <swestrup@…> https://svn.boost.org/trac10/ticket/5268 https://svn.boost.org/trac10/ticket/5268 Report #5263: Undefined symbols in libboost_python Fri, 04 Mar 2011 14:23:00 GMT Fri, 18 Mar 2011 01:10:56 GMT <p> When building and running pythonmagick (imagemagick python bindings dependent on boost), importing python-boost libraries fails with the following error: </p> <p> <a class="missing wiki">ImportError</a>: /usr/lib/libboost_python.so.1.46.0: undefined symbol: PyClass_Type </p> <p> This happens although boost was compiled with python3 support and pythonmagick was linked to libboost_python and all python3 libraries in <code>python-config --libs</code>. </p> <p> Checking libboost_python with ldd yields a whole list of undefined symbols <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>. </p> <p> This was originally filed as a bugreport for the <a class="missing wiki">ArchLinux</a> distribution but the maintainer suggested an upstream problem <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> ldd -r /usr/lib/libboost_python.so.1.46.0 ; output: see <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> <a class="ext-link" href="https://bugs.archlinux.org/task/23130"><span class="icon">​</span>https://bugs.archlinux.org/task/23130</a> </p> mschu.dev+boost@… https://svn.boost.org/trac10/ticket/5263 https://svn.boost.org/trac10/ticket/5263 Report #5245: ssend/issend support in Boost.MPI Tue, 01 Mar 2011 10:50:20 GMT Tue, 01 Jan 2013 11:13:26 GMT <p> I have code that depends on the use of MPI ssend/issend (synchronous send), so I would like to see Boost.MPI support it. </p> <p> I'm attaching a patch to this extent; it applies cleanly to Boost 1.45.0 and 1.46.0. </p> <p> The patched code sometimes fails the "nonblocking" test, seemingly at random and I'm not able to debug it. On the other hand, I have been using the patched Boost.MPI in production runs of my code for months now without any issue so I'm quite confident in it. </p> Riccardo Murri <riccardo.murri@…> https://svn.boost.org/trac10/ticket/5245 https://svn.boost.org/trac10/ticket/5245 Report #5244: <methodname> and <classname> clash with docbook Mon, 28 Feb 2011 22:56:31 GMT Thu, 08 Nov 2012 11:24:52 GMT <p> This is the remaining issue from <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2153" title="#2153: Bugs: [boostbook] Entities methodname, classname, macroname, headername, ... (closed: fixed)">#2153</a>. Boostbook has <code>&lt;methodname&gt;</code> and <code>&lt;classname&gt;</code> elements with different semantics to the the docbook elements with the same name. They're not in the dtd for this reason, and not documented. Should possibly rename the <code>&lt;*name&gt;</code> elements to something more sensible. </p> Daniel James https://svn.boost.org/trac10/ticket/5244 https://svn.boost.org/trac10/ticket/5244 Report #5243: Support doxygen <ref> elements in passthrough mode. Mon, 28 Feb 2011 22:47:06 GMT Sat, 18 Jun 2011 10:59:33 GMT <p> A patch for this was attached to <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3309" title="#3309: Bugs: Passthrough mode in doxygen2boostbook is not pass-through and ignores ... (closed: fixed)">#3309</a>, but I didn't apply it because doxygen seems to automatically mark words as <code>&lt;ref&gt;</code> and often gets it wrong. The change might be appropriate if that can be suppressed. </p> Daniel James https://svn.boost.org/trac10/ticket/5243 https://svn.boost.org/trac10/ticket/5243 Report #5241: Ublas still links to the old CVS repository Sun, 27 Feb 2011 12:45:21 GMT Sun, 27 Feb 2011 12:45:21 GMT <p> The attached patch updates it. </p> Daniel James https://svn.boost.org/trac10/ticket/5241 https://svn.boost.org/trac10/ticket/5241 Report #5239: Outdated Boost build instructions in the python tutorial Sun, 27 Feb 2011 12:30:28 GMT Sun, 27 Feb 2011 12:30:28 GMT <p> Since bjam is now part of boost build, the python tutorial is out of date. The attached patch is a quick fix, although it might be best to rewrite some of it. </p> Daniel James https://svn.boost.org/trac10/ticket/5239 https://svn.boost.org/trac10/ticket/5239 Report #5238: Outdated repository details for cctbx Sun, 27 Feb 2011 11:20:04 GMT Sun, 27 Feb 2011 11:20:04 GMT <p> In the <a href="http://www.boost.org/doc/libs/1_46_0/libs/python/doc/v2/faq.html#question2">python FAQ</a>, CVS is used to access the "scitbx" files. They seem to be using subversion now. </p> Daniel James https://svn.boost.org/trac10/ticket/5238 https://svn.boost.org/trac10/ticket/5238 Report #5234: Boost 1.46 doesn't build on FreeBSD 7.1-RELEASE Sat, 26 Feb 2011 10:51:05 GMT Thu, 09 Oct 2014 06:08:07 GMT <pre class="wiki">kvs@tishina boost_1_46_0:&gt; ./bootstrap.sh Building Boost.Jam with toolset gcc... Failed to build Boost.Jam Consult 'bootstrap.log' for more details kvs@tishina boost_1_46_0:&gt; cat bootstrap.log ### ### Using 'gcc' toolset. ### rm -rf bootstrap mkdir bootstrap gcc -o bootstrap/jam0 command.c compile.c debug.c expand.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c jam.c: In function 'executable_path': jam.c:615: warning: incompatible implicit declaration of built-in function 'strndup' /var/tmp//ccApIIrd.o(.text+0xc48): In function `executable_path': : undefined reference to `strndup' </pre><p> I seems that FreeBSD 7.1 doesn't have strndup() function. </p> kvs@… https://svn.boost.org/trac10/ticket/5234 https://svn.boost.org/trac10/ticket/5234 Report #5230: Interprocess shared memory between 32 and 64 bit processes Fri, 25 Feb 2011 13:42:37 GMT Wed, 30 Aug 2017 12:25:51 GMT <p> For sharing memory between 32 and 64 bit processes, all structures in shared memory must have the same binary layout with matching size_type and difference_type. In addition, offset_ptr must be 64bit in this case. </p> <p> This is a patch that parameterizes offset_ptr to explicitly accept its difference_type along with its internal offset_type. This difference_type (and the according size_type) is propagated to all other affected structures (memory algorithms, allocators, containers, ...). In 32/64 bit shared environments, difference_type should be set to <code>int</code> and offset_type to <code>unsigned __int64</code>. The default values are <code>ptrdiff_t</code> and <code>size_t</code>. </p> <p> Note: rbtree_best_fit also uses offset_type to store its internal block sizes, because these need to wrap-around correctly on 64bit machines. </p> tgermer@… https://svn.boost.org/trac10/ticket/5230 https://svn.boost.org/trac10/ticket/5230 Report #5227: find_ptr wrapper for map::find Thu, 24 Feb 2011 16:44:08 GMT Wed, 09 Jan 2013 14:28:56 GMT <p> Hi, </p> <p> Would it be possible to include this handy wrapper for (unordered) map::find? </p> <pre class="wiki">#include &lt;boost/unordered_map.hpp&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; template &lt;class T, class U&gt; typename T::mapped_type* find_ptr(T&amp; c, U v) { typename T::iterator i = c.find(v); return i == c.end() ? NULL : &amp;i-&gt;second; } template &lt;class T, class U&gt; const typename T::mapped_type* find_ptr(const T&amp; c, U v) { typename T::const_iterator i = c.find(v); return i == c.end() ? NULL : &amp;i-&gt;second; } int main() { typedef boost::unordered_map&lt;int, string&gt; very_long_type_name_t; very_long_type_name_t very_long_name; very_long_name[1] = "one"; very_long_type_name_t::iterator i = very_long_name.find(1); if (i != very_long_name.end()) cout &lt;&lt; i-&gt;second &lt;&lt; "\n"; if (very_long_type_name_t::mapped_type* i = find_ptr(very_long_name, 1)) cout &lt;&lt; *i &lt;&lt; "\n"; /* very_long_type_name_t::iterator i = very_long_name.find(1); if (i != very_long_name.end()) cout &lt;&lt; i-&gt;second &lt;&lt; "\n"; if (very_long_type_name_t::mapped_type* i = find_ptr(very_long_name, 1)) cout &lt;&lt; *i &lt;&lt; "\n"; auto i = very_long_name.find(1); if (i != very_long_name.end()) cout &lt;&lt; i-&gt;second &lt;&lt; "\n"; if (auto i = find_ptr(very_long_name, 1)) cout &lt;&lt; *i &lt;&lt; "\n"; */ } </pre> olafvdspek@… https://svn.boost.org/trac10/ticket/5227 https://svn.boost.org/trac10/ticket/5227 Report #5224: Non-type class template parameters support. Thu, 24 Feb 2011 11:40:51 GMT Thu, 24 Feb 2011 11:40:51 GMT Domagoj Šarić https://svn.boost.org/trac10/ticket/5224 https://svn.boost.org/trac10/ticket/5224 Report #5201: Negative numbers as options and values not parsed correctly Fri, 18 Feb 2011 21:42:32 GMT Sun, 19 Jan 2014 17:58:39 GMT <p> This issue has been reported initially on <a class="missing wiki">StackOverflow</a> in question <a class="ext-link" href="http://stackoverflow.com/questions/4107087/accepting-negative-doubles-with-boostprogram-options"><span class="icon">​</span>Accepting negative doubles with boost::program_options</a> and later reminded on the mailing list in thread <a class="ext-link" href="http://lists.boost.org/Archives/boost/2011/02/176604.php"><span class="icon">​</span>program_options negative numbers</a>. Not sure if it is a bug or lack of feature, but seems it would be reasonable to have it solved. </p> <p> Simply, program_options can not parse negative numbers as values of options. For example: </p> <pre class="wiki">mycommand --extent -1.0 -2.0 -3.0 1.0 2.0 3.0 --some-other-argument somevalue </pre><p> I discussed this issue with Volodya on IRC and there seems to be possible and not difficult to implement solution. Here is the chat script: </p> <pre class="wiki">Nov 10 17:04:17 &lt;mloskot&gt; volodya: I think it's feasible to refactor the loops in the cmdline parser to handle multitoken options with negative numbers as values. I have an idea to add ::multitoken(int exact_tokens_num) and make parser consuming as much values as the exact number of tokens specified, regardless how the options look like Nov 10 17:04:26 &lt;mloskot&gt; volodya: what you think about this idea? Nov 10 17:04:28 &lt;spitzi&gt; The question is - supposed that I want to make some quick-and-dirty struct for the sake of having related, named fields tied together, but without going through writing c'tors and operators. Can a list of such structs be initialized with boost::assign::list_of ? Nov 10 17:05:30 &lt;volodya&gt; mloskot: well, I think that if that translates into min and max number of tokesn of the option being equal to that value, it seems sane Nov 10 17:05:53 &lt;mloskot&gt; volodya: yes, basically that would be the thing Nov 10 17:05:55 &lt;volodya&gt; and of course, when min=max, there's no need to guessing. Nov 10 17:05:59 &lt;volodya&gt; ok, sounds good. </pre> Mateusz Loskot https://svn.boost.org/trac10/ticket/5201 https://svn.boost.org/trac10/ticket/5201 Report #5195: time_duration visualizer works incorrectly with negative duration Wed, 16 Feb 2011 13:29:20 GMT Wed, 16 Feb 2011 13:29:20 GMT <p> 86400000000 unsigned 64 bit integer is mixed with signed integers. The fix is to use 86400000000I64 instead, as follows: </p> <p> ;------------------------------------------------------------------------------ ; boost::posix_time::time_duration visualizer ; only works with microseconds resolution ;------------------------------------------------------------------------------ </p> <p> boost::posix_time::time_duration{ </p> <blockquote> <p> preview ( </p> <blockquote> <p> #( </p> <blockquote> <p> $c.ticks_.value_/86400000000I64, "d ", ($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64))/3600000000, "h ", ($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64)-3600000000*(($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64))/3600000000))/60000000, "m ", (($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64)-3600000000*(($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64))/3600000000))-60000000*(($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64) - 3600000000*(($c.ticks_.value_-86400000000I64*($c.ticks_.value_/86400000000I64))/3600000000))/60000000))/1000000, "s ", ($c.ticks_.value_%1000000)/1000, "ms ", $c.ticks_.value_%1000, "us" </p> </blockquote> <p> ) </p> </blockquote> <p> ) </p> </blockquote> <p> } </p> Igor R. <boost.lists@…> https://svn.boost.org/trac10/ticket/5195 https://svn.boost.org/trac10/ticket/5195 Report #5192: Serialization of Boost.Filesystem path Mon, 14 Feb 2011 22:41:00 GMT Wed, 01 Nov 2017 05:05:25 GMT <p> I came across Johan Rade's post about serialization of a filesystem path (see <a class="ext-link" href="http://lists.boost.org/Archives/boost/2008/09/142550.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2008/09/142550.php</a>). </p> <p> However I couldn't spot it in the source code. Maybe a suggestion? Ofc the C4127 should be addressed then. </p> <p> Note: the mail thread is also about in which library the solution should be placed. My suggestion is to put it in serialization library, with the rationale that 'path' is a more basic concept (comparable to string, vector etc.) than serialization is. It would be more natural for serialization to use the filesystem library than the other way around. </p> gast128@… https://svn.boost.org/trac10/ticket/5192 https://svn.boost.org/trac10/ticket/5192 Report #5176: test_assignment assumes fabs(float) Thu, 10 Feb 2011 20:39:38 GMT Wed, 19 Sep 2012 19:48:53 GMT <p> As per [lib.c.math] paragraphs 5 and 6, there are float and long double overloads for fabs(): </p> <pre class="wiki"> float fabs (float); long double fabs (long double); </pre><p> libstdc++ apparently does not have the required overloads and is seems </p> <blockquote> <p> libs/numeric/ublas/test/test_assignment.cpp </p> </blockquote> <p> relies on this. </p> <p> Patch provided. </p> hstong@… https://svn.boost.org/trac10/ticket/5176 https://svn.boost.org/trac10/ticket/5176 Report #5174: Patch to make code_converter flushable Thu, 10 Feb 2011 03:15:16 GMT Sat, 24 Mar 2012 03:25:36 GMT <p> I've attached a little patch that makes iostreams::code_converter flushable. It seems like it really should be. Is there any chance someone could look at this? I've included some test code as well that outputs the following. </p> <p> The reason I need this functionality is because I am converting the <a class="ext-link" href="http://savannah.nongnu.org/projects/fastcgipp"><span class="icon">​</span>fastcgi++</a> library over to use boost iostreams for filtering capabilities. Unfortunately if the code_converter can not flush it is useless. </p> <p> <strong></strong><strong></strong><strong> OUTPUT BEFORE PATCH </strong><strong></strong><strong></strong> </p> <p> main(): Sending 24 characters of data to output stream SinkDev::write(): Recieved 16 characters. main(): Calling a sync on the output stream main(): Sending 21 characters of data to output stream SinkDev::write(): Recieved 16 characters. </p> <p> main(): Asking for 24 characters of data from input stream SourceDev::read(): Sending 16 characters. SourceDev::read(): Sending 16 characters. main(): Calling a sync on the input stream main(): Asking for 9 characters of data from input stream SourceDev::read(): Sending 16 characters. </p> <p> main(): At end of test case SinkDev::write(): Recieved 13 characters. </p> <p> <strong></strong><strong></strong><strong> OUTPUT AFTER PATCH </strong><strong></strong><strong></strong> </p> <p> main(): Sending 24 characters of data to output stream SinkDev::write(): Recieved 16 characters. main(): Calling a sync on the output stream SinkDev::write(): Recieved 8 characters. main(): Sending 21 characters of data to output stream SinkDev::write(): Recieved 16 characters. </p> <p> main(): Asking for 24 characters of data from input stream SourceDev::read(): Sending 16 characters. SourceDev::read(): Sending 16 characters. main(): Calling a sync on the input stream main(): Asking for 9 characters of data from input stream SourceDev::read(): Sending 16 characters. </p> <p> main(): At end of test case SinkDev::write(): Recieved 5 characters. SinkDev::write(): Recieved 0 characters. SinkDev::write(): Recieved 0 characters. SinkDev::write(): Recieved 0 characters. </p> <p> <strong></strong><strong></strong><strong> END </strong><strong></strong><strong></strong> </p> <p> Notice that input functionality doesn't change but the output functionality does. The one cause for concern to me is that for some reason upon deconstruction the new flush() function is called a bunch of extras times. I'm not entirely sure why this is happening. -- </p> <blockquote> <p> Eddie Carle </p> </blockquote> eddie@… https://svn.boost.org/trac10/ticket/5174 https://svn.boost.org/trac10/ticket/5174 Report #5169: documentation on split_winmain() is missing Tue, 08 Feb 2011 06:23:01 GMT Tue, 08 Feb 2011 06:23:01 GMT <p> It is present in the program_options/parsers.hpp, and I except to see it in the generated docs: <a href="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options/reference.html#header.boost.program_options.parsers_hpp">http://www.boost.org/doc/libs/1_45_0/doc/html/program_options/reference.html#header.boost.program_options.parsers_hpp</a> </p> ilyasokol@… https://svn.boost.org/trac10/ticket/5169 https://svn.boost.org/trac10/ticket/5169 Report #5163: Support tilde paths when installing. Sat, 05 Feb 2011 14:36:08 GMT Sat, 19 Mar 2011 09:45:41 GMT <p> On linux, installing boost build using <code>bjam install --prefix=~/boost/env</code> installs to a subdirectory called <code>~</code>, typically <code>boost/tools/build/v2/~</code>. I guess that normally such paths are expanded by the shell so bjam doesn't have to deal with them, but because '--prefix=~/boost/env' appears to be a single argument that didn't happen. Would it be possible to support this? </p> Daniel James https://svn.boost.org/trac10/ticket/5163 https://svn.boost.org/trac10/ticket/5163 Report #5158: speed up lowest_bit() for gcc 4.x compatibles Fri, 04 Feb 2011 00:36:32 GMT Thu, 06 Jun 2019 13:57:27 GMT <p> The patch provides specialization of lowest_bit() template that utilizes <span class="underline">builtin_ctz[l][l]() function, available for gcc 4.x-compatible compilers, instead of calculation-intensive path that makes use of integer_log2(). </span></p> <p> Since lowest_bit() is used in dynamic_bitset::find_first()/find_next(), the patch leads to significant speed up for bitset traversal. </p> <p> The patch was tested on gcc 4.5.2 x86_64 and icc 11.1 x86_64. </p> <p> Currently, the patch provides no checks, if <span class="underline">builting_ctz is available for current toolset. I can try to add this, given the overall positive feedback. </span></p> astukalov@… https://svn.boost.org/trac10/ticket/5158 https://svn.boost.org/trac10/ticket/5158 Report #5157: Assign native socket problem Thu, 03 Feb 2011 23:25:44 GMT Thu, 17 Mar 2011 17:05:58 GMT <p> Hi </p> <p> I'm trying to duplicate accepted/opened socket and pass them to other process. It works fine under linux. But under Windows I can't assign this native socket to boost::asio::ip::tcp::socket. When I try to assign opened native socket to boost socket object s.assign(boost::asio::ip::tcp::v4(), socketDup) throws me exception: "The parameter is incorrect". Even if I try to duplicate socket and use them in the same process. I still got this exception. </p> <p> The line inside boost throws this exception: boost_1_45_0\boost\asio\detail\impl\win_iocp_io_service.ipp: </p> <pre class="wiki">boost::system::error_code win_iocp_io_service::register_handle( HANDLE handle, boost::system::error_code&amp; ec) { if (::CreateIoCompletionPort(handle, iocp_.handle, 0, 0) == 0) //this function failed { DWORD last_error = ::GetLastError(); ec = boost::system::error_code(last_error, boost::asio::error::get_system_category()); } else { ec = boost::system::error_code(); } return ec; } </pre><p> I'm using: VC++ 2008 / Win7 </p> <p> What am I doing wrong? How can I resolve this problem? Thanks for help. </p> <p> Example code: </p> <pre class="wiki">boost::asio::io_service io_service; tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), m_nPort)); std::cout &lt;&lt; "Waiting for connection..." &lt;&lt; std::endl; tcp::socket socket(io_service); acceptor.accept(socket); std::cout &lt;&lt; "connection accepted" &lt;&lt; std::endl; #ifdef _WIN32 WSAPROTOCOL_INFO pi; WSADuplicateSocket(socket.native(), get_current_process_id(), &amp;pi); SOCKET socketDup = WSASocket(pi.iAddressFamily/*AF_INET*/, pi.iSocketType/*SOCK_STREAM*/, pi.iProtocol/*IPPROTO_TCP*/, &amp;pi, 0, 0); char sText[] = "I can use my duplicated socket via WinApi!\r\n"; int nRet = send(socketDup, sText, strlen(sText), 0); #else //linux int socketDup = dup(socket.native()); #endif try { tcp::socket s(io_service); s.assign(boost::asio::ip::tcp::v4(), socketDup); //this throws exception under Windows //I can't use my socket via boost lib s.send(boost::asio::buffer("Not work\r\n")); } catch(std::exception &amp;e) { std::cerr &lt;&lt; e.what() &lt;&lt; std::endl; //"The parameter is incorrect" exception } </pre> a.pacek@… https://svn.boost.org/trac10/ticket/5157 https://svn.boost.org/trac10/ticket/5157 Report #5156: copying opened socket between processes (Microsoft Windows) Thu, 03 Feb 2011 14:55:05 GMT Sat, 19 Feb 2011 06:52:44 GMT <p> Hello, I use WSADuplicateSocket to copy opened socket from one process to another. I try to attach received socket: </p> <p> boost::asio::io_service io_service; tcp::socket s1(io_service); ... here I'v got opened socket (receivedSocket) through shared memory from other process ... using WSADuplicateSocket char sText[] = "Open socket received !\r\n"; int nRet = send(receivedSocket, sText, strlen(sText), 0); <em> this works fine </em></p> <p> s1.assign(boost::asio::ip::tcp::v4(), receivedSocket); <em> here is an error: nr=87 msg=Invalid Parameter I tried debug and it lead me to call <a class="missing wiki">CreateIoCompletionPort</a> </em></p> <p> What is wrong ? Is it a bug ? Or my misunderstanding ? </p> <p> Regards, Irek Olchawski. </p> irol@… https://svn.boost.org/trac10/ticket/5156 https://svn.boost.org/trac10/ticket/5156 Report #5155: Boost build can exceed Windows max path length limit Thu, 03 Feb 2011 09:49:08 GMT Tue, 21 Jun 2016 17:15:08 GMT <p> I have been building boost successfully on Windows since 1.33. I usually extract boost do a directory such as: </p> <p> d:\boost_1_44_0 </p> <p> With 1.44, for the first time I noticed that some binaries were (silently) failing to appear in the build directory. Viewing the build directories, I suspected we were exceeding the windows path limit (256?). </p> <p> When I renamed to root folder to d:\b, the build suceeded. </p> <p> I'm afraid I didn't keep the build log, but kept the build command: </p> <p> bjam toolset=msvc-10.0 link=static runtime-link=static,shared variant="debug,release" threading="multi" define="_SECURE_SCL=0" debug-symbols="on" debug-store=database address-model=64 pch=off </p> <p> I suspect its the long list of options that have extended the path length. </p> <p> Platform: Windows 7 x64 Enterprise. </p> anonymous https://svn.boost.org/trac10/ticket/5155 https://svn.boost.org/trac10/ticket/5155 Report #5154: 1.45.0 python OS X 10.6 test_extending.py hangs Thu, 03 Feb 2011 00:07:00 GMT Tue, 19 Feb 2013 23:14:56 GMT <p> The following quickstart hangs on system python and EPD 32 6.2.3 32 bit this log for ootb system python. I'll try this out on svn trunk... </p> <pre class="wiki">/usr/local/src/boost_1_45_0/libs/python/example/quickstart chi:quickstart ix$ sudo /usr/local/src/boost_1_45_0/bjam toolset=darwin --debug-configuration --verbose-test test notice: found boost-build.jam at /usr/local/src/boost_1_45_0/libs/python/example/quickstart/boost-build.jam notice: loading Boost.Build from /usr/local/src/boost_1_45_0/tools/build/v2 notice: Searching /etc /Users/ix /usr/local/src/boost_1_45_0/libs/python/example/quickstart/../../../../tools/build/v2 /usr/share/boost-build /usr/local/src/boost_1_45_0/tools/build/v2/kernel /usr/local/src/boost_1_45_0/tools/build/v2/util /usr/local/src/boost_1_45_0/tools/build/v2/build /usr/local/src/boost_1_45_0/tools/build/v2/tools /usr/local/src/boost_1_45_0/tools/build/v2/contrib /usr/local/src/boost_1_45_0/tools/build/v2/. for site-config configuration file site-config.jam . notice: Loading site-config configuration file site-config.jam from /usr/local/src/boost_1_45_0/tools/build/v2/site-config.jam . notice: Searching /Users/ix /usr/local/src/boost_1_45_0/libs/python/example/quickstart/../../../../tools/build/v2 /usr/share/boost-build /usr/local/src/boost_1_45_0/tools/build/v2/kernel /usr/local/src/boost_1_45_0/tools/build/v2/util /usr/local/src/boost_1_45_0/tools/build/v2/build /usr/local/src/boost_1_45_0/tools/build/v2/tools /usr/local/src/boost_1_45_0/tools/build/v2/contrib /usr/local/src/boost_1_45_0/tools/build/v2/. for user-config configuration file user-config.jam . notice: Loading user-config configuration file user-config.jam from /usr/local/src/boost_1_45_0/tools/build/v2/user-config.jam . notice: Searching ../../../.. for project-config configuration file project-config.jam . notice: Loading project-config configuration file project-config.jam from ../../../../project-config.jam . notice: OSX version on this machine is 10.6.6 notice: will use 'g++' for darwin, condition &lt;toolset&gt;darwin-4.2.1 notice: using strip for &lt;toolset&gt;darwin-4.2.1 at /usr/bin/strip notice: using archiver for &lt;toolset&gt;darwin-4.2.1 at /usr/bin/libtool notice: available sdk for &lt;toolset&gt;darwin-4.2.1/&lt;macosx-version&gt;10.5 at /Developer/SDKs/MacOSX10.5.sdk notice: available sdk for &lt;toolset&gt;darwin-4.2.1/&lt;macosx-version&gt;10.6 at /Developer/SDKs/MacOSX10.6.sdk notice: [python-cfg] Configuring python... notice: [python-cfg] user-specified version: "2.6" notice: [python-cfg] user-specified cmd-or-prefix: "/System/Library/Frameworks/Python.framework/Versions/2.6" notice: [python-cfg] Checking interpreter command "/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python"... notice: [python-cfg] running command '"/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python" -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2&gt;&amp;1' notice: [python-cfg] ...requested configuration matched! notice: [python-cfg] Details of this Python configuration: notice: [python-cfg] interpreter command: "/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python" notice: [python-cfg] include path: "/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" notice: [python-cfg] library path: "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config" "/System/Library/Frameworks/Python.framework/Versions/2.6/lib" notice: [python-cfg] framework directory is "/System/Library/Frameworks/Python.framework" notice: [cmdline-cfg] Detected command-line request for darwin: toolset= darwin version= notice: [cmdline-cfg] toolset darwin already configured notice: iostreams: using prebuilt zlib notice: iostreams: using prebuilt bzip2 ...patience... ...patience... ...found 1605 targets... ...updating 9 targets... darwin.compile.c++ bin/darwin-4.2.1/debug/extending.o darwin.link.dll ../../../../bin.v2/libs/python/build/darwin-4.2.1/debug/libboost_python.dylib darwin.link.dll bin/darwin-4.2.1/debug/extending.so ^C </pre> seb@… https://svn.boost.org/trac10/ticket/5154 https://svn.boost.org/trac10/ticket/5154 Report #5133: Iostreams code_converter buffer Thu, 27 Jan 2011 19:29:13 GMT Thu, 27 Jan 2011 19:29:55 GMT <p> I've been working on converting a the fastcgi++ library over to using boost::iostreams from std::iostreams and I've noticed some peculiarities that I can't seem to work passed. </p> <p> For one, how do you change the buffer size of the code_converter adaptor? The built in facilities don't seem to actually do anything. I am adding to a filtering_stream and have noticed that for the following statements... </p> <p> stream.push(code_converter&lt;<a class="missing wiki">MyDevice</a>&gt;(myDevice), 8192); stream.push(code_converter&lt;<a class="missing wiki">MyDevice</a>&gt;(myDevice, 8192)); stream.push(code_converter&lt;<a class="missing wiki">MyDevice</a>&gt;(myDevice, 8192), 8192); </p> <p> All result in a buffer of 128 bytes. I can't figure out a way to actually change it. I've been monitoring what is going in the myDevice and it is always 128 byte chunks (or less). If I remove the code_converter from the stream and go directly in myDevice as per </p> <p> stream.push(myDevice, 8192); </p> <p> the buffer is sized as I want it to be and myDevice receives chunks of data maxing at 8192 bytes. </p> <p> Secondly, when using the statement </p> <p> stream.push(code_converter&lt;<a class="missing wiki">MyDevice</a>&gt;(myDevice, 8192)); </p> <p> code_converter calls not <a class="missing wiki">MyDevice</a>(const <a class="missing wiki">MyDevice</a>&amp;) for copying constructing the object but for some reason <a class="missing wiki">MyDevice</a>(const <a class="missing wiki">MyDevice</a>&amp;, const long int&amp;). What is that? Why is code_converter looking for such a constructor when I specify a buffer size for the code converter? </p> <p> Thirdly, I can not for the life of me make the code converter flush it's data. If I call a stream.strict_sync() should the code_converter not get flushed as well? It doesn't. Everything else in the chain does but the code_converter won't fully flush until destruction. </p> eddie@… https://svn.boost.org/trac10/ticket/5133 https://svn.boost.org/trac10/ticket/5133 Report #5131: Unified diff rejected by submission system for ticket 5130 Thu, 27 Jan 2011 16:35:10 GMT Thu, 27 Jan 2011 16:35:10 GMT <p> Unified diff version of the submitted patch was rejected by the submission system as spam. Please investigate. </p> <p> Ticket URL: &lt;<a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/5130#comment:1"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/5130#comment:1</a>&gt; </p> hstong@… https://svn.boost.org/trac10/ticket/5131 https://svn.boost.org/trac10/ticket/5131 Report #5122: doc/html/mpi/python.html contains dead link Wed, 26 Jan 2011 11:18:07 GMT Sun, 01 Sep 2013 09:36:41 GMT <p> <a href="http://www.boost.org/doc/libs/1_45_0/doc/html/mpi/python.html">http://www.boost.org/doc/libs/1_45_0/doc/html/mpi/python.html</a> has a dead link in the "Reference" section. </p> anonymous https://svn.boost.org/trac10/ticket/5122 https://svn.boost.org/trac10/ticket/5122 Report #5115: iostreams non_blocking_adapter read bug Mon, 24 Jan 2011 18:31:19 GMT Tue, 13 Mar 2012 17:09:04 GMT <p> When reading from device resulting amount of read bytes is ignored. </p> <p> line 31. of boost/iostreams/detail/adapter/non_blocking_adapter.hpp </p> <pre class="wiki"> explicit non_blocking_adapter(Device&amp; dev) : device_(dev) { } std::streamsize read(char_type* s, std::streamsize n) { std::streamsize result = 0; while (result &lt; n) { - std::streamsize amt = iostreams::read(device_, s, n); + std::streamsize amt = iostreams::read(device_, s, n - result); if (amt == -1) break; result += amt; } return result != 0 ? result : -1; } </pre> Mario Suvajac <msuvajac@…> https://svn.boost.org/trac10/ticket/5115 https://svn.boost.org/trac10/ticket/5115 Report #5114: Unexpected exception from tcp::socket::async_connect Mon, 24 Jan 2011 09:18:55 GMT Thu, 12 Nov 2015 09:27:04 GMT <p> ASIO uses two sockets connected to each other through loopback interface (in select_reactor). If, for example, access to loopback is blocked by firewall, then async_connect throws exception, instead of calling given handler with appropriate error code. </p> pavel@… https://svn.boost.org/trac10/ticket/5114 https://svn.boost.org/trac10/ticket/5114 Report #5109: assignment operator could not be generated VC 2008 Sat, 22 Jan 2011 09:11:28 GMT Tue, 16 Sep 2014 08:54:44 GMT <p> I get the folowing warnings when using BOOST_SCOPE_EXIT from boost/scope_exit.hpp in VC 2008 SP1 </p> <pre class="wiki">1&gt;D:\Programming\boost_1_45_0\boost/scope_exit.hpp(84) : warning C4512: 'boost::scope_exit::aux::member&lt;T,Tag&gt;' : assignment operator could not be generated 1&gt; with 1&gt; [ 1&gt; T=test::boost_se_params_t_0::boost_se_param_t_0_0, 1&gt; Tag=boost_se_tag_0_0 1&gt; ] 1&gt; .\test.cpp(7) : see reference to class template instantiation 'boost::scope_exit::aux::member&lt;T,Tag&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=test::boost_se_params_t_0::boost_se_param_t_0_0, 1&gt; Tag=boost_se_tag_0_0 1&gt; ] 1&gt;.\test.cpp(7) : warning C4512: 'test::boost_se_params_t_0' : assignment operator could not be generated 1&gt; .\test.cpp(7) : see declaration of 'test::boost_se_params_t_0' </pre><p> This happens under boost 1.45. </p> borisarb@… https://svn.boost.org/trac10/ticket/5109 https://svn.boost.org/trac10/ticket/5109 Report #5103: Boost Polygon: The union of these two polygon return an empty result. Thu, 20 Jan 2011 21:09:57 GMT Thu, 02 Jul 2015 14:04:08 GMT <p> main.cpp </p> <pre class="wiki">#include &lt;boost/polygon/polygon.hpp&gt; #include &lt;iostream&gt; namespace gtl = boost::polygon; using namespace boost::polygon::operators; // points_array_A_1 (-92810838,3618230) (-94606872,1822196) (-94999302,2214626) (-93203268,4010660) (-92810838,3618230) int points_array_A_1[] = {-92810838,3618230,-94606872,1822196,-94999302,2214626,-93203268,4010660,-92810838,3618230}; int points_array_A_1_size =5; // points_array_B_1 (-95269304,222758) (-95260668,419862) (-95234760,615696) (-95192088,808228) (-95132906,996442) (-95057214,1178814) (-94966028,1354074) (-94860110,1520444) (-94739968,1676908) (-94606618,1822450) (-94999048,2214880) (-95165164,2033778) (-95314770,1838706) (-95446850,1631442) (-95560388,1413510) (-95654368,1186434) (-95728282,951992) (-95781368,711962) (-95813626,468376) (-95824294,222758) (-95269304,222758) int points_array_B_1[] = {-95269304,222758,-95260668,419862,-95234760,615696,-95192088,808228,-95132906,996442,-95057214,1178814,-94966028,1354074,-94860110,1520444,-94739968,1676908,-94606618,1822450,-94999048,2214880,-95165164,2033778,-95314770,1838706,-95446850,1631442,-95560388,1413510,-95654368,1186434,-95728282,951992,-95781368,711962,-95813626,468376,-95824294,222758,-95269304,222758}; int points_array_B_1_size =21; namespace{ class Output //for printing debug info { public: template&lt;class T&gt; static void Print(const gtl::polygon_data&lt;T&gt;&amp; polyData) { gtl::polygon_data&lt;T&gt;::iterator_type pit = polyData.begin(); gtl::polygon_data&lt;T&gt;::iterator_type pit_end = polyData.end(); while(pit!=pit_end) { gtl::point_data&lt;T&gt; p = (*pit++); std::cout&lt;&lt;"("&lt;&lt;p.x()&lt;&lt;","&lt;&lt;p.y()&lt;&lt;")"; std::cout&lt;&lt;" "; } } template&lt;class T&gt; static void Print(std::vector&lt;gtl::polygon_data&lt;T&gt; &gt;&amp; polygonVec) { int size = polygonVec.size(); for(int i=0;i&lt;size;i++) { gtl::polygon_data&lt;T&gt;&amp; poly = polygonVec[i]; std::cout&lt;&lt;"Polygon "&lt;&lt;i+1&lt;&lt;": "; Output::Print(poly); std::cout&lt;&lt;std::endl; } } }; } static void AddPolygonData(std::vector&lt;gtl::polygon_data&lt;int&gt; &gt;&amp; group, int* points_array, int size) { //convert c array to boost polygon data if(size&gt;0) { gtl::polygon_data&lt;int&gt; poly_data; std::vector&lt;gtl::point_data&lt;int&gt; &gt; poly_points(size); int pi=0; for(int i=0;i&lt;size;i++) { int i1 = i*2; int i2 = i1+1; poly_points[i]=gtl::point_data&lt;int&gt;(points_array[i1],points_array[i2]); } poly_data.set(poly_points.begin(),poly_points.end()); group.push_back(poly_data); } } void testBooleanOps() { //lets declare ourselves a polygon set using namespace gtl; //because of operators typedef std::vector&lt;polygon_data&lt;int&gt; &gt; PolygonVec; PolygonVec group_A; PolygonVec group_B; PolygonVec group_U; //load group A; AddPolygonData(group_A,points_array_A_1,points_array_A_1_size); //load group B; AddPolygonData(group_B,points_array_B_1,points_array_B_1_size); std::cout&lt;&lt;"union\n"; //the result of the union is tore in group U; assign(group_U, group_A + group_B); Output::Print(group_U); } int main() { testBooleanOps(); return 0; } </pre> thai@… https://svn.boost.org/trac10/ticket/5103 https://svn.boost.org/trac10/ticket/5103 Report #5094: Build problem of boost.mpi on non-English Windows systems Wed, 19 Jan 2011 08:06:04 GMT Wed, 19 Jan 2011 08:06:04 GMT <p> <a class="missing wiki">Autodetection/Build</a> of MPI fails on non-English systems because mpi.jam looks for the Microsoft Compute Cluster Package only in "C:\Program Files", but this folder has different names on non-English systems (e.g. "C:\Programme" on my German system). Details are in the mail list thread on build-boost from 2011-01-17 <a class="ext-link" href="http://lists.boost.org/boost-build/2011/01/24512.php"><span class="icon">​</span>http://lists.boost.org/boost-build/2011/01/24512.php</a>. </p> <p> Suggested fix is to use an environment variable for the program folder, as suggested by Moritz Hassert in the above mentioned thread. I am just not technically knowledgable enough concerning the Windows OS, the intended locations for the Compute Pack on different systems (32 bit, 64 bit etc.) and the patching process; else I would submit a patch by myself. </p> frese@… https://svn.boost.org/trac10/ticket/5094 https://svn.boost.org/trac10/ticket/5094 Report #5092: Modify mpi.jam to use thread safe invocation of IBM compiler Tue, 18 Jan 2011 23:40:37 GMT Thu, 28 Apr 2011 08:55:59 GMT <p> IBM POE wrapper, <code>mpCC</code>, invokes the thread safe invocation of the IBM compiler, <code>xlC_r</code>. This patch achieves the same for Boost MPI configuration. </p> hstong@… https://svn.boost.org/trac10/ticket/5092 https://svn.boost.org/trac10/ticket/5092 Report #5089: Define BOOST_PYTHON_TYPE_ID_NAME for Linux IBM compiler Tue, 18 Jan 2011 22:39:07 GMT Tue, 06 Mar 2012 19:53:24 GMT hstong@… https://svn.boost.org/trac10/ticket/5089 https://svn.boost.org/trac10/ticket/5089 Report #5086: Fix for possible assertion failure in MSVC isctype.c Tue, 18 Jan 2011 18:27:00 GMT Thu, 27 Jan 2011 16:39:13 GMT <p> Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4791" title="#4791: Patches: boost/token_functions.hpp: warning isspace/ispunct called with wrong ... (closed: fixed)">#4791</a> about warning C6328 was closed as fixed. But in fact, the fix (<a class="changeset" href="https://svn.boost.org/trac10/changeset/66855" title="Merge patch to release; fixes #4791">r66855</a>) only silenced the warning, not addressing the real problem indicated by the warning. </p> <p> The problem is explained <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/ms245348.aspx"><span class="icon">​</span>here</a>. In short: (for character classification functions in &lt;cctype&gt;) </p> <blockquote class="citation"> <p> the valid range of values for its input argument is: </p> <blockquote> <p> 0 &lt;= c &lt;= 255, plus the special value EOF. </p> </blockquote> </blockquote> <p> Otherwise, the behavior is undefined. Thus, passing an user provided value of char (may be signed) can cause UB. The existing comment just above struct traits_extension addresses the same issue. </p> <p> Nothing was changed by the static_cast&lt;int&gt; introduced by the fix. It just expressed what the compiler implicitly does (integral promotion). </p> <p> Here is the patch to fix the real problem, including a test about the problem. </p> Kazutoshi Satoda <k_satoda@…> https://svn.boost.org/trac10/ticket/5086 https://svn.boost.org/trac10/ticket/5086 Report #5083: Snow Leopard, Xcode 3.2.x - i) Address-model seeming not to work ii) user-config.jam + build.sh, and iii) insufficient documentation for Boost.build - Jan. 18, 2011 Tue, 18 Jan 2011 09:41:02 GMT Thu, 31 Mar 2011 01:00:48 GMT <p> Preliminary: </p> <ul><li>platform: Mac mini Intel Core 2 Duo </li><li>OS: Mac OS X 10.6.x (Snow Leopard) </li><li>IDE and related development tools: Xcode 3.2.5 </li><li>BOOST versions: 1.43.0 .. 1.45.0 </li></ul><p> PART I: multi-architecture </p> <p> Unable to build multi-architecture, even though using the address-model option for bjam, according your Boost.build V2 documentation. Results are as follows, with Boost v. 1.45.0 (similar results with previous versions): </p> <ol><li>the address-model option is not given to bjam. The standard gcc (g++) compiler is used: </li></ol><p> size of the build folder: 186.3 MB. Architecture build (found with the "lipo -i" command): x86_64 </p> <ol start="2"><li>address-model set to 32: </li></ol><p> size of the build folder: 184.1 MB. Architecture build (found with the "lipo -i" command): x86_64 </p> <ol start="3"><li>address-model set to 32_64: </li></ol><p> size of the build folder: 184.1 MB. Architecture build (found with the "lipo -i" command): x86_64 </p> <p> In consequence: it seems that the address-model option remains uneffective. Unable to build multi-architecture. Besides, the 32-bit architecture lonely cannot be build too. </p> <p> #================================ </p> <p> PART II: user-config.jam, build.sh </p> <p> In my attempt to build multi-architecture BOOST libraries for Mac OS X, I tried several BOOST initial configurations through user-config.jam and build.sh located in /tolls/jam/src for the 1.45.0 version (located elsewhere for previuous versions - TBV, namely to be verified ... again). Please find below my results and, in my own opinions, tehy likely are unsecure in terms of quality of sofware development (kindly see the EIFFEL - MEYER or MAYER - handbook for this topics) : </p> <ol><li>user-config-jam: </li></ol><p> According to the BOOST.Build V2 documentation, I set "using gcc" with g++. It seems that it has an influence upon the build libraries (sizes different) compared to let this option not seen by bjam (in other words, keeping: #using gcc : : ;) </p> <ol start="2"><li>user-config.jam, build.sh </li></ol><p> After having looked at the build.sh file (TBV) and ahving seen that darwin is used to set the compiler to : cc (NB the "basic" C compiler), and even it is not indicated in teh Boost.build documentation, I tried to use the following rule: </p> <p> using darwin : : g++; It seems this has an influence, but I am not sure. Besdes, I am not sure that this is correct, because teh documentation remains unsufficient on this point in particular, on Apple generally. </p> <p> #================================ </p> <p> PART III: BOOST.build V2 documentation Unsufficient. A fairly big lack of real examples, in particular for the bjam section. Very useful but lacking: a summary of EVERY option of bjam in the command-line context. Etc. </p> <p> #================================ </p> <p> PART IV: miscellaneous </p> <ol><li>No check nor install check seeming to be present or allowed for BOOST. Expected a good new feature </li><li>IMPORTANT </li></ol><p> No possibility to see, for example before compilation, he complete or even partial set of configuration parameters used, such as: CC, CXX, CFLAGS, CXXFLAGS, LDFLAGS, etc ... very welcome for debugging </p> <ol start="3"><li>IMPORTANT </li></ol><p> CPP and CXXCPP seem not to be allowed to be set. How to fix that ? GNU compilers need thsi, because, according to their manuals, multi-architecture building needs : CPP"gcc -E", CXXCPP="g++ -E", with : CC="gcc -arch i386 -arch x86_64", and CXX="g++ -arch i386 -arch x86_64" for example. </p> doc0.delphin@… https://svn.boost.org/trac10/ticket/5083 https://svn.boost.org/trac10/ticket/5083 Report #5065: Valgrind complaint when using Boost MPI Thu, 13 Jan 2011 02:54:13 GMT Tue, 01 Jan 2013 11:12:48 GMT <p> I am using the latest Boost library (version 1.45.0) on Ubuntu. I have built Boost from the source using the bjam. </p> <p> boost::mpi::all_reduce uses boost::mpi::broadcast which seems to generate annoying invalid write errors under valgrind. The problem points to the line 47 in boost/mpi/detail/packed_oprimitive.hpp in const std::size_t &amp;size() const function. I changed the function to: </p> <blockquote> <p> const std::size_t&amp; size() const { </p> <blockquote> <p> const_cast&lt;std::size_t &amp;&gt;(size_) = buffer_.size(); return size_; </p> </blockquote> <p> } </p> </blockquote> <p> and the valgrind complaint seems to be gone. Const_cast seems less than ideal, but it fixes the problem. </p> dongryel@… https://svn.boost.org/trac10/ticket/5065 https://svn.boost.org/trac10/ticket/5065 Report #5027: Extension of Boost.Range algorithms Sat, 01 Jan 2011 12:21:35 GMT Thu, 05 Jun 2014 18:20:27 GMT <p> Maybe an idea to extend Boost.Range algorithms: </p> <ul><li>copy_if </li><li>for_each_if </li><li>transform_if </li><li>contains (/contains_if, shortcut for std::find(...) != end) </li><li>all (/all_if) </li><li>none(/none_if, shortcut for std::find(...) == end)) </li><li>bsearch (Austern 13.2.1.2) </li></ul><p> Some of them are listed in STLAlgorithmExtensions. </p> gast128 <gast128@…> https://svn.boost.org/trac10/ticket/5027 https://svn.boost.org/trac10/ticket/5027 Report #5024: Boost NVCC/CUDA fixes (MPL+concepts) Thu, 30 Dec 2010 18:01:48 GMT Fri, 11 Nov 2011 02:29:26 GMT <p> Fix traits, MPL problems for gcc+nvcc compiles. BOOST_DEDUCED_TYPENAME doesnt work for nvcc because EDG and GCC treat them differently. That was fixed manually. </p> anonymous https://svn.boost.org/trac10/ticket/5024 https://svn.boost.org/trac10/ticket/5024 Report #5023: Can not build Boost.Python Wed, 29 Dec 2010 14:28:47 GMT Thu, 30 Dec 2010 15:09:59 GMT <p> I have installed Python 2.6 when i runing "bjam" i have messages: </p> <pre class="wiki">warning: No python installation configured and autoconfiguration note: failed. See http://www.boost.org/libs/python/doc/building.html note: for configuration instructions or pass --without-python to note: suppress this message and silently skip all Boost.Python targets </pre><p> After I add add line "using python : 2.6 ; " to "project-config.jam" I have this warning message again. </p> <p> Then I add absolute path to python in "project-config.jam". This is not working too. </p> <p> I run bjam with "--debug-configuration" option and have messages: </p> <pre class="wiki">notice: [python-cfg] running command '"C:\Python26\python.exe" -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2&gt;&amp;1' notice: [python-cfg] ...does not invoke a working interpreter notice: [python-cfg] No working Python interpreter found. </pre><p> But when I run </p> <pre class="wiki">"C:\Python26\python.exe" -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" </pre><p> manualy, I have correct results. </p> <p> Ok. Next I modify "tools\build\v2\tools\python.jam" </p> <pre class="wiki">local rule shell-cmd ( cmd ) { debug-message running command '$(cmd)" 2&gt;&amp;1"' ; x = [ SHELL $(cmd)" 2&gt;&amp;1" : exit-status ] ; debug-message CMD "$(cmd)" ; &lt;&lt;&lt;&lt;&lt;&lt;&lt; add this string debug-message RESULT "$(x)" ; &lt;&lt;&lt;&lt;&lt;&lt;&lt; add this string if $(x[2]) = 0 { return $(x[1]) ; } else { return ; } } </pre><p> and run "bjam --debug-configuration" again </p> <p> Result: </p> <pre class="wiki">notice: [python-cfg] running command '"C:\Python26\python.exe" -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' %(version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2&gt;&amp;1' notice: [python-cfg] CMD "C:\Python26\python.exe" -c "from sys import *; print(' version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" notice: [python-cfg] RESULT "C:\Python26\python.exe" -c "from" &lt;&lt;&lt;&lt; (here is error text at Russian. He said what this is not correct path and shell can not execute this command) notice: [python-cfg] ...does not invoke a working interpreter notice: [python-cfg] No working Python interpreter found. </pre><p> I don't know why he is trim command. </p> hacenator@… https://svn.boost.org/trac10/ticket/5023 https://svn.boost.org/trac10/ticket/5023 Report #5020: build.bat selects incorrect toolset Fri, 24 Dec 2010 13:21:48 GMT Fri, 24 Dec 2010 13:21:48 GMT <p> Building on Win7 64-bit. In function <strong>:Test_Path</strong>, statement <em>set test=%~$PATH:1</em> is not getting errorlevel 1 when the file is not found (win7 bug?). This results in msvc being selected as the toolset. As a workaround, I changed the line (in Test_PATH):<br /> </p> <p> <em>if not errorlevel 1 set FOUND_PATH=%~dp$PATH:1</em> <br />to:<br /> <em>if not errorlevel 1 if _%test% NEQ _ set FOUND_PATH=%~dp$PATH:1</em> </p> <p> All callers of Test_Path were also changed to test FOUND_PATH for a value. A cleaner solution may be able to remove the errorlevel 1 tests. </p> <p> ...chris. </p> webstech@… https://svn.boost.org/trac10/ticket/5020 https://svn.boost.org/trac10/ticket/5020 Report #5001: Failure to compile boost_1_45 and boost-trunk on ia64 (itanium2) with toolset intel-linux Sat, 18 Dec 2010 20:19:23 GMT Fri, 12 Apr 2013 14:52:21 GMT <p> Hi all, </p> <p> I have tried to compile boost_1_45_0 using the Intel compiler on an Itanium machine, but it seems to fail with a segfault: </p> <pre class="wiki">xxx@cn002:~/src/boost_1_45_0&gt; ./bootstrap.sh --with-toolset=intel-linux --show-libraries --prefix=$HOME Building Boost.Jam with toolset intel-linux... Failed to build Boost.Jam Consult 'bootstrap.log' for more details xxx@cn002:~/src/boost_1_45_0&gt; cat bootstrap.log ### ### Using 'intel-linux' toolset. ### rm -rf bootstrap mkdir bootstrap icc -o bootstrap/jam0 command.c compile.c debug.c expand.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c expand.c(85): warning #181: argument is incompatible with corresponding format string conversion printf( "expand '%.*s'\n", end - in, in ); ^ ./bootstrap/jam0 -f build.jam --toolset=intel-linux --toolset-root= clean ...found 1 target... ...updating 1 target... [DELETE] clean ./build.sh: line 13: 27407 Segmentation fault (core dumped) $@ </pre><p> So far, I have gathered the following information: </p> <ul><li>I've done this on two different Itanium machines I've got access to. It fails with the same error message on both machines. </li><li>I have used Intel compilers 11.1, 11.0, 10.1. Same error message with all of them. </li><li>Compiling on x86_64 with the above compilers works as expected. </li></ul><p> Next, I have checked out the boost trunk from the subversion rep. Here, it does not offer any libraries to compile: </p> <pre class="wiki">xxx@cn002:~/src/boost-trunk&gt; ./bootstrap.sh --with-toolset=intel-linux --show-libraries Building Boost.Jam with toolset intel-linux... tools/build/v2/engine/src/bin.linuxia64/bjam The following Boost libraries have portions that require a separate build and installation step. Any library not listed here can be used by including the headers only. The Boost libraries requiring separate building and installation are: xxx@cn002:~/src/boost-trunk&gt; </pre><p> I decided to still give it a go: </p> <pre class="wiki">xxx@cn002:~/src/boost-trunk&gt; ./bootstrap.sh --with-toolset=intel-linux --with-libraries=iostreams,mpi,serialization Building Boost.Jam with toolset intel-linux... tools/build/v2/engine/src/bin.linuxia64/bjam Unicode/ICU support for Boost.Regex?... not found. Generating Boost.Build configuration in project-config.jam... Bootstrapping is done. To build, run: ./bjam To adjust configuration, edit 'project-config.jam'. Further information: - Command line help: ./bjam --help - Getting started guide: http://www.boost.org/more/getting_started/unix-variants.html - Boost.Build documentation: http://www.boost.org/boost-build2/doc/html/index.html xxx@cn002:~/src/boost-trunk&gt; ./bjam Segmentation fault (core dumped) </pre><p> No luck either :( </p> <p> At this point, I'm running out of ideas - anything else I could try? </p> <p> Cheers, Stefan </p> Stefan Janecek <stejanecek@…> https://svn.boost.org/trac10/ticket/5001 https://svn.boost.org/trac10/ticket/5001 Report #4988: [units] improve error messages when quantities are not convertible into one another. Wed, 15 Dec 2010 18:56:28 GMT Thu, 14 Jul 2011 23:06:43 GMT <p> Currently, if the quantities are not convertible one into the other (which depends on the included header, etc), the error message is pretty long and unreadable. Specifically in terms of what conversion is being attempted. I suggest the authors consider an improved compiler error message. </p> Alfredo Correa <alfredo.correa@…> https://svn.boost.org/trac10/ticket/4988 https://svn.boost.org/trac10/ticket/4988 Report #4976: boost-jam 3.1.18 + mingw-w64 Mon, 13 Dec 2010 10:22:04 GMT Thu, 31 Mar 2011 00:59:41 GMT <p> my boost-jam 3.1.18 doesn't work with mingw-w64 gcc where my boost-jam 3.1.17 does (using "build.bat gcc") </p> <p> Error is : C:\devenv\src\boost-jam\3.1.18&gt;build.bat gcc ### ### "Could not find a suitable toolset." ### ### You can specify the toolset as the argument, i.e.: ### .\build.bat msvc ### ### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, ### intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10 ### ### ### "Could not find a suitable toolset." ### </p> <p> To reproduce: <strong> Download a mingw-w64 toolchain from mingw-w64 at sourceforge. <a class="ext-link" href="http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/sezero_4.5_20101002/mingw-w32-bin_i686-mingw_20101002_4.5_sezero.zip/download"><span class="icon">​</span>http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/sezero_4.5_20101002/mingw-w32-bin_i686-mingw_20101002_4.5_sezero.zip/download</a> </strong> extract somewhere, <strong> Add the bin directory in the download to your path </strong> change to the boost-jam 3.1.18 src directory <strong> execute "build.bat gcc" </strong></p> <p> To see expected result, use boost-jam 3.1.17 instead. </p> Jarrod Chesney <jarrod.chesney@…> https://svn.boost.org/trac10/ticket/4976 https://svn.boost.org/trac10/ticket/4976 Report #4969: transform_iterator won't work with non-const operator() call for function object Thu, 09 Dec 2010 01:56:02 GMT Sun, 23 Feb 2014 16:18:00 GMT <p> transform_iterator declare it's copied function object as: </p> <div class="wiki-code"><div class="code"><pre> <span class="n">UnaryFunc</span> <span class="n">m_f</span><span class="p">;</span> </pre></div></div><p> And it's dereference function as: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">typename</span> <span class="n">super_t</span><span class="o">::</span><span class="n">reference</span> <span class="n">dereference</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">m_f</span><span class="p">(</span><span class="o">*</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">base</span><span class="p">());</span> <span class="p">}</span> </pre></div></div><p> which makes it impossible to cooperate with function object with non-const operator() overloading, and and it will also make transformed adaptor in boost::range not work: </p> <div class="wiki-code"><div class="code"><pre><span class="k">struct</span> <span class="n">Fun</span> <span class="p">{</span> <span class="k">typedef</span> <span class="kt">bool</span> <span class="n">result_type</span><span class="p">;</span> <span class="kt">bool</span> <span class="nf">operator</span><span class="p">()(</span><span class="kt">int</span> <span class="n">a</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">a</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">;</span> <span class="p">}</span> <span class="p">};</span> <span class="n">Fun</span> <span class="n">f</span><span class="p">;</span> <span class="n">boost</span><span class="o">::</span><span class="n">find</span><span class="p">(</span><span class="n">all</span><span class="o">|</span><span class="n">boost</span><span class="o">::</span><span class="n">adaptors</span><span class="o">::</span><span class="n">transformed</span><span class="p">(</span><span class="n">f</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span> </pre></div></div><p> A boost::ref won't work here since the result has no result_type defined </p> <p> And the only solution would be using a boost::function to hold the original function object, however, doing so will give unnecessary run time cost. </p> <p> I suggest change the <a class="missing wiki">UnaryFunc</a> m_f; definition to mutable, so that it will work with non-const functor. </p> <div class="wiki-code"><div class="code"><pre> <span class="n">UnaryFunc</span> <span class="k">mutable</span> <span class="n">m_f</span><span class="p">;</span> </pre></div></div> zhuo.qiang@… https://svn.boost.org/trac10/ticket/4969 https://svn.boost.org/trac10/ticket/4969 Report #4954: Unused parameter warning in boost/parameter/aux_/tagged_argument.hpp Tue, 07 Dec 2010 20:31:47 GMT Tue, 07 Dec 2010 20:31:47 GMT <p> There is an unused parameter warning on line 123 of tagged_argument.hpp with GCC 4.3.0 on Mac OS 10.6.4. The attached patch fixes it. </p> Rich McKeever <richmckeever@…> https://svn.boost.org/trac10/ticket/4954 https://svn.boost.org/trac10/ticket/4954 Report #4951: Boost.Tuple: implement set_open(const char *) Tue, 07 Dec 2010 20:14:57 GMT Wed, 08 Dec 2010 17:33:41 GMT <p> Current implementation of Boost.Tuple IO manipulators allows define only single character for start of tuple, delimiter of items and for end of tuple. </p> <ol><li>Sometimes it is convenient to have no character before and after tuple data. </li><li>Sometimes it is convenient to wrap tuple in more that single character. </li></ol><p> For example output tuple as HTML table row: with open string "&lt;tr&gt;&lt;td&gt;", delimiter "&lt;/td&gt;&lt;td&gt;" and end string "&lt;/td&gt;&lt;/tr&gt;", so (1 2 3) will be outputted as correct HTML table row "&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;". </p> Vladimir Rutsky <altsysrq@…> https://svn.boost.org/trac10/ticket/4951 https://svn.boost.org/trac10/ticket/4951 Report #4944: Summary of failed unit tests Tue, 07 Dec 2010 09:19:47 GMT Wed, 08 Dec 2010 09:35:25 GMT <p> While unit testing your component, you want to see if all pass, or if something fails.<br /> Currently, bjam only gives a statement how many tests fail at the end. Not which tests.<br /> It would be nice to have a summary listing of the failed tests at the end.<br /> The -q option is not applicable here, because you eventually want to see the current status of all unit tests. </p> Thomas Heller https://svn.boost.org/trac10/ticket/4944 https://svn.boost.org/trac10/ticket/4944 Report #4942: Searching for boost-build.jam Mon, 06 Dec 2010 15:44:37 GMT Thu, 31 Mar 2011 00:58:38 GMT <p> Upon invocation bjam should also look for boost-build.jam in the Boost tree specified by the --boost=/path/to/Boost option if it can not find it anywhere else in its normal search path. </p> <p> This would allow any Boost-like library, using the directory structure suggested by the sandbox, to have its jamfiles execute properly even if it were not located within a Boost tree or beneath a top-level directory with its own boost-build.jam, as long as the bjam command had a --boost/path/to/Boost option pointing to a Boost distribution. </p> Edward Diener https://svn.boost.org/trac10/ticket/4942 https://svn.boost.org/trac10/ticket/4942 Report #4917: uBLAS element-wise power function Wed, 01 Dec 2010 17:27:10 GMT Fri, 28 Oct 2011 06:14:50 GMT <p> I would like to introduce element-wise power function. There are four functions in the patch: </p> <ul><li><code>pow( vector_expression, scalar )</code> </li><li><code>pow( matrix_expression, scalar )</code> </li><li><code>element_pow( vector_expression, vector_expression )</code> </li><li><code>element_pow( matrix_expression, matrix_expression )</code> </li></ul><h2 class="section" id="Synopsis">Synopsis</h2> <p> These functions behave naturally. Let <code>v</code> is a vector, <code>m</code> is a matrix, <code>p</code> is a scalar then <code>pow( v, p )</code> and <code>pow( m, p )</code> just raise each element to the power <code>p</code>. <code>element_pow( v1, v2)</code> is <code>v1[i] ^ v2[i]</code>. <code>element_pow( m1, m2)</code> works similarly. </p> <h2 class="section" id="Rationalize">Rationalize</h2> <p> <a class="ext-link" href="http://ublas.sourceforge.net"><span class="icon">​</span>http://ublas.sourceforge.net</a> mentions "...elements wise basic functions (sin,cos,log,exp,abs,max,min,etc...)" </p> <h2 class="section" id="Patch">Patch</h2> <p> The patch contains implementation and also simple test routines. </p> matwey.kornilov@… https://svn.boost.org/trac10/ticket/4917 https://svn.boost.org/trac10/ticket/4917 Report #4915: Iterator documentation does not list header files Tue, 30 Nov 2010 20:30:05 GMT Wed, 21 Nov 2012 19:44:45 GMT <p> The documentation of the iterator library does not list header files that need to be included to use all of its components. For example: </p> <p> <a href="http://www.boost.org/doc/libs/1_45_0/libs/iterator/doc/iterator_adaptor.html">http://www.boost.org/doc/libs/1_45_0/libs/iterator/doc/iterator_adaptor.html</a> </p> <p> There is no information there about which files are necessary to get access to the class described in the documentation. </p> marcin.zalewski@… https://svn.boost.org/trac10/ticket/4915 https://svn.boost.org/trac10/ticket/4915 Report #4913: file_descriptor_impl::read doesn't handle EINTR Tue, 30 Nov 2010 16:11:53 GMT Tue, 30 Nov 2010 16:22:46 GMT <p> when using boost::iostreams::stream_buffer&lt;boost::iostreams::file_descriptor_source&gt;, reads from the stream may unnecessarily set the badbit flag. the reason is that in the underlying call to read() the EINTR condition is not handled. the read() should be restarted in this case. </p> <p> i'm attaching a non tested patch. it does the same thing that libstdc++ does (function <span class="underline">basic_file&lt;char&gt;::xsgetn). </span></p> <p> this is easy to reproduce in gdb. here's why: <a class="ext-link" href="http://sourceware.org/gdb/onlinedocs/gdb/Interrupted-System-Calls.html"><span class="icon">​</span>http://sourceware.org/gdb/onlinedocs/gdb/Interrupted-System-Calls.html</a> </p> Todor Buyukliev <todor@…> https://svn.boost.org/trac10/ticket/4913 https://svn.boost.org/trac10/ticket/4913 Report #4908: Bug in program_options Mon, 29 Nov 2010 22:03:34 GMT Fri, 02 May 2014 12:32:01 GMT <p> In a simple example, I get errors </p> <p> OS Linux x64 (Kubuntu 10.10) g++ 4.5 Example (boost/libs/program_options/example/first.cpp) </p> <p> #include &lt;boost/program_options.hpp&gt; namespace po = boost::program_options; </p> <p> #include &lt;iostream&gt; #include &lt;iterator&gt; using namespace std; </p> <p> int main(int ac, char* av[]) { </p> <blockquote> <p> try { </p> </blockquote> <blockquote> <blockquote> <p> po::options_description desc("Allowed options"); desc.add_options() </p> <blockquote> <p> ("help", "produce help message") ("compression", po::value&lt;int&gt;(), "set compression level") </p> </blockquote> <p> ; </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> po::variables_map vm; po::store(po::parse_command_line(ac, av, desc), vm); po::notify(vm); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> if (vm.count("help")) { </p> <blockquote> <p> cout &lt;&lt; desc &lt;&lt; "\n"; return 1; </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> if (vm.count("compression")) { </p> <blockquote> <p> cout &lt;&lt; "Compression level was set to " </p> <blockquote> <p> &lt;&lt; vm<a class="missing wiki">compression</a>.as&lt;int&gt;() &lt;&lt; ".\n"; </p> </blockquote> </blockquote> <p> } else { </p> <blockquote> <p> cout &lt;&lt; "Compression level was not set.\n"; </p> </blockquote> <p> } </p> </blockquote> <p> } catch(exception&amp; e) { </p> <blockquote> <p> cerr &lt;&lt; "error: " &lt;&lt; e.what() &lt;&lt; "\n"; return 1; </p> </blockquote> <p> } catch(...) { </p> <blockquote> <p> cerr &lt;&lt; "Exception of unknown type!\n"; </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> <p> I have<br /> /home/dix/Projects/Test/CppApplication_1/main.cpp:13: undefined reference to `boost::program_options::options_description::m_default_line_length' /home/dix/Projects/Test/CppApplication_1/main.cpp:13: undefined reference to `boost::program_options::options_description::m_default_line_length' /home/dix/Projects/Test/CppApplication_1/main.cpp:13: undefined reference to `boost::program_options::options_description::options_description(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned int, unsigned int)' /home/dix/Projects/Test/CppApplication_1/main.cpp:15: undefined reference to `boost::program_options::options_description::add_options()' /home/dix/Projects/Test/CppApplication_1/main.cpp:15: undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)' /home/dix/Projects/Test/CppApplication_1/main.cpp:17: undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)' /home/dix/Projects/Test/CppApplication_1/main.cpp:19: undefined reference to `boost::program_options::variables_map::variables_map()' /home/dix/Projects/Test/CppApplication_1/main.cpp:20: undefined reference to `boost::program_options::store(boost::program_options::basic_parsed_options&lt;char&gt; const&amp;, boost::program_options::variables_map&amp;, bool)' /home/dix/Projects/Test/CppApplication_1/main.cpp:21: undefined reference to `boost::program_options::notify(boost::program_options::variables_map&amp;)' /home/dix/Projects/Test/CppApplication_1/main.cpp:24: undefined reference to `boost::program_options::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, boost::program_options::options_description const&amp;)' build/Debug/GNU-Linux-x86/main.o: In function `~validation_error': /usr/local/include/boost/program_options/errors.hpp:153: undefined reference to `vtable for boost::program_options::validation_error' build/Debug/GNU-Linux-x86/main.o: In function `value_semantic_codecvt_helper': /usr/local/include/boost/program_options/value_semantic.hpp:91: undefined reference to `vtable for boost::program_options::value_semantic_codecvt_helper&lt;char&gt;' build/Debug/GNU-Linux-x86/main.o: In function `~value_semantic_codecvt_helper': /usr/local/include/boost/program_options/value_semantic.hpp:91: undefined reference to `vtable for boost::program_options::value_semantic_codecvt_helper&lt;char&gt;' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::variables_map::operator[](std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) const': /usr/local/include/boost/program_options/variables_map.hpp:150: undefined reference to `boost::program_options::abstract_variables_map::operator[](std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) const' build/Debug/GNU-Linux-x86/main.o: In function `~variables_map': /usr/local/include/boost/program_options/variables_map.hpp:143: undefined reference to `vtable for boost::program_options::variables_map' build/Debug/GNU-Linux-x86/main.o: In function `basic_command_line_parser': /usr/local/include/boost/program_options/detail/parsers.hpp:43: undefined reference to `boost::program_options::detail::cmdline::cmdline(std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;)' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::basic_command_line_parser&lt;char&gt;::options(boost::program_options::options_description const&amp;)': /usr/local/include/boost/program_options/detail/parsers.hpp:51: undefined reference to `boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&amp;)' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::basic_command_line_parser&lt;char&gt;::style(int)': /usr/local/include/boost/program_options/detail/parsers.hpp:69: undefined reference to `boost::program_options::detail::cmdline::style(int)' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::basic_command_line_parser&lt;char&gt;::extra_parser(boost::function1&lt;std::pair&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;&gt;)': /usr/local/include/boost/program_options/detail/parsers.hpp:77: undefined reference to `boost::program_options::detail::cmdline::set_additional_parser(boost::function1&lt;std::pair&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;&gt;)' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::basic_command_line_parser&lt;char&gt;::run()': /usr/local/include/boost/program_options/detail/parsers.hpp:104: undefined reference to `boost::program_options::detail::cmdline::run()' build/Debug/GNU-Linux-x86/main.o: In function `std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; boost::program_options::to_internal&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;(std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;)': /usr/local/include/boost/program_options/detail/convert.hpp:79: undefined reference to `boost::program_options::to_internal(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)' build/Debug/GNU-Linux-x86/main.o:(.rodata._ZTVN5boost15program_options11typed_valueIicEE[vtable for boost::program_options::typed_value&lt;int, char&gt;]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper&lt;char&gt;::parse(boost::any&amp;, std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, bool) const' build/Debug/GNU-Linux-x86/main.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[vtable for boost::program_options::invalid_option_value]+0x20): undefined reference to `boost::program_options::validation_error::what() const' build/Debug/GNU-Linux-x86/main.o:(.rodata._ZTIN5boost15program_options11typed_valueIicEE[typeinfo for boost::program_options::typed_value&lt;int, char&gt;]+0x18): undefined reference to `typeinfo for boost::program_options::value_semantic_codecvt_helper&lt;char&gt;' build/Debug/GNU-Linux-x86/main.o: In function `boost::program_options::typed_value&lt;int, char&gt;::name() const': /usr/local/include/boost/program_options/detail/value_semantic.hpp:26: undefined reference to `boost::program_options::arg' /usr/local/include/boost/program_options/detail/value_semantic.hpp:28: undefined reference to `boost::program_options::arg' build/Debug/GNU-Linux-x86/main.o: In function `void boost::program_options::validate&lt;int, char&gt;(boost::any&amp;, std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, int*, long)': /usr/local/include/boost/program_options/detail/value_semantic.hpp:85: undefined reference to `boost::program_options::validators::check_first_occurrence(boost::any const&amp;)' /usr/local/include/boost/program_options/detail/value_semantic.hpp:91: undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)' build/Debug/GNU-Linux-x86/main.o: In function `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp; boost::program_options::validators::get_single_string&lt;char&gt;(std::vector&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, std::allocator&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt; const&amp;, bool)': /usr/local/include/boost/program_options/detail/value_semantic.hpp:58: undefined reference to `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)' /usr/local/include/boost/program_options/detail/value_semantic.hpp:62: undefined reference to `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)' build/Debug/GNU-Linux-x86/main.o: In function `validation_error': /usr/local/include/boost/program_options/errors.hpp:139: undefined reference to `vtable for boost::program_options::validation_error' </p> dix75@… https://svn.boost.org/trac10/ticket/4908 https://svn.boost.org/trac10/ticket/4908 Report #4903: Serialization library in Boost 1.45 is unable to read archive created with Boost 1.39 Mon, 29 Nov 2010 09:38:23 GMT Thu, 17 Nov 2011 12:38:58 GMT <p> The way the serialization library is handling object version and property information has obviously changed so that an attempt to read an archive with a simple object fails with version 1.45. </p> <p> The archive header is correctly read in (as opposed to 1.44) but an attempt to read a simple object fails because the version 1.45 is reading too much data. </p> Rüdiger Brünner <rbruenner@…> https://svn.boost.org/trac10/ticket/4903 https://svn.boost.org/trac10/ticket/4903 Report #4899: Parallel graphs don't work with named vertices Sat, 27 Nov 2010 16:43:16 GMT Mon, 16 Apr 2012 17:56:49 GMT <p> <code>brandes_betweenness_centrality</code> doesn't work with named vertices. </p> <p> Here are two reproducible examples: <a class="ext-link" href="https://gist.github.com/f02f18f30f0eef146a58"><span class="icon">​</span>https://gist.github.com/f02f18f30f0eef146a58</a> </p> <p> This is probably caused by the lack of a <code>local()</code> function in the <code>hashed_distribution</code> declared in <code>named_graph.hpp</code>. </p> <p> See also this discussion on the mailing list: <a class="ext-link" href="http://lists.boost.org/boost-users/2010/11/64489.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2010/11/64489.php</a> </p> cpaolino@… https://svn.boost.org/trac10/ticket/4899 https://svn.boost.org/trac10/ticket/4899 Report #4896: Bjam doesn't build correctly with Intel compiler when both vc8 and vc9 are installed on the same machine. Thu, 25 Nov 2010 11:06:16 GMT Thu, 25 Nov 2010 11:06:16 GMT <h2 class="section" id="Setup">Setup</h2> <p> With the following machine setup: </p> <ul><li>Windows 7 </li><li>Intel Pro C++ compiler for windows 11.1.067 </li><li>Visual studio 2005 and Visual studio 2008 </li></ul><h2 class="section" id="Command">Command</h2> <div class="wiki-code"><div class="code"><pre><span class="s2">&quot;C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\iclvars.bat&quot;</span> intel64 vs2005 bjam --toolset<span class="o">=</span><span class="s2">&quot;intel-11.1.067&quot;</span> <span class="s2">&quot;-sINTEL_PATH= C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\intel64&quot;</span> <span class="s2">&quot;-sINTEL_BASE_MSVC_TOOLSET=vc8&quot;</span> <span class="s2">&quot;-sINTEL_VERSION=11&quot;</span> --build-type<span class="o">=</span><span class="nb">complete</span> </pre></div></div><h2 class="section" id="Problem">Problem</h2> <p> This builds and creates dlls. However, upon inspection with dependency walker, the dlls are linking with vc9 rather than vc8. </p> <h2 class="section" id="Workaround">Workaround</h2> <p> Renaming the visual studio 2008 directory to something different, and rebuilding boost. The dlls then correctly link with visual studio 2005. </p> Matt <MBond@…> https://svn.boost.org/trac10/ticket/4896 https://svn.boost.org/trac10/ticket/4896 Report #4888: codecvt_error_category is not thread-safe Wed, 24 Nov 2010 08:13:04 GMT Wed, 24 Nov 2010 08:13:04 GMT <p> The boost::filesystem3::codecvt_error_category uses unprotected function-local static variable of type codecvt_error_cat, which is not POD. One thread may half-initialize this value when the other thread will acquire and use a reference to the not yet constructed error category. The object must be protected with call_once or a similar technique. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/4888 https://svn.boost.org/trac10/ticket/4888 Report #4886: options_description clear() method Tue, 23 Nov 2010 20:27:58 GMT Sat, 27 Nov 2010 14:13:07 GMT <p> For a project I'm working on, I consistently add the following public clear() method to the boost/program_options/options_description.hpp header file. It's possible that others may find this clear() method useful as well. </p> <blockquote> <p> void clear() { </p> <blockquote> <p> m_options.clear(); belong_to_group.clear(); groups.clear(); </p> </blockquote> <p> } </p> </blockquote> mid9090@… https://svn.boost.org/trac10/ticket/4886 https://svn.boost.org/trac10/ticket/4886 Report #4874: multi_array compile errors using Visual C++ 2010 in debug mode Sun, 21 Nov 2010 14:06:41 GMT Tue, 15 Aug 2017 12:59:46 GMT <p> This is a long standing problem and it should have been fixes already <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a>, but in boost release 1.45 it still exists. </p> <p> When using a multi_array and engaging the copy constructor or assignment operator of a multi_array in debug mode on Visual C++ 2010 the following errors are generated. This was done using the boost 1.45 release on Visual C++ 2010 on Windows 7 x64 targeting a x64 build: </p> <pre class="wiki">1&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2216): error C2665: 'std::_Copy_impl' : none of the 2 overloads could convert all the argument types 1&gt; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2182): could be '_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)' 1&gt; with 1&gt; [ 1&gt; _OutIt=boost::detail::multi_array::array_iterator&lt;char,char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::sub_array&lt;char,0x01&gt;&gt;, 1&gt; _InIt=boost::detail::multi_array::array_iterator&lt;char,const char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;&gt; 1&gt; ] 1&gt; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2191): or '_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)' 1&gt; with 1&gt; [ 1&gt; _OutIt=boost::detail::multi_array::array_iterator&lt;char,char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::sub_array&lt;char,0x01&gt;&gt;, 1&gt; _InIt=boost::detail::multi_array::array_iterator&lt;char,const char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;&gt; 1&gt; ] 1&gt; while trying to match the argument list '(boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;)' 1&gt; with 1&gt; [ 1&gt; T=char, 1&gt; TPtr=const char *, 1&gt; NumDims=boost::mpl::size_t&lt;0x02&gt;, 1&gt; Reference=boost::detail::multi_array::const_sub_array&lt;char,0x01&gt; 1&gt; ] 1&gt; and 1&gt; [ 1&gt; T=char, 1&gt; TPtr=const char *, 1&gt; NumDims=boost::mpl::size_t&lt;0x02&gt;, 1&gt; Reference=boost::detail::multi_array::const_sub_array&lt;char,0x01&gt; 1&gt; ] 1&gt; and 1&gt; [ 1&gt; T=char, 1&gt; TPtr=char *, 1&gt; NumDims=boost::mpl::size_t&lt;0x02&gt;, 1&gt; Reference=boost::detail::multi_array::sub_array&lt;char,0x01&gt; 1&gt; ] 1&gt; and 1&gt; [ 1&gt; Category=std::input_iterator_tag, 1&gt; Traversal=boost::random_access_traversal_tag 1&gt; ] 1&gt; and 1&gt; [ 1&gt; Category=std::input_iterator_tag, 1&gt; Traversal=boost::random_access_traversal_tag 1&gt; ] 1&gt; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2227) : see reference to function template instantiation '_OutIt std::_Copy_impl&lt;_Iter,_OutIt&gt;(_InIt,_InIt,_OutIt,std::tr1::false_type)' being compiled 1&gt; with 1&gt; [ 1&gt; _OutIt=boost::detail::multi_array::array_iterator&lt;char,char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::sub_array&lt;char,0x01&gt;&gt;, 1&gt; _Iter=boost::detail::multi_array::array_iterator&lt;char,const char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;&gt;, 1&gt; _InIt=boost::detail::multi_array::array_iterator&lt;char,const char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;&gt; 1&gt; ] 1&gt; E:\working_copies\schism_x64\externals_vc100\inc\boost\boost/multi_array/multi_array_ref.hpp(489) : see reference to function template instantiation '_OutIt std::copy&lt;boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;,boost::detail::multi_array::array_iterator&lt;T,T *,NumDims,boost::detail::multi_array::sub_array&lt;T,0x01&gt;&gt;&gt;(_InIt,_InIt,_OutIt)' being compiled 1&gt; with 1&gt; [ 1&gt; _OutIt=boost::detail::multi_array::array_iterator&lt;char,char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::sub_array&lt;char,0x01&gt;&gt;, 1&gt; T=char, 1&gt; TPtr=const char *, 1&gt; NumDims=boost::mpl::size_t&lt;0x02&gt;, 1&gt; Reference=boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;, 1&gt; _InIt=boost::detail::multi_array::array_iterator&lt;char,const char *,boost::mpl::size_t&lt;0x02&gt;,boost::detail::multi_array::const_sub_array&lt;char,0x01&gt;&gt; 1&gt; ] 1&gt; E:\working_copies\schism_x64\externals_vc100\inc\boost\boost/multi_array.hpp(377) : see reference to function template instantiation 'boost::multi_array_ref&lt;T,NumDims&gt; &amp;boost::multi_array_ref&lt;T,NumDims&gt;::operator =&lt;boost::multi_array&lt;T,0x02&gt;&gt;(const ConstMultiArray &amp;)' being compiled 1&gt; with 1&gt; [ 1&gt; T=char, 1&gt; NumDims=0x02, 1&gt; ConstMultiArray=boost::multi_array&lt;char,0x02&gt; 1&gt; ] 1&gt; E:\working_copies\schism_x64\externals_vc100\inc\boost\boost/multi_array.hpp(375) : while compiling class template member function 'boost::multi_array&lt;T,NumDims&gt; &amp;boost::multi_array&lt;T,NumDims&gt;::operator =(const boost::multi_array&lt;T,NumDims&gt; &amp;)' 1&gt; with 1&gt; [ 1&gt; T=char, 1&gt; NumDims=0x02 1&gt; ] 1&gt; e:\working_copies\schism_x64\schism\scm_gl_util\src\scm\gl_util\font\font_face.h(60) : see reference to class template instantiation 'boost::multi_array&lt;T,NumDims&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=char, 1&gt; NumDims=0x02 1&gt; ] </pre><p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a class="ext-link" href="https://svn.boost.org/trac/boost/ticket/4539"><span class="icon">​</span>https://svn.boost.org/trac/boost/ticket/4539</a> </p> chrislu https://svn.boost.org/trac10/ticket/4874 https://svn.boost.org/trac10/ticket/4874 Report #4870: ISO Timestamp Parsing Bug Fri, 19 Nov 2010 14:57:38 GMT Mon, 11 Apr 2011 18:22:22 GMT <p> boost::posix_time::from_iso_string() converts "20100713" into "20100713T201007.300000" which is obviously wrong. </p> <p> The error is caused by boost::date_time::split(). </p> <p> The attached patch corrects split() so that an exception is thrown later in parse_delimited_time_duration(). </p> <p> The problem is reproducible in Boost 1.42.0 and 1.44.0. </p> <p> This simple example demonstrates the issue: </p> <p> const boost::posix_time::ptime time=boost::posix_time::from_iso_string("20100713"); std::cout &lt;&lt; "Converted: " &lt;&lt; boost::posix_time::to_iso_string(time) &lt;&lt; std::endl; </p> <p> Converted: 20100713T201007.300000 </p> <p> Maybe someone can apply this patch. </p> peter.klotz@… https://svn.boost.org/trac10/ticket/4870 https://svn.boost.org/trac10/ticket/4870 Report #4866: Tests don't account for locally-built bzip2 library Wed, 17 Nov 2010 19:48:19 GMT Wed, 12 Mar 2014 02:43:17 GMT <p> I am building the iostreams library with <code>-sBZIP2_SOURCE=c:/work/bzip2-1.0.6</code>, so the build system creates its own bzip2 library in <code>bin.v2/libs/iostreams/build/bzip2/.../threading-multi/boost_bzip2-vc100-mt-gd-1_44.dll</code>. However, when I try to run the tests through <code>bjam</code> from the command prompt, I see the tests fail. So I prepared the same environment used by the tests, and find myself facing a dialog that complains that it can't find <code>LIBBZ2.DLL</code>. It seems like Boost.Build is confused about the name of the DLL on which it depends. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/4866 https://svn.boost.org/trac10/ticket/4866 Report #4864: Support for 64-bit ICU Wed, 17 Nov 2010 17:21:50 GMT Tue, 18 Sep 2012 12:37:25 GMT <p> On windows, anyway, ICU's 64-bit binaries tend to appear in a subdirectory called <code>lib64/</code>, but the Jamfile seems to assume that ICU will be in <code>lib/</code>. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/4864 https://svn.boost.org/trac10/ticket/4864 Report #4860: Rational does not play well with uBlas Tue, 16 Nov 2010 20:00:54 GMT Tue, 16 Nov 2010 20:00:54 GMT <p> I'm trying to solve a rational linear system using boost/rational + uBlas. I've tried to copy many examples on the web that all follow the same line: </p> <pre class="wiki"> typedef permutation_matrix&lt;rational_t&gt; pmatrix; pmatrix pm(a.size1()); matrix_t inverse(a.size1(), a.size2()); lu_factorize(a, pm); inverse.assign(identity_matrix&lt;rational_t&gt;(a.size1())); lu_substitute(a, pm, inverse); </pre><p> a is of type matrix_t, which is defined as follows: </p> <pre class="wiki">typedef rational&lt;long long int&gt; rational_t; typedef matrix&lt;rational_t&gt; matrix_t; </pre><p> Compilation fails on the lu_factorize function call with the following error messages: </p> <pre class="wiki">In file included from interpolator.cpp:5: /usr/local/include/boost/numeric/ublas/lu.hpp: In function ‘void boost::numeric::ublas::swap_rows(const PM&amp;, MV&amp;, boost::numeric::ublas::matrix_tag) [with PM = boost::numeric::ublas::permutation_matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;, MV = boost::numeric::ublas::matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::basic_row_major&lt;long unsigned int, long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;]’: /usr/local/include/boost/numeric/ublas/lu.hpp:90: instantiated from ‘void boost::numeric::ublas::swap_rows(const PM&amp;, MV&amp;) [with PM = boost::numeric::ublas::permutation_matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;, MV = boost::numeric::ublas::lu_factorize(M&amp;, PM&amp;) [with M = matrix_t, PM = main()::pmatrix]::matrix_type]’ /usr/local/include/boost/numeric/ublas/lu.hpp:165: instantiated from ‘typename M::size_type boost::numeric::ublas::lu_factorize(M&amp;, PM&amp;) [with M = matrix_t, PM = main()::pmatrix]’ interpolator.cpp:122: instantiated from here /usr/local/include/boost/numeric/ublas/lu.hpp:83: error: no matching function for call to ‘row(boost::numeric::ublas::matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::basic_row_major&lt;long unsigned int, long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;&amp;, const boost::rational&lt;long long int&gt;&amp;)’ /usr/local/include/boost/numeric/ublas/matrix_proxy.hpp:466: note: candidates are: boost::numeric::ublas::matrix_row&lt;M&gt; boost::numeric::ublas::row(M&amp;, typename M::size_type) [with M = boost::numeric::ublas::matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::basic_row_major&lt;long unsigned int, long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;] /usr/local/include/boost/numeric/ublas/matrix_proxy.hpp:471: note: const boost::numeric::ublas::matrix_row&lt;const M&gt; boost::numeric::ublas::row(const M&amp;, typename M::size_type) [with M = boost::numeric::ublas::matrix&lt;boost::rational&lt;long long int&gt;, boost::numeric::ublas::basic_row_major&lt;long unsigned int, long int&gt;, boost::numeric::ublas::unbounded_array&lt;boost::rational&lt;long long int&gt;, std::allocator&lt;boost::rational&lt;long long int&gt; &gt; &gt; &gt;] </pre><p> It looks like the two libraries do not play well together, which means that Boost is basically useless for what I'm trying to do :-/ </p> pierluigi.rolando@… https://svn.boost.org/trac10/ticket/4860 https://svn.boost.org/trac10/ticket/4860 Report #4857: Boost.Parameter Constructor in Templates Not Supported? Tue, 16 Nov 2010 09:13:00 GMT Tue, 16 Nov 2010 09:58:59 GMT <p> If I try to create a Boost.Parameter Constructor as shown in the following code listing, I get a handful of errors in the preprocessor code used by <code>BOOST_PARAMETER_CONSTRUCTOR</code>: </p> <pre class="wiki"> #include &lt;boost/parameter.hpp&gt; namespace foo { BOOST_PARAMETER_NAME(arg1) BOOST_PARAMETER_NAME(arg2) template &lt;class Tag&gt; struct base { template &lt;class ArgPack&gt; base(ArgPack const &amp; args) : val1(args[_arg1]) , val2(args[_arg2]) {} int val1,val2; }; template &lt;class Tag&gt; struct derived : base&lt;Tag&gt; { BOOST_PARAMETER_CONSTRUCTOR( derived, (base&lt;Tag&gt;), tag, (optional (arg1,int,1) (arg2,int,2))) }; } /* foo */ struct default_ {}; int main(int argc, char * arg[]) { foo::derived&lt;default_&gt; instance(); return 0; } </pre><p> With GCC 4.4 on Ubuntu Linux I get the following errors: </p> <pre class="wiki">dean@dean-desktop:~/Source/spike$ g++ -o boost_parameter_template boost_parameter_template.cpp -I~/boost/ boost_parameter_template.cpp:24: error: macro "BOOST_PARAMETER_FOR_EACH_pred_aux2" passed 3 arguments, but takes just 2 boost_parameter_template.cpp:24: error: macro "BOOST_PP_SPLIT_0" requires 2 arguments, but only 1 given boost_parameter_template.cpp:24: error: macro "BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given boost_parameter_template.cpp:24: error: macro "BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given boost_parameter_template.cpp:24: error: ‘BOOST_PP_IIF_0’ was not declared in this scope boost_parameter_template.cpp:24: error: template argument 1 is invalid boost_parameter_template.cpp:24: error: ‘BOOST_PP_REPEAT_1_BOOST_PP_TUPLE_ELEM_2_0’ does not name a type </pre> Dean Michael Berris https://svn.boost.org/trac10/ticket/4857 https://svn.boost.org/trac10/ticket/4857 Report #4856: compilation error: boost::local_time::local_microsec_clock::local_time() Mon, 15 Nov 2010 13:11:55 GMT Fri, 01 Jul 2011 10:53:52 GMT <p> just simple call: boost::local_time::local_microsec_clock::local_time() </p> <p> produces compilation error: </p> <p> /usr/include/boost/date_time/microsec_time_clock.hpp:116: </p> <p> error: no matching function for call to </p> <p> 'boost::local_time::local_date_time_base&lt;boost::posix_time::ptime, boost::date_time::time_zone_base&lt;boost::posix_time::ptime, char&gt; </p> <blockquote class="citation"> <p> ::local_date_time_base(boost::gregorian::date&amp;, boost::posix_time::time_duration&amp;)' </p> </blockquote> <hr /> <p> platform ubuntu linux 10.10 x64 compiler: gcc 4.4.5 boost ver: 1.42 </p> <p> I have information from other party that the same problem occurs under MS Windows, with visual studio and boost 1.44 </p> dobrov0@… https://svn.boost.org/trac10/ticket/4856 https://svn.boost.org/trac10/ticket/4856 Report #4846: streaming gregorian::date objects to std::cout leaks memory Fri, 12 Nov 2010 13:07:29 GMT Sat, 27 Nov 2010 18:08:59 GMT <p> there seems to be a problem streaming boost::gregorian::date objects to std::cout, but not to std::ostringstream / whilst noting that this could be a valgrind issue </p> <p> consider the following code </p> <pre class="wiki">// build : $ g++ -ggdb -Wall -pedantic -Weffc++ test.cc -o test // run : $ valgrind ./test // compiler : g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3 // library : Boost 1.44.0 #include &lt;iostream&gt; // standard io #include &lt;sstream&gt; // string-streams #include &lt;boost/date_time/gregorian/gregorian.hpp&gt; int main() { namespace bg = boost::gregorian; // namespace alias const bg::date today(2010, bg::Nov, 12); // 'const' not significant std::ostringstream oss; oss &lt;&lt; today; std::cout &lt;&lt; "today (1) : " &lt;&lt; oss.str() &lt;&lt; std::endl; // okay std::cout &lt;&lt; "today (2) : " &lt;&lt; today &lt;&lt; std::endl; // faulty } </pre><p> valgrind output </p> <pre class="wiki">==15924== Memcheck, a memory error detector ==15924== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al. ==15924== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==15924== Command: ./test ==15924== today (1) : 2010-Nov-12 today (2) : 2010-Nov-12 ==15924== ==15924== HEAP SUMMARY: ==15924== in use at exit: 1,544 bytes in 26 blocks ==15924== total heap usage: 64 allocs, 38 frees, 4,609 bytes allocated ==15924== ==15924== LEAK SUMMARY: ==15924== definitely lost: 0 bytes in 0 blocks ==15924== indirectly lost: 0 bytes in 0 blocks ==15924== possibly lost: 568 bytes in 19 blocks ==15924== still reachable: 976 bytes in 7 blocks ==15924== suppressed: 0 bytes in 0 blocks ==15924== Rerun with --leak-check=full to see details of leaked memory ==15924== ==15924== For counts of detected and suppressed errors, rerun with: -v ==15924== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4) </pre> robbie@… https://svn.boost.org/trac10/ticket/4846 https://svn.boost.org/trac10/ticket/4846 Report #4833: MinGW/test_tss_lib: Support of automatic tss cleanup for native threading API not available Wed, 10 Nov 2010 12:41:48 GMT Tue, 11 Sep 2018 21:27:38 GMT <p> MinGW test fails with the following error (<a href="http://www.boost.org/development/tests/trunk/developer/output/MinGW-32%20jc-bell-com-boost-bin-v2-libs-thread-test-test_tss_lib-test-gcc-mingw-4-3-3-debug-threading-multi.html">test log</a> as of 2010-11-10): </p> <hr /> <p> Run [2010-11-09 18:13:26 UTC]: fail </p> <p> Running 6 test cases... tss_instances = 0; tss_total = 5 tss_instances = 5; tss_total = 5 ../libs/thread/test/test_tss.cpp(181): error in "test_tss": Support of automatic tss cleanup for native threading API not available </p> <p> <strong>* 1 failure detected in test suite "Master Test Suite" EXIT STATUS: 201 </strong></p> <hr /> <p> MinGW uses the native MSVC libraries, and those platforms pass this test. Further, it seems gcc-4.5.x also passes. So shouldn't there be a way to triangulate and make all gcc-4.x work? </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4833 https://svn.boost.org/trac10/ticket/4833 Report #4831: request for function object equivalents of all Fusion algorithms Wed, 10 Nov 2010 00:45:08 GMT Wed, 10 Nov 2010 00:45:08 GMT <p> Sure would be nice if there were a <code>fusion::functional</code> namespace containing function object equivalents of all Fusion algorithms (e.g. <code>push_front</code>, <code>pop_front</code>, etc). (They could be used in Proto transforms!) There are already a few in <code>boost/proto/fusion.hpp</code>, but they rightfully belong in Fusion, and there should be a complete set. </p> Eric Niebler https://svn.boost.org/trac10/ticket/4831 https://svn.boost.org/trac10/ticket/4831 Report #4830: generalize fusion::as_map and fusion::pair Wed, 10 Nov 2010 00:35:16 GMT Wed, 10 Nov 2010 00:35:16 GMT <p> Given an <code>mpl::vector</code> of keys, and a <code>fusion::vector</code> of values, what's the easiest way to create a fusion::map? </p> <p> The obvious solution of just zipping the two sequences and passing the result to <code>fusion::as_map</code> doesn't work because <code>as_map</code> (somewhat narrowly) requires all elements to be <code>fusion::pair</code>, and Fusion's zip algorithm produces sequences of <code>vector2</code>. I'd like to see this generalized so that (a) <code>as_map</code> only requires sequences of 2-tuples and (b) <code>fusion::pair</code> meets the requirements for 2-tuples. </p> Eric Niebler https://svn.boost.org/trac10/ticket/4830 https://svn.boost.org/trac10/ticket/4830 Report #4829: select_holder test failing across many platforms on release Wed, 10 Nov 2010 00:27:25 GMT Tue, 16 Nov 2010 03:30:37 GMT <p> The python "select_holder" test is failing across a large number of platforms on the release branch including all clang and gcc compilers. </p> Eric Niebler https://svn.boost.org/trac10/ticket/4829 https://svn.boost.org/trac10/ticket/4829 Report #4816: [BOOST::ASIO] Under Cygwin <boost/asio.hpp> doesn't compile Fri, 05 Nov 2010 16:22:42 GMT Fri, 05 Nov 2010 16:22:42 GMT <p> Environment: Cygwin </p> <p> Compiler: gcc </p> <h2 class="section" id="a1stissue">1st issue</h2> <p> boost/asio.hpp includes another header making references to the 'pipe_select_interrupter' but fails to include: boost/asio/detail/pipe_select_interrupter.hpp Where it is effectively defined </p> <h2 class="section" id="a2ndissue">2nd issue</h2> <p> The C function 'cfgetospeed' is referenced by: boost/asio/impl/serial_port_base.ipp </p> <p> But the inclusion of &lt;termios.h&gt; is not done under Cygwin and more, the cfgetospeed function is a macro, hence the statement on line 135 fails: </p> <pre class="wiki"> speed_t baud = ::cfgetospeed(&amp;storage); </pre><h2 class="section" id="a3rdissue">3rd issue</h2> <p> boost/asio/detail/buffer_sequence_adapter.hpp </p> <p> Makes references to the WSABUF structure when under Cygwin, but this structure exists only under the WIN32 environment. To compile I have to undefine the <code>__CYGWIN__</code> macro before including this header. </p> <h2 class="section" id="Howtoreproduce">How to reproduce</h2> <p> The following program doesn't compile: </p> <pre class="wiki">/// gcc -c bug.cpp doesn't compile #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;boost/asio.hpp&gt; int main(int argc, char* argv[]) { return 0; } </pre><h3 class="section" id="Userfix">User fix</h3> <p> I fix these issue in my programs by adding the following code BEFORE including &lt;boost/asio.hpp&gt; </p> <pre class="wiki">/// 1st issue #include &lt;boost/asio/detail/pipe_select_interrupter.hpp&gt; /// 2nd issue #ifdef __CYGWIN__ #include &lt;termios.h&gt; #ifdef cfgetospeed #define __cfgetospeed__impl(tp) cfgetospeed(tp) #undef cfgetospeed inline speed_t cfgetospeed(const struct termios *tp) { return __cfgetospeed__impl(tp); } #undef __cfgetospeed__impl #endif /// cfgetospeed is a macro /// 3rd issue #undef __CYGWIN__ #include &lt;boost/asio/detail/buffer_sequence_adapter.hpp&gt; #define __CYGWIN__ #endif </pre> frederic.jardon@… https://svn.boost.org/trac10/ticket/4816 https://svn.boost.org/trac10/ticket/4816 Report #4807: Sink devices "leacks" exception out of the stream Tue, 02 Nov 2010 08:07:10 GMT Tue, 02 Nov 2010 08:07:10 GMT <p> I implement the sink device that sometimes may fail on writes. When Sink is implemented it should throw an exception on fault to notify the stream on error. </p> <p> However it is not always works this way. I've got the exception to "leak" to the main program when I combine in the filter gzip_comressor() filter that writes to output device that its Sink is full. When I call reset on the filter the exception in leaking to the program instead of being caught. </p> <p> On the other hand, if I don't throw but rather return 0, I get into infinite loop in the boost::iostreams::non_blocking_adapter::write when I call filter.reset(). </p> <p> In following example the exception is caught when filter.reset() is called, when it shouldn't. </p> <pre class="wiki"> #include &lt;boost/iostreams/stream.hpp&gt; #include &lt;boost/iostreams/filtering_stream.hpp&gt; #include &lt;boost/iostreams/filter/gzip.hpp&gt; #include &lt;boost/iostreams/tee.hpp&gt; #include &lt;iostream&gt; class my_small_device : public boost::iostreams::sink { int count; public: my_small_device() : count(1000) {} std::streamsize write(char const *d,std::streamsize n) { if(count &lt; n) throw std::runtime_error("Device is full"); count-=n; return n; } }; int main() { try { using namespace boost::iostreams; boost::iostreams::stream&lt;my_small_device&gt; output(my_small_device(),10); { boost::iostreams::filtering_ostream filter; filter.push(gzip_compressor()); filter.push(output); for(int i=0;i&lt;10000000;i++) { if(!(filter &lt;&lt; i &lt;&lt; '\n')) { std::cerr &lt;&lt; "Fail!" &lt;&lt; std::endl; break; } } std::cout &lt;&lt; "Closing filter" &lt;&lt; std::endl; filter.reset(); } std::cout &lt;&lt; "ok" &lt;&lt; std::endl; return 0; }catch(std::exception const &amp;e) { std::cerr &lt;&lt; "Catched " &lt;&lt; e.what() &lt;&lt; std::endl; return 1; } } </pre> artyomtnk@… https://svn.boost.org/trac10/ticket/4807 https://svn.boost.org/trac10/ticket/4807 Report #4805: Fix exec and exec-dynamic tests for MSVC10 Sun, 31 Oct 2010 10:56:22 GMT Sun, 31 Oct 2010 10:56:22 GMT <p> Both of these tests fail due to an ambiguous call to std::string's constructor which could be "std::string &amp;&amp;" or "char const*". </p> <p> The fix is just to cast the result to a char const* before returning. </p> Matthew Bradbury <matt-bradbury@…> https://svn.boost.org/trac10/ticket/4805 https://svn.boost.org/trac10/ticket/4805 Report #4803: [function][patch] use a static "empty" target Fri, 29 Oct 2010 19:38:21 GMT Fri, 29 Oct 2010 19:38:21 GMT <p> boost::function throws bad_function_call if invoked when empty. Currently, this is implemented by performing a pointer comparison at runtime. Alternatively, boost::function's empty state could be represented by a static vtable object targeting an "empty" function which throws bad_function_call when invoked. There has been a lot of interest in this alternative scheme, which would trade the time overhead of a pointer comparison for an increase in space overhead in the initialized static variable section of the executable's data segment. The degree to which this trade-off will improve performance depends on compiler optimization. The attached patch implements a configuration macro, BOOST_FUNCTION_USE_STATIC_EMPTY, which allows the user to make this trade-off. The patch includes updated documentation and tests. I verified that the updated test suite passes on gcc 4.2, 4.5 and msvc 7.1, 10. </p> Daniel Walker https://svn.boost.org/trac10/ticket/4803 https://svn.boost.org/trac10/ticket/4803 Report #4800: Dramatic performance improvements may be available for Trac Fri, 29 Oct 2010 13:50:15 GMT Mon, 08 Nov 2010 03:57:11 GMT <p> Trac's performance seems very slow, as mentioned on the <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/10/172449.php"><span class="icon">​</span>mail list</a>. </p> <p> From <a class="ext-link" href="http://trac.edgewall.org/wiki/TracFaq#Tracseemstorunveryslowly"><span class="icon">​</span>the TracFaq</a>: </p> <hr /> <p> <strong>Trac seems to run very slowly</strong> </p> <p> Despite its name, the "Fast CGI" solution is often quite a bit slower than mod_python or mod_wsgi. Try the <a class="wiki" href="https://svn.boost.org/trac10/wiki/TracModPython">TracModPython</a> or TracModWSGI installation. Changing from fcgi to mod_python/mod_wsgi can easily give an order of magnitude (n*10) increase in performance. </p> <hr /> <p> Seems to apply to us. Is it an easy thing to try? </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4800 https://svn.boost.org/trac10/ticket/4800 Report #4795: Chapter 3.11 Buffering continuously not updated Wed, 27 Oct 2010 10:23:01 GMT Mon, 13 Jan 2014 22:30:52 GMT <p> I have noticed chapter <a href="http://www.boost.org/doc/libs/1_44_0/libs/iostreams/doc/guide/buffering.html">3.11 Buffers</a> in the Boost.IOStreams User's Guide is empty. It seems it has been market as <em>To be supplied in the next release</em> for a few years now. </p> <p> Perhaps it's worth to consider updating or removing it. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/4795 https://svn.boost.org/trac10/ticket/4795 Report #4790: Suggest improvement to mpl::string documentation Tue, 26 Oct 2010 03:31:27 GMT Tue, 26 Oct 2010 03:34:05 GMT <p> I suggest adding a warning to the documentation for mpl::string regarding multi-byte character types. </p> <p> Specifically, I was unable to compile the example: </p> <blockquote> <p> typedef mpl::string&lt;'hell','o wo','rld'&gt; hello; typedef mpl::push_back&lt;hello, mpl::char_&lt;'!'&gt; &gt;::type hello2; BOOST_ASSERT(0 == std::strcmp(mpl::c_str&lt;hello2&gt;::value, "hello world!")); </p> </blockquote> <p> Using g++ 4.4.3 I got: </p> <blockquote> <p> error: multi-character character constant </p> </blockquote> <p> Comprehending the problem involved investigating/learning the following points: </p> <blockquote> <p> what is a multi-character literal the warning in g++ can be disabled with -Wno-multichar (I always use -Werror, hence all warnings generate errors) the maximum length of a multi-character literal on my system is 4 characters </p> </blockquote> <p> The latter two points are OS specific and therefore don't seem appropriate for the mpl::string documentation, and the first point may I guess be regarded as expected prior knowledge (though a one sentence summary would save a lot of time since they appear to be not so widely known). </p> <p> But I do recommend adding a caveat beside the example code regarding possible problems compiling multi-character literals, and the alternative equivalent example with the characters independently ('h','e','l', ...). </p> <p> I also recommend including a warning regarding their implementation-dependent nature (based on what the g++ manual has to say; copied below) since they appear likely to propagate portability problems. </p> <p> -Wno-multichar </p> <blockquote> <p> Do not warn if a multicharacter constant ('FOOF') is used. Usually they indicate a typo in the user's code, as they have implementation-defined values, and should not be used in portable code. </p> </blockquote> <p> I hope this comment is useful. I am repeatedly awed by the cunning majesty of all the boost libraries I have explored and the MPL may be, for me, at the peak in that respect. </p> Joshua Hale <jgh.emc@…> https://svn.boost.org/trac10/ticket/4790 https://svn.boost.org/trac10/ticket/4790 Report #4787: ASIO - adding support for accessing UDP control headers Mon, 25 Oct 2010 18:31:22 GMT Fri, 13 Nov 2015 11:35:13 GMT <p> Attached patch implements ASIO support for accessing optional UDP control headers such as the timestamp information set with SO_TIMESTAMP. </p> <p> Here are two ways of getting timestamp information using the new feature of the patch. Note that it works in synchronous and asynchronous mode. </p> <p> ip::udp::socket sock; ... sock.set_option(ip::unicast::timestamp(true)); ... ip::udp::endpoint ep; sock.receive_from(buf, ep, bytes_transferred); </p> <p> boost::asio::detail::io_control::siocgstamp tv1; </p> <p> for (const cmsghdr* cmsg = ep.control_header_first(); </p> <blockquote> <p> cmsg; </p> </blockquote> <blockquote> <p> cmsg = ep.control_header_next(cmsg)) { printf(" cmsg_len %zu: ", cmsg-&gt;cmsg_len); switch (cmsg-&gt;cmsg_level) { </p> <blockquote> <p> case SOL_SOCKET: </p> <blockquote> <p> switch (cmsg-&gt;cmsg_type) { </p> <blockquote> <p> case SO_TIMESTAMP: { </p> <blockquote> <p> const timeval *stamp = </p> <blockquote> <p> ep.control_msg_data&lt;const timeval*&gt;(cmsg); </p> </blockquote> <p> printf("SO_TIMESTAMP %ld.%06ld", </p> <blockquote> <p> (long)stamp-&gt;tv_sec, (long)stamp-&gt;tv_usec); </p> </blockquote> <p> tv1.set(*stamp); break; </p> </blockquote> <p> } case SO_TIMESTAMPNS: { </p> <blockquote> <p> const timespec* stamp = </p> <blockquote> <p> ep.control_msg_data&lt;const timespec*&gt;(cmsg); </p> </blockquote> <p> ... break; </p> </blockquote> <p> } default: </p> <blockquote> <p> printf("type %d", cmsg-&gt;cmsg_type); break; </p> </blockquote> <p> } break; </p> </blockquote> <p> } </p> </blockquote> <p> default: </p> <blockquote> <p> printf("Level %d, Type %d", cmsg-&gt;cmsg_level, </p> <blockquote> <p> cmsg-&gt;cmsg_type); </p> </blockquote> <p> break; </p> </blockquote> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> <em> Alternative way of getting the last datagram's kernel timestamp boost::asio::detail::io_control::siocgstamp tv; boost::system::error_code ec; boost::asio::detail::socket_ops::state_type client_state = 0; boost::asio::detail::socket_ops::ioctl( </em></p> <blockquote> <p> a_sock.native(), client_state, tv.name(), tv.data(), ec); </p> </blockquote> <p> Hope it can be included in the release. </p> <p> Regards, </p> <p> Serge </p> anonymous https://svn.boost.org/trac10/ticket/4787 https://svn.boost.org/trac10/ticket/4787 Report #4786: custom property_tree Mon, 25 Oct 2010 18:21:28 GMT Fri, 27 Apr 2012 06:23:37 GMT <p> When creating custom property_trees by using a data type different from std::string, property_tree has errors. Attached is a patch along with an implementation of a tree containing variant data type. </p> anonymous https://svn.boost.org/trac10/ticket/4786 https://svn.boost.org/trac10/ticket/4786 Report #4784: numeric/interval/hw_rounding for __amd64__ Mon, 25 Oct 2010 02:51:00 GMT Thu, 04 Nov 2010 21:49:04 GMT <p> Interval fails regression tests requiring numeric/interval/hw_rounding.hpp. It gives </p> <pre class="wiki">../boost/numeric/interval/hw_rounding.hpp:40:4: error: #error Boost.Numeric.Interval: Please specify rounding control mechanism. </pre><p> My compiler defines <span class="underline">amd64</span> (note the double underscores before and after). How do I determine the hardware rounding control mechanism? </p> <p> Here's <a class="ext-link" href="http://support.amd.com/us/Processor_TechDocs/24592.pdf"><span class="icon">​</span>the AMD64 manual (pdf)</a>, but I don't understand things well enough to say which mechanism it uses. </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4784 https://svn.boost.org/trac10/ticket/4784 Report #4772: binary_buffer_iprimitive fails on vector access when reading in zero length item at end of buffer_ Fri, 22 Oct 2010 19:37:11 GMT Wed, 21 Sep 2011 18:03:39 GMT <p> When binary_buffer_iprimitive's position == buffer_.size() and binary_buffer_iprimitive::load_impl is called with l = 0, the bracket operator on buffer_ will attempt an out of bounds access. The assertion in load_impl suggests the author was aware these conditions are normal since the assertion evaluates to true. However, the parameters for the call to std::memcpy cannot be evaluated because an assertion within buffer_ fails. Changing load_impl to look like this fixes the problem: </p> <p> void load_impl(void * p, int l) { </p> <blockquote> <p> assert(position+l&lt;=static_cast&lt;int&gt;(buffer_.size())); if (l) { </p> <blockquote> <p> std::memcpy(p,&amp;buffer_[position],l); position += l; </p> </blockquote> <p> } </p> </blockquote> <p> } </p> <p> It looks like the bug should also exist in Boost's trunk, but I cannot get the software I'm working on to build with Boost 1.44 and newer, but that is another issue. </p> Jeff Jackowski <jeff.jackowski@…> https://svn.boost.org/trac10/ticket/4772 https://svn.boost.org/trac10/ticket/4772 Report #4771: DST calculation inconsistencies Fri, 22 Oct 2010 15:46:10 GMT Sat, 19 Mar 2016 18:20:16 GMT <p> One local_date_time constructor takes as argument a date and a time duration. However, its behaviour is not consistent. First, define a date prior to a DST change in the spring (one day prior is sufficient). Then assume you have to skip N minutes into the future, where N is large enough to get past the DST change. </p> <p> a) If you add floor(N/(24*60)) days to the date, and then construct a new local_date_time with the new date and N%(24*60) minutes, you get one result. </p> <p> b) If you construct a local_date_time with the original date and the N minutes (&gt;24*60) you get a second result. </p> <p> The results are different by one hour for regular EU DST rules. It seems like the constructor will not inspect DST rules unless the input date coincides with the DST change date. </p> <p> The effect: </p> <p> Instead of looping with one origin time + advancing time_duration, we have to advance the date whenever the number of minutes exceeds 24*60 and take modulo 24*60 for the duration in minutes. This produces the correct behaviour for our application. </p> mika.heiskanen@… https://svn.boost.org/trac10/ticket/4771 https://svn.boost.org/trac10/ticket/4771 Report #4770: trac custom query needs single option for muliple field search Fri, 22 Oct 2010 12:54:03 GMT Fri, 22 Oct 2010 12:54:03 GMT <p> The trac custom query page needs a single option to allow searching across multiple fields, particularly Summary, Description and Keywords. </p> <p> Right now, to query 'xyz' in either Summary, Description or Keywords for a single Component, you have to set up an OR search for each field, and duplicate the Component for each OR-part. </p> <p> For instance, the current scheme requires this duplication: </p> <p> (Component is 'c' AND Summary contains 'xyz') OR (Component is 'c' AND Description contains 'xyz') OR (Component is 'c' AND Keywords contains 'xyz') </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4770 https://svn.boost.org/trac10/ticket/4770 Report #4766: MinGW: ip_tcp test hangs on io_service::run() after tcp::socket::cancel() Fri, 22 Oct 2010 02:13:23 GMT Fri, 22 Oct 2010 10:58:35 GMT <p> The MinGW-32 <a href="http://www.boost.org/development/tests/trunk/developer/MinGW-32%20jc-bell-com-asio-gcc-mingw-4-4-0-ip_tcp-variants_.html">trunk regression test</a> (current as of 2010/10/21) simply says: </p> <pre class="wiki">Run [2010-10-21 16:24:46 UTC]: fail </pre><p> bjam.log says: </p> <pre class="wiki">300 second time limit exceeded </pre><p> Running it in gdb verifies that it seems hung indefinitely, and breaking shows this stack trace: </p> <pre class="wiki">#0 0x7c90e514 in ntdll!LdrAccessResource () from C:\WINDOWS\system32\ntdll.dll #1 0x7c90da4a in ntdll!ZwRemoveIoCompletion () from C:\WINDOWS\system32\ntdll.dll #2 0x7c80a7e6 in KERNEL32!GetQueuedCompletionStatus () from C:\WINDOWS\system32\kernel32.dll #3 0x00443dfb in boost::asio::detail::win_iocp_io_service::do_one ( this=0x3e8f8, block=true, ec=@0x23f314) at ../boost/asio/detail/impl/win_iocp_io_service.ipp:349 #4 0x00443954 in boost::asio::detail::win_iocp_io_service::run ( this=0x3e8f8, ec=@0x23f314) at ../boost/asio/detail/impl/win_iocp_io_service.ipp:160 #5 0x00438cee in boost::asio::io_service::run (this=0x23f61c) at ../boost/asio/impl/io_service.ipp:57 #6 0x004061c1 in ip_tcp_socket_runtime::test () at ..\libs\asio\test\ip\tcp.cpp:453 #7 0x0046873a in boost::unit_test::ut_detail::invoker&lt;boost::unit_test::ut_detail::unused&gt;::invoke&lt;void (*)()&gt; (this=0x23f93f, f=@0x386cc) at ../boost/test/utils/callback.hpp:56 #8 0x00466a63 in boost::unit_test::ut_detail::callback0_impl_t&lt;boost::unit_test::ut_detail::unused, void (*)()&gt;::invoke (this=0x386c8) at ../boost/test/utils/callback.hpp:89 #9 0x00473065 in boost::unit_test::callback0&lt;boost::unit_test::ut_detail::unused&gt;::operator() (this=0x38aac) at ../boost/test/utils/callback.hpp:118 #10 0x004214c1 in operator() (this=0x34dac) at ../boost/test/impl/unit_test_monitor.ipp:41 #11 0x004214ab in invoke&lt;boost::unit_test::&lt;unnamed&gt;::zero_return_wrapper_t&lt;boost::unit_test::callback0&lt;boost::unit_test::ut_detail::unused&gt; &gt; &gt; ( this=0x23f9cf, f=@0x34dac) at ../boost/test/utils/callback.hpp:42 #12 0x00421497 in invoke (this=0x34da8) at ../boost/test/utils/callback.hpp:89 #13 0x00473085 in boost::unit_test::callback0&lt;int&gt;::operator() (this=0x23fad4) at ../boost/test/utils/callback.hpp:118 #14 0x004500ad in boost::detail::do_invoke&lt;boost::shared_ptr&lt;boost::detail::translator_holder_base&gt;, boost::unit_test::callback0&lt;int&gt; &gt; (tr=@0x4e6540, F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:253 #15 0x004204cb in boost::execution_monitor::catch_signals (this=0x4e6530, F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:1129 #16 0x0042064d in boost::execution_monitor::execute (this=0x4e6530, F=@0x23fad4) at ../boost/test/impl/execution_monitor.ipp:1160 #17 0x004210b6 in boost::unit_test::unit_test_monitor_t::execute_and_translate (this=0x4e6530, tc=@0x38a80) at ../boost/test/impl/unit_test_monitor.ipp:69 #18 0x00460d53 in boost::unit_test::framework_impl::visit (this=0x5233c8, tc=@0x38a80) at ../boost/test/impl/framework.ipp:156 #19 0x00409e33 in boost::unit_test::traverse_test_tree (tc=@0x38a80, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:193 #20 0x0040a267 in boost::unit_test::traverse_test_tree (id=65539, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:232 #21 0x00409f70 in boost::unit_test::traverse_test_tree (suite=@0x385c8, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:207 #22 0x0040a283 in boost::unit_test::traverse_test_tree (id=2, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:234 #23 0x00409f70 in boost::unit_test::traverse_test_tree (suite=@0x384d8, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:207 #24 0x0040a283 in boost::unit_test::traverse_test_tree (id=1, V=@0x5233c8) at ../boost/test/impl/unit_test_suite.ipp:234 #25 0x0040d9d1 in boost::unit_test::framework::run (id=1, continue_test=true) at ../boost/test/impl/framework.ipp:442 #26 0x00407ddd in boost::unit_test::unit_test_main ( init_func=0x407695 &lt;init_unit_test_suite(int, char**)&gt;, argc=1, argv=0x32f08) at ../boost/test/impl/unit_test_main.ipp:185 #27 0x00407fd1 in main (argc=1, argv=0x32f08) at ../boost/test/impl/unit_test_main.ipp:237 </pre><p> Key line: ..\libs\asio\test\ip\tcp.cpp:453; The io_service::run() call after tcp::socket::cancel(). </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4766 https://svn.boost.org/trac10/ticket/4766 Report #4742: Karma produces not the supposed output for a real number generator in scientific mode Fri, 15 Oct 2010 11:37:05 GMT Wed, 09 Apr 2014 02:12:11 GMT <p> Hi, </p> <p> I've tried to compile a simple test example using karma real number generator example from this page: <a href="http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html">http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html</a> </p> <p> When I run the code in which I pass the value '0.1' to the generator it produces 10.0e-02 instead of 1.0e-01 which, actually, is what I want. </p> <p> Please find my simple test-code in the attachment: </p> <p> Sincerely </p> <blockquote> <p> Lars Kielhorn </p> </blockquote> <p> </p> lars.kielhorn@… https://svn.boost.org/trac10/ticket/4742 https://svn.boost.org/trac10/ticket/4742 Report #4738: property_tree parsers fail when top node has data() Thu, 14 Oct 2010 16:43:20 GMT Mon, 16 May 2011 18:55:50 GMT <pre class="wiki">ptree tree( "DATA" ); write_xml( "test.xml", tree ); // writes out DATA with no tag read_xml( "test.xml", tree ); // fails since cannot read DATA without a tag. </pre><pre class="wiki">ptree pt1( "DATA" ); write_info( "test.info", tree ); // does not write DATA at all ptree pt2; read_info( "test.info", pt2 ); // reads in empty ptree BOOST_CHECK( pt1 == pt2 ); // fails since the node has no data </pre><hr /> <p> These could be easy fixes but some convention will have to be adopted. The info parser could be modified to write out the top level data when indent==-1 but the reader would then have to interpret an initial string with no following data or children to as data(). Alternatively there could be a null key represented by "" or some special character. </p> <p> The XML is trickier because the DATA either needs to be an attribute or needs some sort of tag, or it cannot be parsed as XML. </p> <p> I only checked this on the 1.43.0 that I have installed but it does not appear that the problem has been fixed in 1.44.0 or in subversion. </p> Jess <jess@…> https://svn.boost.org/trac10/ticket/4738 https://svn.boost.org/trac10/ticket/4738 Report #4735: MinGW version 'mingw-x.y.z' requested but 'g++-mingw-x.y.z' not found and version 'x.y.z' of default 'g++' does not match Thu, 14 Oct 2010 09:50:32 GMT Fri, 10 Dec 2010 16:56:03 GMT <p> MinGW's version <strong><em>may</em></strong> be prefixed with 'g++-', and failing to match this variation causes many tests to fail. </p> <pre class="wiki">.../trunk/boost/tools/build/v2/tools\gcc.jam:106: in gcc.init from module gcc error: toolset gcc initialization: error: version 'mingw-4.3.3' requested but 'g++-mingw-4.3.3' not found and version '4.3.3' of default 'g++' does not match </pre> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4735 https://svn.boost.org/trac10/ticket/4735 Report #4734: please improve "Trac Akismet SPAM" error message Thu, 14 Oct 2010 06:53:03 GMT Thu, 14 Oct 2010 06:53:03 GMT <p> I just wasted about 1 hour figuring out how to report a new ticket s.t. it is not rejected by the spam filter of the boost trac. </p> <p> Please add to the message that the reason is that in the "Preferences" one has to set the username and email address. </p> <p> Please also provide some information on how to get an account, or which persons are eligible to get accounts. </p> <p> Reporting issues is a very bad experience with this uninformative spam error message. </p> <p> (I already had a session once with username and so on, restoring that session did not work so I had to enter it again.) </p> Peter Schüller <schueller.p@…> https://svn.boost.org/trac10/ticket/4734 https://svn.boost.org/trac10/ticket/4734 Report #4732: Event Ports for Solaris Wed, 13 Oct 2010 21:37:14 GMT Sat, 16 Oct 2010 08:19:57 GMT <p> Hi, </p> <p> Is it possible to add support for event ports on the Solaris platform? I've written an application that uses the thread-pool strategy from the HTTP Server 2 example. As I understand, the /dev/poll method on Solaris needs lots of synchronization between threads. </p> <p> I've noticed that my application does not nearly scale linearly with an increase in threads. Highest throughput is obtained at approximately 7 threads, after which I get diminishing returns. I think this could be due to the inter-thread synchronization needed to access /dev/poll? Please find 2 links detailing event ports and/or comparison with /dev/poll. </p> <p> Jacques </p> <h2 class="section" id="http:blogs.sun.comdapentryevent_ports_and_performance"><a class="ext-link" href="http://blogs.sun.com/dap/entry/event_ports_and_performance"><span class="icon">​</span>http://blogs.sun.com/dap/entry/event_ports_and_performance</a></h2> <h2 class="section" id="http:developers.sun.comsolarisarticlesevent_completion.html"><a class="ext-link" href="http://developers.sun.com/solaris/articles/event_completion.html"><span class="icon">​</span>http://developers.sun.com/solaris/articles/event_completion.html</a></h2> jacquesg@… https://svn.boost.org/trac10/ticket/4732 https://svn.boost.org/trac10/ticket/4732 Report #4728: "iostreams::detail::mode_adapter<>" is never "flushable": flushing a filtering_ostream will not flush the "std::ostream" target --- patch included. Tue, 12 Oct 2010 21:52:24 GMT Wed, 09 May 2012 20:48:53 GMT <p> I have found a problem with Boost.Iostreams. </p> <ul><li>I'm using Boost v1.43.0 on Gentoo Linux with <code>gcc-4.3.4</code>. <ul><li>I've reproduced it with <code>gcc-4.4.3</code>. </li><li>I've reproduced it with Boost v1.44.0 (from the website tarball). </li><li>Let me know if you need to know anything else about my environment. </li></ul></li><li>A simple testcases attached at <a class="attachment" href="https://svn.boost.org/trac10/attachment/ticket/4728/boost_iostreams_filtering_std_ostream.cpp" title="Attachment 'boost_iostreams_filtering_std_ostream.cpp' in Ticket #4728">boost_iostreams_filtering_std_ostream.cpp</a><a class="trac-rawlink" href="https://svn.boost.org/trac10/raw-attachment/ticket/4728/boost_iostreams_filtering_std_ostream.cpp" title="Download">​</a>. </li><li>A patch to fix the problem is attached at <a class="attachment" href="https://svn.boost.org/trac10/attachment/ticket/4728/boost_iostreams-mode_adaptor-flushable.patch" title="Attachment 'boost_iostreams-mode_adaptor-flushable.patch' in Ticket #4728">boost_iostreams-mode_adaptor-flushable.patch</a><a class="trac-rawlink" href="https://svn.boost.org/trac10/raw-attachment/ticket/4728/boost_iostreams-mode_adaptor-flushable.patch" title="Download">​</a>. </li><li>This is a different problem from <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4590" title="#4590: Bugs: Flushing a filtering_ostream stopped working in Boost 1.44 (closed: fixed)">#4590</a>. </li></ul><h3 class="section" id="Details">Details</h3> <p> I'm going to use <code>io</code> as a synonym for the <code>boost::iostreams</code> namespace. </p> <p> I have come across a problem with <code>io::detail::mode_adapter&lt;Mode, T&gt;</code>, where <code>T</code> is a <code>std::ostream</code> or a <code>std::streambuf</code>. I came across the problem in <code>io::filtering_ostream</code>, but perhaps this class is used elsewhere also. </p> <ul><li><code>io::detail::mode_adapter&lt;&gt;::category</code> is not convertible to any of <code>io::flushable_tag</code>, <code>io::ostream_tag</code>, or <code>io::streambuf_tag</code>. </li><li><code>io::flush()</code> will use <code>io::detail::flush_device_impl&lt;io::any_tag&gt;::flush()</code> for <code>mode_adapter&lt;, T&gt;</code> even when <code>T::catagory</code> is convertible <code>flushable_tag</code>, <code>ostream_tag</code> or <code>streambuf_tag</code>. </li><li>As a result, <code>io::filtering_ostream</code> will not flush correctly when the device at the end of the chain is a non-boost <code>std::ostream</code> or a <code>std::streambuf</code>. <ul><li>I expect, also, that any filters in the chain that inherit from <code>flushable_tag</code> also do not get flushed correctly. </li></ul></li><li>In particular the following methods from the STL <code>std::ostream</code> interface will <em>not</em> flush the stream to the device: <div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">ostream</span> <span class="n">stream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">someBuffer</span><span class="p">);</span> <span class="n">io</span><span class="o">::</span><span class="n">filtering_ostream</span> <span class="n">out</span><span class="p">;</span> <span class="n">out</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">stream</span><span class="p">);</span> <span class="c1">// These STL methods of flushing a stream will NOT flush &quot;stream&quot;.</span> <span class="n">out</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="n">out</span><span class="p">.</span><span class="n">flush</span><span class="p">();</span> </pre></div></div></li><li>My solution is to have <code>mode_adapter&lt;&gt;::category</code> inherit from <code>flushable_tag</code> when appropriate, and to implement <code>::flush()</code> methods: <div class="wiki-code"></div></li></ul> Duncan Exon Smith <duncanphilipnorman@…> https://svn.boost.org/trac10/ticket/4728 https://svn.boost.org/trac10/ticket/4728 Report #4726: Bugs when using named args. Mon, 11 Oct 2010 11:39:51 GMT Wed, 13 Oct 2010 07:47:22 GMT <p> There seem to be issues when naming function arguments. Same thing happens for class_ defs and init&lt;&gt; functions. </p> <p> Using non-named args <code>f(1,2,3)</code> works fine in all cases below but using named args <code>f(1,2,z=3)</code> works or fails depending on boost python definition. </p> <p> The first two of the following defs fail when using named args. The first one crashes python and the second raises "did not match C++ signature" exception. The third version works as expected. </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;boost/python/module.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/python/def.hpp&gt;</span><span class="cp"></span> <span class="kt">int</span> <span class="nf">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="kt">int</span> <span class="n">y</span><span class="p">,</span> <span class="kt">int</span> <span class="n">z</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">x</span><span class="o">*</span><span class="n">y</span><span class="o">*</span><span class="n">z</span><span class="p">;}</span> <span class="n">BOOST_PYTHON_MODULE</span><span class="p">(</span><span class="n">_pylib</span><span class="p">)</span> <span class="p">{</span> <span class="k">namespace</span> <span class="n">bp</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="p">;</span> <span class="c1">// Bug</span> <span class="n">bp</span><span class="o">::</span><span class="n">def</span><span class="p">(</span><span class="s">&quot;bug1&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">f</span><span class="p">,</span> <span class="p">(</span><span class="s">&quot;x&quot;</span><span class="p">,</span> <span class="s">&quot;y&quot;</span><span class="p">,</span> <span class="n">bp</span><span class="o">::</span><span class="n">arg</span><span class="p">(</span><span class="s">&quot;z&quot;</span><span class="p">)));</span> <span class="n">bp</span><span class="o">::</span><span class="n">def</span><span class="p">(</span><span class="s">&quot;bug2&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">f</span><span class="p">,</span> <span class="p">(</span><span class="s">&quot;x&quot;</span><span class="p">,</span> <span class="s">&quot;y&quot;</span><span class="p">,</span> <span class="s">&quot;z&quot;</span><span class="p">));</span> <span class="c1">// Works </span> <span class="n">bp</span><span class="o">::</span><span class="n">def</span><span class="p">(</span><span class="s">&quot;works_fine&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">f</span><span class="p">,</span> <span class="p">(</span><span class="n">bp</span><span class="o">::</span><span class="n">arg</span><span class="p">(</span><span class="s">&quot;x&quot;</span><span class="p">),</span> <span class="n">bp</span><span class="o">::</span><span class="n">arg</span><span class="p">(</span><span class="s">&quot;y&quot;</span><span class="p">),</span> <span class="n">bp</span><span class="o">::</span><span class="n">arg</span><span class="p">(</span><span class="s">&quot;z&quot;</span><span class="p">)));</span> <span class="p">}</span> </pre></div></div><p> Running <code> bug1(x=1, y=2, z=3) </code> crashes python and <code>bug2(1, 2, z=3)</code> gives an <code>ArgumentError</code> </p> <pre class="wiki">Boost.Python.ArgumentError: Python argument types in _pylib.bug2(int, int) did not match C++ signature: bug2(int, int, int) </pre><p> Summary of errors: </p> <div class="wiki-code"><div class="code"><pre><span class="kn">from</span> <span class="nn">_pylib</span> <span class="kn">import</span> <span class="o">*</span> <span class="n">works_fine</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">bug1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">bug2</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">works_fine</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">bug1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">bug2</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># Error: did not match C++ signature</span> <span class="n">works_fine</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># OK</span> <span class="n">bug1</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># Error: Python crashes and exits abnormally</span> <span class="n">bug2</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># Error: did not match C++ signature</span> </pre></div></div><p> I'm using: </p> <ul><li>boost 1.44. <code>BoostPro</code> Windows pre-built binary for VC++ 2008. </li><li>Python 2.6 <ul><li><code>sys.version = '2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]')</code> </li></ul></li><li>Microsoft VC++ 2008 </li></ul> Albin Thoren <thorena@…> https://svn.boost.org/trac10/ticket/4726 https://svn.boost.org/trac10/ticket/4726 Report #4722: Locale problem in date_input_facet Fri, 08 Oct 2010 19:13:20 GMT Fri, 08 Oct 2010 19:13:20 GMT <p> I was adapting my code to work inputs from strings and outputs for strings with the local_datetime class for different languages, and came across a problem in local_time_input_facet. Even when I change the global locale the code was just accepting the strings in English. Analyzing the code of the class I realized that the parent class date_input_facet always defined the internal parser to locale:: classic () (date_facet.hpp line 451 and 462 m_parser(m_format, std::locale::classic())). I changed the definition for std::locale() and the program now work correctly (m_parser(m_format, std::locale())). This is a bug, or is there any reason to be this way? I am developing on Windows XP with Visual Studio Express 10. </p> Alex Sobral de Freitas <alexsobral@…> https://svn.boost.org/trac10/ticket/4722 https://svn.boost.org/trac10/ticket/4722 Report #4720: [function][patch] function wrapper with no exception safety guarantee Thu, 07 Oct 2010 19:11:55 GMT Fri, 08 Oct 2010 08:14:23 GMT <p> boost::function provides a strong exception safety guarantee. However, in certain circumstances, such as some embedded systems, no exception safety guarantee is desirable. I request that function object wrappers with no exception safety guarantee be added to the Boost.Function family. The attached patch implements boost::unsafe_function (with both preferred syntax and portable syntax), which has no exception safety guarantee when invoked with no target and has no dependency on boost::throw_exception. The patch includes tests and documentation updates. It addresses the same issue identified in <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4646" title="#4646: Feature Requests: [function][patch] adding an unchecked_invoke method to function objects (new)">#4646</a>. </p> Daniel Walker https://svn.boost.org/trac10/ticket/4720 https://svn.boost.org/trac10/ticket/4720 Report #4718: date::day_of_week documentation is unhelpful Thu, 07 Oct 2010 16:56:12 GMT Thu, 19 Apr 2012 12:09:22 GMT <p> The Gregorian date documentation for the day_of_week method is unhelpful. It's not clear what the return type of the method is; it's not immediately obvious what a greg_day_of_week is. The example does not help, since it does not use the method at all. It turns out that the method returns an integer, but there is no documentation as to which day corresponds to which integer return value. </p> <p> <a href="http://www.boost.org/doc/libs/1_43_0/doc/html/date_time/gregorian.html#date_time.gregorian.date_class">http://www.boost.org/doc/libs/1_43_0/doc/html/date_time/gregorian.html#date_time.gregorian.date_class</a> </p> russell.silva@… https://svn.boost.org/trac10/ticket/4718 https://svn.boost.org/trac10/ticket/4718 Report #4714: boost::tokenizer_detail::traits_extension does not expose correctly std::_Secure_char_traits_tag on VC9 Tue, 05 Oct 2010 12:35:51 GMT Tue, 05 Oct 2010 12:53:49 GMT <p> This issues warning C4996: 'std::char_traits&lt;char&gt;::[various] ': Function call with parameters that may be unsafe because VC STL relies on a tag to chose the safe/unsafe version of the function. </p> <pre class="wiki"> typedef std::basic_string&lt;char&gt;::traits_type Tr; typedef boost::tokenizer_detail::traits_extension&lt;Tr&gt; Traits; cout &lt;&lt; typeid(std::_Char_traits_category_helper&lt;Tr,true&gt;::_Secure_char_traits).name() &lt;&lt; endl; cout &lt;&lt; typeid(std::_Char_traits_category_helper&lt;Traits,true&gt;::_Secure_char_traits).name() &lt;&lt; endl; </pre><p> prints </p> <pre class="wiki"> _Secure_char_traits_tag _Unsecure_char_traits_tag </pre><p> because _Char_traits_category_helper is defined as </p> <pre class="wiki">template &lt;class _Traits&gt; class _Char_traits_category_helper&lt;_Traits, true&gt; { public: typedef typename _Traits::_Secure_char_traits _Secure_char_traits; }; </pre><p> so it defers to a typedef of _Secure_char_traits inside the trait. By default it is defined to _Unsecure_char_traits_tag. </p> <p> This affects builds with /WX (treat warnings as errors) and generally causes a lot of warnings for otherwise harmless code (for example date_time relies on tokenizer to parse strings) </p> emilm@… https://svn.boost.org/trac10/ticket/4714 https://svn.boost.org/trac10/ticket/4714 Report #4704: Support for multicapture and balancing groups Sun, 03 Oct 2010 09:05:25 GMT Thu, 29 Jun 2017 18:58:58 GMT <p> Feature request ticked to jog Eric Nieblers memory to take a look at some code. </p> <p> I've added support for multicapture and balancing groups to Boost::Xpressive. </p> <p> Syntax for pop capture: </p> <blockquote> <p> dynamic: (?P&lt;-name&gt;stuff)<br /> static: (name -= stuff) </p> </blockquote> <p> Syntax for capture conditional: </p> <blockquote> <p> dynamic: (?P(name)stuff)<br /> static: (name &amp;= stuff) </p> </blockquote> <p> The changes are in the vault and can be found here: <a class="ext-link" href="http://tinyurl.com/3aak7mp"><span class="icon">​</span>http://tinyurl.com/3aak7mp</a> </p> <p> It can be unpacked against trunk from 2010-10-02 or the 1.44.0 release. I've run the dynamic regression tests without errors and I have added some tests for the new functionality. The code it only tested on Visual Studio 2010 since I don't have access to any other compiler. </p> <p> Erik Rydgren </p> erik@… https://svn.boost.org/trac10/ticket/4704 https://svn.boost.org/trac10/ticket/4704 Report #4697: [fusion]fold with join functor fails compile in category_of.hpp Wed, 29 Sep 2010 17:55:56 GMT Wed, 06 Oct 2010 19:12:09 GMT <p> when the attached fold_join is compiled, it produces a compile error shown in the attached fold_join.compile. </p> <p> However, when <a class="ext-link" href="http://svn.boost.org/svn/boost/sandbox/SOC/2009/fusion/"><span class="icon">​</span>http://svn.boost.org/svn/boost/sandbox/SOC/2009/fusion/</a> in in the include path, it compiles and runs OK producing output: </p> <p> v1=(tu&lt;1&gt;(100) tu&lt;1&gt;(b) tu&lt;1&gt;(300.1)) v2=(tu&lt;2&gt;(100) tu&lt;2&gt;(b) tu&lt;2&gt;(300.1)) v3=(tu&lt;3&gt;(100) tu&lt;3&gt;(b) tu&lt;3&gt;(300.1)) fold(vv,state0,join_ftor())=(tu&lt;1&gt;(100) tu&lt;1&gt;(b) tu&lt;1&gt;(300.1) tu&lt;2&gt;(100) tu&lt;2&gt;(b) tu&lt;2&gt;(300.1) tu&lt;3&gt;(100) tu&lt;3&gt;(b) tu&lt;3&gt;(300.1)) </p> <p> The non-variadic fusion should produce the same output since no variadic templates are being used. </p> Larry Evans https://svn.boost.org/trac10/ticket/4697 https://svn.boost.org/trac10/ticket/4697 Report #4692: conversion from string literal to 'char *' is deprecated Wed, 29 Sep 2010 09:23:48 GMT Sat, 30 Oct 2010 12:45:21 GMT <p> Boost svn trunk rev 64876. </p> <pre class="wiki">clang++ -o boost/libs/python/src/object/stl_iterator.o -c -DBOOST_ALL_NO_LIB -DBOOST_DISABLE_THREADS -DBOOST_PYTHON_MAX_BASES=2 -DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_BOOL_INT_STRICT -I/Users/luc/Developer/cctbx/boost -fPIC -fno-strict-aliasing -DNDEBUG -O3 -ffast-math -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 /Users/luc/Developer/cctbx/boost/libs/python/src/object/stl_iterator.cpp /Users/luc/Developer/cctbx/boost/libs/python/src/object/class.cpp:79:32: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated] static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; ^ /Users/luc/Developer/cctbx/boost/libs/python/src/object/class.cpp:79:40: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated] static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; ^ /Users/luc/Developer/cctbx/boost/libs/python/src/object/class.cpp:79:48: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated] static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; ^ /Users/luc/Developer/cctbx/boost/libs/python/src/object/class.cpp:79:56: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated] static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; ^ </pre> luc_j_bourhis@… https://svn.boost.org/trac10/ticket/4692 https://svn.boost.org/trac10/ticket/4692 Report #4686: MSVC warning C4512 at /W4 (operator= can't be created) Sun, 26 Sep 2010 20:18:19 GMT Wed, 06 Mar 2013 18:10:15 GMT <p> At /W4 msvc10 warns about not being able to generate the assignment operator for 4 classes. </p> <p> Example code that generates the warnings: </p> <pre class="wiki">#include &lt;boost/bimap.hpp&gt; int main(){ boost::bimap&lt; int, char &gt; bm; } </pre><p> As the boost warnings guidelines<a class="ext-link" href="https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines"><span class="icon">​</span>https://svn.boost.org/trac/boost/wiki/Guidelines/WarningsGuidelines</a> state "Adding the declaration (not the definition) of the appropriate operator=() as a private member does the trick as well." (disabling the warning by pragma would have to still be active at the point of bimap instantiation and thus disable the warning in user code) </p> Stefan van Kessel <van_kessel@…> https://svn.boost.org/trac10/ticket/4686 https://svn.boost.org/trac10/ticket/4686 Report #4668: Conditions for operator overload in Proto (documentation) Tue, 21 Sep 2010 20:00:16 GMT Wed, 06 Oct 2010 18:18:11 GMT <p> Taken from this thread in boost-users: <a class="ext-link" href="http://lists.boost.org/boost-users/2010/09/62747.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2010/09/62747.php</a> </p> <p> This explanation by Thomas Heller would make a good section for the proto documentation: </p> <pre class="wiki">In order for a proto overload to be created the following conditions must be true: 1) the operands must be in a compatible domain 2) the left hand operand and the right hand operand must match the grammar specified in the domain 3) the resulting expression must match the grammar specified in the domain. </pre><p> To illustrate what this means, this minimalistic example might be useful, too: </p> <p> This grammar </p> <pre class="wiki">proto::plus&lt;proto::terminal&lt;int&gt;, proto::terminal&lt;int&gt; &gt; </pre><p> used in a domain would not allow </p> <pre class="wiki">i + i; </pre><p> with i being an int-terminal. </p> Roland Bock <rbock@…> https://svn.boost.org/trac10/ticket/4668 https://svn.boost.org/trac10/ticket/4668 Report #4666: boost::variant gives several warnings (fix suggestions included) Tue, 21 Sep 2010 09:57:38 GMT Thu, 07 Apr 2011 15:38:34 GMT <p> I am using several compiler options with gcc to increase the warning level. Especially 3 of them are raising warnings : </p> <p> 1) -Wshadow Too warn when a variable is shadowing/hiding another variable/method This occurs in boostvariant/variant.hpp </p> <pre class="wiki">void indicate_which(int which) { which_ = static_cast&lt;which_t&gt;( which ); } void indicate_backup_which(int which) { which_ = static_cast&lt;which_t&gt;( -(which + 1) ); } </pre><p> the local which is shadowing the member method which. </p> <p> My suggestion to fix would be : </p> <pre class="wiki"> void indicate_which(int which_in) { which_ = static_cast&lt;which_t&gt;( which_in ); } void indicate_backup_which(int which_in) { which_ = static_cast&lt;which_t&gt;( -(which_in + 1) ); } </pre><p> So I just renamed to local to which_in </p> <p> 2) -Wswitch-default warn when a switch statement doesn't have a default case. This occurs at : boost/variant/detail/visitation_impl.hpp </p> <pre class="wiki"> // ...switch on the target which-index value... switch (logical_which) { // ...applying the appropriate case: # define BOOST_VARIANT_AUX_APPLY_VISITOR_STEP_CASE(z, N, _) \ case (Which::value + (N)): \ return visitation_impl_invoke( \ internal_which, visitor, storage \ , static_cast&lt;BOOST_PP_CAT(T,N)*&gt;(0) \ , no_backup_flag, 1L \ ); \ /**/ BOOST_PP_REPEAT( BOOST_VARIANT_VISITATION_UNROLLING_LIMIT , BOOST_VARIANT_AUX_APPLY_VISITOR_STEP_CASE , _ ) # undef BOOST_VARIANT_AUX_APPLY_VISITOR_STEP_CASE } </pre><p> My suggestion is to add the following just in front of the end brace of the switch : </p> <pre class="wiki"> default: break; </pre><p> 3) -Wundef warns if an undefined identifier is evaluated in an #if directive This occurs at : boost/mpl/has_xxx.hpp It occurs 4 times (that I ran into, within all the ifdef stuff it might occur a few times more). </p> <pre class="wiki"># if !BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION # define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \ template&lt; typename V &gt; \ static boost::mpl::aux::no_tag \ BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \ /**/ # else # define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \ static boost::mpl::aux::no_tag \ BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \ /**/ # endif </pre><p> The question is : BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION, does it need to have a special value (for example : not 0), or is it just a matter of beind defined or not. In the latter case, this are my suggestions on how to fix : </p> <p> line 344 --&gt; # if not defined (BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION) line 357 --&gt; # if not defined (BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES) line 386 --&gt; # if not defined (BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION) line 458 --&gt; # if defined (BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE) </p> <p> What do you think ? </p> <p> kind regards, Lieven </p> Lieven de Cock <killerbot@…> https://svn.boost.org/trac10/ticket/4666 https://svn.boost.org/trac10/ticket/4666 Report #4664: libboost_zlib + libboost_iostreams - link error (XCode, MacOSX) Mon, 20 Sep 2010 14:19:48 GMT Sun, 30 Jan 2011 17:14:17 GMT <p> String for build boost: </p> <p> sudo bjam toolset=darwin architecture=combined address-model=32 threading=multi link=static runtime-link=static -sNO_COMPRESSION=0 -sNO_ZLIB=0 -sZLIB_SOURCE="../../../../../zlib123" stage </p> <p> After building I linking this libraries into my application: libboost_iostreams.a libboost_zlib.a </p> <p> But linker say: </p> <p> Undefined symbols: "std::bad_alloc::what() const", referenced from: vtable for boost::exception_detail::error_info_injector&lt;std::bad_alloc&gt;in libboost_iostreams.a(zlib.o) vtable for boost::exception_detail::clone_impl&lt;boost::exception_detail::error_info_injector&lt;std::bad_alloc&gt; &gt;in libboost_iostreams.a(zlib.o) </p> nen777w@… https://svn.boost.org/trac10/ticket/4664 https://svn.boost.org/trac10/ticket/4664 Report #4660: Error read binary archive, created by old boost version Mon, 20 Sep 2010 08:49:21 GMT Mon, 10 Mar 2014 21:09:13 GMT <p> I have some binary archive files, which was created by old version of boost::serialization. New (1.44) version does not read these files. Program throws exception “unsupported_version” </p> <p> I have done some small investigation. The pproblem is: </p> <p> Old code writes library_version as 1 byte, but new code (1.44) writes library_version as unsigned short!!! </p> <p> You can see in attachment 2 files, which was created boost_1_44_0\libs\serialization\example\demo.cpp. I modify this program for work with binary archive. First file demofile.dat was created with boost 1.43. Second file demofile_1_44.dat. Was created with boost 1.44. </p> <p> I think it is very serious bug, as archive compatibility was ruined. </p> serge-voropaev@… https://svn.boost.org/trac10/ticket/4660 https://svn.boost.org/trac10/ticket/4660 Report #4657: Boost.MPI Compile failure with Python 3 Sat, 18 Sep 2010 18:04:50 GMT Tue, 03 Dec 2013 09:18:26 GMT <p> Boost 1.44 configured to use Python 3.1 fails on two Boost.MPI files. The two fatal error messages are reproduced below, edited (see <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/09/170659.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/09/170659.php</a> for the full error output). </p> <p> This failure was discussed in Debian (<a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595786"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=595786</a>) and Andreas Kloeckner provided a patch. See attached. </p> <p> -Steve </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -g -D_REENTRANT -pthread -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1 -DNDEBUG -I"." -I"/usr/include/python3.1" -I"/usr/lib/openmpi/include" -I"/usr/lib/openmpi/include/openmpi" -c -o "bin.v2/libs/mpi/build/gcc-4.4.5/release/debug-symbols-on/python-3.1/threading-multi/python/datatypes.o" "libs/mpi/src/python/datatypes.cpp" </p> </blockquote> <p> libs/mpi/src/python/datatypes.cpp: In function ‘void boost::mpi::python::export_datatypes()’: libs/mpi/src/python/datatypes.cpp:20: error: ‘PyInt_Type’ was not declared in this scope In file included from ./boost/function/detail/prologue.hpp:17, </p> <blockquote> <p> from ./boost/function/function_template.hpp:13, from ./boost/function/detail/maybe_include.hpp:13, from ./boost/function/function0.hpp:11, from ./boost/python/errors.hpp:13, from ./boost/python/handle.hpp:11, from ./boost/python/converter/arg_to_python_base.hpp:7, from ./boost/python/converter/arg_to_python.hpp:14, from ./boost/python/call.hpp:15, from ./boost/python/object_core.hpp:14, from ./boost/python/object.hpp:9, from ./boost/mpi/python/serialize.hpp:25, from libs/mpi/src/python/datatypes.cpp:13: </p> </blockquote> <p> ...failed gcc.compile.c++ bin.v2/libs/mpi/build/gcc-4.4.5/release/debug-symbols-on/python-3.1/threading-multi/python/datatypes.o... </p> <p> and </p> <blockquote> <p> "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -g -D_REENTRANT -pthread -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1 -DNDEBUG -I"." -I"/usr/include/python3.1" -I"/usr/lib/openmpi/include" -I"/usr/lib/openmpi/include/openmpi" -c -o "bin.v2/libs/mpi/build/gcc-4.4.5/release/debug-symbols-on/python-3.1/threading-multi/python/py_environment.o" "libs/mpi/src/python/py_environment.cpp" </p> </blockquote> <p> libs/mpi/src/python/py_environment.cpp: In function ‘bool boost::mpi::python::mpi_init(boost::python::list, bool)’: libs/mpi/src/python/py_environment.cpp:53: error: cannot convert ‘char<strong>’ to ‘wchar_t</strong>’ for argument ‘2’ to ‘void PySys_SetArgv(int, wchar_t<strong>)’ ...failed gcc.compile.c++ bin.v2/libs/mpi/build/gcc-4.4.5/release/debug-symbols-on/python-3.1/threading-multi/python/py_environment.o... </strong></p> smr@… https://svn.boost.org/trac10/ticket/4657 https://svn.boost.org/trac10/ticket/4657 Report #4654: restricted_filter doesn't seek with the correct offset Fri, 17 Sep 2010 00:11:59 GMT Wed, 19 Jan 2011 19:28:12 GMT <p> The class restricted_filter defined in detail/restrict_impl.hpp fails to seek properly due to a small, but significant, error in its seek member function. </p> <p> The patch fixes this bug by changing the offset argument to the seek function of the underlying filter from </p> <pre class="wiki">next </pre><p> to </p> <pre class="wiki">next - pos_ </pre><p> as the seek direction is BOOST_IOS::cur and not BOOST_IOS::beg. </p> <p> In other words, the bug causes restricted filters to seek relative to the current pointer using offsets relative to the beginning. If you want to seek forward by 10 byte at position 5000, it'll seek forward by 5010 instead of 10. </p> la06@… https://svn.boost.org/trac10/ticket/4654 https://svn.boost.org/trac10/ticket/4654 Report #4651: storage.hpp & borland Wed, 15 Sep 2010 07:00:47 GMT Thu, 16 Sep 2010 15:20:21 GMT <p> storage.hpp &amp; borland when using lu.hpp Hello! I've found two incompatibilities when use boost-1.44.0 lu.hpp and Boland C++ Builder 2009 (Update 4). Borland compiler messages are below. [BCC32 Error] storage.hpp(1061): E2102 Cannot use template 'basic_range&lt;Z,D&gt;' without specifying specialization parameters [BCC32 Error] storage.hpp(1076): E2034 Cannot convert 'int' to 'range' It works after 2 replaces: storage.hpp(1061) -return basic_range (NULL, size); +return basic_range&lt;Z,D&gt; (NULL, size); storage.hpp(1076) -const basic_range&lt;Z,D&gt; basic_range&lt;Z,D&gt;::all_ (0, size_type (-1)); +const basic_range&lt;Z,D&gt; basic_range&lt;Z,D&gt;::all_ (basic_range&lt;Z,D&gt;(),size_type(-1));<em> (0, size_type (-1)); </em></p> Kolan Sh <mecareful@…> https://svn.boost.org/trac10/ticket/4651 https://svn.boost.org/trac10/ticket/4651 Report #4646: [function][patch] adding an unchecked_invoke method to function objects Mon, 13 Sep 2010 15:56:10 GMT Thu, 07 Oct 2010 19:14:30 GMT <p> A common idiom for using boost::function objects is as follows : </p> <pre class="wiki">boost::function&lt;...&gt; func1; ... if( !func1.empty() ) { func1(); } </pre><p> Internally to boost::function::operator()(...) there is then a subsequent call to empty(), which if fails calls a boost::throw_exception. </p> <p> In developing a library that makes use of boost::function, and calling the contained function I am forced to define boost::throw_exception, OR require my users to do so. The library in question is for an embedded platform (without exception support), and so I have also defined BOOST_NO_EXCEPTION and BOOST_EXCEPTION_DISABLE, it therefore becomes imperative that I check the function is valid prior to calling it, because I have no exception support. The current implementation of boost::function however does not allow me to work around this call, and requres me to defnie a function that will never be called, and conflict with my library users should they wish to define an alternative boost::throw_exception for the aspects of boost they may use. </p> <p> I am proposing the addition of <em>unchecked_invoke(...)</em> that allows users of boost::function to call a function object without this checking on every call. This will not only allow my scenario to work, but also allow the common test before use to benefit, especially in the case where a function object is called within a loop. </p> <p> As reference this topic was discussed in this thread : </p> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/09/170486.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/09/170486.php</a> </p> <p> and the proposed patch is for function_template.hpp : </p> <p> Insert around line 767 </p> <pre class="wiki"> #if BOOST_WORKAROUND(BOOST_MSVC, &lt; 1300) // MSVC 6.0 and prior require all definitions to be inline, but // these definitions can become very costly. result_type unchecked_invoke(BOOST_FUNCTION_PARMS) const { return get_vtable()-&gt;invoker (this-&gt;functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS); } #else result_type unchecked_invoke(BOOST_FUNCTION_PARMS) const; #endif </pre><p> and later around line 1015 </p> <pre class="wiki">#if !BOOST_WORKAROUND(BOOST_MSVC, &lt; 1300) template&lt;typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS&gt; typename BOOST_FUNCTION_FUNCTION&lt; R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS&gt;::result_type inline BOOST_FUNCTION_FUNCTION&lt;R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS&gt; ::unchecked_invoke(BOOST_FUNCTION_PARMS) const { return get_vtable()-&gt;invoker (this-&gt;functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS); } #endif </pre><p> }}} </p> peter.myerscough-jackopson@… https://svn.boost.org/trac10/ticket/4646 https://svn.boost.org/trac10/ticket/4646 Report #4637: An extra scoped_array(n) constructor, please! Wed, 08 Sep 2010 09:37:22 GMT Sat, 05 Nov 2011 13:12:29 GMT <p> When I construct a non-empty <em>scoped_array&lt;my_type&gt;</em>, I currently need to specify the type <em>my_type</em> twice: </p> <pre class="wiki"> boost::scoped_array&lt;my_type&gt; a( new my_type[n]() ); </pre><p> Please consider supporting the following as an equivalent: </p> <pre class="wiki"> boost::scoped_array&lt;my_type&gt; a(n); </pre><p> A patch to the trunk (scoped_array.hpp + smart_ptr_test.cpp) is hereby attached. </p> niels_dekker https://svn.boost.org/trac10/ticket/4637 https://svn.boost.org/trac10/ticket/4637 Report #4635: segmentation fault in text_oarchive::save_binary() Wed, 08 Sep 2010 00:42:04 GMT Wed, 21 Mar 2012 06:39:53 GMT <p> It appears that text_oarchive::save_binary() reads one byte too many. In other words, save_binary(addr,len) appears to read byte addr+len. The attached program, which runs on Linux, allocates a page of zeroes with mmap(2) and then serializes the last few bytes of the page with text_oarchive::save_binary(). The result is a segmentation fault. </p> Mark Heuser <mlheuser@…> https://svn.boost.org/trac10/ticket/4635 https://svn.boost.org/trac10/ticket/4635 Report #4633: boost/ptr_container/ptr_sequence_adapter.hpp:671: unreferenced parameters 'first', 'last' when compiled with no assertions Tue, 07 Sep 2010 19:33:54 GMT Tue, 07 Sep 2010 19:33:54 GMT <p> As of <a class="changeset" href="https://svn.boost.org/trac10/changeset/65343" title="Added the detail/shared.hpp header (currently contains only the ...">r65343</a> file boost/ptr_container/ptr_sequence_adapter.hpp at function range_check_impl (std::random_access_iterator_tag version), the parameters 'first' and 'last' are referenced only inside a BOOST_ASSERT call. When assertions are compiled out, these parameters become unreferenced. This causes warning C4100 from Microsoft Visual Studio 9. It would be nice to mark the parameters as intentionally unused so that this warning is not generated. The simplest way to do this is to add "(void)first; (void)last;" in the function body. Other more elaborate mechanisms exist, but as far as I know, casting to void is a simple and portable way to prevent the warning without disrupting the debug code's access to these variables. </p> anonymous https://svn.boost.org/trac10/ticket/4633 https://svn.boost.org/trac10/ticket/4633 Report #4626: The ckeck for ICU in regex library is detected as a build error in Visual Studio Fri, 03 Sep 2010 22:22:56 GMT Sun, 05 Sep 2010 09:12:54 GMT <p> When building with a Makefile under Visual Studio (as a project pre-build event that compiles boost as a dependency, before the project) cl.exe compiler sees the VS_UNICODE_OUTPUT environment variable and sends the error message directly into the Visual Studio output window, even if it is just a test to check for ICU presence and the compiler outputs are otherwise redirected. </p> <p> Even if boost build completes successfully, Visual Studio sees the output error message, considers the build as failed, and stops further compilation. </p> <p> Unsetting VS_UNICODE_OUTPUT in the Makefile before building boost prevents the entire boost compilation process. </p> terminatorul@… https://svn.boost.org/trac10/ticket/4626 https://svn.boost.org/trac10/ticket/4626 Report #4618: local_time_period not defined in local_time_io.hpp Wed, 01 Sep 2010 18:05:05 GMT Tue, 02 Aug 2011 05:12:54 GMT <p> In \boost\date_time\local_time\local_time_io.hpp line 123, type const boost::local_time::local_time_period is not defined. Maybe local_time_io.hpp forgets to include local_time_types.hpp. </p> wangxiaohan@… https://svn.boost.org/trac10/ticket/4618 https://svn.boost.org/trac10/ticket/4618 Report #4617: Use of stringstreams in numeric/ublas/io Wed, 01 Sep 2010 14:18:13 GMT Wed, 01 Sep 2010 16:41:38 GMT <p> Not 100% sure it is a bug, but use of additional string streams seems a bit odd. </p> <pre class="wiki"> template&lt;class E, class T, class ME&gt; // BOOST_UBLAS_INLINE This function seems to be big. So we do not let the compiler inline it. std::basic_ostream&lt;E, T&gt; &amp;operator &lt;&lt; (std::basic_ostream&lt;E, T&gt; &amp;os, const matrix_expression&lt;ME&gt; &amp;m) { typedef typename ME::size_type size_type; size_type size1 = m ().size1 (); size_type size2 = m ().size2 (); std::basic_ostringstream&lt;E, T, std::allocator&lt;E&gt; &gt; s; s.flags (os.flags ()); s.imbue (os.getloc ()); s.precision (os.precision ()); s &lt;&lt; '[' &lt;&lt; size1 &lt;&lt; ',' &lt;&lt; size2 &lt;&lt; "]("; if (size1 &gt; 0) { s &lt;&lt; '(' ; if (size2 &gt; 0) s &lt;&lt; m () (0, 0); for (size_type j = 1; j &lt; size2; ++ j) s &lt;&lt; ',' &lt;&lt; m () (0, j); s &lt;&lt; ')'; } for (size_type i = 1; i &lt; size1; ++ i) { s &lt;&lt; ",(" ; if (size2 &gt; 0) s &lt;&lt; m () (i, 0); for (size_type j = 1; j &lt; size2; ++ j) s &lt;&lt; ',' &lt;&lt; m () (i, j); s &lt;&lt; ')'; } s &lt;&lt; ')'; return os &lt;&lt; s.str ().c_str (); } </pre><p> why do we create stringstream 's' and serialize everything in memory and only then pump it to 'os'? </p> Kostya <seraphym@…> https://svn.boost.org/trac10/ticket/4617 https://svn.boost.org/trac10/ticket/4617 Report #4613: Default value for optional Boolean type not being created. Mon, 30 Aug 2010 05:32:06 GMT Mon, 30 Aug 2010 05:32:06 GMT <p> If a default Boolean value isn't used in extracting the value from the <a class="missing wiki">ArgumentPack</a> a compile error occurs. That means that this code compiles "m_name(args[_name | false])" but "m_name(args[_name])" doesn't. A code example can be found in this boost thread. </p> <p> <a class="ext-link" href="http://old.nabble.com/-parameter--Weird-behavior-with-bools-td29539068.html"><span class="icon">​</span>http://old.nabble.com/-parameter--Weird-behavior-with-bools-td29539068.html</a> </p> Ryan McConnehey <mccorywork@…> https://svn.boost.org/trac10/ticket/4613 https://svn.boost.org/trac10/ticket/4613 Report #4612: Boolean type restriction not working Mon, 30 Aug 2010 04:18:39 GMT Mon, 30 Aug 2010 14:38:07 GMT <p> The type restriction isn't being enforced for Boolean variables. A code example can be found in this boost thread. </p> <p> <a class="ext-link" href="http://old.nabble.com/-parameter--Weird-behavior-with-bools-td29539068.html"><span class="icon">​</span>http://old.nabble.com/-parameter--Weird-behavior-with-bools-td29539068.html</a> </p> Ryan McConnehey <mccorywork@…> https://svn.boost.org/trac10/ticket/4612 https://svn.boost.org/trac10/ticket/4612 Report #4607: Build errors when Python installation is explicitly specified Sun, 29 Aug 2010 00:31:38 GMT Mon, 27 Sep 2010 16:35:48 GMT <p> Attempts to build 32-bits target libraries/dll of Boost.Python with MSVC running under Windows 7 x64 ends with errors. The 6 *.lib &amp; *.dll of the form boost_python-vc*-mt* are not built. </p> <p> No problems is experienced if MSVC is running under 32-bits version of Windows (XP Pro SP3 &amp; 7 Ultimate tested), or the target is 64-bits libraries even when running under Win7 x64. </p> <p> The below errors was produced with Windows 7 Ultimate x64, Visual Studio (2008 Pro &amp; 2010 Ultimate tested), and <a class="missing wiki">ActiveState</a> <a class="missing wiki">ActivePython</a> (2.6 &amp; 2.7 tested). </p> <p> msvc.link.dll x86\boost\bin.v2\libs\python\build\msvc-10.0\debug\threading-multi\boost_python-vc100-mt-gd-1_44.dll </p> <blockquote> <p> Creating library x86\boost\bin.v2\libs\python\build\msvc-10.0\debug\threading-multi\boost_python-vc100-mt-gd-1_44.lib and object x86\boost\bin.v2\libs\python\build\msvc-10.0\debug\threading-multi\boost_python-vc100-mt-gd-1_44.exp </p> </blockquote> <p> function.obj : error LNK2001: unresolved external symbol <span class="underline">imp</span>PyErr_Format numeric.obj : error LNK2019: unresolved external symbol <span class="underline">imp</span>PyErr_Format referenced in function "void <span class="underline">cdecl boost::python::numeric::`anonymous namespace'::throw_load_failure(void)" (?throw_load_failure@?A0x9a30ad83@numeric@python@boost@@YAXXZ) from_python.obj : error LNK2001: unresolved external symbol </span>imp<span class="underline">PyErr_Format registry.obj : error LNK2001: unresolved external symbol </span>imp<span class="underline">PyErr_Format class.obj : error LNK2001: unresolved external symbol </span>imp<span class="underline">PyErr_Format numeric.obj : error LNK2001: unresolved external symbol </span>imp<span class="underline">PyExc_ImportError numeric.obj : error LNK2019: unresolved external symbol </span>imp<span class="underline">PyErr_Clear referenced in function "bool </span>cdecl boost::python::numeric::`anonymous namespace'::load(bool)" (?load@?A0x9a30ad83@numeric@python@boost@@YA_N_N@Z) class.obj : error LNK2001: unresolved external symbol <span class="underline">imp</span>PyErr_Clear &lt;snip&gt; </p> Katie Chan https://svn.boost.org/trac10/ticket/4607 https://svn.boost.org/trac10/ticket/4607 Report #4599: template argument identifiers Thu, 26 Aug 2010 13:04:52 GMT Thu, 26 Aug 2010 13:04:52 GMT <p> Hi, </p> <p> it would be helpful if template argument identifiers like <strong>MATRIX</strong> in /boost/numeric/ublas/traits.hpp </p> <p> template &lt; class <strong>MATRIX</strong> &gt; struct mutable_matrix_traits </p> <blockquote> <p> : mutable_container_traits &lt;<strong>MATRIX</strong>&gt; { </p> </blockquote> <blockquote> <p> typedef typename <strong>MATRIX</strong>::iterator1 iterator1; typedef typename <strong>MATRIX</strong>::iterator2 iterator2; </p> </blockquote> <p> }; </p> <p> would follow well-established c/c++ variable name conventions instead of that of the c preprocessor because of conflicts with exactly that. I'd suggest something like the following instead and would provide patches if favored. </p> <p> template &lt; class <strong>matrix_type</strong> &gt; struct mutable_matrix_traits </p> <blockquote> <p> : mutable_container_traits &lt;<strong>matrix_type</strong>&gt; { </p> </blockquote> <blockquote> <p> typedef typename <strong>matrix_type</strong>::iterator1 iterator1; typedef typename <strong>matrix_type</strong>::iterator2 iterator2; </p> </blockquote> <p> }; </p> <p> Thanks, Jan. </p> jan.boehme@… https://svn.boost.org/trac10/ticket/4599 https://svn.boost.org/trac10/ticket/4599 Report #4597: options_description should be defined as noncopyable Wed, 25 Aug 2010 23:57:50 GMT Wed, 25 Aug 2010 23:57:50 GMT <p> The [source:trunk/boost/program_options/options_description.hpp@62236#L226 options_description] class in program_options library conceptually seems to be noncopyable. It consists of const members. Thus, the definition should state it's noncopyable type as well and declare private copy ctor/op. </p> Mateusz Loskot https://svn.boost.org/trac10/ticket/4597 https://svn.boost.org/trac10/ticket/4597 Report #4596: Squash 64 bit warnings Wed, 25 Aug 2010 20:11:45 GMT Tue, 12 May 2015 18:07:56 GMT <p> When using 64 bit Boost Python I get plenty of warnings when compiling my programs. Most of them involving <code>Py_ssize to unsigned</code> or <code>size_t to long</code>. The attached path just hides these warnings. </p> Matthew Bradbury <matt-bradbury@…> https://svn.boost.org/trac10/ticket/4596 https://svn.boost.org/trac10/ticket/4596 Report #4591: Missing preprocessor guard in mpl::for_each Wed, 25 Aug 2010 10:48:13 GMT Sun, 10 Apr 2011 10:55:26 GMT <p> Implementation has assert </p> <p> BOOST_MPL_ASSERT(( is_sequence&lt;Sequence&gt; )); </p> <p> witch must be guarded: </p> <p> #if !defined(BOOST_MPL_CFG_NO_HAS_XXX) </p> <p> BOOST_MPL_ASSERT(( is_sequence&lt;Sequence&gt; )); </p> <p> #endif </p> <p> for working with old compilers. </p> Iakov Minochkin <anberlin_myplace@…> https://svn.boost.org/trac10/ticket/4591 https://svn.boost.org/trac10/ticket/4591 Report #4589: <runtime-debugging>on does nothing for libstdc++... Tue, 24 Aug 2010 17:49:31 GMT Thu, 09 Aug 2012 13:20:57 GMT <p> ...but should at least &lt;define&gt;_GLIBCXX_DEBUG to enable libstdc++ debug mode. </p> pluto@… https://svn.boost.org/trac10/ticket/4589 https://svn.boost.org/trac10/ticket/4589 Report #4586: OperationalError: database is locked Tue, 24 Aug 2010 06:56:23 GMT Tue, 30 Nov 2010 16:55:00 GMT <h4 class="section" id="HowtoReproduce">How to Reproduce</h4> <p> While doing a POST operation on <code>/ticket/4258</code>, Trac issued an internal error. </p> <p> <em>(please provide additional details here)</em> </p> <p> Request parameters: </p> <pre class="wiki">{'__FORM_TOKEN': u'df472745600ad46e730920bd', 'action': u'leave', 'author': u'anonymous', 'cnum': u'5', 'comment': u"When adding some preprocessor checks in tss_pe.cpp that prevent the declaration _tls_used for MinGW, I've been able to fix this problem! All I did was to wrap it with \r\n\r\n#if !defined(__MINGW__)\r\n...\r\n#endif", 'field_component': u'thread', 'field_keywords': u'', 'field_milestone': u'Boost 1.43.0', 'field_severity': u'Problem', 'field_summary': u'Linking with boost thread does not work on mingw/gcc 4.5', 'field_type': u'Bugs', 'field_version': u'Boost 1.44.0', 'id': u'4258', 'replyto': u'4', 'submit': u'Submit changes', 'ts': u'2010-06-07 06:50:49+00:00'} </pre><p> User agent: <code>Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8</code> </p> <h4 class="section" id="SystemInformation">System Information</h4> <p> <em>System information not available</em> </p> <h4 class="section" id="EnabledPlugins">Enabled Plugins</h4> <p> <em>Plugin information not available</em> </p> <h4 class="section" id="PythonTraceback">Python Traceback</h4> <pre class="wiki">Traceback (most recent call last): File "build/bdist.linux-i686/egg/trac/web/main.py", line 513, in _dispatch_request dispatcher.dispatch(req) File "build/bdist.linux-i686/egg/trac/web/main.py", line 235, in dispatch resp = chosen_handler.process_request(req) File "build/bdist.linux-i686/egg/trac/ticket/web_ui.py", line 169, in process_request return self._process_ticket_request(req) File "build/bdist.linux-i686/egg/trac/ticket/web_ui.py", line 534, in _process_ticket_request valid = self._validate_ticket(req, ticket, not valid) and valid File "build/bdist.linux-i686/egg/trac/ticket/web_ui.py", line 1179, in _validate_ticket for field, message in manipulator.validate_ticket(req, ticket): File "build/bdist.linux-i686/egg/tracspamfilter/adapters.py", line 67, in validate_ticket FilterSystem(self.env).test(req, author, changes) File "build/bdist.linux-i686/egg/tracspamfilter/api.py", line 133, in test score, ['%s (%d): %s' % r for r in reasons]).insert() File "build/bdist.linux-i686/egg/tracspamfilter/model.py", line 138, in insert '\n'.join(self.reasons))) File "build/bdist.linux-i686/egg/trac/db/util.py", line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 78, in execute result = PyFormatCursor.execute(self, *args) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 56, in execute args or []) File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 48, in _rollback_on_error return function(self, *args, **kwargs) OperationalError: database is locked </pre> anonymous https://svn.boost.org/trac10/ticket/4586 https://svn.boost.org/trac10/ticket/4586 Report #4577: invoke() uses invalid boost::result_of<> Fri, 20 Aug 2010 12:22:21 GMT Mon, 05 Jan 2015 14:57:39 GMT <pre class="wiki">struct F{ template&lt;typename Sig&gt; struct result; }; vector&lt;int&gt; const vec(5); invoke(F(),vec); // (1) int t(int i){ return i; } invoke(F(),transform(vec,&amp;t)); // (2) </pre><p> (1) uses F::result&lt;F(int const &amp;)&gt;, while (2) uses F::result&lt;F(int)&gt;. I believe it should be (1) in both cases. </p> <p> attaching test case and patch, which converts each argument type using fusion::detail::call_param </p> anonymous https://svn.boost.org/trac10/ticket/4577 https://svn.boost.org/trac10/ticket/4577 Report #4569: [patch] fusion::unfused reusability / perfect forwarding Thu, 19 Aug 2010 11:29:35 GMT Fri, 21 Jan 2011 07:58:37 GMT <p> attached is a patch to unfused.hpp, used by fusion::make_unfused. </p> <p> what it does: </p> <ul><li>"fused" currently forces you to store a function object in order to use the "unfusing" interface. this patch makes the interface of unfused reusable by other classes, by introducing a CRTP class "unfuse_interface", that is used by unfused. </li></ul><p> simplified example: </p> <pre class="wiki"> class unfused : unfused_interface&lt;unfused,...&gt;{ private: friend class unfused_interface; result call(Args &amp;args){ //unfused::operator()(...) was called. args is a sequence //of the passed arguments return stored_fused_functor(args); } Function stored_fused_functor; }; </pre><ul><li>perfect forwarding: </li></ul><p> "unfused" only takes non-const references as arguments. this patch changes that to the compromise of boost::bind(): perfect forwarding for up to 2 arguments, beyond that either all arguments are const refs, or all arguments are non-const refs. </p> anonymous https://svn.boost.org/trac10/ticket/4569 https://svn.boost.org/trac10/ticket/4569 Report #4564: Boost.Python import function raises boost::python::error_already_set Wed, 18 Aug 2010 14:23:39 GMT Wed, 18 Aug 2010 17:58:19 GMT <p> Should never try to extract a pointer to non-const char from a str. </p> brianhray@… https://svn.boost.org/trac10/ticket/4564 https://svn.boost.org/trac10/ticket/4564 Report #4559: Need baud rate workaround in asio for bug in glibc Tue, 17 Aug 2010 22:47:18 GMT Tue, 22 Dec 2015 09:55:24 GMT <p> In glibc 2.12.1 (the current version), and all previous versions, there are bugs in the Linux implementations of the tcsetattr and tcgetattr functions so that the c_ispeed and c_ospeed fields of the termios data structure are not correctly passed to and from the kernel. More specifically, the implementations of these functions use ioctl commands TCSETS and TCGETS when they should use TCSETS2 and TCGETS2 (for Linux). Because of this, it is currently not possible to set/get an arbitrary baud rate on Linux through the tcsetattr and tcgetattr library functions. Because Boost asio currently uses tcsetattr and tcgetattr, its baud rate setting functions can not currently handle anything but the standard Posix baud rates. To work around this bug in glibc (which was reported a long time ago and never fixed), I think asio should call ioctl directly on Linux rather than using tcgetattr and tcsetattr (in the file boost/asio/detail/impl/reactive_serial_port_service.ipp). I consider this a bug in asio because whether or not it is ever fixed in glibc, old versions of glibc that have the bug will continue to be used for years to come. I feel that Boost should work around bugs in individual operating systems whenever it is trivial to do so (which it is in this case). </p> Steve Soule <sts11dbxr@…> https://svn.boost.org/trac10/ticket/4559 https://svn.boost.org/trac10/ticket/4559 Report #4558: The "BOTHER" baud rate constant is not handled properly in asio Tue, 17 Aug 2010 22:35:15 GMT Tue, 17 Aug 2010 22:35:15 GMT <p> In the file boost/asio/impl/serial_port_base.ipp, in the functions boost::asio::serial_port_base::baud_rate::store and boost::asio::serial_port_base::baud_rate::load, the baud rate constant "BOTHER" is not handled in either switch statement. As far as I know, this constant, along with the termios fields c_ispeed and c_ospeed, are the only way to set and get an arbitrary baud rate (rather than one of the Posix baud rate constants like B9600) on Linux. So if the user requests a baud rate not listed, such as 250000 baud, the store functions incorrectly rejects it; and if the currently set baud rate is not one of the ones listed, the load function incorrectly fails to return it. </p> Steve Soule <sts11dbxr@…> https://svn.boost.org/trac10/ticket/4558 https://svn.boost.org/trac10/ticket/4558 Report #4549: vector/matrix_assign do not work for integral types Tue, 17 Aug 2010 09:10:07 GMT Wed, 23 May 2018 06:20:47 GMT <p> I have found a possible problem in <code>vector_assign</code> and <code>matrix_assign</code> functions when vector and matrix values have integral type. </p> <p> For instance, when you try to assign two integral vectors (e.g., <code>ublas::vector&lt;int&gt;</code>), you'll end up with the following runtime assertion: </p> <pre class="wiki">Check failed in file boost-trunk/boost/numeric/ublas/detail/vector_assign.hpp at line 370: detail::expression_type_check (v, cv) terminate called after throwing an instance of 'boost::numeric::ublas::external_logic' what(): external logic or bad condition of inputs Aborted (core dumped) </pre><p> Similar exception will be thrown for integral matrices. </p> <p> I have identified two possible issues: </p> <ol><li>In <em>detail/vector_assign.hpp</em> and <em>detail/matrix_assign.hpp</em>, the check in function <code>detail::equals</code> should use <code>&lt;=</code> instead of <code>&lt;</code>. </li></ol><ol start="2"><li>In <em>detail/config.hpp</em>, macro <code>BOOST_UBLAS_TYPE_CHECK_MIN</code> should get zero for integral types. </li></ol> Marco Guazzone <marco.guazzone@…> https://svn.boost.org/trac10/ticket/4549 https://svn.boost.org/trac10/ticket/4549 Report #4547: Documentation enhancement Mon, 16 Aug 2010 22:52:45 GMT Mon, 16 Aug 2010 22:52:45 GMT <p> David Abrahams suggested that I write up an update to the Boost.Parameter documentation. I did so, and he asked me to post a ticket about it so he wouldn't forget. </p> <p> The update can be found in this Boost-Dev message: </p> <blockquote> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/06/168418.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/06/168418.php</a> </p> </blockquote> <p> Let me know if you need any further information on it. </p> chadnelson https://svn.boost.org/trac10/ticket/4547 https://svn.boost.org/trac10/ticket/4547 Report #4545: Invalid posix timezone format Mon, 16 Aug 2010 16:27:59 GMT Mon, 12 Mar 2018 20:05:49 GMT <p> Hi, </p> <p> I think that posix_time_zone in Boost.<a class="missing wiki">DateTime</a> is using the wrong sign for offsets from GMT: </p> <p> According to the documentation, posix_time_zone is modeled after IEEE Std 1003.1. The documentation gives several examples, for instance </p> <blockquote> <p> <em>"MST-7"</em> </p> </blockquote> <blockquote> <p> <em>This zone is as simple as it gets. This zone lies seven hours west of GMT and has no daylight savings.</em> </p> </blockquote> <p> But all other sources for IEEE Std 1003.1 I found so far say that negative offsets indicate <strong>east</strong> of GMT, see for instance: </p> <p> <a class="ext-link" href="http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html"><span class="icon">​</span>http://www.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html</a> </p> <blockquote> <p> <em>If preceded by a '-' , the timezone shall be east of the Prime Meridian; otherwise, it shall be west (which may be indicated by an optional preceding '+').</em> </p> </blockquote> <p> <a class="ext-link" href="http://tools.ietf.org/html/draft-ietf-dhc-timezone-01"><span class="icon">​</span>http://tools.ietf.org/html/draft-ietf-dhc-timezone-01</a> </p> <blockquote> <p> <em>The format of the IEEE 1003.1 POSIX timezone specification is defined as follows:[...]If preceded by a '-', the timezone is east of the Prime Meridian, otherwise it is west ('+' is optional)</em> </p> </blockquote> <p> <a class="ext-link" href="http://www.twinsun.com/tz/tz-link.htm"><span class="icon">​</span>http://www.twinsun.com/tz/tz-link.htm</a> </p> <blockquote> <p> <em>Numeric time zone abbreviations typically count hours east of UTC, e.g., +09 for Japan and -10 for Hawaii. However, the POSIX TZ environment variable uses the opposite convention. For example, one might use TZ="JST-9" and TZ="HST10" for Japan and Hawaii, respectively.</em> </p> </blockquote> <hr /> <p> IMO, the implementation and/or the documentation should be changed. Personally, I'd prefer a change in the implementation, even though this would be a rather nasty breaking change. </p> <p> Regards, </p> <p> Roland </p> Roland Bock <rbock@…> https://svn.boost.org/trac10/ticket/4545 https://svn.boost.org/trac10/ticket/4545 Report #4542: bind() should use boost::result_of Sat, 14 Aug 2010 20:25:37 GMT Sat, 14 Aug 2010 20:25:37 GMT <p> if at all possible boost::bind(F(),...) should use boost::result_of&lt;F(...)&gt; instead of directly accessing F::result_type. </p> <p> this way functors whose result type depends on the argument types could be used in bind(), for example: </p> <pre class="wiki">#include &lt;boost/bind.hpp&gt; #include &lt;boost/utility/result_of.hpp&gt; using namespace boost; struct F{ template&lt;typename Args&gt; struct result; template&lt;typename T&gt; T operator()(T const &amp;t) const{ return t; } }; template&lt;typename T&gt; struct F::result&lt;F(T const &amp;)&gt;{ typedef T type; }; template&lt;typename F&gt; void g(F const &amp;f){ typename boost::result_of&lt;F()&gt;::type res=f(); } int main(){ f(bind(F(),4)); //error. no result_type in F } </pre> anonymous https://svn.boost.org/trac10/ticket/4542 https://svn.boost.org/trac10/ticket/4542 Report #4540: fold<Sequence>() instantiates result_of::fold<Sequence const> Fri, 13 Aug 2010 15:34:38 GMT Sat, 13 Apr 2013 16:50:35 GMT <p> Hi, </p> <p> this is a complicated one, I'll try my best: </p> <p> there is a problem with fold() and maybe other fusion functions whose result is computed from the result type of user functors. </p> <p> in iteration/detail/fold.hpp, there are two fold()'s, the default one and a specialization for const sequences: </p> <pre class="wiki"> inline typename result_of::fold&lt;Seq const,State const,F&gt;::type BOOST_FUSION_FOLD_NAME(Seq const&amp; seq,State const&amp; state,F f) </pre><p> I'm not sure why it is there since there isn't any difference to the non-const fold(). but the fact that it is there causes problems when using fold() with a non-const sequence: </p> <pre class="wiki"> fusion::vector&lt;int&gt; vec; fusion::fold(vec,0,F()); </pre><p> even though the sequence is not const, at least MSVC (and I vaguely remember something about that in the C++ standard) instantiates all result types of the function overload set, before the arguments are matched to the non-const fold(). </p> <p> ==&gt; fusion::result_of::fold&lt;Sequence <strong>const</strong>,State,F&gt; is instantiated. </p> <p> under normal circumstances this only constitutes an unnecessary instantiation, but when the result type depends on user functors it can cause instantiatiation of undefined types. </p> <p> for example: </p> <pre class="wiki">struct F{ template&lt;typename Args&gt; struct result; int operator()(int state,int &amp;element) const{ return state; } }; template&lt;typename State&gt; struct F::result&lt;F(State,int &amp;)&gt;{ typedef int type; }; int main(){ fusion::vector&lt;int&gt; vec; fusion::fold(vec,0,F()); } </pre><p> the result type of F is only defined for argument type "int &amp;", which is enough for this fold. but the call to fold() instantiates the <em>const</em> specialization of fold(), and therefore instantiates result_of::fold&lt;vector <strong>const</strong>&gt;, which instantiates the result type of F(State,int const &amp;) ==&gt; compiler error </p> <p> when the following code snippet is added as a workaround, it works: </p> <pre class="wiki">template&lt;typename State&gt; struct F::result&lt;F(State,int const &amp;)&gt;{ typedef int type; }; </pre><p> bottom line - the const specialization of fold() probably shouldn't be there. </p> anonymous https://svn.boost.org/trac10/ticket/4540 https://svn.boost.org/trac10/ticket/4540 Report #4534: Wrong URL in upper-left, http://lists.boost.org/boost-testing/ Thu, 12 Aug 2010 13:58:04 GMT Thu, 12 Aug 2010 13:58:04 GMT <p> The URL under the .png in the upper-left corner of <a class="ext-link" href="http://lists.boost.org/boost-testing/"><span class="icon">​</span>http://lists.boost.org/boost-testing/</a> and all sub-pages takes you to boost.com, not boost.org. Wrong site. </p> Jim Bell <jim@…> https://svn.boost.org/trac10/ticket/4534 https://svn.boost.org/trac10/ticket/4534 Report #4529: Failing to set TTL on ICMP packets on Windows Vista with MinGW. Wed, 11 Aug 2010 19:24:14 GMT Thu, 16 Jun 2011 23:10:57 GMT <p> Hi, </p> <p> Using the program attached, I have tried to set the TTL on outgoing ICMP packets on a Windows Vista machine using MinGW. It does not have any effect. Using the same program on Ubuntu works just fine. </p> <p> Can this be caught in the regression testing of Boost::Asio? </p> <p> Best regards, Peter Jansson </p> webmaster@… https://svn.boost.org/trac10/ticket/4529 https://svn.boost.org/trac10/ticket/4529 Report #4528: Reference to stack memory associated with local variable 'x' returned Wed, 11 Aug 2010 18:58:03 GMT Wed, 11 Aug 2010 19:00:58 GMT <p> It looks like x is not being passed in by reference. Because of this a copy is made on the stack. The operator returns x.value as a reference which is dangerous since x will go out of scope. </p> <p> This bug occurred with Xcode 4 beta 2, and with the latest version of clang/llvm from the open source project. </p> <p> CompileC /Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/Objects-normal/i386/TopoSort.o /Users/bdoig/Dropbox/WData/TopoSort.mm normal i386 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler </p> <blockquote> <p> cd /Users/bdoig/Dropbox/WDStoreTest setenv LANG en_US.US-ASCII setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -x objective-c++ -arch i386 -fmessage-length=0 -pipe -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -D<span class="underline">IPHONE_OS_VERSION_MIN_REQUIRED=30200 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk -fasm-blocks -mmacosx-version-min=10.6 -gdwarf-2 -fvisibility=hidden -fobjc-abi-version=2 -fobjc-legacy-dispatch -iquote /Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/WDStoreTest-generated-files.hmap -I/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/WDStoreTest-own-target-headers.hmap -I/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/WDStoreTest-all-target-headers.hmap -iquote /Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/WDStoreTest-project-headers.hmap -F/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Products/Debug-iphonesimulator -I/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Products/Debug-iphonesimulator/include -I/Users/bdoig/Documents/Projects/boost_1_43_0 -I/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/DerivedSources/i386 -I/Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/DerivedSources -include /Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/PrecompiledHeaders/WDStoreTest_Prefix-bwcwseswayysywfpkcwdmibmtjef/WDStoreTest_Prefix.pch -c /Users/bdoig/Dropbox/WData/TopoSort.mm -o /Users/bdoig/Library/Developer/Xcode/DerivedData/WDStoreTest-dbsxxdunpvzihagbzjvgylinzzaf/Build/Intermediates/WDStoreTest.build/Debug-iphonesimulator/WDStoreTest.build/Objects-normal/i386/TopoSort.o </span></p> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:21: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:15: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/name.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/keyword.hpp:10: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tag.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tagged_argument.hpp:10: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/arg_list.hpp:127:16:{127:16-127:23}: warning: reference to stack memory associated with local variable 'x' returned <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> return x.value; </p> <blockquote> <p> <sup><del></del><del> </del></sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:21: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:408:19: note: in instantiation of function template specialization 'boost::parameter::aux::empty_arg_list::operator[]&lt;boost::graph::keywords::tag::vertex_index_map, int const&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote class="citation"> <p> ()(g, ap[t | 0]); </p> </blockquote> <blockquote> <p> <sup> </sup></p> </blockquote> <p> /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:472:18: note: in instantiation of function template specialization 'boost::detail::override_const_property&lt;boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::visitor, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt; const&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::buffer, int const&gt;, boost::parameter::aux::empty_arg_list&gt; &gt;, boost::graph::keywords::tag::vertex_index_map, boost::vertex_index_t, boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> override_const_property( <sup> </sup></p> </blockquote> <p> /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:496:24: note: in instantiation of member function 'boost::detail::color_map_maker_helper&lt;0, boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::visitor, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt; const&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::buffer, int const&gt;, boost::parameter::aux::empty_arg_list&gt; &gt;, boost::default_color_type, int&gt;::make_map' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> return helper::make_map(g, white_color, ap[boost::graph::keywords::_color_map | 0], ap); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:300:72: note: in instantiation of member function 'boost::detail::color_map_maker&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::visitor, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt; const&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::buffer, int const&gt;, boost::parameter::aux::empty_arg_list&gt; &gt; &gt;::make_map' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> boost::detail::color_map_maker&lt;<a class="missing wiki">VertexListGraph</a>, arg_pack_type&gt;::make_map(g, arg_pack), </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:65:5: note: in instantiation of function template specialization 'boost::depth_first_search&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;, boost::graph_visitor_t, boost::bgl_named_params&lt;int, boost::buffer_param_t, boost::no_property&gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> depth_first_search(g, params.visitor(<a class="missing wiki">TopoVisitor</a>(result))); <sup> </sup></p> </blockquote> <p> /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:71:5: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt;, int, boost::buffer_param_t, boost::no_property&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> topological_sort(g, result, <sup> </sup></p> </blockquote> <p> /Users/bdoig/Dropbox/WData/TopoSort.mm:20:3: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> boost::topological_sort(vectorList, std::front_inserter(topo_order)); <sup> </sup></p> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:21: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:15: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/name.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/keyword.hpp:10: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tag.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tagged_argument.hpp:10: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/arg_list.hpp:127:16:{127:16-127:23}: warning: reference to stack memory associated with local variable 'x' returned <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> return x.value; </p> <blockquote> <p> <sup><del></del><del> </del></sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:21: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:496:49: note: in instantiation of function template specialization 'boost::parameter::aux::empty_arg_list::operator[]&lt;boost::graph::keywords::tag::color_map, int const&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> return helper::make_map(g, white_color, ap[boost::graph::keywords::_color_map | 0], ap); </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:300:72: note: in instantiation of member function 'boost::detail::color_map_maker&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::visitor, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt; const&gt;, boost::parameter::aux::arg_list&lt;boost::parameter::aux::tagged_argument&lt;boost::graph::keywords::tag::buffer, int const&gt;, boost::parameter::aux::empty_arg_list&gt; &gt; &gt;::make_map' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> boost::detail::color_map_maker&lt;<a class="missing wiki">VertexListGraph</a>, arg_pack_type&gt;::make_map(g, arg_pack), </p> <blockquote> <p> <sup> </sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:65:5: note: in instantiation of function template specialization 'boost::depth_first_search&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;, boost::graph_visitor_t, boost::bgl_named_params&lt;int, boost::buffer_param_t, boost::no_property&gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> depth_first_search(g, params.visitor(<a class="missing wiki">TopoVisitor</a>(result))); <sup> </sup></p> </blockquote> <p> /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:71:5: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt;, int, boost::buffer_param_t, boost::no_property&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> topological_sort(g, result, <sup> </sup></p> </blockquote> <p> /Users/bdoig/Dropbox/WData/TopoSort.mm:20:3: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> boost::topological_sort(vectorList, std::front_inserter(topo_order)); <sup> </sup></p> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:21: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/named_function_params.hpp:15: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/name.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/keyword.hpp:10: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tag.hpp:8: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/tagged_argument.hpp:10: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/parameter/aux_/arg_list.hpp:127:16:{127:16-127:23}: warning: reference to stack memory associated with local variable 'x' returned <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> return x.value; </p> <blockquote> <p> <sup><del></del><del> </del></sup></p> </blockquote> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: In file included from /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:16: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/depth_first_search.hpp:301:8: note: in instantiation of function template specialization 'boost::parameter::aux::empty_arg_list::operator[]&lt;boost::graph::keywords::tag::root_vertex, unsigned long const&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> arg_pack[_root_vertex | *vertices(g).first] <sup> </sup></p> </blockquote> <p> In file included from /Users/bdoig/Dropbox/WData/TopoSort.mm:11: In file included from /Users/bdoig/Dropbox/WData/TopoSort.h:20: /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:65:5: note: in instantiation of function template specialization 'boost::depth_first_search&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, boost::topo_sort_visitor&lt;std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;, boost::graph_visitor_t, boost::bgl_named_params&lt;int, boost::buffer_param_t, boost::no_property&gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> depth_first_search(g, params.visitor(<a class="missing wiki">TopoVisitor</a>(result))); <sup> </sup></p> </blockquote> <p> /Users/bdoig/Documents/Projects/boost_1_43_0/boost/graph/topological_sort.hpp:71:5: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt;, int, boost::buffer_param_t, boost::no_property&gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> topological_sort(g, result, <sup> </sup></p> </blockquote> <p> /Users/bdoig/Dropbox/WData/TopoSort.mm:20:3: note: in instantiation of function template specialization 'boost::topological_sort&lt;boost::adjacency_list&lt;boost::listS, boost::vecS, boost::directedS, TopoVertexProperty, boost::no_property, boost::no_property, boost::listS&gt;, std::front_insert_iterator&lt;std::deque&lt;int, std::allocator&lt;int&gt; &gt; &gt; &gt;' requested here <a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a> </p> <blockquote> <p> boost::topological_sort(vectorList, std::front_inserter(topo_order)); <sup> </sup></p> </blockquote> <p> 3 warnings generated. </p> brian.doig@… https://svn.boost.org/trac10/ticket/4528 https://svn.boost.org/trac10/ticket/4528 Report #4526: [MSVC 10 & 9 & 8] forward declarations of concept checked function templates don't work (compiler bug?) Wed, 11 Aug 2010 06:21:06 GMT Wed, 11 Aug 2010 06:21:06 GMT <p> As posted by Lorenzo Caminiti to comp.lib.boost.devel (8/9/2010) forward declarations of concept checked function templates lead to ambiguity errors even though the function signatures are identical when compiled with MSVC (I tested MSVC 10 &amp; MSVC9, Caminit MSVC8) </p> <p> I believe it boils down to a compiler error where MSVC fails to recognize that signatures are identical when the return type depends on fairly complex expressions that include non type template arguments. I've got a patch that seems to work for MSVC10. Since I used decltype it doesn't help for the older versions though. I haven't tested it much and I'm sure I'm breaking all kinds of boost coding guidelines but maybe it's of help anyway. </p> Stefan van Kessel <van_kessel@…> https://svn.boost.org/trac10/ticket/4526 https://svn.boost.org/trac10/ticket/4526 Report #4525: Undocumented rolling_window_plus1accumulator Tue, 10 Aug 2010 23:35:38 GMT Tue, 10 Aug 2010 23:35:38 GMT <p> rolling_count depends on rolling_window_plus1which is not documented. </p> <p> rolling_count The rolling count is the current number of elements in the rolling window. Result Type std::size_t Depends On rolling_window_plus1 </p> <p> The same applies to rolling_sum. </p> <p> Could this documentation issue be managed? </p> viboes https://svn.boost.org/trac10/ticket/4525 https://svn.boost.org/trac10/ticket/4525 Report #4510: [program_options]: implicit_value and positional options conflict Thu, 05 Aug 2010 17:18:48 GMT Mon, 29 Dec 2014 20:17:42 GMT <p> Hello, </p> <p> Thanks for a great library. I just updated to 1.43 and it appears options with implicit values no longer work if there are also positional options. </p> <p> In fact libs/src/program_options/example/options_description.cpp fails in 1.43: </p> <pre class="wiki">1.43% options_description --verbose foo in option 'verbose': invalid option value </pre><p> In 1.38 this worked fine </p> <pre class="wiki">1.38% options_description --verbose foo Input files are: foo Verbosity enabled. Level is 1 Optimization level is 10 Listen port is 0 </pre><p> I briefly looked at the library source code and see new code added in cmdline.cpp: </p> <pre class="wiki"> /* If an key option is followed by a positional option, can can consume more tokens (e.g. it's multitoke option), give those tokens to it. */ ... </pre><p> It seems that in order to make implicit options work in presence of positional options, the semantic()-&gt;max_tokens() function must return 0, that is, you can never specify a value for an implicit option. I don't know if this is desired, but it will work for me. </p> <p> Thank you, </p> <p> Soren Soe </p> Soren Soe <soren.soe@…> https://svn.boost.org/trac10/ticket/4510 https://svn.boost.org/trac10/ticket/4510 Report #4503: unused parameter warning for bimap/relation/mutant_relation.hpp serialize Mon, 02 Aug 2010 13:01:00 GMT Mon, 02 Aug 2010 13:01:00 GMT <p> The parameter 'const unsigned int version' is not used and depending on the compiler flags results in a lot of warnings being generated. </p> <p> A patch against the current trunk is attached. </p> alexander.petry@… https://svn.boost.org/trac10/ticket/4503 https://svn.boost.org/trac10/ticket/4503 Report #4494: recursive_directory_iterator throws unexpectedly in the non-throw mode Fri, 30 Jul 2010 06:13:15 GMT Sat, 31 Aug 2013 15:54:02 GMT <p> In boost::filesystem v3, while it’s possible to choose a no-throw version of recursive_directory_iterator by passing an boost::system::error_code object to its constructor, like this: </p> <blockquote> <p> boost::system::error_code m_ec; for ( recursive_directory_iterator itr(root, m_ec), end_itr; itr != end_itr; ++itr) </p> </blockquote> <p> However, because in the implementation of the recursive_directory_iterator::increment(), directory_iterator is always constructed with the throw version, it would cause exception throws during the for-loop while accessing folders like \System Volume Information on Windows: </p> <blockquote> <p> void increment() { </p> <blockquote> <p> BOOST_ASSERT(m_imp.get() &amp;&amp; "increment of end recursive_directory_iterator"); m_imp-&gt;increment(0); if (m_imp-&gt;m_stack.empty()) m_imp.reset(); <em> done, so make end iterator </em></p> </blockquote> </blockquote> <p> } </p> <p> Where m_imp is an object of recur_dir_itr_imp: </p> <blockquote> <p> void recur_dir_itr_imp::increment(system::error_code* ec) <em> ec == 0 means throw on error </em></p> </blockquote> <p> { … } </p> <p> As it’s not possible to catch this exception within the for-loop and continue the loop, it greatly limits the use of recursive_directory_iterator. With a rough check, V2 does not seem to have this problem. it's preferred that the directory_iterator to behave the same as recursive_directory_iterator in this case. </p> ttan@… https://svn.boost.org/trac10/ticket/4494 https://svn.boost.org/trac10/ticket/4494 Report #4489: References to function object types Thu, 29 Jul 2010 17:01:40 GMT Tue, 25 Sep 2012 14:02:54 GMT <p> The current implementation of boost::result_of doesn't permit Fn in boost::result_of&lt;Fn(Args...)&gt; to be a reference to a class type. I would like to see that changed. Allowing reference-qualified function object types would be in useful with c++11's explicit reference qualification of member functions (n3090 / 13.3.1/4), and this change would bring boost::result_of more in line with c++11's std::result_of, which does allow "reference[s] to function object type[s]" (n3090 / 20.7.6.6) </p> Christopher Schmidt https://svn.boost.org/trac10/ticket/4489 https://svn.boost.org/trac10/ticket/4489 Report #4479: OpenVMS fixes for system library Tue, 27 Jul 2010 18:45:36 GMT Tue, 27 Jul 2010 18:45:36 GMT <p> This patch fixes for OpenVMS platform - workaround of compiler bugs and some warnings fixes. </p> <p> It is <strong>very important</strong> for the organization I work for to submit them to upstream Boost in order to make an upgrade to future Boost versions simpler. </p> <p> This patch related to ticket: <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4473" title="#4473: Patches: OpenVMS patch for Asio (new)">#4473</a> </p> <p> Thanks, </p> <blockquote> <p> Artyom </p> </blockquote> artyomtnk@… https://svn.boost.org/trac10/ticket/4479 https://svn.boost.org/trac10/ticket/4479 Report #4476: OpenVMS patch for 64 bit support Tue, 27 Jul 2010 14:12:03 GMT Tue, 27 Jul 2010 14:12:03 GMT <p> Hello, </p> <p> This patch provides 64 bit fixes for OpenVMS platform. </p> <p> It is <strong>very important</strong> for the organization I work for to submit them to upstream Boost in order to make an upgrade to future Boost versions simpler. </p> <p> This patch related to ticket: <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4473" title="#4473: Patches: OpenVMS patch for Asio (new)">#4473</a> </p> <p> Thanks, </p> <blockquote> <p> Artyom </p> </blockquote> artyomtnk@… https://svn.boost.org/trac10/ticket/4476 https://svn.boost.org/trac10/ticket/4476 Report #4473: OpenVMS patch for Asio Tue, 27 Jul 2010 14:04:18 GMT Mon, 02 Aug 2010 10:55:17 GMT <p> Hello, </p> <p> This paths allows to compile and run all unit-tests of Boost.Asio under OpenVMS 8.3 Itanium both 32 and 64 bits. </p> <p> It is <strong>very important</strong> for the organization I work for to submit them to upstream Boost in order to make an upgrade to future Boost versions simpler. </p> <p> Note, I had also submitted some other related patches for other parts of boost. </p> <p> Thanks, </p> <blockquote> <p> Artyom </p> </blockquote> artyomtnk@… https://svn.boost.org/trac10/ticket/4473 https://svn.boost.org/trac10/ticket/4473 Report #4466: "multiple paths" algorithms Sun, 25 Jul 2010 17:20:17 GMT Wed, 08 Dec 2010 19:45:07 GMT <p> I'm relatively new to the BGL, so I might be missing something. but it seems to me that all algorithms in the BGL deal with finding one specific path, or with transforming graphs. </p> <p> I recently needed to find all unique paths that connect two nodes, i.e. count the number of feedback loops a node is part of in a directed graph, and I could not find any algorithm, or visitor that an algorithm could be built upon, in BGL. </p> <p> a quick google search turned up this for example: <a class="ext-link" href="http://portal.acm.org/citation.cfm?id=7863"><span class="icon">​</span>http://portal.acm.org/citation.cfm?id=7863</a> </p> <p> there might be more algorithms that have multiple paths as a result, I don't know, graph theory isn't my specialty. there is at least this one and BGL seems to ignore these kinds of algorithms altogether. </p> anonymous https://svn.boost.org/trac10/ticket/4466 https://svn.boost.org/trac10/ticket/4466 Report #4464: gccxml error with msvc 9 and boost Fri, 23 Jul 2010 17:21:21 GMT Wed, 05 Sep 2012 17:24:08 GMT <p> I am using gccxml, built from current cvs at </p> <blockquote> <p> www.gccxml.org:/cvsroot/GCC_XML </p> </blockquote> <p> On Windows XP SP3, with Visual Studio version 9.0.30729.1 SP (SP1) </p> <p> <em> file test.hpp: </em></p> <pre class="wiki">#include &lt;boost/typeof/typeof.hpp&gt; </pre><p> typing this command: </p> <pre class="wiki"> gccxml -I"C:/Program Files/boost/boost_1_43_0" test.hpp </pre><p> yields the following error message: </p> <p> ################## </p> <pre class="wiki">In file included from C:/Program Files/boost/boost_1_43_0/boost/typeof/typeof.hpp:103, from test3.hpp:1: C:/Program Files/boost/boost_1_43_0/boost/typeof/msvc/typeof_impl.hpp:151: error: qualified name does not name a class before '{' token </pre><p> ################## </p> <p> The code in question appears on a block of the form </p> <pre class="wiki">#if BOOST_WORKAROUND(BOOST_MSVC,==1300) // Code specific to VC 7.0. #elif BOOST_WORKAROUND(BOOST_MSVC,&gt;=1400) // Code for VC 8.0 and above. #else // Code commented with "This uses nice VC6.5 and VC7.1 bugfeature" // that does not work with gccxml. Error is reported here. #endif </pre><p> I'd guess it should be choosing the middle block here. My fumbling attempts at preprocessor debugging suggest that the "BOOST_MSVC" macro is undefined when gccxml is emulating msvc here. </p> <p> The gccxml preprocessor simulates the definitions of the target compiler, but adds <span class="underline">GCCXML</span> to distinguish itself. </p> <p> Sorry I don't have a patch to submit. I'm unsure what the right way to handle this is. </p> Christopher Bruns <cmbruns@…> https://svn.boost.org/trac10/ticket/4464 https://svn.boost.org/trac10/ticket/4464 Report #4461: build failure with debug, mpi, and python options on macintosh Wed, 21 Jul 2010 18:03:42 GMT Wed, 21 Jul 2010 18:03:42 GMT <p> When building boost-1.43 on Mac OS X (10.6.4, System GCC 4.2.1, <code>MacPorts</code> Python2.6 and OpenMPI) with the debug-build enabled, boost-build fails building <code>mpi.so</code> for python. </p> <p> I <strong>think</strong> that it is failing to distinguish between the debug and release builds. </p> <p> If only a <code>release</code> build is specified via <code>variant=release</code>, the build proceeds without error. </p> <p> If <code>variant=debug,release</code> is specified, the build fails with the attached error log. </p> <p> This has been logged in the <code>MacPorts</code> Trac as <a class="ext-link" href="http://trac.macports.org/ticket/23667"><span class="icon">​</span>http://trac.macports.org/ticket/23667</a>. </p> Andrew Fernandes <andrew@…> https://svn.boost.org/trac10/ticket/4461 https://svn.boost.org/trac10/ticket/4461 Report #4443: Bounded vector constructor missing explicit and an initialization version Thu, 15 Jul 2010 23:01:30 GMT Wed, 11 Aug 2010 19:15:09 GMT <p> While vector&lt;&gt; has an 'explicit' on its constructor with unsigned integers, bounded_vector does not. This means the following ugliness compiles: bounded_vector&lt;double, 2&gt; v; v = 2; <em>This SHOULDN'T compile if the patch is applied. Using cast to unsigned int. </em></p> <p> Also, while vector&lt;&gt; has a constructor that takes a size and then a value to initialize with, bounded_vector does not. I added in a constructor for this operation and for consistency, so the following compiles: ublas::vector&lt;double&gt; v(2, 1.8); ublas::bounded_vector&lt;double,2&gt; v(2, 1.8); <em>Now consistent. </em></p> <p> .... this became necessary when I was doing programming for generic vector types and wanted to construct with an initial value. </p> Jesse Perla <jesseperla@…> https://svn.boost.org/trac10/ticket/4443 https://svn.boost.org/trac10/ticket/4443 Report #4442: Simple implementation of operator * for matrices with 0 complexity Thu, 15 Jul 2010 22:47:25 GMT Thu, 01 Aug 2013 12:18:50 GMT <p> The following is a simple implementation of operator * for matrix-matrix and matrix-vector which simply forwards to the existing prod() implementation. </p> <p> Since nested products A * B * C can't work yet, it does a compile time check to make sure this isn't occuring. </p> <p> See attached patch and test file. Note that this also has patched changes for ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/4441" title="#4441: Bugs: SFINAE for operator * breaking auto differentiation code (new)">#4441</a> built in </p> Jesse Perla <jesseperla@…> https://svn.boost.org/trac10/ticket/4442 https://svn.boost.org/trac10/ticket/4442 Report #4441: SFINAE for operator * breaking auto differentiation code Thu, 15 Jul 2010 22:16:34 GMT Thu, 15 Jul 2010 22:44:49 GMT <p> A while back we had discussed adding overload resolution with SFINAE to the matrix/vector expressions involving scalars in order to implement operator*, etc. The choice was made to use is_convertible between the scalar and matrix type. </p> <p> But this ended up breaking an auto-differentiation library (CPPAD) I was using. Templated AD libraries will often have their own, arithmetic type which will record operations of the type * a double, etc. for a matrix multiplication by a scalar, etc. But you can't convert between them! </p> <p> The basic change is to change from using is_convertible to using is_arithmetic. A change to the result type is also needed for autodifferentation to work. </p> <p> See the attached patch for the change to matrix/vector expression. </p> Jesse Perla <jesseperla@…> https://svn.boost.org/trac10/ticket/4441 https://svn.boost.org/trac10/ticket/4441 Report #4440: MSVC doesn't work with bounded_vector's of size 0 Thu, 15 Jul 2010 21:48:06 GMT Thu, 15 Jul 2010 21:48:06 GMT <p> A bounded_vector&lt;double, 0&gt; will not compile in MSVC9/10. It works fine in Intel 11.1 windows and MinGW. </p> <p> In my generic programming, this comes up quite often. I added in a temporary hatch that changes the size of the allocated array to 1 if using MSVC. This doesn't seem to have caused any issues, but I don't know enough about alignment issues to see if it is a problem. </p> <p> See the attached patch to the boost trunk and a boost test file. This patch works on MSVC10, Intel 11.1 MinGW4.5 </p> jesseperla@… https://svn.boost.org/trac10/ticket/4440 https://svn.boost.org/trac10/ticket/4440 Report #4438: Possible infinite loop in boost:: filesystem::copy_file for unix Thu, 15 Jul 2010 12:52:15 GMT Sun, 23 Feb 2014 09:06:35 GMT <p> In the write cycle: </p> <blockquote> <p> do </p> <blockquote> <p> { </p> <blockquote> <p> if ((sz = ::write(outfile, buf.get() + sz_write, </p> <blockquote> <p> sz_read - sz_write))&lt; 0) </p> </blockquote> <p> { </p> <blockquote> <p> sz_read = sz; <em> cause read loop termination break; </em> and error to be thrown after closes </p> </blockquote> <p> } sz_write += sz; </p> </blockquote> <p> } while (sz_write &lt; sz_read); </p> </blockquote> </blockquote> <p> </p> <p> Always try to write a number of bytes strictly greater than zero and the api ::write returns according to the official documentation :" On success, the number of bytes written is returned (Zero Indicates Nothing Was Written). On error, -1 is returned, and errno is set appropriately". Now imagine that the ::write api for any error or side effect, always returns zero, then we are in an infinite loop. </p> <p> To fix it I think the appropriate condition should be: </p> <dl class="wiki"><dt>if ((sz =</dt><dd>write (outfile, buf.get () + sz_write, sz_read - sz_write)) &lt;= 0) </dd></dl> <p> that is, change the Boolean operation for less than or equal to (&lt;=) </p> <p> If I'm wrong please let me know what to learn. In my opinion you are the best. </p> Roberto Carlos Toledano Gómez <rctg82@…> https://svn.boost.org/trac10/ticket/4438 https://svn.boost.org/trac10/ticket/4438 Report #4436: Introduce an unpack to arguments operation for vectors and matrices Thu, 15 Jul 2010 12:17:14 GMT Thu, 15 Jul 2010 12:17:14 GMT <p> The new ublas assignment facility provides a convenient way to fill up matrices and vectors, but the opposite would also be useful. Quoting: </p> <pre class="wiki">The boost assignment is really nice, but what about the other direction (from vector to scalars)? This comes up quite often. ublas::vector&lt;double&gt; f() { ublas::vector&lt;double&gt; v(2); v(0) = 1.1; v(1) = 2.1; return v; } double x; double y; ublas::vector&lt;double&gt; v(2); v(0) = 1.1; v(1) = 2.1; ublas::tie(x, y) = v; ublas::tie(x, y) = f(); //With function ublas::matrix&lt;double&gt; mat(2,2); //.... ublas::tie(x, y) = row(mat, 0); ublas::vector&lt;int&gt; v2(2); v2(0) = 1; v2(1) = 2; int z; ublas::tie(x, z); //With different types For vector expressions, this seems to be easy enough to do. See the attached basic implementation for 2 parameters. With a little boost preprocessor, this could be fairly general. What do people think? Are there any boost PP who could generalize this? -Jesse </pre><p> and </p> <pre class="wiki">What's about ublas::tie(V1,V2,V3) = M; That could be useful for applications where Vn are not directly managed by ublas. I mean that you make matrix computations which vectors are then sent to some sort of external outputs. That would be written in one line (like controlling and engine or whatever you can imagine, you know). that's splitting up a matrix in vectors .... ? Cheers, David </pre><p> Some ideas of implementation tools and techniques include: </p> <ol><li>Boost tuple </li><li>Variadic templates </li><li>Custom exhaustive implementation (up to a certain number of return values) </li></ol> nasos_i@… https://svn.boost.org/trac10/ticket/4436 https://svn.boost.org/trac10/ticket/4436 Report #4428: serial_port Bugs Tue, 13 Jul 2010 07:04:35 GMT Tue, 13 Jul 2010 07:04:35 GMT <p> when you use a USB-Serial Port convertor and when use a async_write to send a large buffer to Serial Port,at the time of sending data, you pull out the USB-Serail Port Convertor from computer. the async call back handler for sending and receiving will not get a error and the io_service can't be delete. </p> tirelessfighter@… https://svn.boost.org/trac10/ticket/4428 https://svn.boost.org/trac10/ticket/4428 Report #4424: Program using Boost.Asio stops processing the request Sun, 11 Jul 2010 12:49:22 GMT Sun, 11 Jul 2010 14:10:06 GMT <p> I made a small HTTP proxy, and after +- 1000 simultaneous requests, the process stops working, accepts new connections but does not send anything to the client, which is eternally waiting. </p> <p> I made a small HTTP proxy, and after + - 1000 simultaneous requests, the process stops working, accepts new connections but does not send anything to the client, which is eternally waiting. </p> <p> I drove by a GDB backtrace, do not know if it helps a lot. </p> Joaquim Pedro França Simão <osmano807@…> https://svn.boost.org/trac10/ticket/4424 https://svn.boost.org/trac10/ticket/4424 Report #4409: boost::in_place_factory produces warning Thu, 08 Jul 2010 09:38:05 GMT Mon, 29 Nov 2010 15:44:33 GMT <p> Visual C++ 9.0, Warning level 4 </p> <div class="wiki-code"><div class="code"><pre> <span class="cp">#include</span> <span class="cpf">&lt;boost/utility/in_place_factory.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/optional.hpp&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&lt;boost/noncopyable.hpp&gt;</span><span class="cp"></span> <span class="k">struct</span> <span class="nl">x</span> <span class="p">:</span> <span class="n">boost</span><span class="o">::</span><span class="n">noncopyable</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="k">static</span> <span class="kt">void</span> <span class="n">init</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">);</span> <span class="k">private</span><span class="o">:</span> <span class="n">x</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="o">:</span> <span class="n">i</span> <span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span> <span class="k">friend</span> <span class="n">boost</span><span class="o">::</span><span class="n">in_place_factory1</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">;</span> <span class="kt">int</span> <span class="n">i</span><span class="p">;</span> <span class="p">};</span> <span class="n">boost</span><span class="o">::</span><span class="n">optional</span><span class="o">&lt;</span><span class="n">x</span><span class="o">&gt;</span> <span class="n">x_instance</span><span class="p">;</span> <span class="kt">void</span> <span class="n">x</span><span class="o">::</span><span class="n">init</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="n">x_instance</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">in_place</span><span class="p">(</span><span class="n">i</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><pre class="wiki">1&gt;boost\utility\in_place_factory.hpp(68): warning C4512: 'boost::in_place_factory1&lt;A0&gt;' : assignment operator could not be generated 1&gt; with 1&gt; [ 1&gt; A0=int 1&gt; ] 1&gt; a.cpp(26) : see reference to class template instantiation 'boost::in_place_factory1&lt;A0&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; A0=int 1&gt; ] </pre> NN https://svn.boost.org/trac10/ticket/4409 https://svn.boost.org/trac10/ticket/4409 Report #4404: last_write_time for a symlink Tue, 06 Jul 2010 13:59:30 GMT Tue, 10 Apr 2012 19:10:33 GMT <p> last_write_time returns the last data modification time for a file as might be obtained by the posix stat system call m_time. It would be useful to be able to obtain the similar time as returned by the posix lstat system call. </p> anonymous https://svn.boost.org/trac10/ticket/4404 https://svn.boost.org/trac10/ticket/4404 Report #4393: all_eccentricities not in documented Tue, 29 Jun 2010 16:27:27 GMT Wed, 08 Dec 2010 19:45:28 GMT <p> The function all_eccentricities contains a sample, but is not listed in (the table of contents of) the documentation </p> Barend Gehrels https://svn.boost.org/trac10/ticket/4393 https://svn.boost.org/trac10/ticket/4393 Report #4381: GCC previous to 4.3.x does not implement inclass member initialization Sat, 26 Jun 2010 09:59:08 GMT Wed, 22 Sep 2010 18:06:53 GMT <p> o Add compile gcc option to make sure that boost compilation toolchain </p> <blockquote> <p> acknowledges that gcc versions prior to 4.3.x do not implement inclass member initialization. </p> </blockquote> <p> o This enables libtorrent-rasterbar 1.4.x to build python </p> <blockquote> <p> bindings with the base system gcc on FreeBSD 8.x. Previously, we would have had to resort gcc 4.3+ ports. </p> </blockquote> <p> o Further information can be found at </p> <p> <a class="ext-link" href="http://www.freebsd.org/cgi/query-pr.cgi?pr=144336"><span class="icon">​</span>http://www.freebsd.org/cgi/query-pr.cgi?pr=144336</a> </p> Mario Ferreira <lioux@…> https://svn.boost.org/trac10/ticket/4381 https://svn.boost.org/trac10/ticket/4381 Report #4378: numeric/interval/hw_rounding.hpp upgrade to accept __SUNPRO_CC rounding control mechanism Fri, 25 Jun 2010 22:53:19 GMT Tue, 05 Jan 2016 20:46:54 GMT <p> This fix upgrades </p> <p> boost/numeric/interval/hw_rounding.hpp </p> <p> file which allows several numeric/interval benchmarks to be successfully built and run. </p> <p> Without this fix those benchmarks produce the following error message: </p> <p> "error Boost.Numeric.Interval: Please specify rounding control mechanism." </p> <p> Please note that for successful build of mentioned benchmarks on x86 Solaris 5.10 platform you need to install Solaris patch 119967-01. </p> <p> This patch has fix for bug in &lt;fenv.h&gt; system file which othervise will fail with syntax errors. </p> <p> There is no problem on Open Solaris though. </p> anonymous https://svn.boost.org/trac10/ticket/4378 https://svn.boost.org/trac10/ticket/4378 Report #4376: Compilation failure on Solaris 5.9, 5.10, because of non existent membar_producer(membar_consumer) Thu, 24 Jun 2010 19:23:55 GMT Tue, 23 Nov 2010 14:32:55 GMT <p> We have to compile our application for a large set of unixes, including solaris 5.9 and 5.10. After switching from 1.42 to 1.43 I have got the following compilation error: </p> <pre class="wiki">/export/esuitebuild/boost_1_43_0/boost/asio/detail/solaris_fenced_block.hpp: In constructor 'boost::asio::detail::solaris_fe\ nced_block::solaris_fenced_block()': /export/esuitebuild/boost_1_43_0/boost/asio/detail/solaris_fenced_block.hpp:41: error: 'membar_consumer' was not declared in\ this scope /export/esuitebuild/boost_1_43_0/boost/asio/detail/solaris_fenced_block.hpp: In destructor 'boost::asio::detail::solaris_fen\ ced_block::~solaris_fenced_block()': /export/esuitebuild/boost_1_43_0/boost/asio/detail/solaris_fenced_block.hpp:47: error: 'membar_producer' was not declared in\ this scope </pre><p> These functions doesn`t exists in atomic.h. I found them in sys/atomic.h, and they can be used only from kernel mode. </p> <p> Is there any way to avoid membar_producer(membar_consumer) usage? </p> Kozlov Taras https://svn.boost.org/trac10/ticket/4376 https://svn.boost.org/trac10/ticket/4376 Report #4361: boost/concept_check gcc warning cleanup Mon, 21 Jun 2010 18:43:17 GMT Tue, 30 Sep 2014 01:10:04 GMT <p> Patch to clean up gcc 4.x warning barf. To reproduce issue, compile using -Wshadow. </p> <p> One of the methods was left using just 'c' as parameter name. Patch renames this to 'cc' as with other instances. </p> tatu.kilappa@… https://svn.boost.org/trac10/ticket/4361 https://svn.boost.org/trac10/ticket/4361 Report #4360: Borland / Codegear patch for boost::enable_error_info Sat, 19 Jun 2010 16:27:07 GMT Sat, 19 Jun 2010 16:27:07 GMT <p> Please consider the attached patch, which will allow Codegear 2010 to pass the enable_error_info_test. The patch supports calling enable_error_info(T const &amp;), as long as T is <em>not</em> derived from <code>boost::exception</code>. Which seems like an acceptable limitation to me. Right? </p> <p> Note: The attached patch assumes that the little patch from <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4344" title="#4344: Patches: [helper1.cpp] Please consider a qualified call to boost::enable_error_info (closed: fixed)">#4344</a> is also applied: <a class="ext-link" href="https://svn.boost.org/trac/boost/attachment/ticket/4344/helper1_cpp_qualified_call_to_boost_enable_error_info.patch"><span class="icon">​</span>https://svn.boost.org/trac/boost/attachment/ticket/4344/helper1_cpp_qualified_call_to_boost_enable_error_info.patch</a> </p> niels_dekker https://svn.boost.org/trac10/ticket/4360 https://svn.boost.org/trac10/ticket/4360 Report #4359: boost bind doesn't work with inherited structures Fri, 18 Jun 2010 13:43:28 GMT Thu, 24 Jun 2010 20:26:21 GMT <p> The following code gives an error in VC++2008, VC++2010, g++ 4.2.4: </p> <pre class="wiki">#include &lt;boost/bind.hpp&gt; struct Y { void reset() {}; }; template&lt;typename T1, typename T2&gt; struct my_pair { T1 first; T2 second; }; template&lt;typename T1, typename T2&gt; struct my_pair2 : my_pair&lt;T1, T2&gt; {}; typedef my_pair&lt;int, Y&gt; mypair_t; typedef my_pair2&lt;int, Y&gt; mypair2_t; int main() { mypair_t t1; mypair2_t t2; boost::bind&lt;Y&amp;&gt;( &amp;mypair_t::second, _1 )( t1 ).reset(); // OK! boost::bind&lt;Y&amp;&gt;( &amp;mypair2_t::second, _1 )( t2 ).reset(); // error: cannot convert from 'const Y' to 'Y &amp;' return 0; } </pre> jia3ep@… https://svn.boost.org/trac10/ticket/4359 https://svn.boost.org/trac10/ticket/4359 Report #4357: mpl::equal for associative sequences Thu, 17 Jun 2010 07:51:29 GMT Thu, 30 Dec 2010 15:04:32 GMT <p> this is not a bug, as the current behaviour is documented correctly, but I think mpl::equal&lt;&gt; should return equality for mpl::set&lt;&gt;s that are equal but are not in the same sequence. something like: </p> <p> struct equal : </p> <blockquote> <p> mpl::and_&lt; </p> <blockquote> <p> mpl::equal_to&lt; </p> <blockquote> <p> mpl::size&lt;Set1&gt;, mpl::size&lt;Set2&gt; </p> <blockquote class="citation"> <p> , </p> </blockquote> </blockquote> <p> mpl::fold&lt; </p> <blockquote> <p> Set1, mpl::true_, mpl::and_&lt; </p> <blockquote> <p> mpl::_1, mpl::has_key&lt;Set2,mpl::_2&gt; </p> <blockquote class="citation"> <p> {}; </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> also I think it would be usable for equal sets to be runtime-convertible. </p> <p> template&lt;...&gt; struct set{ </p> <blockquote> <p> template&lt;class <a class="missing wiki">OtherSet</a>&gt; set(<a class="missing wiki">OtherSet</a>,typename enable_if&lt;equal&lt;set,<a class="missing wiki">OtherSet</a>&gt; &gt;::type *e=0){} </p> </blockquote> <p> }; </p> <p> so you can do this: </p> <p> void f(set&lt;e1,e2&gt;); </p> <p> f(set&lt;e2,e1&gt;()); </p> <p> the same might be usable for mpl::map. </p> anonymous https://svn.boost.org/trac10/ticket/4357 https://svn.boost.org/trac10/ticket/4357 Report #4356: small change to allow mpl code to compile with nvcc (the compiler for cuda) Thu, 17 Jun 2010 04:13:37 GMT Thu, 30 Dec 2010 15:06:12 GMT <p> fixes compilation problem when using mpl and mpl dependent libraries with nvcc (Edg front-end) </p> anonymous https://svn.boost.org/trac10/ticket/4356 https://svn.boost.org/trac10/ticket/4356 Report #4351: boost 1_43_0 BOOST_MPL_ASSERT compile error (gcc 4.2) Wed, 16 Jun 2010 16:09:42 GMT Thu, 30 Dec 2010 14:31:31 GMT <p> The simple version: </p> <pre class="wiki">#include &lt;boost/mpl/assert.hpp&gt; int main() { BOOST_MPL_ASSERT((1)); BOOST_MPL_ASSERT((1)); return 0;} </pre><p> (it is important that both BOOST_MPL_ASSERT invocations are <strong>on the same line</strong>) </p> <p> On gcc 4.2.4 (Ubuntu 8.04), this leads to the following error: </p> <pre class="wiki">$ g++ -I /src/jepler/boost_1_43_0/ main.c main.c: In function ‘int main()’: main.c:2: error: conflicting declaration ‘mpl_assertion_in_line_2’ main.c:2: error: ‘mpl_assertion_in_line_2’ has a previous declaration as ‘main()::&lt;anonymous enum&gt; mpl_assertion_in_line_2’ </pre><p> I am trying to migrate an application from boost 1_34_0 to boost 1_43_0. Among other boost features, it uses boost serialization. It has BOOST_CLASS_VERSION declarations across various header files. When two header files are included in the same source file, and they both contain BOOST_CLASS_VERSION declarations <strong>on the same source line</strong> (e.g., fooclass.h line 30 and barclass.h line 30) a similar error results. </p> <p> The attached tar file demonstrates the original problem with BOOST_CLASS_VERSION that first came to my attention. </p> Jeff Epler <jepler@…> https://svn.boost.org/trac10/ticket/4351 https://svn.boost.org/trac10/ticket/4351 Report #4349: Autolinking against debug STLport Wed, 16 Jun 2010 10:55:32 GMT Sun, 25 Jul 2010 09:58:56 GMT <p> I can't use autolinking with the following setup: </p> <ul><li>using a debug build </li><li>using STLport </li><li>not using additional checks and diagnostics (_STLP_DEBUG) </li></ul><p> The autolinking code should simply look for the "dp" variant of the Boost libraries. What I get is a warning that these libs are not built by default. Even worse, I get an error downright refusing to link with that version, even though I did compile them. However, that error is still better than nothing, because the macros defining the version are then set to "gdp" which is simply incompatible with my settings. </p> <p> Things to fix: </p> <ul><li>Fix the generated tags, i.e. replace "gdp" with "dp" for above example. </li><li>Don't generate an error when using STLport with debug symbols but without additional diagnostic. </li></ul><p> Further things that could be fixed, too: </p> <ul><li>Don't output a warning unless lib diagnostics (BOOST_LIB_DIAGNOSTIC) are actually requested. </li><li>Document the meaning of an 'n' in the generated tag. </li><li>Remove redundant comment documenting the 'p' in the generated tag. </li><li>Fix spelling of STLport here, without a capital P. </li><li>Fix warnings, those claim that you should use "/D_STLP_DEBUG=1", but a simple "/D_STLP_DEBUG" is sufficient. A short grep shows that several other parts of Boost also have this, maybe creating separate ticket and patch would be a better choice for this. </li><li>Fix indention of preprocessor commands, large parts use 3 spaces, some parts use 4. </li></ul><p> Concerning the version, this bug is present in today's trunk, 1.43 and 1.33.1, which are also all versions I checked. Concerning 1.33.1, we are using a local version where this discrepancy is fixed and have not found any problems with it. </p> eckhardt@… https://svn.boost.org/trac10/ticket/4349 https://svn.boost.org/trac10/ticket/4349 Report #4346: Boost pool's not comaptible with Microsoft memory leak detection Tue, 15 Jun 2010 16:51:24 GMT Sun, 03 Apr 2016 19:44:08 GMT <p> Boost pool classes not compatible with Microsoft memory leak detection. </p> <p> You can include that lines in code: #ifdef _DEBUG </p> <blockquote> <p> #define _CRTDBG_MAP_ALLOC </p> </blockquote> <p> #endif #include &lt;crtdbg.h&gt; #include "boost\pool\pool_alloc.hpp" </p> <p> We can solve problem using two ways: </p> <ol><li>Rename all malloc &amp; free methods </li><li>Add #pragma push_macro, #undef and #pragma pop_macro lines. Also add alternative names for malloc and free methods </li></ol> Arkadiy Shapkin <arkadiy_s@…> https://svn.boost.org/trac10/ticket/4346 https://svn.boost.org/trac10/ticket/4346 Report #4336: [spirit] A trait to access encoding-specific parsers Sat, 12 Jun 2010 15:49:21 GMT Sat, 12 Jun 2010 15:49:21 GMT <p> Originated from <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/205392"><span class="icon">​</span>this</a> discussion. </p> <p> The attached patch allows to gain access to the encoding-specific parsers by specifying the encoding type to the encoding_specific template parameter. This allows the following use case: </p> <pre class="wiki"> template&lt; typename CharT &gt; void parse(const CharT* str) { typedef typename my_traits&lt; CharT &gt;::encoding encoding; typedef spirit::encoding_specific&lt; encoding &gt; parsers; qi::parse(str, *parsers::char_); } </pre> Andrey Semashev https://svn.boost.org/trac10/ticket/4336 https://svn.boost.org/trac10/ticket/4336 Report #4307: basic_oarchive optimization Sun, 06 Jun 2010 21:15:06 GMT Tue, 08 Jun 2010 21:31:42 GMT <p> attached are patches that optimizes memory allocation and runtime complexity of basic_oarchive. it should not change any serialization behaviour, and archives by the patched basic_oarchive can be read by the unpatched basic_iarchive. </p> <p> what the patch does in detail: </p> <ul><li>replace log(O) lookup of "cobject" class info for each serialized class with a log(1) vector lookup. avoids container node allocation. </li><li>replace log(O) lookup of "aobject" object tracking info with log(1) hashing. avoids container node allocation. </li><li>use allocation pools for "aobject" object tracking info </li><li>store whether a class was stored as a pointer inside the "cobject" class info, to remove std::set stored_pointers </li></ul><p> before: </p> <ul><li>4 allocations on construction </li><li>1 allocation for each serialized class, tracked or not </li><li>1 allocation for each tracked object </li></ul><p> after: </p> <ul><li>1 allocation on construction(PIMPL) </li><li>no allocation for classes if less than 256 classes are serialized. 1 allocation for 512 classes, 2 for 1024, ... </li><li>no allocation for object tracking if less than 256 objects are serialized. after that, about 1 allocation for 16 tracked objects </li></ul> anonymous https://svn.boost.org/trac10/ticket/4307 https://svn.boost.org/trac10/ticket/4307 Report #4301: and_<true_>::type is false_ Sat, 05 Jun 2010 23:02:03 GMT Thu, 30 Dec 2010 14:39:41 GMT <p> It is probably a good idea to make and_&lt;true_&gt;::type be true_, or throw a compiler error, or at least fix the documentation at <a href="http://www.boost.org/doc/libs/1_43_0/libs/mpl/doc/refmanual/and.html">http://www.boost.org/doc/libs/1_43_0/libs/mpl/doc/refmanual/and.html</a> such that this unusual behavior is documented. </p> mstefanro https://svn.boost.org/trac10/ticket/4301 https://svn.boost.org/trac10/ticket/4301 Report #4298: boost build mpi fails to compile with CC: Sun C++ 5.9 SunOS_sparc Patch 124863-23 2010/04/13 Fri, 04 Jun 2010 21:51:14 GMT Sat, 05 Jun 2010 20:05:36 GMT <p> I'm trying to compile boost on Solaris SPARC 10 with latest Sun Studio compiler and mpi support and the mpi component fails. First error is: "libs/mpi/src/python/py_communicator.cpp", line 48: Error: Overloading ambiguity between "boost::python::make_tuple&lt;boost::python::api::object, boost::mpi::st atus&gt;(const boost::python::api::object&amp;, const boost::mpi::status&amp;)" and "boost::tuples::make_tuple&lt;boost::python::api::object, boost::mpi::status&gt;(const boos t::python::api::object&amp;, const boost::mpi::status&amp;)". </p> <p> More detailed log will be attached. </p> <p> C++ Compiler: $ CC -V CC: Sun C++ 5.9 SunOS_sparc Patch 124863-23 2010/04/13 </p> <p> Open MPI implementation: Oracle HPC <a class="missing wiki">ClusterTools</a> 8.2.1c </p> <p> boost build is performed as per recommended instructions with mpi enabled: ./bjam --with-mpi and with "using mpi ;" in user-config.jam </p> nikolov.javor@… https://svn.boost.org/trac10/ticket/4298 https://svn.boost.org/trac10/ticket/4298 Report #4295: Make tests fail when missing sources Fri, 04 Jun 2010 04:11:42 GMT Fri, 04 Jun 2010 04:11:42 GMT <p> Currently Boost Build exits with failure interrupting the build when sources are missing for test targets. To prevent testing stalls change it such that the tests fail when sources can't be found. </p> René Rivera https://svn.boost.org/trac10/ticket/4295 https://svn.boost.org/trac10/ticket/4295 Report #4294: boost::asio::context_base should not depend on OpenSSL Types Fri, 04 Jun 2010 03:30:07 GMT Tue, 06 Mar 2018 16:18:58 GMT <p> For the moment boost::asio::context_base depends on OpenSSL types. </p> <p> But implementation details should go to context service impl. </p> <p> Indeed, if one want to implement a backend based on GnuTLS (or another), this implies that contect_base and then ssl::basic_context template can't be used to use another thing than OpenSSL. </p> <p> context_base should look something like this : </p> <p> class context_base { public: </p> <blockquote> <p> <em>/ Different methods supported by a context. enum methods { </em></p> <blockquote> <p> <em>/ Client method client, </em>/ Server method server, <em>/ Generic SSL version 2. ssl_2, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ Generic SSL version 3. ssl_3, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ Generic TLS version 1. tls_1, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ Generic TLS version 1.1. tls_1_1, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ Generic TLS version 1.2. tls_1_2 </em></p> </blockquote> <p> }; </p> </blockquote> <blockquote> <p> typedef int method_option; </p> </blockquote> <blockquote> <p> static const method_option bit_client = 1&lt;&lt;client; static const method_option bit_server = 1&lt;&lt;server; static const method_option bit_ssl_2 = 1&lt;&lt;ssl_2; static const method_option bit_ssl_3 = 1&lt;&lt;ssl_3; static const method_option bit_tls_1 = 1&lt;&lt;tls_1; static const method_option bit_tls_1_1 = 1&lt;&lt;tls_1_1; static const method_option bit_tls_1_2 = 1&lt;&lt;tls_1_2; </p> </blockquote> <blockquote> <p> <em>/ File format types. enum file_format { </em></p> <blockquote> <p> <em>/ ASN.1 file. asn1, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ PEM file. pem </em></p> </blockquote> <p> }; </p> </blockquote> <blockquote> <p> enum verify_mode { </p> <blockquote> <p> verify_none, verify_peer, verify_fail_if_no_peer_cert, verify_client_once </p> </blockquote> <p> }; </p> </blockquote> <blockquote> <p> typedef int verify_mode_option; </p> </blockquote> <blockquote> <p> const verify_mode_option bit_verify_none = 1&lt;&lt;verify_none; const verify_mode_option bit_verify_peer = 1&lt;&lt;verify_peer; const verify_mode_option bit_verify_fail_if_no_peer_cert = 1&lt;&lt;verify_fail_if_no_peer_cert; const verify_mode_option bit_verify_client_once = 1&lt;&lt;verify_client_once; </p> </blockquote> <blockquote> <p> <em>/ Purpose of PEM password. enum password_purpose { </em></p> <blockquote> <p> <em>/ The password is needed for reading/decryption. for_reading, </em></p> </blockquote> </blockquote> <blockquote> <blockquote> <p> <em>/ The password is needed for writing/encryption. for_writing </em></p> </blockquote> <p> }; </p> </blockquote> <p> }; </p> <p> then in basic_context : </p> <p> -the constructor should take a combination (with the "|" operator) of method_option (you can even define short combinations for classic openssl default methods if you want) and the implementation set or trigger errors accordingly (if the requested mode is not supplied, like tls_1.1 or 1.2 with the openssl backend. </p> <p> I'm currently trying to implement GnuTLS backend, but i don't want to fork all the public asio::ssl api. a common one should be a better solution for everybody. - </p> ecyrbe <ecyrbe@…> https://svn.boost.org/trac10/ticket/4294 https://svn.boost.org/trac10/ticket/4294 Report #4283: Missing doygen features in boost book Thu, 03 Jun 2010 08:18:11 GMT Tue, 18 Dec 2012 17:16:55 GMT <p> 1) </p> <p> Doxygen commands like @see seem to be ignored, doxygen generates : </p> <p> &lt;para&gt;&lt;simplesect kind="see"&gt;&lt;para&gt;<a class="missing wiki">AddEmptyVars</a>() &lt;/para&gt;&lt;/simplesect&gt; </p> <p> but the boostbook conversion has : </p> <p> &lt;/para&gt;&lt;/description&gt;&lt;/parameter&gt;&lt;description&gt;&lt;para&gt;&lt;para&gt;<a class="missing wiki">AddEmptyVars</a>() &lt;/para&gt; </p> <p> So I get a text and not a link. </p> <p> 2) </p> <p> I like to use array notation for arrays i.e "int somearray[]", but this gets ignored and displayed like "int somearray" in the parameters section, eventhough doxygen seem to correctly has parsed my source : </p> <blockquote> <p> &lt;param&gt; </p> <blockquote> <p> &lt;type&gt;double&lt;/type&gt; &lt;declname&gt;up&lt;/declname&gt; &lt;array&gt;[]&lt;/array&gt; </p> </blockquote> <p> &lt;/param&gt; </p> </blockquote> <p> becomes : </p> <p> &lt;parameter name="up"&gt;&lt;paramtype&gt;double&lt;/paramtype&gt; </p> <p> Also group features would be nice to have. </p> jensen.bo@… https://svn.boost.org/trac10/ticket/4283 https://svn.boost.org/trac10/ticket/4283 Report #4276: warning "type qualifiers ignored on function return type" in ptr_map Tue, 01 Jun 2010 12:15:42 GMT Tue, 25 Oct 2016 14:07:52 GMT <p> The following program compiled with gcc using options -W and -Wall spits out a warning about ignored type qualifiers. </p> <p> test.cpp: #include &lt;boost/ptr_container/ptr_map.hpp&gt; int main() { } </p> <p> g++ -W -Wall test.cpp ../include/boost/ptr_container/detail/map_iterator.hpp:52: warning: type qualifiers ignored on function return type </p> <p> It seems like there is a superfluous const in the -&gt; operator. const ref_pair* const operator-&gt;() const should be const ref_pair* operator-&gt;() const </p> boris.bigott@… https://svn.boost.org/trac10/ticket/4276 https://svn.boost.org/trac10/ticket/4276 Report #4272: Wrong assumption about compiler for ARM g++ Mon, 31 May 2010 10:07:15 GMT Mon, 05 Jul 2010 08:03:23 GMT <p> The compiler arm-920tsoftfloat-linux-gnueabi-g++ (GCC) 4.1.1 does not know <span class="underline">sync_lock_test_and_set - extensions. </span></p> <p> It is used in boost::asio::detail::gcc_fenced_block::gcc_fenced_block() </p> Stefan Wegele <s.wegele@…> https://svn.boost.org/trac10/ticket/4272 https://svn.boost.org/trac10/ticket/4272 Report #4259: Reference leak in boost::python::function::add_to_namespace() Wed, 26 May 2010 12:58:06 GMT Thu, 08 Sep 2011 21:27:56 GMT <p> In libs/python/src/object/function.cpp, there is an obvious reference leak: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/libs/python/src/object/function.cpp?rev=60625#L444"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/libs/python/src/object/function.cpp?rev=60625#L444</a> </p> <p> The first branch retrieves a borrowed reference, when the seconds gets a new reference. This is stored in a plain <code>PyObject*</code>, there is no magic in some destructor. This code is likely to leak references. </p> <p> I suggest to use <code>dict = PyObject_GetAttrString(ns, "__dict__")</code> in all cases, and add <code>Py_DECREF(dict)</code> when it is no more needed. </p> Amaury Forgeot d'Arc <amauryfa@…> https://svn.boost.org/trac10/ticket/4259 https://svn.boost.org/trac10/ticket/4259 Report #4255: Documentation: No overflow-checking in accumulators, no precision guarantees Tue, 25 May 2010 09:49:58 GMT Tue, 25 May 2010 09:49:58 GMT <p> As discussed here<a class="ext-link" href="http://old.nabble.com/-accumulators--Is-there-a-reset-function-yet--td28635232.html"><span class="icon">​</span>http://old.nabble.com/-accumulators--Is-there-a-reset-function-yet--td28635232.html</a>, I suggest changing the documentation to warn users of possible overflow/loss of precision issues: </p> <p> Maybe in the section "The Accumulators Framework" one could add the sentence </p> <p> <em>To ensure maximum performance, the predefined accumulators in the library do not check for possible overflows or loss of precision by adding numbers of very different exponents.</em> </p> Tim Odenthal https://svn.boost.org/trac10/ticket/4255 https://svn.boost.org/trac10/ticket/4255 Report #4239: Python on OSX is shipped as a Framework Wed, 19 May 2010 19:05:45 GMT Wed, 19 May 2010 19:05:45 GMT <p> On OSX 10.5 at least, Python is shipped as a framework which requires Boost to include Python using the #include &lt;<a class="missing wiki">Python/Python</a>.h&gt; syntax. </p> <p> I'm not sure which version of OSX started doing this but this patch fixed the problem for me on 10.5 and 10.6. </p> Sohail Somani https://svn.boost.org/trac10/ticket/4239 https://svn.boost.org/trac10/ticket/4239 Report #4234: Implementation of mapped_file is unnecessarily bloated Tue, 18 May 2010 09:15:26 GMT Tue, 18 May 2010 09:15:26 GMT <p> This post <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/03/164035.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/03/164035.php</a> goes over the issue in detail, with tests and real data. </p> <p> Additionaly, the same functionality is duplicated in Boost.Interprocess (managed mapped files, which suffer less from the efficiency issues outlined in the above post) so it might be worthwhile to somehow kill the duplication with a single 'core'/'base' implementation. </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/4234 https://svn.boost.org/trac10/ticket/4234 Report #4229: Lookup by 'order' Mon, 17 May 2010 15:39:45 GMT Mon, 17 May 2010 15:39:45 GMT <p> Please provide an at&lt;&gt; (or at-like) implementation for associative containers that accepts the value 'returned' by order&lt;&gt;. Motivation/a description of an example use case can be found in the following post: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/05/166358.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/05/166358.php</a>. </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/4229 https://svn.boost.org/trac10/ticket/4229 Report #4228: Associative containers performance Mon, 17 May 2010 15:33:02 GMT Wed, 09 Apr 2014 02:08:43 GMT <p> The Boost.Fusion documentation states that associative containers provide efficient key-based access while this seems not to be so in reality (AFAICT the associative containers actually use vectors for their implementation). </p> <p> As reported in this post <a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/05/166358.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/05/166358.php</a> I have achieved meassurably better compile-time performance when using plain fusion::vectors with linear searches than with fusion::maps. Attached are two simple tests that try to demonstrate this (Steven Watanabe's template profiler 'says' that both approaches yield the same number of template instantiations). </p> <p> The reason that in my real life (much more complicated) project I get not only same but better performance with vectors might perhaps be that the find&lt;&gt; (linear search) on the 'main vector' might already be 'cached'/instantiated by some other operation. </p> Domagoj Šarić https://svn.boost.org/trac10/ticket/4228 https://svn.boost.org/trac10/ticket/4228 Report #4189: Add better support for non-default constructible function objects Tue, 04 May 2010 22:43:03 GMT Fri, 23 Aug 2013 07:29:19 GMT <p> boost::transform_iterator is required to be default constructible, but not all function objects are. For example, boost::mem_fn_t is not default constructible. To allow transform_iterator to model <a class="missing wiki">DefaultConstructible</a> with any function object type, Peter Dimov suggested using boost::optional. Thanks to Samuel Debionne for identifying and reporting the problem. </p> Daniel Walker https://svn.boost.org/trac10/ticket/4189 https://svn.boost.org/trac10/ticket/4189 Report #4186: BOOST date_time:"time_resolution_traits" undeclared or ambig error on IBM XL on AIX Tue, 04 May 2010 17:52:44 GMT Tue, 19 Feb 2013 17:00:29 GMT <p> Tests affected: interprocess/comp_doc_anonymous_mutexA interprocess/comp_doc_anonymous_mutexB interprocess/comp_doc_anonymous_semaphoreA interprocess/comp_doc_anonymous_semaphoreB interprocess/comp_doc_anonymous_upgradable_mutexA interprocess/comp_doc_anonymous_upgradable_mutexB interprocess/comp_doc_anonymous_conditionA interprocess/comp_doc_anonymous_conditionB </p> <p> The compile-time error on with IBM XL (vacpp) on AIX is occuring due to name collision between a macro name (v_type) found on the OS in /usr/include/sys/vnode.h and same named template argument found in the boost header boost/date_time/time_resolution_traits.hpp. </p> <p> Here is a reduced test that demonstrates the problem: </p> <p> t.C ========= <em> From /usr/include/sys/vnode.h enum vtype { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VBAD, VFIFO, VMPC }; typedef enum vtype vtype_t; struct gnode { </em></p> <blockquote> <p> enum vtype gn_type; </p> </blockquote> <p> }; </p> <p> struct vnode { </p> <blockquote> <p> struct gnode *v_gnode; </p> </blockquote> <p> }; </p> <p> #define v_type v_gnode-&gt;gn_type </p> <p> template&lt;typename v_type = int&gt; class time_resolution_traits { }; </p> <p> ============== Command: xlC -c t.C Result: "t.C", line 15.21: 1540-0063 (S) The text "-&gt;" is unexpected. </p> <p> Note that this problem is specific to AIX due to this macro used in AIX header. Linux or other operating systems do not appear to exhibit this problem. </p> <p> The solution is to provide a Boost patch file that renames template argument to another name in order to avoid name collision with the system files. </p> ccambly@… https://svn.boost.org/trac10/ticket/4186 https://svn.boost.org/trac10/ticket/4186 Report #4179: time_duration::operator*(int) has no versions for double and int64_t causing implicit truncating them to int32_t Mon, 03 May 2010 02:47:05 GMT Thu, 02 Aug 2018 11:28:58 GMT <p> time_duration::operator*(int) has no versions for double and int64_t causing implicit truncating them to int32_t </p> <pre class="wiki"> std::cout &lt;&lt; boost::posix_time::microseconds(1) * 1e8 &lt;&lt; std::endl; std::cout &lt;&lt; boost::posix_time::microseconds(1) * 1e9 &lt;&lt; std::endl; std::cout &lt;&lt; boost::posix_time::microseconds(1) * 1e10 &lt;&lt; std::endl; std::cout &lt;&lt; boost::posix_time::microseconds(1) * 1e11 &lt;&lt; std::endl; </pre><pre class="wiki">00:01:40 00:16:40 00:23:30.065408 00:20:15.752192 </pre> anonymous https://svn.boost.org/trac10/ticket/4179 https://svn.boost.org/trac10/ticket/4179 Report #4155: function docstring signatures include self argument Tue, 27 Apr 2010 20:41:51 GMT Mon, 14 Jun 2010 14:31:36 GMT <p> boost::python generates Python signatures, but these include a useless (and confusing) arg1 arguments for the class's self. I don't believe that python documentation should generally show this because people know that they are class methods. </p> <p> For example: <a class="ext-link" href="http://www.murrayc.com/temp/glom_1_14_pydoc.html"><span class="icon">​</span>http://www.murrayc.com/temp/glom_1_14_pydoc.html</a> </p> <p> I'm using boost::python 1.40 in Ubuntu Karmic. I can't find any list of what's changed since then. </p> murrayc@… https://svn.boost.org/trac10/ticket/4155 https://svn.boost.org/trac10/ticket/4155 Report #4153: Add symlink support for bjam on Windows Tue, 27 Apr 2010 09:28:53 GMT Fri, 14 Nov 2014 01:31:24 GMT <p> Currently bjam does not supports symlinks under Windows and it does copy the files instead. This is doubling the required disk space for boost libraries (overhead of ~1.4GB). </p> <p> Windows does supports several types of symlinks and hardlinks. </p> <p> The problem is that there are several limitations that require to make a wise decision regarding implementation: </p> <p> NT symlinks are limited to 32 per path so we cannot use them for libraries. </p> <p> Instead we can create hardlinks because they do not have this limitation. </p> <p> Now regarding hardlinks: </p> <ul><li>NTFS is required (not FAT32 support but this shouldn't be a real limitation in 2010). The same limitation would apply if you have FAT32 on Linux. </li><li>Hardlink can be created using two options: fsutil hardlink create (XP+, but requires Admin rights), or mklink /H (Vista+, requires 'Create symbolic link' privilege that by default is assigned to Administrators group.) </li></ul><p> I could easily patch symlink.jab file to use mklink or fsutil but I don't know if the above limitation are a blocking issue for accepting the patch. If this is true what would be the requirements for adding this feature to bjam? </p> <p> I'm not sure if I can check the current partition type and privileges using jam but I could easily check if mklink fails and fallback to copy. </p> Sorin Sbarnea <sorin.sbarnea@…> https://svn.boost.org/trac10/ticket/4153 https://svn.boost.org/trac10/ticket/4153 Report #4151: option_description::option_description(3 args) is exception-unsafe Mon, 26 Apr 2010 06:01:09 GMT Mon, 26 Apr 2010 06:26:42 GMT <p> Given the code in libs/program_options/src/options_description.cpp: </p> <pre class="wiki">option_description:: option_description(const char* name, const value_semantic* s, const char* description) : m_description(description), m_value_semantic(s) { this-&gt;set_name(name); } </pre><p> s leaks in case if initialization of m_description throws. </p> <p> The simplest cure is to make option::description::m_value_semantic member to be before all other members. </p> anonymous https://svn.boost.org/trac10/ticket/4151 https://svn.boost.org/trac10/ticket/4151 Report #4150: bool_switch() is exception-unsafe Sun, 25 Apr 2010 18:07:26 GMT Sun, 25 Apr 2010 18:07:26 GMT <p> bool_switch() function leaks memory if typed_value::default_value() throws exception </p> anonymous https://svn.boost.org/trac10/ticket/4150 https://svn.boost.org/trac10/ticket/4150 Report #4148: bootstrap.bat generates project-config.jam file as Unicode (UTF-16) Sat, 24 Apr 2010 20:07:51 GMT Thu, 31 Mar 2011 00:57:51 GMT <p> On modern Windows (that is using Unicode console by default) the bootstrap.bat generates project-config.jam file as Unicode (UTF-16). </p> <p> Boost is not able to read this file and is writing: project-config.jam:1: syntax error at EOF </p> <p> Solution is to modify bootstrap.bat to force the generation of ASCII file instead of Unicode: </p> <p> Old line: ECHO using %toolset% ; &gt; project-config.jam </p> <p> New line: cmd /a /c ECHO using %toolset% ; &gt; project-config.jam </p> <p> This small change will force the usage of ANSI output. </p> <p> Reference: <a class="ext-link" href="http://www.netikka.net/tsneti/info/tscmd028.htm#ansivsunicode"><span class="icon">​</span>http://www.netikka.net/tsneti/info/tscmd028.htm#ansivsunicode</a> cmd /a /c echo using %toolset% ; &gt; project-config.jam </p> Sorin Sbarnea <sorin.sbarnea@…> https://svn.boost.org/trac10/ticket/4148 https://svn.boost.org/trac10/ticket/4148 Report #4147: Use target-os instead of os in Jamfiles Sat, 24 Apr 2010 18:29:02 GMT Mon, 07 Jun 2010 09:50:21 GMT <p> In many of the Jamfiles in Boost, the "os" property is used to add libraries and defines appropriate to the target operating system. But the "os" property doesn't give the target operating system; it gives the build operating system. The "target-os" property gives the target operating system. So these Jamfiles do the wrong thing when cross-compiling. </p> <p> According to Vladimir Prus on the Boost-build mailing list: </p> <p> "Yes, in most cases 'target-os' should be used. Please file bugs for libraries that use 'os'." </p> <p> The full list of Boost libraries that appear to have this problem is: </p> <p> asio iostreams thread </p> <p> I generated this list by doing "grep 'import os'" and filtering out the python files, so it may not be all that accurate. </p> Steve Soule <sts11dbxr@…> https://svn.boost.org/trac10/ticket/4147 https://svn.boost.org/trac10/ticket/4147 Report #4144: boost::program_options::parse_enviornment lacks allow_unregistered Sat, 24 Apr 2010 04:47:28 GMT Sat, 24 Apr 2010 04:47:28 GMT <p> allow_unregistered should be an option for the parse_environment parser. </p> <p> Given a suite of tools that share some but not all options, parse_environment forces all programs to register all possible options. </p> <p> Given a suite of tools progb and progc such that: </p> <p> progb --opta --optb progc --opta --optc </p> <p> are valid options to parse, using parse_environment(desc, "PREFIX_") will only work for PREFIX_OPTA. If PREFIX_OPTB or PREFIX_OPTC are set the other program will fail. </p> dan@… https://svn.boost.org/trac10/ticket/4144 https://svn.boost.org/trac10/ticket/4144 Report #4142: Option names should be constructible from strings Thu, 22 Apr 2010 22:33:13 GMT Sat, 01 Oct 2011 13:05:15 GMT <p> The constructor and set_name methods of option_description take only const char pointers and not strings. (Likewise for the option_description_easy_init operator().) </p> <p> Currently code such as the below fails to compile </p> <pre class="wiki">std::string help="help"; po::options_description desc("Allowed options"); desc.add_options() (HELP, "produce help message"); </pre><p> We use strings for easy reuse them when checking the variable map of parsed options. </p> <p> This came up on the dev list last month, and Vladimir said he'd look into why overloads for strings didn't already exist.(<a class="ext-link" href="http://lists.boost.org/Archives/boost/2010/03/162646.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2010/03/162646.php</a>) I assume you haven't had time, so here's a more persistent reminder. </p> afoglia@… https://svn.boost.org/trac10/ticket/4142 https://svn.boost.org/trac10/ticket/4142 Report #4133: std::logic_error as a base class for program_options::error Wed, 21 Apr 2010 13:15:21 GMT Tue, 28 Jun 2011 14:39:10 GMT <p> "19.1 Exception classes </p> <p> 1 The Standard C + + library provides classes to be used to report certain errors (17.4.4.8) in C + + programs. In the error model reflected in these classes, errors are divided into two broad categories: logic errors and runtime errors. </p> <p> 2 The distinguishing characteristic of logic errors is that they are due to errors in the internal logic of the pro- gram. In theory, they are preventable. </p> <p> 3 By contrast, runtime errors are due to events beyond the scope of the program. They cannot be easily pre- dicted in advance. The header &lt;stdexcept&gt; defines several types of predefined exceptions for reporting errors in a C + + program. These exceptions are related by inheritance." </p> <p> From what POV po::unknown_option is 'due to errors in the internal logic of the program'? All po:: errors should be separated into two groups (runtime and logic) or std::exception should be used as a base class. </p> anonymous https://svn.boost.org/trac10/ticket/4133 https://svn.boost.org/trac10/ticket/4133 Report #4125: Boost.Python should use macros to access members of PyMethodObject Tue, 20 Apr 2010 17:40:51 GMT Thu, 23 Dec 2010 13:44:59 GMT <p> In libs/python/src/wrapper.cpp, the members of PyMethodObject are accessed directly: </p> <pre class="wiki"> ((PyMethodObject*)m.get())-&gt;im_self ((PyMethodObject*)m.get())-&gt;im_func </pre><p> These accesses are not documented in the python API. I suggest to use the following macros instead, which have been existing since python 1.6 at least: </p> <pre class="wiki"> PyMethod_GET_SELF(m.get()) PyMethod_GET_FUNCTION(m.get()) </pre><p> When using CPython, these macros expand to exactly the same code. </p> <p> The goal is to allow other implementations of python, like PyPy, to provide alternate compatible implementation of these macros, and thus be able to load modules compiled with Boost.Python. </p> Amaury Forgeot d'Arc <amauryfa@…> https://svn.boost.org/trac10/ticket/4125 https://svn.boost.org/trac10/ticket/4125 Report #4111: Support for windmc tool Sun, 18 Apr 2010 09:20:32 GMT Sat, 05 Apr 2014 02:46:29 GMT <p> It would be good if Boost.Build recognized the windmc tool that is available for MinGW and Cygwin toolsets. The documentation mentions<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> the mc-compiler feature that is supposed to alleviate the problem, but apparently this option doesn't work. </p> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> <a href="http://www.boost.org/doc/tools/build/doc/html/bbv2/reference/tools.html">http://www.boost.org/doc/tools/build/doc/html/bbv2/reference/tools.html</a> </p> Andrey Semashev https://svn.boost.org/trac10/ticket/4111 https://svn.boost.org/trac10/ticket/4111 Report #4097: limited support for detecting platform Tue, 13 Apr 2010 18:15:05 GMT Wed, 12 Jun 2013 21:36:59 GMT <p> I some assembler code is required by a library - boost.build has some limited support to detect platform features. For instance it is necessary to know for which architecture the lib should be build. The builtin properties &lt;architecture&gt; and &lt;instruction-set&gt; are optional properties (so a developer can not rely on it). Additinaly the binary format has to be known. Suggestion: new builtin property &lt;linkage&gt; with values like elf, windowspe, mach-o. </p> k-oli@… https://svn.boost.org/trac10/ticket/4097 https://svn.boost.org/trac10/ticket/4097 Report #4068: Borland also needs private/public workaround in boost::exception Mon, 05 Apr 2010 14:21:26 GMT Sat, 30 Jul 2011 22:39:37 GMT <p> <a class="missing wiki">Borland/CodeGear</a> currently won't compile boost::exception, because it cannot deal with the friend declarations of exception_detail::set_info, inside the boost::exception class definition. So please consider applying the attached patch. It leaves the data of boost::exception public, when <code>__BORLANDC__&lt;=0x621</code>, just like you did for other compilers. </p> <p> Note: I have no idea whether the workaround is still needed when <code>__BORLANDC__&gt;0x621</code>. It's just that I only tested <a class="missing wiki">Embarcadero/CodeGear</a> C++ 6.21. But older Borland versions certainly have the same problem. For example, <a href="http://www.boost.org/development/tests/trunk/output/siliconman-boost-bin-v2-libs-exception-test-all_hpp_test-test-borland-5-9-3-debug.html">http://www.boost.org/development/tests/trunk/output/siliconman-boost-bin-v2-libs-exception-test-all_hpp_test-test-borland-5-9-3-debug.html</a> says: </p> <pre class="wiki">..\libs\exception\test\all_hpp_test.cpp: Error E2401 ..\boost/exception/exception.hpp 228: Invalid template argument list Error E2401 ..\boost/exception/exception.hpp 231: Invalid template argument list Error E2401 ..\boost/exception/exception.hpp 234: Invalid template argument list Error E2401 ..\boost/exception/exception.hpp 237: Invalid template argument list Error E2109 ..\boost/exception/exception.hpp 337: Not an allowed type Error E2228 ..\boost/exception/exception.hpp 337: Too many error or warning messages *** 6 errors in Compile *** </pre> niels_dekker https://svn.boost.org/trac10/ticket/4068 https://svn.boost.org/trac10/ticket/4068 Report #4064: std::bad_cast should be thrown with BOOST_THROW_EXCEPTION Sun, 04 Apr 2010 10:33:25 GMT Sat, 06 Nov 2010 08:11:07 GMT <p> Also, other try/catch/throw statements should be put into appropriate #ifndef blocks. </p> <p> Reported by Thomas Mathys. </p> Andreas Huber https://svn.boost.org/trac10/ticket/4064 https://svn.boost.org/trac10/ticket/4064 Report #4063: Add debugging support Sun, 04 Apr 2010 09:48:56 GMT Sat, 06 Nov 2010 08:09:26 GMT <p> See &lt;<a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.user/52305"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.user/52305</a>&gt; </p> Andreas Huber https://svn.boost.org/trac10/ticket/4063 https://svn.boost.org/trac10/ticket/4063 Report #4062: Write a FAQ item on why state constructors do not have access to event data Sun, 04 Apr 2010 09:33:16 GMT Sun, 15 Dec 2013 14:42:02 GMT <p> The following techniques should be mentioned: </p> <ul><li>transition actions &amp; store data in an outer state </li><li>repost in transition action &amp; react in an in-state reaction </li><li>triggering_event </li></ul> Andreas Huber https://svn.boost.org/trac10/ticket/4062 https://svn.boost.org/trac10/ticket/4062 Report #4057: Patch to allow posix_time::ptime to have boost::gregorian::days overloaded operators Fri, 02 Apr 2010 03:53:09 GMT Thu, 02 Dec 2010 08:44:08 GMT <p> Within boost/date_time/posix_time/date_duration_operators.hpp, there are overloaded operators for months and years, but not days. I found out this was missing while trying to use ptime for some things. I wanted to contribute a patch. </p> <p> The patch will allow operators +, -, +=, -= for gregorian days. </p> <p> I am using gentoo's dev-libs/boost-1.42 at this time. My apologies if I'm out of date. </p> <p> Please apply my patch directly to the file. Again, my apologies if I'm not complying with some format. I don't often contribute patches to projects. </p> adam.preble@… https://svn.boost.org/trac10/ticket/4057 https://svn.boost.org/trac10/ticket/4057 Report #4045: MultiArray implementation from base, extents, strides Thu, 25 Mar 2010 14:38:28 GMT Thu, 25 Mar 2010 19:42:21 GMT <p> It would be useful to have a multi_array_ref constructor or some other <a class="missing wiki">MultiArray</a> implementation that can accept explicit stride information rather than storage order information. The former is more flexible and can accomplish things the latter cannot (see example below). </p> <hr /> <p> I sent the following question to boost-users (<a class="ext-link" href="http://lists.boost.org/boost-users/2010/03/57634.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2010/03/57634.php</a>): </p> <p> I'd like to obtain an N-dimensional <a class="missing wiki">MultiArray</a> implementation given a base pointer, N extents, and N strides. My use case requires padding the stride in one dimension in a way seemingly not obtainable taking views of the usual boost::multi_array_ref. </p> <p> Code like the following would be ideal </p> <pre class="wiki"> boost::array&lt;std::size_t,3&gt; extents = { 2, 3, 4 }; boost::array&lt;std::size_t,3&gt; strides = { 1, 2, 7 }; // Note 7 not 6 boost::scoped_array&lt;int&gt; raw(new int[extents[2]*strides[2]]); using boost::detail::multi_array::multi_array_view; multi_array_view&lt;int,3&gt; a(raw.get(), extents, strides); </pre><p> except that the appropriate constructor in multi_array_view is private (boost/multi_array/view.hpp:442). boost::detail::multi_array::sub_array would also be ideal if it's constructor was accessible (boost/multi_array/subarray.hpp:370). I can make either accessible by #defining BOOST_NO_MEMBER_TEMPLATE_FRIENDS, but that's evil. </p> <p> Am I missing something in Boost.<a class="missing wiki">MultiArray</a>? Or is there no publicly accessible way to provide a custom stride list? </p> Rhys Ulerich <rhys.ulerich@…> https://svn.boost.org/trac10/ticket/4045 https://svn.boost.org/trac10/ticket/4045 Report #4040: Program Options has issues with options that support multiple tokens when using multiple parsers Wed, 24 Mar 2010 18:23:45 GMT Wed, 24 Mar 2010 18:23:45 GMT <p> If you have an option that allows multiple tokens and give that option at both command line and config file, only the tokens listed on the command line are saved. </p> <p> I fixed this issue by changing: </p> <pre class="wiki"> // If option has final value, skip this assignment if (xm.m_final.count(name)) continue; const option_description&amp; d = desc.find(name, false, false, false); </pre><p> to: </p> <pre class="wiki"> const option_description&amp; d = desc.find(name, false, false, false); // If option has final value, skip this assignment if ((xm.m_final.count(name)) &amp;&amp; (d.semantic()-&gt;max_tokens() &lt;= 1)) continue; </pre><p> in boost::program_options::store() function in the file boost/libs/program_options/src/variables_map.cpp. </p> Devin Crumb <dcrumb@…> https://svn.boost.org/trac10/ticket/4040 https://svn.boost.org/trac10/ticket/4040 Report #4037: Create is_multi_array and is_const_multi_array type trait Tue, 23 Mar 2010 15:34:44 GMT Tue, 23 Mar 2010 15:34:44 GMT <p> Please consider creating Boost.<a class="missing wiki">TypeTraits</a>-like is_multi_array and is_const_multi_array. It seems that the current concept checks are not usable for SFINAE purposes, e.g. using the Enable = void boost::enable_if trick. </p> <p> Arises from discussions about getting <a class="missing wiki">MultiArray</a> plugged into uBlas: <a class="ext-link" href="http://lists.boost.org/MailArchives/ublas/2010/03/4107.php"><span class="icon">​</span>http://lists.boost.org/MailArchives/ublas/2010/03/4107.php</a> </p> Rhys Ulerich <rhys.ulerich@…> https://svn.boost.org/trac10/ticket/4037 https://svn.boost.org/trac10/ticket/4037 Report #4035: Milliseconds separated by other char than "." cannot be parsed by date_time_io Tue, 23 Mar 2010 11:29:53 GMT Tue, 23 Mar 2010 11:29:53 GMT <p> We have input data in the form of: 11:16:27:000 representing hour:minutes:seconds:milliseconds </p> <p> Currently, there seems to be no way of defining a format string to parse this. "%f" always expects a dot character starting the substring. </p> stefan.moebius@… https://svn.boost.org/trac10/ticket/4035 https://svn.boost.org/trac10/ticket/4035 Report #4033: optimized matrix products Mon, 22 Mar 2010 21:38:27 GMT Mon, 29 Mar 2010 06:58:56 GMT <p> proposal from Jörn Ungermann: </p> <p> <strong>Abstract</strong> </p> <p> The (lacking) performance of sparse-matrix products was quite often noted on this list. Currently there are several functions which implement matrix products. Each is efficient under certain conditions only and some of them are not even documented. I think it important for users to have one (near-)optimal function only. The attached file contains an improved axpy_prod that matches the performance of "prod", "axpy_prod" and "sparse_prod" and is thereby optimal for all matrix types. </p> <p> <strong>Details</strong> </p> <p> The optimal choice of kernel for a matrix product depends on the properties of all involved matrices. The current implementations specialize only on the type of target matrix. By also determining the kernel depending on the source matrices, one can choose the most efficient kernel. My aim was to create a single function to match the performance of prod, axpy_prod and sparse_prod for all combinations of compressed_matrix/matrix and column/row-majority. The other matrix types should also be handled efficiently by my product, too, but I did check it only spuriously, as it should be obvious that those types are more suited for matrix setup, not for actual calculation. My axpy_prod implementation (called axpy_prod2 in the attached file) does not offer support for the undocumented triangular_expression stuff contained in the original axpy_prod, which however seems to be buggy in the current code for dense matrices. The kernels are largely based on existing kernels with one or two new ones being thrown in. They are as abstract as possible to handle arbitrary expressions efficiently. Specializing, e.g. directly on compressed_matrix would give another very significant performance boost, but also many more additional kernels, possibly more than could be maintained, especially as the transposedness might have to be handled explicitly, too. </p> <p> It would be very nice, if someone could rewrite prod/prec_prod to handle matrix products in the same way as my axpy_prod2 does, but I did not look deep enough into the expression-templates to do this myself or to even know if this were possible. </p> <p> In fact, I'd propose to have two sets of interfaces: </p> <p> 1) One convenient one, possibly compromising efficiency <br /> 2) One modeled closely after C-BLAS, delivering utmost efficiency. </p> <p> The latter one could then be *very easily* overloaded by the numeric bindings for dense matrices. I added a possible generic implementation for a gemm call that could be trivially overloaded for dense matrices and forwarded to, e.g., ATLAS numeric bindings. </p> <p> If one could achieve the same efficiency and automatic (i.e. by including a header) coupling to numeric bindings using only *one* interface, I'd prefer that naturally. However currently, we have not just two, but too many product functions (prod, prec_prod, axpy_prod, sparse_prod, opb_prod, block_prod). </p> <p> The following table gives the result for all 64 combinations of compressed_matrix/matrix and row/column-majorities for the three involved in this case 2000x2000 matrices. </p> <p> com_rm is a compressed_matrix of row_major type. <br /> den_cm is a matrix of column_major type. <br /> The  4th column indicates the used kernel. <br /> The  5th column gives the runtime for axpy_prod2  ( clock()/1000 ) <br /> The  6th column gives the runtime for sparse_prod ( clock()/1000 ) <br /> The  7th column gives the runtime for axpy_prod   ( clock()/1000 ) <br /> The  8th column gives the runtime for prod        ( clock()/1000 ) <br /> The 10th column gives the speedup of axpy_prod2 compared to sparse_prod. <br /> The 11th column gives the speedup of axpy_prod2 compared to axpy_prod. <br /> The 12th column gives the speedup of axpy_prod2 compared to prod. </p> <p> Larger matrix sizes result in prohibitive runtimes for the "slow" products, but can be used to analyse pure-sparse products. </p> <p> The runtime shall be taken only qualitatively. </p> <p> One can see that the only cases where the new implementation is slower are of relatively small runtime, so it may be negligible. sparse_prod uses an optimization that is very efficient if the target matrix has few off-diagonal elements, but is very inefficient if it does. The results will therefore vary depending on the test matrices. </p> <p> It is also obvious to see, why some people complain about product performance, as especially axpy_prod and prod are sometimes ridiculously slow for sparse matrices and sparse_prod does not seem to be documented in the special products section. My favorite case is "com_cm, com_cm, den_rm" one, which actually occurred in the diagnostics part of our application and was the reason why we started looking into this topic. </p> Gunter https://svn.boost.org/trac10/ticket/4033 https://svn.boost.org/trac10/ticket/4033 Report #4028: fusion::begin and fusion::end lead to problems with ADL-based begin and end functions for ranges Fri, 19 Mar 2010 11:05:17 GMT Tue, 02 Jul 2013 11:56:21 GMT <p> In C++0x, begin and end for ranges (that extract the beginning iterator and the past-the-end one, respectively) are to be found through ADL. This causes problems when fusion is an associated namespace (as for example in the case <code> iterator_range&lt; some_iterator&lt; fusion::vector&lt;&gt; &gt; &gt; </code>), since the begin and end of the fusion namespace will be considered by ADL, and that results in an error because a range is not a fusion sequence. </p> <p> I see two (three) solutions:<br /> </p> <ul><li>Mask fusion::begin and fusion::end with SFINAE so that they are only available if the argument is a fusion sequence. That means however that we can't have a fusion sequence that is at the same time a range, even though this could have some uses.<br /> </li><li>Rename fusion::begin and fusion::end to something else.<br /> </li></ul><p> (- Ask the standard people to reconsider) </p> Mathias Gaunard https://svn.boost.org/trac10/ticket/4028 https://svn.boost.org/trac10/ticket/4028 Report #4011: Strange bug may be associated with rounded_transc_opp policy Mon, 15 Mar 2010 19:54:19 GMT Fri, 04 Jun 2010 07:35:22 GMT <p> When I evaluate the following expression: a = Interval(1.0, 3.0)<br /> exp( a * log(0.001) )<br /> </p> <p> I receive the result [nan ~ nan] when I select the rounded_transc_opp policy. However, if I select the rounded_transc_exact all goes well and I receive the expected result: [1E-9 ~ 0.001] </p> <p> If I select the rounded_transc_opp policy and evaluate the expression:<br /> exp( a * log(0.0001) ) all works well and I receive the expected result: [1E-12 ~ 0.0001] also works well for:<br /> exp( a * log(0.0011) ) but not with:<br /> exp( a * log(0.00101) ) </p> <p> I hope that someone can look at this problem, since this is really a very strange situation. </p> <p> Keep up with this excellent work and best regards... </p> <p> Vitor </p> Vitor Vieira Lopes <vitor.lopes@…> https://svn.boost.org/trac10/ticket/4011 https://svn.boost.org/trac10/ticket/4011 Report #3996: Enable use of BOOST_FOREACH over const-ref of noncopyable ptr_containers Wed, 10 Mar 2010 20:24:04 GMT Fri, 20 Jul 2012 19:32:45 GMT <p> I have encountered an error about allocating abstract type, with the following code: </p> <pre class="wiki">#include "boost/ptr_container/ptr_vector.hpp" #include "boost/foreach.hpp" struct S { virtual void f() const = 0; }; typedef boost::ptr_vector&lt;S&gt; ptr_vector; void f(ptr_vector const&amp; v) { BOOST_FOREACH(S const&amp; s, v) s.f(); } </pre><p> And I found this is a known issue: <a href="http://www.boost.org/doc/libs/1_42_0/doc/html/foreach/extensibility.html#id862475">Boost.Foreach &gt; Extensibility</a> </p> <p> Then I thought that boost::foreach::is_noncopyable&lt;&gt; should be specialized for ptr_containers of which value_type is abstruct. Then I put the following: </p> <pre class="wiki">namespace boost { namespace foreach { template&lt;typename T, typename A, typenale CA&gt; struct is_noncopyable&lt;ptr_vector&lt;T,A,CA&gt; &gt; : is_abstract&lt;T&gt; {}; }} </pre><p> ... and the error disappeared. </p> <p> After that, since ptr_container is designed to be an alternative of the standard containers for the case of the value is non-copyable, I thought this is a wide problem worth making a patch. </p> <p> The patch looks better than the above workaround in some points: </p> <ul><li>fixes the problem for all ptr_containers at once </li><li>also supports types marked by boost::noncopyable </li><li>keeps the container copyable if view_clone_allocator is used </li></ul><p> The patch also includes some test cases I actually used, while I have no idea how to integrate it into boost test infrastructure. </p> Kazutoshi Satoda <k_satoda@…> https://svn.boost.org/trac10/ticket/3996 https://svn.boost.org/trac10/ticket/3996 Report #3993: target-os=linux should imply threadapi=posix Tue, 09 Mar 2010 21:14:01 GMT Mon, 07 Jun 2010 09:27:58 GMT <p> Trying to do crosscompile from windows host to linux target results in windows.h included in Boost.Thread. Should default to posix threadapi in this case. </p> Vladimir Prus https://svn.boost.org/trac10/ticket/3993 https://svn.boost.org/trac10/ticket/3993 Report #3982: mpl::at documentation out of sync with code Sat, 06 Mar 2010 11:03:41 GMT Mon, 07 Mar 2016 19:26:50 GMT <p> Documentation of mpl::at indicates that it can take either 2 or 3 template parameters, but in fact only takes just 2. The documentation indicates a third template parameter to forward a default if lookup fails to find a match. This option does not exist. </p> <p> Code or Documentation should be amended. If there will be no 3 template parameter option, the following would be nice to have in the documentation, as how to achieve a default when no match is found: </p> <p> typename boost::mpl::eval_if&lt; </p> <blockquote> <p> typename boost::mpl::has_key&lt; Map, Key &gt;::type </p> </blockquote> <blockquote> <p> , boost::mpl::at&lt; Map, Key &gt; , boost::mpl::identity&lt; Default &gt; </p> <blockquote class="citation"> <p> ::type </p> </blockquote> </blockquote> manfred.doudar@… https://svn.boost.org/trac10/ticket/3982 https://svn.boost.org/trac10/ticket/3982 Report #3967: Parsing dates using date_input_facet accepts wrong input Mon, 01 Mar 2010 13:17:41 GMT Sat, 08 Jun 2013 19:41:16 GMT <p> Hi! </p> <p> I got no answer on the ML, but I consider this a bug. With the code below I try to automagically determine the date format found in input files. I'd expect the code below to find the date format "%d.%m.%Y" for "05.02.2008", but I got surprised by obtaining "%m/%d/%Y". It seems like date accepts '.' where I said "expect '/'", so I think this should be changed. </p> <p> #include &lt;boost/assign/list_of.hpp&gt; </p> <p> #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;boost/date_time/gregorian/gregorian.hpp&gt; #include &lt;boost/date_time/local_time/local_time.hpp&gt; #include &lt;boost/foreach.hpp&gt; #include &lt;boost/algorithm/string.hpp&gt; </p> <p> #include &lt;string&gt; #include &lt;list&gt; </p> <p> inline std::string determine_date_format(std::string const &amp; s) { </p> <blockquote> <p> using namespace boost::assign; using namespace boost::gregorian; </p> </blockquote> <blockquote> <p> std::list&lt;std::string&gt; possible_formats = <em> TODO: add others here! </em></p> <blockquote> <p> list_of ("%Y-%m-%d")("%Y/%m/%d")("%m/%d/%Y")("%d.%m.%Y"); </p> </blockquote> </blockquote> <blockquote> <p> bool inform_user = false; </p> </blockquote> <blockquote> <p> BOOST_FOREACH(std::string const &amp; format, possible_formats) { </p> <blockquote> <p> if (inform_user) { </p> <blockquote> <p> std::cout &lt;&lt; "Trying format '" &lt;&lt; format &lt;&lt; "' ..." &lt;&lt; std::endl; </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> try { </p> <blockquote> <p> date_input_facet * input_facet = </p> <blockquote> <p> new date_input_facet(format.c_str()); </p> </blockquote> <p> std::istringstream iss(s); iss.imbue(std::locale(iss.getloc(), input_facet)); date d(not_a_date_time); </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> iss &gt;&gt; d; if (!iss.fail() &amp;&amp; (!d.is_not_a_date())) { </p> <blockquote> <p> return format; </p> </blockquote> <p> } </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> std::cout &lt;&lt; "WARNING: date format '" &lt;&lt; format </p> <blockquote> <p> &lt;&lt; "' does not match '" &lt;&lt; s &lt;&lt; "'." &lt;&lt; std::endl; </p> </blockquote> <p> inform_user = true; </p> </blockquote> <p> } catch(...) { } </p> </blockquote> <p> } </p> </blockquote> <blockquote> <p> std::cout &lt;&lt; "WARNING: date format not recognized. " </p> <blockquote> <p> &lt;&lt; "Please reconfigure your measurement equipment " &lt;&lt; "to ISO standard output!" &lt;&lt; std::endl; </p> </blockquote> </blockquote> <blockquote> <p> return ""; </p> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> std::string the_date = "05.02.2008"; std::string format = determine_date_format(the_date); std::cout &lt;&lt; the_date &lt;&lt; " has date-time-format " </p> <blockquote> <p> &lt;&lt; format &lt;&lt; std::endl; </p> </blockquote> <p> return 0; </p> </blockquote> <p> } </p> anonymous https://svn.boost.org/trac10/ticket/3967 https://svn.boost.org/trac10/ticket/3967 Report #3965: missing functions last_access_time() and last_status_change_time() Sun, 28 Feb 2010 05:35:24 GMT Fri, 20 Apr 2012 13:03:10 GMT <p> In Boost.Filesystem I can find a function: </p> <p> template &lt;class Path&gt; std::time_t last_write_time(const Path&amp; p); </p> <p> which is corresponding to st_mtime (last modification time) of the stat structure. Within the stat structure, their are also st_atime and st_ctime defined, but there are no corresponding functions. Is there a special reason for that? Couldn't they be added? </p> <p> template &lt;class Path&gt; std::time_t last_access_time(const Path&amp; p); template &lt;class Path&gt; std::time_t last_status_change_time(const Path&amp; p); </p> <p> Cheers, Sascha </p> Sascha Ochsenknecht https://svn.boost.org/trac10/ticket/3965 https://svn.boost.org/trac10/ticket/3965 Report #3954: fusion algorithms must be overloaded for const and non-const arguments Tue, 23 Feb 2010 08:38:32 GMT Tue, 23 Feb 2010 08:38:53 GMT <p> Several fusion algorithms (e.g. pop_front, reverse) take their arguments by const reference unconditionally. This is inconsistent with the result_of templates for these algorithms which are sensitive to the const-ness of their arguments. For consistency and correctness, all fusion algorithms must have overloads that take their arguments by non-const reference. </p> Eric Niebler https://svn.boost.org/trac10/ticket/3954 https://svn.boost.org/trac10/ticket/3954 Report #3949: filesystem::rename() "does not exist" check is sometimes unwanted Fri, 19 Feb 2010 22:01:03 GMT Fri, 19 Feb 2010 22:01:03 GMT <p> POSIX allows to rename/move a file over another, unlike Windows. Currently, Boost (according to source code) explicitly adds a check against this, using an exists() call. However, sometimes POSIX behavior is desired, to avoid extra remove() call. </p> <p> Moreover, since exist()/remove()/rename() is inherently non-atomic (as are all filesystem operation), this unnecessarily (on POSIX) creates another race-condition point. </p> <p> Request: change rename prototype to rename(from, to, overwrite = false) and adjust code accordingly. If 'overwrite' is false (default) it will work just as now, so the change is fully backward-compatible. If overwrite is 'true', POSIX implementation will just omit its exist() check, while Windows implementation will call remove(to) and catch errors. </p> Paul Pogonyshev <pogonyshev@…> https://svn.boost.org/trac10/ticket/3949 https://svn.boost.org/trac10/ticket/3949 Report #3948: Conflict between concept_check and shared_ptr Fri, 19 Feb 2010 21:49:02 GMT Fri, 19 Feb 2010 21:49:02 GMT <p> Hello, </p> <p> The following code compiled with MSVC 2005 or 2008 : </p> <pre class="wiki">#include &lt;boost/concept_check.hpp&gt; namespace boost { template&lt; typename T &gt; class some_type {}; template&lt; typename T1, typename T2 &gt; bool operator&lt;( const some_type&lt; T1 &gt;&amp;, const some_type&lt; T2 &gt;&amp; ); } class c {}; BOOST_CONCEPT_ASSERT((boost::LessThanComparable&lt; c &gt;)); </pre><p> Produces the following error : </p> <pre class="wiki">1&gt;C:\Users\Mat\Desktop\dev\include\boost/concept_check.hpp(242) : error C2784: 'bool boost::operator &lt;(const boost::some_type&lt;T&gt; &amp;,const boost::some_type&lt;T2&gt; &amp;)' : could not deduce template argument for 'const boost::some_type&lt;T&gt; &amp;' from 'c' 1&gt; ..\..\src\tests\turtle_test\concept_check_test.cpp(19) : see declaration of 'boost::operator &lt;' 1&gt; C:\Users\Mat\Desktop\dev\include\boost/concept_check.hpp(241) : while compiling class template member function 'boost::LessThanComparable&lt;TT&gt;::~LessThanComparable(void)' ... </pre><p> Changing the namespace from boost to anything else (for instance nm) produces the correct error output e.g. : </p> <pre class="wiki">1&gt;C:\Users\Mat\Desktop\dev\include\boost/concept_check.hpp(242) : error C2676: binary '&lt;' : 'c' does not define this operator or a conversion to a type acceptable to the predefined operator 1&gt; C:\Users\Mat\Desktop\dev\include\boost/concept_check.hpp(241) : while compiling class template member function 'boost::LessThanComparable&lt;TT&gt;::~LessThanComparable(void)' ... </pre><p> This use case is actually quite common because for instance in boost::shared_ptr there is such a construct, in the boost namespace of course. Therefore the following code exhibits the same problem : </p> <pre class="wiki">#include &lt;boost/concept_check.hpp&gt; #include &lt;boost/shared_ptr.hpp&gt; class c {}; BOOST_CONCEPT_ASSERT((boost::LessThanComparable&lt; c &gt;)); </pre><p> Maybe enclosing the concept check code into another level of namespace would prove enough to protect from the lookup ? </p> <p> Thank you ! </p> m.champlon@… https://svn.boost.org/trac10/ticket/3948 https://svn.boost.org/trac10/ticket/3948 Report #3943: LSB compliance for ASIO Thu, 18 Feb 2010 01:35:38 GMT Thu, 18 Mar 2010 20:07:41 GMT <p> ASIO uses ioctls which LSB considers unportable. It would be useful if ASIO could instead switch to using alternates like fcntl where possible and degrade gracefully for LSB compliance. </p> Sohail Somani https://svn.boost.org/trac10/ticket/3943 https://svn.boost.org/trac10/ticket/3943 Report #3940: BOOST_SCOPE_EXIT without arguments Wed, 17 Feb 2010 16:19:51 GMT Wed, 23 Nov 2011 12:33:26 GMT <p> Why the following code doesn't work ?? </p> <div class="wiki-code"><div class="code"><pre> <span class="n">BOOST_SCOPE_EXIT</span><span class="p">()</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&quot;Exit&quot;</span><span class="p">);</span> <span class="p">}</span> <span class="n">BOOST_SCOPE_EXIT_END</span> </pre></div></div><p> But this does work: </p> <div class="wiki-code"><div class="code"><pre> <span class="kt">int</span> <span class="n">dummy</span><span class="p">;</span> <span class="n">BOOST_SCOPE_EXIT</span><span class="p">(</span> <span class="p">(</span><span class="n">dummy</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&quot;Exit&quot;</span><span class="p">);</span> <span class="p">}</span> <span class="n">BOOST_SCOPE_EXIT_END</span> </pre></div></div> anonymous https://svn.boost.org/trac10/ticket/3940 https://svn.boost.org/trac10/ticket/3940 Report #3936: [xpressive] stack overflow. Tue, 16 Feb 2010 14:56:20 GMT Wed, 17 Feb 2010 00:06:35 GMT <p> The following simple program fires a stack overflow exception in xpressive. It's seems too simple to be causing such problems. </p> <p> {{{#include "stdafx.h" #include &lt;string&gt; #include &lt;boost/xpressive/xpressive.hpp&gt; using namespace boost::xpressive; </p> <p> int _tmain(int argc, _TCHAR* argv[]) { </p> <blockquote> <p> sregex rx = ~(set='{', '}', ','); sregex rx2 = +rx; </p> </blockquote> <blockquote> <p> std::string s(10000, 'a'); regex_search(s, rx2); </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> }}}} </p> <p> I'm using MSVC 2005. The problem only occurs if the string is large. </p> shewitt.au@… https://svn.boost.org/trac10/ticket/3936 https://svn.boost.org/trac10/ticket/3936 Report #3935: stream<file_sink> does not throw an exception and not set fail/bad bits when file is wrong Tue, 16 Feb 2010 13:28:02 GMT Wed, 05 Nov 2014 04:30:42 GMT <p> I'm trying to write some content to a new file using boost::stream&lt;file_sink&gt; class. Unfortunately errors/failures during opening the file are ignored by boost library. </p> <p> See attached test.cpp file for snippet. </p> <p> Above program is started as non root user and have not access for file /wrong.txt </p> <p> Result is:<br /> mariusz@ppbw:~/boost-1.42$ ./test <br /> boost ver:1_42 <br /> 0 0<br /> nothing thrown<br /> </p> <p> mariusz@ppbw:~/boost-1.42$ ls /<br /> bin dev initrd.img lost+found opt sbin tmp vmlinuz<br /> boot etc initrd.img.old media proc srv usr vmlinuz.old<br /> cdrom home lib mnt root sys var<br /> </p> <p> mariusz@ppbw:~/boost-1.42$ ldd ./test<br /> </p> <blockquote> <p> linux-gate.so.1 =&gt; (0xb7fc4000)<br /> libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0xb7eb0000)<br /> libm.so.6 =&gt; /lib/tls/i686/cmov/libm.so.6 (0xb7e8a000)<br /> libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xb7e6c000)<br /> libc.so.6 =&gt; /lib/tls/i686/cmov/libc.so.6 (0xb7d0e000)<br /> /lib/ld-linux.so.2 (0xb7faa000)<br /> </p> </blockquote> <p> mariusz@ppbw:~/boost-1.42$ <br /> </p> <p> Similar program using std::ofstream works as I expected: </p> <ul><li>console prints: 1 0<br /> </li><li>exception is thrown <br /> </li></ul><p> I made tests using:<br /> boost 1.42<br /> Ubuntu 8.10 intrepid<br /> g++ (Debian 4.3.2-1.1) 4.3.2<br /> </p> zxspeccy.cpp@… https://svn.boost.org/trac10/ticket/3935 https://svn.boost.org/trac10/ticket/3935 Report #3930: More flexible dynamic linking for python module on OS X Sun, 14 Feb 2010 14:38:03 GMT Mon, 29 Jul 2013 15:32:17 GMT <p> See <a class="ext-link" href="http://trac.mapnik.org/ticket/453/"><span class="icon">​</span>http://trac.mapnik.org/ticket/453/</a>. </p> <p> Without these patches to python.jam and darwin.jam, boost.python refused to build with the following error for me on OS X 10.6 (Snow Leopard), even when I set my path to use a version of Python (from Sage) which was compiled with UCS4. With these changes, you can build against both system Python (UCS2) and Sage Python (UCS4). This should probably be incorporated directly into boost, it took me several hours of headaches to figure this out. </p> <pre class="wiki">Undefined symbols: "_PyUnicodeUCS4_FromEncodedObject", referenced from: _encode_string_unaryfunc in builtin_converters.o "_PyUnicodeUCS4_AsWideChar", referenced from: boost::python::converter::(anonymous namespace)::slot_rvalue_from_python&lt;std::basic_string&lt;wchar_t, std::char_traits&lt;wchar_t&gt;, std::allocator&lt;wchar_t&gt; &gt;, boost::python::converter::(anonymous namespace)::wstring_rvalue_from_python&gt;::construct(_object*, boost::python::converter::rvalue_from_python_stage1_data*)in builtin_converters.o ld: symbol(s) not found collect2: ld returned 1 exit status </pre> Cyrus Omar https://svn.boost.org/trac10/ticket/3930 https://svn.boost.org/trac10/ticket/3930 Report #3926: thread_specific_ptr + dlopen library causes a SIGSEGV. Fri, 12 Feb 2010 23:05:31 GMT Thu, 31 Mar 2016 22:13:53 GMT <p> hi, </p> <p> i've discovered that using thread_specific_ptr in shared library dlopened from thread causes a gpf.<br /> please consider following scenario: <br /><br /> spawn thread<br /> dlopen a shared library with thread_specific_ptr<br /> dlclose the library<br /> terminate the thread<br /> <br /> observe the gpf<br /> <br /> </p> <pre class="wiki">Program received signal SIGSEGV, Segmentation fault. 0x00007ffff62b7400 in ?? () (gdb) bt #0 0x00007ffff62b7400 in ?? () #1 0x00007ffff7221f79 in __nptl_deallocate_tsd () at pthread_create.c:154 #2 0x00007ffff722291b in start_thread (arg=&lt;value optimized out&gt;) at pthread_create.c:304 #3 0x00007ffff6f9293d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #4 0x0000000000000000 in ?? () </pre><p> afaics the pthread (user provided) destructor keyed to pthread specific data is called on dlunloaded code.<br /><br /> BR,<br /> Pawel. </p> pluto@… https://svn.boost.org/trac10/ticket/3926 https://svn.boost.org/trac10/ticket/3926 Report #3925: Property tree documentation is seriously out of date Fri, 12 Feb 2010 15:51:21 GMT Fri, 20 Dec 2013 10:47:51 GMT <p> At <a href="http://www.boost.org/doc/libs/1_42_0/doc/html/boost_propertytree/parsers.html">http://www.boost.org/doc/libs/1_42_0/doc/html/boost_propertytree/parsers.html</a>, the end page notes contains stuffs like "[include cmd_line_parser.qbk]", this is unlikely what the author wants. </p> <p> At <a href="http://www.boost.org/doc/libs/1_42_0/doc/html/boost_propertytree/accessing.html">http://www.boost.org/doc/libs/1_42_0/doc/html/boost_propertytree/accessing.html</a>, the 2nd code is like "double pi = boost::lexical_cast&lt;double&gt;(it-&gt;second._ptree_data<span class="underline">());", _ptree_data</span> is just wrong. Same for the last code "pt.<span class="underline">ptree_put_own</span>(3.14f);" </p> <p> I'm pretty sure I could find much more errors like this, someone should take the time to read the documentation accuratly. </p> anonymous https://svn.boost.org/trac10/ticket/3925 https://svn.boost.org/trac10/ticket/3925 Report #3918: MPI std::string serialization Thu, 11 Feb 2010 12:36:59 GMT Tue, 01 Jan 2013 11:09:35 GMT <p> I'm new in MPI and cluster computations. I have 2 machines on gentoo (amd64 and x86), both with openmpi-1.4.1 and boost-1.41.0 . 'Heterogeneous' flags is set. I'm trying to run example at <a href="http://www.boost.org/doc/libs/1_41_0/doc/html/mpi/tutorial.html#mpi.nonblocking">http://www.boost.org/doc/libs/1_41_0/doc/html/mpi/tutorial.html#mpi.nonblocking</a> and it work when i run it in two processes at one machine, but it throws an exception, if i use both (-npernode 1). I didn't fully understand what serialization does, but on separate machine it work with or without it (i'm talking about header boost/serialization/string.hpp), with using both of machines, i always have exception. </p> <p> I don't mark that message as bug, i really think i'm just doing something wrong. </p> Ghost99 <ghost99@…> https://svn.boost.org/trac10/ticket/3918 https://svn.boost.org/trac10/ticket/3918 Report #3904: installing boost 1.42 does not update all include files in the destination directory Fri, 05 Feb 2010 21:49:53 GMT Mon, 07 Jun 2010 09:51:06 GMT <p> Having previously installed boost 1_41_0 on CentOS 5.4 (x86_64 bit), I built and installed boost 1_42_0. Some include files were not updated, because test programs I tried to compile outside the boost 1_42_0 tree would not compile. Once I removed the destination directory /opt/local/boost, and re-installed boost 1_42_0, my test programs did compile. </p> Joe VanAndel <vanandel@…> https://svn.boost.org/trac10/ticket/3904 https://svn.boost.org/trac10/ticket/3904 Report #3880: Program_options -> wostream operator Fri, 29 Jan 2010 22:50:46 GMT Wed, 03 Feb 2010 06:51:27 GMT <p> Program options::options_description has a output operator for std::ostream, but none for std::wostream. </p> jensen.bo@… https://svn.boost.org/trac10/ticket/3880 https://svn.boost.org/trac10/ticket/3880 Report #3877: I don't see any doc for is_lvalue_iterator (and related metafunctions) Fri, 29 Jan 2010 11:42:35 GMT Wed, 21 Nov 2012 19:43:15 GMT <p> subject says it all </p> anonymous https://svn.boost.org/trac10/ticket/3877 https://svn.boost.org/trac10/ticket/3877 Report #3874: [map0 / insert] inserting into map0 does not work without including map10.hpp Fri, 29 Jan 2010 01:02:00 GMT Sat, 05 Jun 2010 20:51:46 GMT <p> The following does not compile on MSVC9: </p> <pre class="wiki">#include &lt;boost/mpl/insert.hpp&gt; #include &lt;boost/mpl/map/map0.hpp&gt; #include &lt;boost/mpl/pair.hpp&gt; typedef boost::mpl::insert&lt; boost::mpl::map0&lt;&gt;, boost::mpl::pair&lt; void, void &gt; &gt;::type map1_type; typedef boost::mpl::insert&lt; map1_type, boost::mpl::pair&lt; int, int &gt; &gt;::type map2_type; int main() { } </pre><p> The compiler output is </p> <pre class="wiki">1&gt;------ Build started: Project: test, Configuration: Debug Win32 ------ 1&gt;Compiling... 1&gt;main.cpp 1&gt;d:\boost_1_41_0\boost\mpl\insert.hpp(32) : error C2903: 'apply' : symbol is neither a class template nor a function template 1&gt; d:\test\main.cpp(13) : see reference to class template instantiation 'boost::mpl::insert&lt;Sequence,Pos_or_T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; Sequence=map1_type, 1&gt; Pos_or_T=boost::mpl::pair&lt;int,int&gt; 1&gt; ] 1&gt;d:\boost_1_41_0\boost\mpl\insert.hpp(32) : error C2039: 'apply' : is not a member of 'boost::mpl::insert_impl&lt;boost::mpl::non_sequence_tag&gt;' 1&gt; d:\boost_1_41_0\boost\mpl\aux_\insert_impl.hpp(64) : see declaration of 'boost::mpl::insert_impl&lt;boost::mpl::non_sequence_tag&gt;' 1&gt;d:\boost_1_41_0\boost\mpl\insert.hpp(32) : error C2955: 'boost::mpl::apply' : use of class template requires template argument list 1&gt; d:\boost_1_41_0\boost\mpl\aux_\preprocessed\plain\apply.hpp(134) : see declaration of 'boost::mpl::apply' 1&gt;d:\boost_1_41_0\boost\mpl\insert.hpp(32) : error C2143: syntax error : missing ',' before '&lt;' 1&gt;d:\test\main.cpp(13) : error C2039: 'type' : is not a member of 'boost::mpl::insert&lt;Sequence,Pos_or_T&gt;' 1&gt; with 1&gt; [ 1&gt; Sequence=map1_type, 1&gt; Pos_or_T=boost::mpl::pair&lt;int,int&gt; 1&gt; ] 1&gt;d:\test\main.cpp(13) : error C2146: syntax error : missing ';' before identifier 'map2_type' 1&gt;d:\test\main.cpp(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;d:\test\main.cpp(13) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1&gt;Build log was saved at "file://d:\test\Debug\BuildLog.htm" 1&gt;test - 8 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </pre><p> A fix (which took me a while to figure out, since the above error message didn't give me any clues) is to include &lt;boost/mpl/map/map10.hpp&gt;. I think either a note should be made in the documentation for insert, the error message should be more helpful (maybe a comment in mpl/insert.hpp line 32???), or the above code should "just work". </p> Jeffrey Hellrung <jhellrung@…> https://svn.boost.org/trac10/ticket/3874 https://svn.boost.org/trac10/ticket/3874 Report #3841: error: Empty path passed to 'make-UNIX' Thu, 14 Jan 2010 17:30:32 GMT Thu, 14 Jan 2010 17:30:32 GMT <p> macos 10.5.7 xcode 3.1.4 compiler: gcc 4.0.1 boost: 1.41.0 bjam 3.1.17 </p> <ol><li>i have installed boost into /usr/local/boost </li><li>compilation succeeded </li><li>bjam was copied to /usr/bin </li><li>but when i try to run bjam in folder on other drive (only Jamroot.jam is in folder, BOOST_ROOT and BOOST_BUILD_PATH variables are set in local environment) to build my project, then i get these errors: </li></ol><p> /usr/local/boost/tools/build/v2/util/path.jam:528: in make-UNIX from module path error: Empty path passed to 'make-UNIX' /usr/local/boost/tools/build/v2/util/path.jam:44: in path.make from module path /usr/local/boost/tools/build/v2/build/targets.jam:395: in find-really from module object(project-target)@39 /usr/local/boost/tools/build/v2/build/targets.jam:428: in object(project-target)@39.find from module object(project-target)@39 /usr/local/boost/tools/build/v2/build-system.jam:666: in load from module build-system /usr/local/boost/tools/build/v2/kernel/modules.jam:283: in import from module modules /usr/local/boost/tools/build/v2/kernel/bootstrap.jam:142: in boost-build from module /usr/local/boost/tools/build/v2/boost-build.jam:8: in module scope from module </p> <p> how can i fix this problem? -- Sergey </p> i509lancome-tm@… https://svn.boost.org/trac10/ticket/3841 https://svn.boost.org/trac10/ticket/3841 Report #3821: [graph] Improved version of transitive_reduction.hpp and documentation for it. Tue, 05 Jan 2010 18:14:40 GMT Mon, 28 Oct 2013 10:19:16 GMT <p> Hi there, </p> <p> in the attached transitive_reduction.tar.bz2 there are the following files: </p> <p> transitive_reduction.hpp -- the actual algorithm </p> <p> transitive_reduction.html -- its documentation, the links are done so, that it *should* work if this file and the figs directory below is placed in libs/graph/doc </p> <p> transitive_reduction_example1.cpp -- in this example a graph is compared to its transitive closure and transitive reduction, which my wife and I computed by hand. </p> <p> transitive_reduction_example2.cpp -- in this example a graph is compared to its transitive closure and transitive reduction, which my wife and I computed by hand. </p> <p> transitive_reduction_test1.cpp -- the silenced example1 for use as a regression test. Returns 0 if everything is all right and 1 if it is not so. </p> <p> transitive_reduction_test2.cpp -- same here. </p> <p> -- these figures are used by the documentation </p> <p> figs/tr_example_graph_1.png figs/tr_example_graph_1_transitive_closure.png figs/tr_example_graph_1_transitive_reduction.png figs/tr_example_graph_2.png figs/tr_example_graph_2_transitive_closure.png figs/tr_example_graph_2_transitive_reduction.png </p> <p> Sorry for not providing a real "patch" or a Jamfile for the test cases, but I simply don't know how to write a Jamfile and refuse to learn "just the next make/cmake/ant/...". </p> <p> Yours sincerely, </p> <p> Eric </p> Eric Böse-Wolf <eric@…> https://svn.boost.org/trac10/ticket/3821 https://svn.boost.org/trac10/ticket/3821 Report #3813: program_options::options_description.add() permits duplicate options Sun, 03 Jan 2010 17:00:42 GMT Fri, 16 Dec 2011 09:23:23 GMT <p> The documentations for options_description.add() says it will through duplicate_variable_error for duplicate short or long options. I have check versions 1.32.0 and 1.41.0, and both permit this code: </p> <pre class="wiki">#include &lt;boost/program_options.hpp&gt; #include &lt;iostream&gt; namespace po = boost::program_options; int main() { po::options_description opts; opts.add_options() ("help", "first --help") ("help", "second --help") ; opts.add_options() ("alpha,a", "first -a") ("apple,a", "second -a") ; std::cout &lt;&lt; opts; return 0; } </pre><p> Producing this output: </p> <pre class="wiki"> --help first --help --help second --help -a [ --alpha ] first -a -a [ --apple ] second -a </pre> Matthew Wesley <weslem-boosttrac@…> https://svn.boost.org/trac10/ticket/3813 https://svn.boost.org/trac10/ticket/3813 Report #3792: Boolean Metafunction for determining whether a type has been registered Wed, 23 Dec 2009 17:40:54 GMT Wed, 23 Dec 2009 17:40:54 GMT <p> The typeof library should have a boolean metafunction which can be used to determine whether a type has been registered or not. This would greatly aid in using typeof in template metaprogramming. </p> Edward Diener <eld@…> https://svn.boost.org/trac10/ticket/3792 https://svn.boost.org/trac10/ticket/3792 Report #3791: incorrect postcondition in documentation Tue, 22 Dec 2009 14:20:40 GMT Tue, 22 Dec 2009 14:20:40 GMT <p> I don't think the following postcondition for "insert" on associative sequences is correct: </p> <p> typedef insert&lt;s,x&gt;::type r; Postcondition: size&lt;r&gt;::value == size&lt;s&gt;::value + 1. </p> <p> if r contains x, size&lt;r&gt;::value == size&lt;s&gt;::value </p> anonymous https://svn.boost.org/trac10/ticket/3791 https://svn.boost.org/trac10/ticket/3791 Report #3790: parameterize SBO size on boost::function Tue, 22 Dec 2009 13:37:05 GMT Tue, 22 Dec 2009 13:37:05 GMT <p> <a class="ext-link" href="http://lists.boost.org/boost-users/2009/12/54250.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2009/12/54250.php</a> </p> <ul><li>It would be really nice to parameterize the SBO size like this: </li></ul><pre class="wiki">template&lt;typename Signature,std::size_t SBOSize=3*sizeof(void*)&gt; class function; </pre><ul><li>Saving that it would be useful to have a constructor to allow you to change the allocator like this: <pre class="wiki"> template&lt;typename Allocator&gt; functionN(const functionN&amp;, Allocator); </pre></li></ul> Christopher Hite https://svn.boost.org/trac10/ticket/3790 https://svn.boost.org/trac10/ticket/3790 Report #3789: boost::object_pool::free() is very slow. Tue, 22 Dec 2009 07:03:36 GMT Fri, 29 Jul 2016 05:17:08 GMT <blockquote> <p> boost::object_pool::free() Design is very bad。The main problem is in : [void * simple_segregated_storage&lt;<a class="missing wiki">SizeType</a>&gt;::find_prev(void * const ptr)] Whenever a user to delete a node, we must traverse to the previous nodes from list head. Means, if we have created 10,000 objects and 9,000 removed from the ground, then when the user to delete the first 9001 objects, he would traverse the list from scratch 9,000 times. </p> </blockquote> Dai Yun <dy95020@…> https://svn.boost.org/trac10/ticket/3789 https://svn.boost.org/trac10/ticket/3789 Report #3786: Incoherent views of various storage order Mon, 21 Dec 2009 06:15:33 GMT Mon, 21 Dec 2009 06:15:33 GMT <p> I have a 256x258 array with only the first 256 lines of interest. The flatten memory block contains then 256 interesting values, 2 craps, 256 interesting values, 2 craps, etc. </p> <p> I want to access each column of the interesting block, then each line. For this I use : </p> <ol><li>a view of the array with limited range in the second dimension </li><li>a view of line-major ordered array reference to the same block of memory, with limited range in the first dimension </li></ol><p> Here is a test code: </p> <div class="wiki-code"><div class="code"><pre><span class="cp">#include</span> <span class="cpf">&lt;algorithm&gt;</span><span class="cp"></span> <span class="cp">#include</span> <span class="cpf">&quot;boost/multi_array.hpp&quot;</span><span class="cp"></span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="p">;</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span> <span class="kt">int</span> <span class="nf">main</span> <span class="p">()</span> <span class="p">{</span> <span class="c1">// Create a 2D array that is 256 x 258</span> <span class="k">typedef</span> <span class="n">multi_array</span><span class="o">&lt;</span><span class="kt">float</span><span class="p">,</span> <span class="mi">2</span><span class="o">&gt;</span> <span class="n">array_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">multi_array_ref</span><span class="o">&lt;</span><span class="kt">float</span><span class="p">,</span> <span class="mi">2</span><span class="o">&gt;</span> <span class="n">ref_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="n">array_type</span><span class="o">::</span><span class="n">array_view</span><span class="o">&lt;</span><span class="mi">2</span><span class="o">&gt;::</span><span class="n">type</span> <span class="n">view_type</span><span class="p">;</span> <span class="n">array</span><span class="o">&lt;</span><span class="kt">size_t</span><span class="p">,</span> <span class="mi">3</span><span class="o">&gt;</span> <span class="n">paddedExt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">256</span><span class="p">,</span><span class="mi">258</span><span class="p">};</span> <span class="n">array_type</span> <span class="n">A</span><span class="p">(</span><span class="n">paddedExt</span><span class="p">);</span> <span class="cm">/*Initialize the whole memory block with -1 */</span> <span class="n">fill</span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">origin</span><span class="p">(),</span> <span class="n">A</span><span class="p">.</span><span class="n">origin</span><span class="p">()</span><span class="o">+</span><span class="n">A</span><span class="p">.</span><span class="n">num_elements</span><span class="p">(),</span><span class="o">-</span><span class="mf">1.0</span><span class="p">);</span> <span class="cm">/*Fill the usefull part of the array by accessing data by column*/</span> <span class="n">view_type</span> <span class="n">B</span> <span class="o">=</span> <span class="n">A</span><span class="p">[</span><span class="n">indices</span><span class="p">[</span><span class="n">range</span><span class="p">()][</span><span class="n">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">256</span><span class="p">)]];</span> <span class="k">for</span><span class="p">(</span><span class="n">view_type</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span><span class="o">=</span><span class="n">B</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span><span class="o">!=</span><span class="n">B</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span><span class="p">(</span><span class="n">view_type</span><span class="o">::</span><span class="n">subarray</span><span class="o">&lt;</span><span class="mi">1</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">::</span><span class="n">iterator</span> <span class="n">j</span><span class="o">=</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span> <span class="n">j</span><span class="o">!=</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span> <span class="o">*</span><span class="n">j</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span> <span class="cm">/*Access usefull data by line*/</span> <span class="n">paddedExt</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">=</span><span class="mi">258</span><span class="p">;</span> <span class="n">paddedExt</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">=</span><span class="mi">256</span><span class="p">;</span> <span class="n">ref_type</span> <span class="n">C</span><span class="p">(</span><span class="n">A</span><span class="p">.</span><span class="n">origin</span><span class="p">(),</span> <span class="n">paddedExt</span><span class="p">,</span> <span class="n">fortran_storage_order</span><span class="p">);</span> <span class="n">view_type</span> <span class="n">D</span> <span class="o">=</span> <span class="n">C</span><span class="p">[</span><span class="n">indices</span><span class="p">[</span><span class="n">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">256</span><span class="p">)][</span><span class="n">range</span><span class="p">()]];</span> <span class="k">for</span><span class="p">(</span><span class="n">view_type</span><span class="o">::</span><span class="n">iterator</span> <span class="n">i</span><span class="o">=</span><span class="n">D</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">i</span><span class="o">!=</span><span class="n">D</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span><span class="p">(</span><span class="n">view_type</span><span class="o">::</span><span class="n">subarray</span><span class="o">&lt;</span><span class="mi">1</span><span class="o">&gt;::</span><span class="n">type</span><span class="o">::</span><span class="n">iterator</span> <span class="n">j</span><span class="o">=</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">begin</span><span class="p">();</span> <span class="n">j</span><span class="o">!=</span><span class="n">i</span><span class="o">-&gt;</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">j</span><span class="p">)</span> <span class="n">output</span><span class="p">(</span><span class="o">*</span><span class="n">j</span><span class="p">);</span> <span class="k">return</span> <span class="n">EXIT_SUCCESS</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><p> This outputs a pretty high number of -1 ! More precisely, we have : </p> <ul><li>256 values </li><li>2 craps, 254 values </li><li>2 values, 2 craps, 252 values </li><li>4 values, 2 craps, 250 values </li><li>etc. </li><li>the last 2*256 good values are not output </li></ul><p> It's like the views have lost their index_bases somewhere on the way. </p> <p> I compiled and run this test under winXP, mingw32, gcc 3.4.5 </p> Mathieu Leocmach <mathieu.leocmach@…> https://svn.boost.org/trac10/ticket/3786 https://svn.boost.org/trac10/ticket/3786 Report #3780: Patch for disabling strict aliasing warnings, changing reinterpret_cast's Sun, 20 Dec 2009 00:10:56 GMT Sun, 20 Dec 2009 00:10:56 GMT <p> Because of the warnings reported by GCC the patch attached treats boost/function/function_base.hpp as a system header which makes GCC be a little less strict. Also, it removes the reliance on reinterpret_cast&lt;&gt; using static_cast&lt;&gt; in places where it can. </p> Dean Michael Berris https://svn.boost.org/trac10/ticket/3780 https://svn.boost.org/trac10/ticket/3780 Report #3779: Warning using less_equal points to bug Sat, 19 Dec 2009 07:18:17 GMT Wed, 25 Apr 2018 09:22:18 GMT <p> Compiling the following metafunction using VC9 gives a warning which suggests an mpl bug: </p> <p> #include &lt;boost/mpl/less_equal.hpp&gt; #include &lt;boost/mpl/long.hpp&gt; #include &lt;boost/integer_traits.hpp&gt; namespace nmspace { struct <a class="missing wiki">ResultTypeIntegerValues</a> </p> <blockquote> <p> { typedef boost::mpl::long_&lt;0L&gt; lzero; typedef boost::mpl::long_&lt;boost::integer_traits&lt;long&gt;::const_min&gt; lmin; typedef boost::mpl::less_equal&lt;lmin,lzero&gt;::type type; }; </p> </blockquote> <p> } </p> <p> with warning: </p> <p> c:\utilities\boost\boost_1_40_0\boost\mpl\aux_\integral_wrapper.hpp(73) : warning C4307: '-' : integral constant overflow 1&gt; c:\utilities\boost\boost_1_40_0\boost\mpl\aux_\preprocessed\plain\less_equal.hpp(60) : see reference to class template instantiation 'boost::mpl::long_&lt;N&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; N=-2147483648 1&gt; ] 1&gt; c:\utilities\boost\boost_1_40_0\boost\mpl\aux_\preprocessed\plain\less_equal.hpp(70) : see reference to class template instantiation 'boost::mpl::less_equal_tag&lt;T&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; T=nmspace::ResultTypeIntegerValues::lmin 1&gt; ] 1&gt; c:\programming\programs\xxx\yyy.h(64) : see reference to class template instantiation 'boost::mpl::less_equal&lt;N1,N2&gt;' being compiled 1&gt; with 1&gt; [ 1&gt; N1=nmspace::ResultTypeIntegerValues::lmin, 1&gt; N2=nmspace::ResultTypeIntegerValues::lzero 1&gt; ] </p> <p> The same warning occurs using Boost 1.41. As Steve Watanabe pointed out the problem looks to be: </p> <p> typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior; </p> <p> which overflows when one is already at the minimal value. It seems mpl has to take into account the minimal value when using prior and probably the maximal value when using next. In any case I see nothing wrong in the code and therefore I do not think an overflow condition should not be taking place. </p> Edward Diener <eld@…> https://svn.boost.org/trac10/ticket/3779 https://svn.boost.org/trac10/ticket/3779 Report #3776: libs/python/src/object/class.cpp treats string constant as char* Fri, 18 Dec 2009 00:29:59 GMT Thu, 23 Dec 2010 13:29:25 GMT <p> gcc gives the following warnings: </p> <p> libs/python/src/object/class.cpp: In function ‘int boost::python::property_init(<a class="missing wiki">PyObject</a>*, <a class="missing wiki">PyObject</a>*, <a class="missing wiki">PyObject</a>*)’: libs/python/src/object/class.cpp:79: warning: deprecated conversion from string constant to ‘char*’ libs/python/src/object/class.cpp:79: warning: deprecated conversion from string constant to ‘char*’ libs/python/src/object/class.cpp:79: warning: deprecated conversion from string constant to ‘char*’ libs/python/src/object/class.cpp:79: warning: deprecated conversion from string constant to ‘char*’ </p> anonymous https://svn.boost.org/trac10/ticket/3776 https://svn.boost.org/trac10/ticket/3776 Report #3769: darwin.jam: <cxxflags> should include framework paths Mon, 14 Dec 2009 08:11:04 GMT Thu, 08 Mar 2012 16:32:59 GMT <p> As -F is used to find include files, &lt;cxxflags&gt; should include -F. See <a class="new ticket" href="https://svn.boost.org/trac10/ticket/3767" title="#3767: Feature Requests: Support for Frameworks on OSX + Qt4 (new)">#3767</a> to see how it is used to work with Qt. </p> Sohail Somani https://svn.boost.org/trac10/ticket/3769 https://svn.boost.org/trac10/ticket/3769 Report #3767: Support for Frameworks on OSX + Qt4 Mon, 14 Dec 2009 04:00:46 GMT Mon, 14 Dec 2009 09:05:02 GMT <p> When using Cocoa with Qt4.5 onwards, we need to use the Qt framework bundles rather than linking to the dynamic libraries. This is because a NIB file needs to be loaded to properly handle menus. </p> <p> I think a new feature qt-cocoa (yes/no) would be enough from the user's point of view. </p> <p> I can provide testing if needed. I tried to add it myself but failed miserably! </p> Sohail Somani https://svn.boost.org/trac10/ticket/3767 https://svn.boost.org/trac10/ticket/3767 Report #3745: Remove deprecated class Thu, 10 Dec 2009 10:51:18 GMT Thu, 10 Dec 2009 10:51:18 GMT <p> According to <a href="http://www.boost.org/doc/libs/1_41_0/libs/tokenizer/char_delimiters_separator.htm">http://www.boost.org/doc/libs/1_41_0/libs/tokenizer/char_delimiters_separator.htm</a> char_delemiters_separator is a deprecated class and wasn't removed because of compatibility. There is no reason to keep going with this compatibility when the char_separator offers the same functionality. Currently it makes you to declare a new type definition for tokenizer&lt;char_separator&lt;char&gt;&gt; instead of using the one from boost. </p> <p> Thank you. </p> anonymous https://svn.boost.org/trac10/ticket/3745 https://svn.boost.org/trac10/ticket/3745 Report #3740: Documentation error in the MPL Reference manual Wed, 09 Dec 2009 00:46:12 GMT Sun, 10 Apr 2011 11:31:09 GMT <p> In the MPL Reference Manual, for the miscellaneous data type void_, the synopsis shows a template class called "is_void". The name of the actual class in the boost/mpl/void.hpp header file is "is_void_". The documentation should be corrected. </p> Edward Diener <eld@…> https://svn.boost.org/trac10/ticket/3740 https://svn.boost.org/trac10/ticket/3740 Report #3738: adding support of other systems of time and converting from each one to other Tue, 08 Dec 2009 23:30:57 GMT Tue, 08 Dec 2009 23:30:57 GMT <p> For ex. I need GPS time system. Short description is available at <a class="ext-link" href="http://leapsecond.com/java/gpsclock.htm"><span class="icon">​</span>http://leapsecond.com/java/gpsclock.htm</a> In gps it is rather convenient to have converting function from gps time in form of weeks cycles days and seconds (see example at site above noted) to UTC time. More information can be obtained from various gps-related sites or you can ask me, I'll help according to my knowledge. Leap second is noted in the library documentation, but really there is not any support. I guess that it is better to make function to set current leap seconds value since it is not predictable. </p> serggzz@… https://svn.boost.org/trac10/ticket/3738 https://svn.boost.org/trac10/ticket/3738 Report #3733: Detect platform to choose the conventional option for help Tue, 08 Dec 2009 15:09:01 GMT Wed, 09 Dec 2009 10:39:14 GMT <p> on POSIX, the --help option is typically used for printing usage information. on Windows, the /? is the typical option for that. </p> <p> It would be cleaner if the user could check with some function whether the &lt;help option&gt; is set or not instead of explicitly checking for the "help" string </p> <pre class="wiki"> if (vm.count("help")) </pre><p> to decide when to print usage information. </p> hicham@… https://svn.boost.org/trac10/ticket/3733 https://svn.boost.org/trac10/ticket/3733 Report #3732: Detect platform to choose delimiter to use for reading options from command line Tue, 08 Dec 2009 15:03:00 GMT Wed, 09 Dec 2009 11:24:07 GMT <p> POSIX systems usually use - or -- as a "delimiter" when reading options from command lines. For e.g. the 'ls' program on a linux system: </p> <pre class="wiki"> ls --help .... -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print octal escapes for nongraphic characters --block-size=SIZE use SIZE-byte blocks --help print this .... </pre><p> Windows usually uses the / character instead, for e.g. for dir: dir /?: Typically, the '/' is the delimiter. </p> <pre class="wiki"> ... /B Uses bare format (no heading information or summary). ... </pre><p> It would be useful to have the library recognize the platform on which it is begin compiled (or even better, the platform being targeted) and use the default for that platform for reading options from the command line. </p> anonymous https://svn.boost.org/trac10/ticket/3732 https://svn.boost.org/trac10/ticket/3732 Report #3728: boost::ublas headers cause multiple warnings with -Wshadow Mon, 07 Dec 2009 22:51:29 GMT Sat, 27 Mar 2010 06:01:34 GMT <p> The headers in boost::ublas often make use of local variables that shadow functions or other local variables. Eliminating these warnings simply requires changing the variable names. </p> marc.schafer@… https://svn.boost.org/trac10/ticket/3728 https://svn.boost.org/trac10/ticket/3728 Report #3720: templated comparison operators Sat, 05 Dec 2009 03:30:44 GMT Sat, 05 Dec 2009 03:30:44 GMT <p> template&lt;class T&gt; inline bool operator == ( optional&lt;T&gt; const&amp; x, optional&lt;T&gt; const&amp; y ) ; </p> <p> and all other comparison operators should be replaced by </p> <p> template&lt;class T,class Y&gt; bool operator==(optional&lt;T&gt; const &amp;,optional&lt;Y&gt; const &amp;); </p> <p> so optionals of different but comparable types can be compared. </p> anonymous https://svn.boost.org/trac10/ticket/3720 https://svn.boost.org/trac10/ticket/3720 Report #3716: Application crash when using Boost.Python in a plug-in DLL for that application Fri, 04 Dec 2009 17:42:53 GMT Tue, 20 Apr 2010 17:57:02 GMT <p> I am developping a DLL for a Win32 application that already host a Python interpreter (Python 2.5.x) which I extend using Boost.Python. </p> <p> As far as Boost.Python is concerned, the sequence of operations (which I can't change) is : </p> <ol><li>App calls Py_Initialize </li></ol><ol start="2"><li>App loads my DLL </li></ol><ol start="3"><li>my DLL extend Python with a "boost module" (such as the "Hello World" example in the documentation </li></ol><ol start="4"><li>App notifies my DLL that it is about to be unloaded </li></ol><ol start="5"><li>App unloads my DLL </li></ol><ol start="6"><li>App calls Py_Finalize... and crash! </li></ol><p> The application doesn't use Boost.Python, and doesn't even share the C run-time (i.e. different heaps). Whether I use static or dynamic linking of Boost.Python doesn't seem relevant in that case. Yes, I know, Boost.Python doc states that Py_Finalize should not be called. But in that case, it IS called after my DLL is unloaded and I can't do anything about it (and I'd like to use Boost.Python in such a scenario). </p> <p> Cause : </p> <p> I manage to pinpoint where it fails from Py_Finalize. At that point, the 'Boost.Python.function' python object (defined in the function_type global variable in libs/python/src/object/function.cpp) is internally referenced by Python (by base class type among other things) and Python eventually tries to access it (at least change its ref count I guess). However, since the DLL is already unloaded, the memory that held the global variable is not mapped anymore. </p> <p> Resolution : </p> <p> Not being a Python expert, I haven't found a way to remove references to that 'Boost.Python.function' when my DLL is notified about being unloaded. I'd be glad to know if there is. However, it was fairly simple to get Python to allocate this object in its own heap, so that it lives as long as the interpreter. Attached is the patch file for that fix. I can't tell though how "clean" or not is copying a complete '<a class="missing wiki">PyTypeObject</a>' structure instance over a somewhat-already-initialized instance from PyObject_New()... but that seems to work. </p> <p> Note that to avoid the crash, I also need to "undef" all function definitions from the boost module with PyObject_DelAttr() (else Py_Finalize accesses them but they're from a heap that was deallocated from memory when the DLL was unloaded). That does not however require any modification to Boost.Python. </p> Emmanuel Giasson <zirconia_@…> https://svn.boost.org/trac10/ticket/3716 https://svn.boost.org/trac10/ticket/3716 Report #3713: no straightforward way to convert fractional number of seconds to time duration Thu, 03 Dec 2009 20:12:46 GMT Wed, 08 Dec 2010 20:48:58 GMT <p> It should be possible to just build a time duration for given number of seconds for double or float parameters. Current best way suggested on IRC is 'milliseconds (1000 * num_seconds)', but it feels like doing extra unneeded work. Besides, this way I need to choose between milli/micro/nano weighing precision loss vs. potential overflow on 32-bit machines. Boost, knowing how many ticks are in a second, could do this better. </p> <p> What I'm actually trying to do is to call timed_wait() on a condition. Currently, I have to </p> <blockquote> <p> condition.timed_wait (lock, milliseconds (1000 * num_seconds)); </p> </blockquote> <p> where as if double was implicitly convertible to time duration I could just </p> <blockquote> <p> condition.timed_wait (lock, num_seconds); </p> </blockquote> <p> which is cleaner and more explicit. </p> Paul Pogonyshev <pogonyshev@…> https://svn.boost.org/trac10/ticket/3713 https://svn.boost.org/trac10/ticket/3713 Report #3710: error incorrect when calling boost::python function via functools.partial Thu, 03 Dec 2009 18:54:50 GMT Thu, 03 Dec 2009 21:14:03 GMT <p> Neal Becker wrote: </p> <blockquote class="citation"> <p> Has anyone noticed that a function created with boost::python using args() to give keyword arguments doesn't seem to work with functools.partial keyword arguments (but does with positional args)? </p> <p> For example, I have this function: </p> <blockquote> <p> class_&lt;boost_uniform_real_wrap&gt; </p> <blockquote> <p> ("uniform_real", "Uniform float distribution", bp::init&lt;rng_t&amp;,double,double&gt;( (bp::arg ("rng"), </p> <blockquote> <p> bp::arg ("min"), bp::arg ("max"))... </p> </blockquote> </blockquote> </blockquote> <p> Then: from functools import partial f = partial (uniform_real, rng=rng1) &lt;&lt; using keyword doesn't work f (1,2) <a class="missing wiki">ArgumentError</a>: Python argument types in </p> <blockquote> <p> uniform_real.<span class="underline">init</span>(uniform_real, int, int) </p> </blockquote> <p> did not match C++ signature: </p> <blockquote> <p> <span class="underline">init</span>(_object*, boost::random::mersenne_twister&lt;unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u&gt; {lvalue} rng, double min, double max) </p> </blockquote> <p> But this works: from functools import partial f = partial (uniform_real, rng1) &lt;&lt; pos arg does work </p> <p> In <a class="changeset" href="https://svn.boost.org/trac10/changeset/27" title="*** empty log message *** ">[27]</a>: f(1,2) Out<a class="changeset" href="https://svn.boost.org/trac10/changeset/27" title="*** empty log message *** ">[27]</a>: uniform_real(1,2) </p> </blockquote> <p> That doesn't work for pure python functions either: </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> def f(x,y,z): return x*100 + y*10 + z </p> </blockquote> </blockquote> </blockquote> <p> ... </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> from functools import partial as p p(f,x=1)(2,3) </p> </blockquote> </blockquote> </blockquote> <p> Traceback (most recent call last): </p> <blockquote> <p> File "&lt;stdin&gt;", line 1, in &lt;module&gt; </p> </blockquote> <p> <a class="missing wiki">TypeError</a>: f() got multiple values for keyword argument 'x' </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> p(f,x=1)(y=2,z=3) </p> </blockquote> </blockquote> </blockquote> <p> 123 </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> p(f,1)(2,3) </p> </blockquote> </blockquote> </blockquote> <p> 123 </p> <p> The error message is misleading for sure. Boost.python is going through a list of overloads and trying them in order; if it runs out of overloads, it says nothing matched. </p> anonymous https://svn.boost.org/trac10/ticket/3710 https://svn.boost.org/trac10/ticket/3710 Report #3699: boost::asio support allocator parameter Mon, 30 Nov 2009 16:00:50 GMT Mon, 30 Nov 2009 16:00:50 GMT <p> Hello </p> <p> boost::asio should support different allocators. If boost::asio supported different allocators, it would be very useful in writing performance code, and would be more C++ compliant. </p> <p> Thanks. </p> anonymous https://svn.boost.org/trac10/ticket/3699 https://svn.boost.org/trac10/ticket/3699 Report #3690: regex depends on pthread library when boost is built with threading=single Sat, 28 Nov 2009 06:19:27 GMT Thu, 03 Dec 2009 18:24:26 GMT <p> regex depends on pthread library when boost is built with threading=single </p> <p> static_mutex.cpp uses the functions pthread_mutex_unlock and pthread_mutex_lock. This creates a dependancy on pthreads which should not exist when compiled with threading=single. </p> <p> This is, in particular, a problem when static linking on AIX. </p> <p> It appears that BOOST_HAS_THREADS is still being set when threading=single is set on the bjam command line. </p> jdccdevel@… https://svn.boost.org/trac10/ticket/3690 https://svn.boost.org/trac10/ticket/3690 Report #3683: Build fails on MacOS Fri, 27 Nov 2009 16:28:30 GMT Sat, 06 Mar 2010 08:37:37 GMT <p> It looks like BB is using some option (-R) that's unknown to the default Mac toolset </p> <pre class="wiki">$ bjam gcc --build-dir=/tmp/build --debug-configuration notice: found boost-build.jam at /Users/dave/src/boost/boost-build.jam notice: loading Boost.Build from /Users/dave/src/boost/tools/build/v2 notice: Searching /etc /Users/dave /Users/dave/src/boost/tools/build/v2 /usr/share/boost-build /Users/dave/src/boost/tools/build/v2/kernel /Users/dave/src/boost/tools/build/v2/util /Users/dave/src/boost/tools/build/v2/build /Users/dave/src/boost/tools/build/v2/tools /Users/dave/src/boost/tools/build/v2/contrib /Users/dave/src/boost/tools/build/v2/. for site-config configuration file site-config.jam . notice: Loading site-config configuration file site-config.jam from /Users/dave/src/boost/tools/build/v2/site-config.jam . notice: Searching /Users/dave /Users/dave/src/boost/tools/build/v2 /usr/share/boost-build /Users/dave/src/boost/tools/build/v2/kernel /Users/dave/src/boost/tools/build/v2/util /Users/dave/src/boost/tools/build/v2/build /Users/dave/src/boost/tools/build/v2/tools /Users/dave/src/boost/tools/build/v2/contrib /Users/dave/src/boost/tools/build/v2/. for user-config configuration file user-config.jam . notice: Loading user-config configuration file user-config.jam from /Users/dave/user-config.jam . docutils-dir= tools-dir= /opt/local/Library/Frameworks/Python.framework/Versions/2.5/bin notice: will use 'g++' for gcc, condition &lt;toolset&gt;gcc-4.2 notice: using gcc libraries :: &lt;toolset&gt;gcc-4.2 :: /opt/local/bin /opt/local/lib /opt/local/lib32 /opt/local/lib64 notice: using gcc archiver :: &lt;toolset&gt;gcc-4.2 :: ar warning: toolset gcc initialization: can not find tool windres warning: initialized from /Users/dave/src/boost/tools/build/v2/build/project.jam:884 notice: using rc compiler :: &lt;toolset&gt;gcc-4.2 :: as notice: will use 'g++' for gcc, condition &lt;toolset&gt;gcc-4.4 notice: using gcc libraries :: &lt;toolset&gt;gcc-4.4 :: /opt/local/bin /opt/local/lib /opt/local/lib32 /opt/local/lib64 notice: using gcc archiver :: &lt;toolset&gt;gcc-4.4 :: ar warning: toolset gcc initialization: can not find tool windres warning: initialized from /Users/dave/src/boost/tools/build/v2/build/project.jam:884 notice: using rc compiler :: &lt;toolset&gt;gcc-4.4 :: as notice: iostreams: using prebuilt zlib notice: iostreams: using prebuilt bzip2 notice: [python-cfg] Configuring python... notice: [python-cfg] Checking interpreter command "python"... notice: [python-cfg] running command '"python" -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2&gt;&amp;1' notice: [python-cfg] ...requested configuration matched! notice: [python-cfg] Details of this Python configuration: notice: [python-cfg] interpreter command: "python" notice: [python-cfg] include path: "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" notice: [python-cfg] library path: "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config" "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib" notice: [python-cfg] framework directory is "/opt/local/Library/Frameworks/Python.framework" ...patience... ...patience... ...found 2711 targets... ...updating 434 targets... gcc.link /tmp/build/boost/bin.v2/libs/python/test/exec.test/gcc-4.2/debug/exec ld: unknown option: -R collect2: ld returned 1 exit status "g++" -L"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib" -L"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config" -Wl,-R -Wl,"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib" -Wl,-R -Wl,"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config" -o "/tmp/build/boost/bin.v2/libs/python/test/exec.test/gcc-4.2/debug/exec" -Wl,--start-group "/tmp/build/boost/bin.v2/libs/python/test/exec.test/gcc-4.2/debug/exec.o" "/tmp/build/boost/bin.v2/libs/python/build/gcc-4.2/debug/link-static/libboost_python.a" -Wl,-Bstatic -lpython2.6 -Wl,-Bdynamic -lpython2.6 -Wl,--end-group -g ...failed gcc.link /tmp/build/boost/bin.v2/libs/python/test/exec.test/gcc-4.2/debug/exec... </pre> Dave Abrahams https://svn.boost.org/trac10/ticket/3683 https://svn.boost.org/trac10/ticket/3683 Report #3675: Boost.Parameter passing function pointers Thu, 26 Nov 2009 16:10:03 GMT Fri, 08 Jan 2010 14:02:55 GMT <p> When passing function pointers with Boost.Parameter on Boost 1.41 on <a class="missing wiki">MacPorts</a>, there are errors. </p> <p> Apparently, somewhere the function type gets a "const" and that breaks stuff. </p> <p> That's the error message: </p> <pre class="wiki">bash-3.2$ make CXXFLAGS=-I/opt/local/include test g++ -I/opt/local/include test.cc -o test /opt/local/include/boost/parameter/aux_/arg_list.hpp: In constructor 'boost::parameter::aux::arg_list&lt;TaggedArg, Next&gt;::arg_list(A0&amp;, A1&amp;, A2&amp;, A3&amp;, A4&amp;) [with A0 = void ()(int)const, A1 = boost::parameter::void_, A2 = boost::parameter::void_, A3 = boost::parameter::void_, A4 = boost::parameter::void_, TaggedArg = boost::parameter::aux::tagged_argument&lt;tag::par, void ()(int)&gt;, Next = boost::parameter::aux::empty_arg_list]': /opt/local/include/boost/parameter/parameters.hpp:876: instantiated from 'typename boost::mpl::first&lt;typename boost::parameter::aux::make_arg_list&lt;boost::parameter::aux::item&lt;PS0, A0, boost::parameter::void_&gt;, typename boost::parameter::aux::make_deduced_items&lt;PS0, boost::parameter::aux::make_deduced_items&lt;PS1, boost::parameter::aux::make_deduced_items&lt;PS2, boost::parameter::aux::make_deduced_items&lt;PS3, boost::parameter::aux::make_deduced_items&lt;PS4, boost::mpl::identity&lt;boost::parameter::void_&gt; &gt; &gt; &gt; &gt; &gt;::type, boost::parameter::aux::tag_keyword_arg, mpl_::bool_&lt;true&gt; &gt;::type&gt;::type boost::parameter::parameters&lt;PS0, PS1, PS2, PS3, PS4&gt;::operator()(A0&amp;) const [with A0 = void ()(int)const, PS0 = boost::parameter::required&lt;tag::par, boost::mpl::always&lt;mpl_::true_&gt; &gt;, PS1 = boost::parameter::void_, PS2 = boost::parameter::void_, PS3 = boost::parameter::void_, PS4 = boost::parameter::void_]' test.cc:9: instantiated from 'typename boost_param_result_14testfn&lt;typename boost::parameter::aux::argument_pack&lt;boost_param_parameters_14testfn, const ParameterArgumentType0, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::type&gt;::type testfn(const ParameterArgumentType0&amp;, typename boost::parameter::aux::match&lt;boost_param_parameters_14testfn, ParameterArgumentType0, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_&gt;::type) [with ParameterArgumentType0 = void ()(int)]' test.cc:20: instantiated from here /opt/local/include/boost/parameter/aux_/arg_list.hpp:208: error: no matching function for call to 'boost::parameter::aux::tagged_argument&lt;tag::par, void ()(int)&gt;::tagged_argument(void (&amp;)(int)const)' /opt/local/include/boost/parameter/aux_/tagged_argument.hpp:37: note: candidates are: boost::parameter::aux::tagged_argument&lt;KW, T&gt;::tagged_argument(Arg&amp;) [with Keyword = tag::par, Arg = void ()(int)] /opt/local/include/boost/parameter/aux_/tagged_argument.hpp:32: note: boost::parameter::aux::tagged_argument&lt;tag::par, void ()(int)&gt;::tagged_argument(const boost::parameter::aux::tagged_argument&lt;tag::par, void ()(int)&gt;&amp;) make: *** [test] Error 1 bash-3.2$ </pre><p> The example compiles on Linux just fine. I will attach the example if I find out how to do it. </p> <p> Please provide a workaround for the time until the fix for this hits the shelves. </p> Aristid Breitkreuz <aristid.breitkreuz@…> https://svn.boost.org/trac10/ticket/3675 https://svn.boost.org/trac10/ticket/3675 Report #3673: boost python and weak_ptr from a shared_ptr argument Thu, 26 Nov 2009 07:22:57 GMT Tue, 11 Jun 2013 18:44:38 GMT <p> if you save a weak_ptr of a shared_ptr passed to you by python, it expires almost immediately (see use of aliasing constructor in shared_ptr_from_python.hpp). See also mail from Jahn Fuchs on c++-sig list subject: boost python and weak_ptr from a shared_ptr argument </p> troy d. straszheim https://svn.boost.org/trac10/ticket/3673 https://svn.boost.org/trac10/ticket/3673 Report #3661: An exceptions puzzler: Mon, 23 Nov 2009 19:09:35 GMT Mon, 23 Nov 2009 19:09:35 GMT <p> Scenario: From python I call wrapped c++ code. This c++ code calls a python function via a boost::python::object and attempts to extract a value from what is returned. This causes a throw, and the exception propagates back up to python. It is possible for 'stuff' to get called in a function like this: </p> <p> def foo(): </p> <blockquote> <p> try: </p> <blockquote> <p> return </p> </blockquote> <p> except: </p> <blockquote> <p> stuff() </p> </blockquote> </blockquote> <p> I don't have all the details handy about what is happening on the C++ side, this is a 'note to self' to investigate and document a best practice. </p> troy d. straszheim https://svn.boost.org/trac10/ticket/3661 https://svn.boost.org/trac10/ticket/3661 Report #3653: converter collisions behave differently debug|release Fri, 20 Nov 2009 21:02:41 GMT Fri, 20 Nov 2009 21:02:41 GMT <p> from a thread on the c++-sig list titled "dynamic compile and to-Python converter..." </p> <p> The 'worst' and most common scenario is, precisely put: more than one python extension module over which we have no control has wrapped type T. We need to use them simultaneously. For instance, here are two modules that both wrap vector&lt;double&gt;. With assertions enabled, this happens: </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> import converter_collisions1_ext import converter_collisions2_ext </p> </blockquote> </blockquote> </blockquote> <p> python: /home/troy/Projects/boost/src/libs/python/src/converter/registry.cpp:212: void boost::python::converter::registry::insert(<a class="missing wiki">PyObject</a>* (*)(const void*), boost::python::type_info, const <a class="missing wiki">PyTypeObject</a>* (*)()): Assertion `slot-&gt;m_to_python == 0' failed. zsh: abort python </p> <p> delightfully, without assertions there is only a warning: </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> import converter_collisions1_ext import converter_collisions2_ext </p> </blockquote> </blockquote> </blockquote> <p> <span class="underline">main__:1: <a class="missing wiki">RuntimeWarning</a>: to-Python converter for std::vector&lt;double, std::allocator&lt;double&gt; &gt; already registered; second conversion method ignored. </span></p> <p> So one resolution is to remove the 'assert' that triggers this crash and leave the semantics as-is: second and later converter registrations are warned about and ignored. I'm simply suggesting we give the user more control over this behavior, because in a number of situations (it is up to the user to determine what they are) such control would be useful. </p> troy d. straszheim https://svn.boost.org/trac10/ticket/3653 https://svn.boost.org/trac10/ticket/3653 Report #3650: Text Serialization crashes when istream close unexpectedly Fri, 20 Nov 2009 13:40:52 GMT Thu, 21 Jan 2010 07:46:33 GMT <p> I am using <a class="missing wiki">TextSerialization</a> over a tcp::iostream. I am retrieving object pointers through the serialization mecanisms. </p> <p> boost::archive::text_iarchive ia(*_stream); while(!_stream-&gt;eof()) { </p> <blockquote> <p> boost::shared_ptr&lt;Message&gt; msg; ia &gt;&gt; msg; ... </p> </blockquote> <p> } </p> <p> If the socket stream close unexpectedly, then the program goes to fault. </p> <p> It seems that moving the check for stream failure after the data reads in the basic_text_iprimitive.hpp file fixes the problem. </p> <p> Thanks </p> Doug Wallas https://svn.boost.org/trac10/ticket/3650 https://svn.boost.org/trac10/ticket/3650 Report #3627: boost::asio::async_read() cannot be used with null_buffers() Mon, 16 Nov 2009 09:55:23 GMT Tue, 12 Jan 2010 21:46:23 GMT <p> An attempt to use async_read() with null_buffers() causes the handler to be invoked even when the underlying file descriptor is not yet available for reading. </p> <p> The following test demonstrates the problem </p> <p> void test_async_read() { </p> <blockquote> <p> struct local { </p> <blockquote> <p> static void on_ready(boost::system::error_code const&amp; error, int* invoked) { </p> <blockquote> <p> BOOST_CHECK(!error); *invoked = 1; </p> </blockquote> <p> } </p> </blockquote> <p> }; </p> </blockquote> <blockquote> <p> int p<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>; int const s = pipe(p); BOOST_CHECK(0 == s); </p> </blockquote> <blockquote> <p> boost::asio::io_service ios; boost::asio::posix::stream_descriptor sd(ios, p<a class="missing changeset" title="No changeset 0 in the repository">[0]</a>); ios.reset(); int invoked = 0; boost::asio::async_read(sd, boost::asio::null_buffers(), boost::bind(&amp;local::on_ready, _1, &amp;invoked)); ios.poll_one(); BOOST_CHECK(!invoked); <em> doesn't pass </em></p> </blockquote> <p> } </p> <p> This test doesn't pass on linux using either epoll or select multiplexing mechanism. This test also doesn't pass on freebsd using either kqueue or select multiplexing mechanism. </p> Dmitry Goncharov <dgoncharov@…> https://svn.boost.org/trac10/ticket/3627 https://svn.boost.org/trac10/ticket/3627 Report #3625: python detection randomly broken Sun, 15 Nov 2009 15:49:49 GMT Mon, 07 Jun 2010 09:52:58 GMT <p> We had at least two bug reports that python detection does not work on windows. In both cases, removing the </p> <pre class="wiki">if [ version.check-jam-version 3 1 17 ] || ( [ os.name ] != NT ) </pre><p> block in python.jam:probe fixed that. One case was definitely mingw-built bjam, the other case, for all appearences, is MSVC. Log for the second case is attached. </p> Vladimir Prus https://svn.boost.org/trac10/ticket/3625 https://svn.boost.org/trac10/ticket/3625 Report #3624: quote0 is missing Sun, 15 Nov 2009 15:23:01 GMT Sun, 15 Nov 2009 15:33:25 GMT <p> quote0 is missing but maybe needed in case we want to turn a meta-function like : </p> <p> struct foo { </p> <blockquote> <p> typedef float type; </p> </blockquote> <p> } </p> <p> in a meta-function class. </p> Joel Falcou <joel.falcou@…> https://svn.boost.org/trac10/ticket/3624 https://svn.boost.org/trac10/ticket/3624 Report #3609: select_reactor, result of select() isn't checked for error Wed, 11 Nov 2009 12:05:13 GMT Mon, 24 Jan 2011 09:39:58 GMT <p> The problem is in select_reactor::run() (boost\asio\detail\select_reactor.hpp). </p> <p> Related issue: <a class="ext-link" href="http://sourceforge.net/tracker/?func=detail&amp;aid=2893275&amp;group_id=122478&amp;atid=694037"><span class="icon">​</span>http://sourceforge.net/tracker/?func=detail&amp;aid=2893275&amp;group_id=122478&amp;atid=694037</a> </p> pavel@… https://svn.boost.org/trac10/ticket/3609 https://svn.boost.org/trac10/ticket/3609 Report #3607: no error reporting when parsing ptime with user-defined facets (with bugfix) Wed, 11 Nov 2009 10:15:32 GMT Wed, 11 Nov 2009 10:15:32 GMT <p> When parsing date/time with facets mismatches doe not get reported (e.g. vial failbit) </p> <p> reproduceable testcase: parse "20090101" with facet "%Y-%m-%dT%H:%M:%S%F" yields correctly parsed ptime "1-Oct-2009" but should not. </p> <p> the patch: adds check for testing of seperator characters to match format and actual parsed string. </p> <p> Maybe the additional check should be applied to different locations in the source code, which I cannot judge at this point. </p> Thomas.Lemm@… https://svn.boost.org/trac10/ticket/3607 https://svn.boost.org/trac10/ticket/3607 Report #3587: Hi,I find memory leaks in boost::python where the Py_Finalize() been called. Wed, 04 Nov 2009 05:58:01 GMT Thu, 26 Nov 2009 07:19:53 GMT <p> when I wrote "boost::python::detail::init_module("xxxx", &amp;init_module_xxxx);" in my code,the memory leak occurred when the application ended(I'm sure that I called Py_Finalize() already). </p> ahccom <4.u-ahc@…> https://svn.boost.org/trac10/ticket/3587 https://svn.boost.org/trac10/ticket/3587 Report #3572: mapped_file: reading/writing mapped memory can throw (structured) exceptions? (windows) Wed, 28 Oct 2009 11:48:58 GMT Wed, 28 Oct 2009 12:15:26 GMT <p> msdn: "Reading and Writing From a File View" (<a class="ext-link" href="http://msdn.microsoft.com/en-us/library/aa366801(VS.85).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/aa366801(VS.85).aspx</a>) </p> <p> "Reading from or writing to a file view can cause an EXCEPTION_IN_PAGE_ERROR exception. For example, accessing a mapped file that resides on a remote server can generate an exception if the connection to the server is lost. Exceptions can also occur because of a full disk, an underlying device failure, or a memory allocation failure. When writing to a file view, exceptions can also occur because the file is shared and a different process has locked a byte range. To guard against exceptions due to input and output (I/O) errors, all attempts to access memory mapped files should be wrapped in structured exception handlers" </p> <blockquote> <p> DWORD dwLength; <span class="underline">try { </span></p> <blockquote> <p> dwLength = *((LPDWORD) lpMapAddress); </p> </blockquote> <p> } <span class="underline">except(<a class="missing wiki">GetExceptionCode</a>()==EXCEPTION_IN_PAGE_ERROR ? </span></p> <blockquote> <p> EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) </p> </blockquote> <p> { </p> <blockquote> <p> <em> Failed to read from the view. </em></p> </blockquote> <p> } </p> </blockquote> <p> ... so it should be mentioned in the documentation? (windows specific) </p> xurux1-mail@… https://svn.boost.org/trac10/ticket/3572 https://svn.boost.org/trac10/ticket/3572 Report #3564: bjam creates wrong library name when toolset choice is invalid Mon, 26 Oct 2009 15:25:57 GMT Tue, 10 Nov 2009 07:11:18 GMT <p> Hi, </p> <p> I just called boost using "bjam address-model=64 install --with-math link=static toolset=msvc-9 variant=debug" which creates libraries without any VC version number: --&gt; libboost_math_tr1l-vc-mt-gd-1_40.lib which should be --&gt; libboost_math_tr1l-vc90-mt-gd-1_40.lib </p> <p> This leads to auto-linking errors. The documentation at multiple points simply states that appending the MSVC version number to the toolset will work, however the correct syntax for the call is: "toolset=msvc-9.0" and not "toolset=msvc-9" The documentation for valid numbers is somewhat hidden as well (<a href="http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.msvc">http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.msvc</a>). At least the toolset docu (<a href="http://www.boost.org/doc/libs/1_40_0/more/getting_started/windows.html#identify-your-toolset">http://www.boost.org/doc/libs/1_40_0/more/getting_started/windows.html#identify-your-toolset</a>) could use the above link! </p> <p> So, is it possible to introduce white-lists for the toolset options to avoid this kind of error?! </p> bielow@… https://svn.boost.org/trac10/ticket/3564 https://svn.boost.org/trac10/ticket/3564 Report #3550: specify toolset to bootstrap.bat Fri, 23 Oct 2009 15:14:14 GMT Sun, 19 Dec 2010 22:05:03 GMT <p> Hi, </p> <p> calling "bootstrap.bat" results in successful compilation of boost_1_40_0\tools\jam\src\bin.ntx86_64\bjam.exe but this is not where the bootstrap.bat expects it to be, as it only supports x86 as it seems. </p> <p> BTW: tools\jam\src\build.bat somehow finds my VS2010beta and uses that for compilation (although I'd like it to use my production VS9) and it seems I have no control of telling "bootstrap.bat" to use a custom toolset (this is supported by build.bat) </p> <p> cheers Chris </p> bielow@… https://svn.boost.org/trac10/ticket/3550 https://svn.boost.org/trac10/ticket/3550 Report #3547: Valgrind finds errors into compressed_matrix serialization Fri, 23 Oct 2009 13:14:36 GMT Wed, 28 Oct 2009 22:21:43 GMT <p> I tried to write a compressed matrix to an archive and to re-read it from the archive.<br /> Without valgrind, the program seems to run correctly, but, if run with valgrind, it outputs some errors.<br /> <br /> I attached the source code and the valgrind output.<br /> I ran valgrind with this command: </p> <pre class="wiki">valgrind ./compressed_mtx_ser test.arch &gt;&amp; valgrind.out </pre><p> It seems that the serialization function tries to write not itialized bytes to file. </p> micdestefano@… https://svn.boost.org/trac10/ticket/3547 https://svn.boost.org/trac10/ticket/3547 Report #3540: [fix in git] use boost::aligned_storage rather than boost::python::aligned_storage Thu, 22 Oct 2009 02:50:55 GMT Thu, 22 Oct 2009 04:04:19 GMT <p> Looks like duplicated code that could be factored out. Also the parameter library depends on boost/python/detail/referent_storage, see ticket <a class="new ticket" href="https://svn.boost.org/trac10/ticket/3490" title="#3490: Bugs: Boost.Parameter should not depend on Boost.Python (new)">#3490</a>, this causes packaging problems. </p> troy d. straszheim https://svn.boost.org/trac10/ticket/3540 https://svn.boost.org/trac10/ticket/3540 Report #3531: initial_path is not thread-safe Mon, 19 Oct 2009 09:10:50 GMT Mon, 27 Jun 2016 13:36:20 GMT <p> The initial_path template function uses function-local static variable and thus is not thread-safe. </p> <p> The documentation states the recommendadion to call initial_path from the beginning of the main function. However, following it is not sufficient because: </p> <ol><li>If the application consists of several modules (dll or so), on many architectures each module will contain its own copy of the static variable defined in initial_path. Each copy will be initialized as needed, when initial_path is called from within the corresponding module. </li></ol><ol start="2"><li>The threads may already be running when initial_path is called. This may be true regardless of whether initial_path is called from main or some another place in a dll. </li></ol><p> What makes the problem worse is that there are two such functions, actually: initial_path&lt; path &gt;() and initial_path&lt; wpath &gt;(). Each of them will have the described problem. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/3531 https://svn.boost.org/trac10/ticket/3531 Report #3530: MPL components missing ADL barrier Sat, 17 Oct 2009 09:40:54 GMT Sat, 17 Oct 2009 09:40:54 GMT <p> mpl::size (among others) are not ADL protected which leads to ambiguity in soem scenario where MPL components are used as tempalte parameters and a size() function is defined. </p> <p> As there is already a ADL barrier system usable in MPL, the fix should be only to use it around those components. </p> Joel Falcou <joel.falcou@…> https://svn.boost.org/trac10/ticket/3530 https://svn.boost.org/trac10/ticket/3530 Report #3519: It should be possible to use consts as external placeholder variables. Mon, 12 Oct 2009 15:26:05 GMT Wed, 06 Oct 2010 18:18:53 GMT <p> The right-and-side of placeholder let-expressions are not declared as const, so common use-cases like: </p> <p> </p> <pre class="wiki">placeholder&lt;int&gt; _i; smatch what; what.let(_i = 1); </pre><p> or: </p> <p> </p> <pre class="wiki">placeholder&lt;MyClass *&gt; _p; smatch what; what.let(_p = this); </pre><p> fail to compile. It would be nice to have some way to specify a placeholder for non-mutable data. Perhaps: </p> <pre class="wiki">placeholder&lt;int const&gt; _i; </pre><p> (suggested by Eric Niebler) </p> ami.ganguli@… https://svn.boost.org/trac10/ticket/3519 https://svn.boost.org/trac10/ticket/3519 Report #3510: Introduce new diag function for creating diagonal matrices and for returning the diagonal of a matrix Mon, 05 Oct 2009 08:37:10 GMT Mon, 05 Oct 2009 08:37:10 GMT <p> Introduce a new <strong>diag</strong> free function in the spirit of the MATLAB's <em>diag</em> function and Mathematica's <em><a class="missing wiki">DiagonalMatrix</a> function</em>. </p> <p> Basically it allows both the creation of a <em>generalized</em> diagonal matrix and the creation of a <em>diagonal</em> view of an existing matrix. </p> <p> A <em>generalized</em> k-th diagonal matrix is a special kind of matrix which has all elements set to zero but the ones on its k-th diagonal. The integer k is the offset from the main diagonal, that is: </p> <ul><li>k = 0: the elements on the main diagonal can be different from zero. </li></ul><ul><li>k &gt; 0: only the elements on the k-th upper diagonal can be different from zero. </li></ul><ul><li>k &lt; 0: only the elements on the k-th lower diagonal can be different from zero. </li></ul><p> A generalized diagonal matrix can be a rectangular matrix. </p> <p> Here below is a list of the requested cases: </p> <ul><li>Create a square diagonal matrix M with vector V </li></ul><p> being the k-th diagonal </p> <blockquote> <p> <code>M = diag(v,k)</code> </p> </blockquote> <ul><li>Like the above, but M has layout l (e.g., column major) <code>M = diag(v,k,l)</code> </li></ul><ul><li>Create a rectangular diagonal matrix M of size mXn with vector V being the k-th diagonal <code>M = diag(v,m,n,k)</code> </li></ul><ul><li>Like the above, but M has layout l (e.g., column major) <code>M = diag(v,m,n,k,l)</code> </li></ul><ul><li>Create a diagonal view of the k-th diagonal of matrix M <code>v = diag(M,k)</code> </li></ul> marco.guazzone@… https://svn.boost.org/trac10/ticket/3510 https://svn.boost.org/trac10/ticket/3510 Report #3508: bjam output in colours Sun, 04 Oct 2009 17:25:50 GMT Tue, 21 Apr 2020 00:33:39 GMT <p> I think it would be very useful if bjam prints output to stdout in colours to help to distinguish at least information messages, warnings and errors. </p> <p> CMake does provide coloured output out of the box. For GNU make and GCC there are <a class="ext-link" href="http://bre.klaki.net/programs/colormake/"><span class="icon">​</span>http://bre.klaki.net/programs/colormake/</a> colormake] and <a class="ext-link" href="http://schlueters.de/colorgcc.html"><span class="icon">​</span>colorgcc</a>. </p> <p> All these tools help programmers to avoid <em>nystagmus</em> issues while analysing compiler output :-) </p> <p> As a proof of concept, I attached <a class="ext-link" href="http://mateusz.loskot.net/?p=465"><span class="icon">​</span>colorbb'' script a rough port of the colormake</a> to work with bjam + GCC toolset. </p> mloskot <mateusz@…> https://svn.boost.org/trac10/ticket/3508 https://svn.boost.org/trac10/ticket/3508 Report #3504: deadline_timer (based on UTC time) is not suitable for communication timeouts Fri, 02 Oct 2009 07:36:59 GMT Tue, 27 Dec 2016 13:39:31 GMT <p> If you use the deadline_timer to make a polling every 10th second, it will be heavely affected if someone adjust the system clock with date command, or if the time is adjusted automaticly by NTP. </p> <p> Uses as this should use a timer that cannot make jumps like that. </p> <p> I solved this by making a new time_traits called monotone_time. It uses <a class="missing wiki">GetTickCount</a>() for windows and clock_gettime(CLOCK_MONOTONIC, ...) for linux. See attachment. </p> <p> To use it your timer must be a monotone_timer instead of a deadline_timer. You can use both types of timers in you application. </p> <p> I hope this can be a part of a future release of boost::asio </p> Bjarne Laursen <bla@…> https://svn.boost.org/trac10/ticket/3504 https://svn.boost.org/trac10/ticket/3504 Report #3490: Boost.Parameter should not depend on Boost.Python Sun, 27 Sep 2009 02:17:31 GMT Tue, 19 Jan 2010 20:08:36 GMT <p> The header boost/parameter/aux_/maybe.hpp includes &lt;boost/python/detail/referent_storage.hpp&gt;. This introduces a dependency for Boost.Parameter on Boost.Python. Worse: it depends on a <strong>detail</strong> of Boost.Python. </p> <p> Vendors such as Debian often split out Boost.Python from the mainstream, and this causes problems for us; c.f. <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548503"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=548503</a> </p> smr@… https://svn.boost.org/trac10/ticket/3490 https://svn.boost.org/trac10/ticket/3490 Report #3488: A better way to make python functions that take arbitrary number of args than raw_function Fri, 25 Sep 2009 20:48:31 GMT Fri, 25 Sep 2009 21:31:27 GMT <p> raw_function can handle only C++ functions that take two args (tuple, dict) and seems to cause static assert if a keyword-expression is passed to def thus causing a lot of manual code if one wants to make it take named arguments or default arguments. </p> <p> It would be nice if there was a way to make such functions closer to defs in python itself, something like this: </p> <pre class="wiki">void foo(int arg1, int arg2, tuple args, dict kw); def("foo", foo, (arg("arg1") = 1, arg("arg2") = 2, arg("*args"), arg("**kw")) // that would pass extra positional args in foo's third arg and extra keyword args to foo's fourth arg </pre> loonycyborg https://svn.boost.org/trac10/ticket/3488 https://svn.boost.org/trac10/ticket/3488 Report #3484: [Test] documentation and thread safety Wed, 23 Sep 2009 11:09:27 GMT Sun, 27 Sep 2009 02:15:38 GMT <p> Today I spend half a day to reveal that Boost.Test is not thread safe :) </p> <p> Please point it explicitly in documentation. </p> <p> (When MT, BOOST_ERROR, for example, cause unknown exception but only after thread exit, and only 1 time for 10 runs. This makes bugs extremely difficult to locate, and since most Boost libraries are thread-safe, Boost.Test is the last thing to check). </p> bstarostin@… https://svn.boost.org/trac10/ticket/3484 https://svn.boost.org/trac10/ticket/3484 Report #3483: non-null requirement in ptr_vector::transfer Wed, 23 Sep 2009 09:40:17 GMT Thu, 31 Mar 2011 20:52:16 GMT <p> <a href="http://www.boost.org/doc/libs/1_40_0/libs/ptr_container/doc/ptr_vector.html#c-array-support">http://www.boost.org/doc/libs/1_40_0/libs/ptr_container/doc/ptr_vector.html#c-array-support</a> </p> <p> is it possible to remove non-null requirement for <em>from</em> argument in ptr_vector::transfer method? </p> Igor Pavlov <arabesc@…> https://svn.boost.org/trac10/ticket/3483 https://svn.boost.org/trac10/ticket/3483 Report #3482: ptr_sequence_adapter documentation erratum Wed, 23 Sep 2009 09:14:08 GMT Wed, 23 Sep 2009 09:14:08 GMT <p> <a href="http://www.boost.org/doc/libs/1_40_0/libs/ptr_container/doc/ptr_sequence_adapter.html">http://www.boost.org/doc/libs/1_40_0/libs/ptr_container/doc/ptr_sequence_adapter.html</a> </p> <p> Semantics: construct/copy/destroy </p> <ul><li>template&lt; class InputIterator &gt; void assign( InputIterator first, InputIterator last ); <ul><li>Requirements: <strong>(</strong>first,last<strong>]</strong> is a valid range </li></ul></li></ul><p> there is should be <strong>[</strong>first, last<strong>)</strong> half-open interval </p> Igor Pavlov <arabesc@…> https://svn.boost.org/trac10/ticket/3482 https://svn.boost.org/trac10/ticket/3482 Report #3478: Min cut interface for BGL Tue, 22 Sep 2009 14:00:56 GMT Wed, 08 Dec 2010 19:44:44 GMT <p> 1) The max flow can be obtained with: (any of the max_flow algorithms, kolmogorov is just used as an example) </p> <p> double flow = kolmogorov_max_flow(g, <a class="missing wiki">SourceNode</a>, <a class="missing wiki">SinkNode</a>); </p> <p> It would be nice to also interpret this max flow as a min cut. I.e. be able to tell which nodes of g belong to the "source side" of the graph and which nodes belong to the "sink side"? Maybe something like a std::vector&lt;unsigned int&gt; <a class="missing wiki">GetSourceSideNodes</a>(); <em>return the IDs of the nodes on the source side std::vector&lt;unsigned int&gt; <a class="missing wiki">GetSinkSideNodes</a>();</em>return the IDs of the nodes on the sink side std::vector&lt;unsigned int&gt; <a class="missing wiki">GetCutEdges</a>(); <em> return the IDs of the edges which were cut </em></p> <p> 2) Allow the min cut algorithm to accept multiple sources/sinks. The cut should simply be the minimum sum of edges that can be severed to split the graph so that all of the sinks are on one side of the cut and all of the sources are on the other side of the cut. </p> <p> 3) Find the minimum cut that partitions the graph into two parts without specifying a source/sink? I.e. the minimum of all of the possible source/sink pairs minium cuts. </p> <p> 4) Currently you must use a bidirectional graph, and specify an edge_reverse_t in the graph traits, then set the reverse edge for every edge. a) this is pretty complicated for someone who is unfamiliar with generic programming. b) If an undirected graph is used, the algorithm should automatically take care of adding these reverse edges if they are required for the cut to be performed. </p> <p> 5) VERY simple examples (actually constructing a graph (not reading it from file) with &lt; 10 nodes) should be provided to demonstrate all of these cases. </p> David Doria <daviddoria@…> https://svn.boost.org/trac10/ticket/3478 https://svn.boost.org/trac10/ticket/3478 Report #3457: introduce move semantics to container types Wed, 16 Sep 2009 21:54:30 GMT Tue, 06 Oct 2009 22:35:55 GMT <p> I am writing many routines where I would strongly prefer: <code>matrix&lt;double&gt; f(const matrix&lt;double&gt;&amp; in)</code> to <code>void f(const matrix&lt;double&gt;&amp; in, matrix&lt;double&gt;&amp; out )</code> </p> <p> There has been a lot of discussion about this from the C++ groups: </p> <ul><li>The move library to support this in C++03 </li><li><a class="ext-link" href="http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/"><span class="icon">​</span>http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/</a> </li></ul><p> Also, I see that this is native to MTL: <a class="ext-link" href="http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_assignment.html#move_semantics"><span class="icon">​</span>http://www.osl.iu.edu/research/mtl/mtl4/doc/matrix_assignment.html#move_semantics</a> </p> Gunter https://svn.boost.org/trac10/ticket/3457 https://svn.boost.org/trac10/ticket/3457 Report #3450: [fix in git] Bug into boost::python::stl_input_iterator Tue, 15 Sep 2009 07:53:33 GMT Mon, 21 Sep 2009 07:59:44 GMT <p> I noticed that if you try to traverse more than once the range (begin,end) obtained with the <code>stl_input_iterator</code>, you don't get the expected results.<br /> <br /> Please, look at the attached code (rangemodule.cpp) and at the usage from the python console (python_console.txt).<br /> <br /> The problem is given by the call to the <code>std::distance</code> function.<br /> If you build with <code>-DWORK_AROUND</code> the problem disappears, but I need to call <code>std::distance</code>, because it is the original class that calls it (and I prefer not to modify it simply for building a python extension). </p> micdestefano@… https://svn.boost.org/trac10/ticket/3450 https://svn.boost.org/trac10/ticket/3450 Report #3447: After destruction binary_iarchive seeks to the end of file Mon, 14 Sep 2009 09:30:30 GMT Mon, 14 Sep 2009 19:27:35 GMT <p> After destruction binary_iarchive seeks to the end of file. This is occured because boost::archive::basic_binary_iprimitive (the ancestor of binary_iarchive) calls std::basic_streambuf::sync in destructor. Calling 'sync' on a file streambuf seeks to the end of file. </p> <p> This is bad, because it lead to skipping of unread input data! </p> <p> I think calling 'sync' is a bad idea (and this call should be removed), but if it is necessary, then the documentation must clearly note that using a file streambuf with binary_iarchive skips to the end of the file. </p> <hr /> <p> Example: </p> <pre class="wiki">std::ifstream is( ARCHIVE_FILE_NAME, std::ios::binary ); int i; { boost::archive::binary_iarchive ar( is, boost::archive::no_header ); ar &gt;&gt; i; std::cout &lt;&lt; "Pos after read: " &lt;&lt; is.tellg() &lt;&lt; std::endl; } std::cout &lt;&lt; "Pos after dtor: " &lt;&lt; is.tellg() &lt;&lt; std::endl; </pre><p> Output: </p> <pre class="wiki">Pos after read: 4 Pos after dtor: 11 </pre><p> (sizeof(int) is 4, archive file length is 11) </p> Andrey Upadyshev <oliora@…> https://svn.boost.org/trac10/ticket/3447 https://svn.boost.org/trac10/ticket/3447 Report #3446: [boost] [fusion] transform does not return a mutable view Mon, 14 Sep 2009 05:03:53 GMT Mon, 21 Sep 2009 18:40:45 GMT <p> Based on the documentation (and my own experience), it doesn't appear that transform will return a mutable transform_view, since transform receives its sequence argument always by const reference. Is this intentional, or an oversight? It seems like there's no loss in providing 2 overloads of transform, one accepting a const reference and one accepting a non-const reference. </p> jhellrung@… https://svn.boost.org/trac10/ticket/3446 https://svn.boost.org/trac10/ticket/3446 Report #3443: improve documentation Sat, 12 Sep 2009 22:54:12 GMT Mon, 26 Jul 2010 12:41:22 GMT <p> this task was created to track all documentation updates that do not belong to a specific bug or feature ticket. </p> Gunter https://svn.boost.org/trac10/ticket/3443 https://svn.boost.org/trac10/ticket/3443 Report #3430: Build boost.regex shared-link 1.40 under mingw 3.4 Wed, 09 Sep 2009 22:24:14 GMT Mon, 16 Nov 2009 17:08:07 GMT <p> I try build boost.regex under mingw 3.4 (include in Qt SDK) I add mingw to PATH enviroment variable, than run: bootstrap.bat bjam.exe --build_type=complete --toolset=gcc --with-regex --with-program_options variant=release link=shared runtime-link=shared stage </p> <p> bjam build static lib version of boost.regex. It i use msvc2008 console tool, and use toolset "msvc-9.0" shared version build correct. </p> <p> It's like on bug. Thank you! </p> Oleg Tsarev <zabivator@…> https://svn.boost.org/trac10/ticket/3430 https://svn.boost.org/trac10/ticket/3430 Report #3423: Diagnostic of errors. Tue, 08 Sep 2009 11:22:54 GMT Tue, 11 May 2010 14:21:39 GMT <ol><li>Some classes of errors (for example "unknown_option") are not remembered parameters transferred in the constructor. It does not allow to generate non standard diagnostics (for example not in English). </li><li>In a class "multiple_occurrences" there is no diagnostics for what parameter the error is found out. </li></ol> Alex Bukreev <bucreev@…> https://svn.boost.org/trac10/ticket/3423 https://svn.boost.org/trac10/ticket/3423 Report #3408: gamma distribution's quantile performance Sun, 06 Sep 2009 18:50:32 GMT Tue, 06 Oct 2009 17:13:28 GMT <p> Hi there, I have created a test which times the performance of boost::math::quantile( ... ) when using a gamma distribution. I ran it against source code we use here at work, for ages. It can be found here: </p> <p> <a class="ext-link" href="http://people.sc.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html"><span class="icon">​</span>http://people.sc.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html</a> </p> <p> The old source code is about 2x times faster than the boost version. </p> <p> MS Visual Studio 2005: boost: 35.4sec att_bell:19sec </p> <p> Intel 11.1: boost: 21.4sec att_bell: 11.2sec </p> <p> Question is if there is a way to incorporate such a function into boost::math? As far, as I can tell the results are almost identical. </p> <p> Here the code: </p> <p> #include &lt;dcdflib.h&gt; </p> <p> #include &lt;boost/math/distributions/gamma.hpp&gt; </p> <p> #include &lt;boost/timer.hpp&gt; </p> <p> double min_mean = 2000; <em> 2,000 double max_mean = 500000000; </em>500,000,000 </p> <p> double min_std = 10000; <em> 10,000 double max_std = 100000000; </em> 100,000,000 </p> <p> double min_max = 600000000; <em> 600,000,000 double max_max = 1000000000; </em> 1,000,000,000 </p> <p> const std::size_t max_year = 5000000; <em> 5,000,000 </em></p> <p> const double right = 0.999; const double left = 0.001; </p> <p> inline double get_rand() { </p> <blockquote> <p> return static_cast&lt; double &gt;( std::rand() ) </p> <blockquote> <p> / static_cast&lt; double &gt;( RAND_MAX ); </p> </blockquote> </blockquote> <p> } </p> <p> inline void boost_( boost::math::gamma_distribution&lt;&gt;&amp; d, double q ) { </p> <blockquote> <p> double value = boost::math::quantile( d, q ); </p> </blockquote> <p> } </p> <p> inline void att_bell( double alpha, double beta, double q ) { </p> <blockquote> <p> double q_Minus1 = 1 - q; double value = 0.0; double bound = 0.0; </p> </blockquote> <blockquote> <p> int which = 2; int status = 0; </p> </blockquote> <blockquote> <p> cdfgam( &amp;which </p> <blockquote> <p> , &amp;q , &amp;q_Minus1 , &amp;value , &amp;alpha , &amp;beta , &amp;status , &amp;bound ); </p> </blockquote> </blockquote> <p> } </p> <p> int main() { </p> <blockquote> <p> <em> boost { </em></p> <blockquote> <p> std::srand( 0 ); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> boost::timer timer; for( std::size_t y = 0; y &lt; max_year; ++y ) { </p> <blockquote> <p> if(( y % 100000 ) == 0 ) </p> <blockquote> <p> std::cout &lt;&lt; y &lt;&lt; std::endl; </p> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> double mean = get_rand() * ( max_mean - min_mean ) + min_mean; double std = get_rand() * ( max_std - min_std ) + min_std; </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> double alpha = mean * mean / std / std; <em> shape parameter double beta = mean / alpha; </em> scale parameter </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> boost::math::gamma_distribution&lt;&gt; d( alpha, beta ); boost_( d, right ); boost_( d, left ); </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> std::cout &lt;&lt; "Boost - Time elapsed: " &lt;&lt; timer.elapsed() &lt;&lt; " </p> </blockquote> </blockquote> <p> sec" &lt;&lt; std::endl; </p> <blockquote> <p> } </p> </blockquote> <blockquote> <p> <em> att bell { </em></p> <blockquote> <p> std::srand( 0 ); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> boost::timer timer; for( std::size_t y = 0; y &lt; max_year; ++y ) { </p> <blockquote> <p> if(( y % 100000 ) == 0 ) </p> <blockquote> <p> std::cout &lt;&lt; y &lt;&lt; std::endl; </p> </blockquote> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> double mean = get_rand() * ( max_mean - min_mean ) + min_mean; double std = get_rand() * ( max_std - min_std ) + min_std; </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> double alpha = mean * mean / std / std; <em> shape parameter double beta = mean / alpha; </em> scale parameter </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <blockquote> <p> att_bell( alpha, beta, right ); att_bell( alpha, beta, left ); </p> </blockquote> <p> } </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> std::cout &lt;&lt; "ATT Bell - Time elapsed: " &lt;&lt; timer.elapsed() &lt;&lt; </p> </blockquote> </blockquote> <p> " sec" &lt;&lt; std::endl; </p> <blockquote> <p> } </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <p> } </p> chhenning@… https://svn.boost.org/trac10/ticket/3408 https://svn.boost.org/trac10/ticket/3408 Report #3406: False strong guarantee in documentation Sat, 05 Sep 2009 17:04:26 GMT Sat, 05 Sep 2009 17:04:26 GMT <p> For many functions inserting pointers into a pointer container, the documentation says that they provide strong exception-safety guarantee while they are actually not. Instead, they perform delete on the passed pointer if an exception is thrown. </p> <p> I propose the wording like this; "When an exception is thrown, nothing happens except performing delete x." </p> <p> Note that replacing it with "basic guarantee" is over relaxing. One should be able to assume the contents of the container are unchanged when an exception is thrown. </p> <p> This was first posted on the mailing list. <a class="ext-link" href="http://lists.boost.org/Archives/boost/2009/08/155078.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2009/08/155078.php</a> </p> Kazutoshi Satoda <k_satoda@…> https://svn.boost.org/trac10/ticket/3406 https://svn.boost.org/trac10/ticket/3406 Report #3398: boost::posix_time::time_duration accesser for obtaining milliseconds Thu, 03 Sep 2009 22:08:17 GMT Wed, 08 Dec 2010 06:37:34 GMT <p> Hey guys: </p> <p> It would be really nice to get the milliseconds of time in boost::posix_time::time_duration. There is only an option to get the total_milliseconds(), which gives the result of the total milliseconds that have passed in that day. Although I can take this and compute hours, minutes, seconds and milliseconds from it, it is a bit of a pain in the ass to do it that way. </p> <p> It would be much nicer if I could just call a function to give me the millisecond remainder from seconds. You have accessers like this for hours, minutes, and seconds, so why not milliseconds? </p> Raymond Chandler III <raymond.chandler.ctr@…> https://svn.boost.org/trac10/ticket/3398 https://svn.boost.org/trac10/ticket/3398 Report #3396: add a sparse_view class that wraps pre-allocated data into a matrix expression Thu, 03 Sep 2009 20:16:06 GMT Tue, 06 Oct 2009 23:13:48 GMT <p> Provide a way to use ublas with pre-allocated data. Implement a matrix view of a CRS matrix as proof of concept. Details: </p> <ul><li>given 3 arrays: row pointers, column indices, values (<a class="ext-link" href="http://www.netlib.org/utk/papers/templates/node90.html"><span class="icon">​</span>http://www.netlib.org/utk/papers/templates/node90.html</a>) </li></ul><ul><li>provide a wrapper that fulfills the immutable part of the matrix expression </li></ul><p> Further tasks: </p> <ul><li>split the current matrix and vector concepts into immutable and mutable parts in order to gain a "read-only view" concept and a full featured "expression" concept </li></ul><ul><li>improve traits mechanism and apply it where possible to automatically see a fixed size C-array as vector view or matrix view </li></ul><ul><li>add necessary tests </li></ul> Gunter https://svn.boost.org/trac10/ticket/3396 https://svn.boost.org/trac10/ticket/3396 Report #3383: no ptr_list::splice Tue, 01 Sep 2009 14:20:10 GMT Fri, 04 Sep 2009 07:18:50 GMT <p> ptr_list doesn't offer an equivalent to std::list::splice. it does offer ptr_sequence_adapter::transfer(), but that doesn't give any guarantee of constant time complexity, and as far as I can see transfering all the contents of a ptr_list into another is in fact implemented in linear complexity. </p> anonymous https://svn.boost.org/trac10/ticket/3383 https://svn.boost.org/trac10/ticket/3383 Report #3366: ICU shared lib not found on fedora x86_64 Wed, 26 Aug 2009 15:30:24 GMT Mon, 07 Jun 2010 14:14:48 GMT <p> On linux fedora F11 x86_64 I get this warning: </p> <blockquote> <p> bjam -sICU_PATH=/usr -sEXPAT_INCLUDE=/usr -sEXPAT_LIBPATH=/usr/lib64 -- </p> </blockquote> <p> layout=tagged threading=single,multi stage </p> <p> warning: ICU shared common library not found in path. hint: If the regex library fails to link then try again with the environment variable ICU_LINK set to contain the linker options required to link to ICU. Defaulting to look for libicuuc ... LINUX warning: ICU shared data library not found in path. hint: If the regex library fails to link then try again with the environment variable ICU_LINK set to contain the linker options required to link to ICU. </p> <ol><li>bjam should know to look in /usr/lib64 for all system libs </li><li>Is this just a harmless warning, or will the build be incorrect? </li></ol> Neal Becker <ndbecker2@…> https://svn.boost.org/trac10/ticket/3366 https://svn.boost.org/trac10/ticket/3366 Report #3363: linking 2 files compiled with different NDEBUG causes segfault Tue, 25 Aug 2009 05:00:32 GMT Mon, 21 Feb 2011 04:29:58 GMT <p> Linking y1.o and y2.o compiled as below causes the resulting executable to segfault and show valgrind errors. x1.o defines NDEBUG before including a boost header, x2.o doesn't. If both define NDEBUG, or both don't then linking them produces an executable that runs, and shows no valgrind errors. </p> <p> This is y1.cpp: #define NDEBUG 1 #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; #include &lt;iostream&gt; </p> <p> void foobar() { </p> <blockquote> <p> boost::posix_time::time_duration td(0, 0, 1, 0); std::stringstream ss; ss &lt;&lt; td; </p> </blockquote> <p> } void bar(void); int main() { </p> <blockquote> <p> bar(); return 0; </p> </blockquote> <p> } </p> <p> This is y2.cpp: #include &lt;boost/date_time/posix_time/posix_time.hpp&gt; void bar(void) { </p> <blockquote> <p> std::cerr&lt;&lt;boost::posix_time::second_clock::local_time()&lt;&lt;' '; </p> </blockquote> <p> } </p> <p> Fails: $ g++ y1.cpp y2.cpp &amp;&amp; ./a.out Segmentation fault </p> <p> Reported by Debian user; see <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537680"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537680</a> for valgrind output. </p> <p> I have reproduced this behaviour on today's trunk, so I expect it is still a problem in 1.39.0 and upcoming 1.40.0. </p> smr@… https://svn.boost.org/trac10/ticket/3363 https://svn.boost.org/trac10/ticket/3363 Report #3362: PySte crashes with TypeError Mon, 24 Aug 2009 21:00:49 GMT Tue, 18 Feb 2014 14:13:48 GMT <p> Certain C++ declarations can create unnamed classes, which cause GCCXML output to omit the name field. This in turn will trigger the following nasty exception (only the last part of the long traceback is shown): </p> <pre class="wiki"> File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 350, in ParsePointerType type = self.GetType(element.get('type')) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 126, in GetType decl = self.GetDecl(id) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 108, in GetDecl self.ParseElement(id, elem) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 70, in ParseElement func(id, element) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 319, in ParseStruct self.ParseClass(id, element) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 306, in ParseClass self.AddDecl(class_) File "C:\Python26\lib\site-packages\Pyste\GCCXMLParser.py", line 57, in AddDecl if decl.FullName() in self._names: File "C:\Python26\lib\site-packages\Pyste\declarations.py", line 49, in FullName return namespace + self.name TypeError: cannot concatenate 'str' and 'NoneType' objects </pre><p> The fix is quite simple: change </p> <pre class="wiki"> def ParseClass(self, id, element): name = element.get('name') </pre><p> to </p> <pre class="wiki"> def ParseClass(self, id, element): name = element.get('name', id) </pre><p> on line 290 of GCCXMLParser.py. </p> nneonneo@… https://svn.boost.org/trac10/ticket/3362 https://svn.boost.org/trac10/ticket/3362 Report #3353: warning C4244: Py_ssize_t to unsigned int Tue, 18 Aug 2009 20:01:58 GMT Sun, 03 Sep 2017 20:44:27 GMT <p> I am seeing a compiler warning regarding an unsafe type conversion: </p> <pre class="wiki">1&gt;c:\program files\boost\boost_1_39\boost\python\detail\caller.hpp(55) : warning C4244: 'return' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data </pre><p> Visual Studio 2005 </p> <p> Note that this may be a known issue or regression, as it was discussed 2 years ago here: <a class="ext-link" href="http://lists.boost.org/Archives/boost/2007/04/120377.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2007/04/120377.php</a> </p> davidm@… https://svn.boost.org/trac10/ticket/3353 https://svn.boost.org/trac10/ticket/3353 Report #3343: [Program options] add option to place description on the next line in output Fri, 14 Aug 2009 10:54:53 GMT Mon, 30 Mar 2015 12:56:24 GMT <p> If some param has long length and default value, then description of such param (and other params) has ugly output - very narrow text column.<br /> If it is possible then please deal with this issue.<br /><br /> For example, description of some option could be placed on the second line after its-name-and-default-value line. </p> rshmelev@… https://svn.boost.org/trac10/ticket/3343 https://svn.boost.org/trac10/ticket/3343 Report #3342: vector_c should use maximum integral constant type Fri, 14 Aug 2009 06:21:21 GMT Fri, 14 Aug 2009 06:21:21 GMT <p> It looks like currently long is built in, which leads to problems on 32 bit architectures with sizeofs int = long &lt; int64_t. </p> <p> How it's defined currently: </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span> <span class="k">typename</span> <span class="n">T</span><span class="p">,</span> <span class="kt">long</span> <span class="n">C0</span> <span class="o">=</span> <span class="n">LONG_MAX</span><span class="p">,</span> <span class="kt">long</span> <span class="n">C1</span> <span class="o">=</span> <span class="n">LONG_MAX</span><span class="p">,</span> <span class="kt">long</span> <span class="n">C2</span> <span class="o">=</span> <span class="n">LONG_MAX</span><span class="p">,</span> <span class="p">...</span> <span class="o">&gt;</span> <span class="k">struct</span> <span class="n">vector_c</span><span class="p">;</span> </pre></div></div><p> I believe the maximum integral type (e.g. int64_t) should be used instead of long. </p> <p> Example that shows the problem: </p> <div class="wiki-code"><div class="code"><pre> <span class="k">const</span> <span class="kt">int64_t</span> <span class="n">max_int</span> <span class="o">=</span> <span class="n">integer_traits</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;::</span><span class="n">const_max</span><span class="p">;</span> <span class="k">const</span> <span class="kt">int64_t</span> <span class="n">max_int_plus_1</span> <span class="o">=</span> <span class="n">max_int</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span> <span class="n">BOOST_MPL_ASSERT</span><span class="p">((</span> <span class="n">equal</span><span class="o">&lt;</span> <span class="n">vector_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="mi">1</span> <span class="o">&gt;</span> <span class="p">,</span> <span class="n">vector</span><span class="o">&lt;</span> <span class="n">integral_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="mi">1</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="p">));</span> <span class="n">BOOST_MPL_ASSERT</span><span class="p">((</span> <span class="n">equal</span><span class="o">&lt;</span> <span class="n">vector_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="n">max_int</span> <span class="o">&gt;</span> <span class="p">,</span> <span class="n">vector</span><span class="o">&lt;</span> <span class="n">integral_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="n">max_int</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="p">));</span> <span class="n">BOOST_MPL_ASSERT</span><span class="p">((</span> <span class="n">equal</span><span class="o">&lt;</span> <span class="n">vector_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="n">max_int_plus_1</span> <span class="o">&gt;</span> <span class="p">,</span> <span class="n">vector</span><span class="o">&lt;</span> <span class="n">integral_c</span><span class="o">&lt;</span> <span class="kt">int64_t</span><span class="p">,</span> <span class="n">max_int_plus_1</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="o">&gt;</span> <span class="p">));</span> </pre></div></div><p> The first assert passes, while the second and third fail with the following error messages (removed repetition of 2147483647l for readability): </p> <pre class="wiki">test.h:149: error: ************mpl::equal&lt;mpl::vector_c&lt;int64_t, 2147483647l, 2147483647l, ...&gt;, mpl::vector&lt;mpl_::integral_c&lt;int64_t, 2147483647&gt;&gt;, is_same&lt;true&gt; &gt;::************' test.h:153: error: ************mpl::equal&lt;mpl::vector_c&lt;int64_t, -0x00000000080000000l, 2147483647l, ...&gt;, mpl::vector&lt;mpl_::integral_c&lt;int64_t, 2147483648ll&gt;&gt;, is_same&lt;true&gt; &gt;::************' </pre> Maxim Yanchenko <Maxim.Yanchenko@…> https://svn.boost.org/trac10/ticket/3342 https://svn.boost.org/trac10/ticket/3342 Report #3340: boost.python.numeric docs out-of-date Thu, 13 Aug 2009 16:21:07 GMT Thu, 13 Aug 2009 16:21:07 GMT <p> Reading <a href="http://www.boost.org/doc/libs/1_39_0/libs/python/doc/v2/numeric.html#array-spec">http://www.boost.org/doc/libs/1_39_0/libs/python/doc/v2/numeric.html#array-spec</a> I run into a number of invalid / outdated URLs. Notably, the above page starts with </p> <p> "Provides access to the array types of Numerical Python's Numeric and <a class="missing wiki">NumArray</a> modules", but in one of the followup URLs I find </p> <p> "numarray is being phased out and replaced by numpy". </p> <p> Thus my questions: </p> <p> Other than a fix to the above docs, does boost.python need any adjustments to work with numpy ? In fact, what is the relationship between the above (old) modules and numpy ? Reading some follow-up docs it appears as if the numpy array types grew out of Numeric / <a class="missing wiki">NumArray</a>. Sorry for those somewhat tangential questions. I believe at least some clarification on the boost.python documentation as to what exact array types it is able to bind to would be very helpful. </p> Stefan Seefeld https://svn.boost.org/trac10/ticket/3340 https://svn.boost.org/trac10/ticket/3340 Report #3336: utc offset calculated wrong Tue, 11 Aug 2009 16:13:24 GMT Sun, 19 Jan 2014 11:31:50 GMT <p> Boost seems to invert the posix time zone specs or even worse to calculate them completely wrong: </p> <p> <a class="ext-link" href="http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html"><span class="icon">​</span>http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html</a> </p> <p> states: </p> <p> "If preceded by a '-', the timezone shall be east of the Prime Meridian; otherwise, it shall be west (which may be indicated by an optional preceding '+' )." </p> <p> Using the following lines in a c++ program: </p> <pre class="wiki"> time_zone_ptr myzone(new posix_time_zone(string("CET-1CEST,M3.5.0,M10.5.0/3"))); // e.g. Europe/Berlin cout &lt;&lt; "Posix time string: " &lt;&lt; myzone-&gt;to_posix_string() &lt;&lt; endl; local_date_time mylocaltime(date(2009,8,11), time_duration(17,0,0), myzone, true); cout &lt;&lt; "Wall clock: " &lt;&lt; mylocaltime.local_time() &lt;&lt; endl; cout &lt;&lt; "Time in UTC: " &lt;&lt; mylocaltime.utc_time() &lt;&lt; endl; </pre><p> gives following output: <br /> Posix time string: CET-01CEST+01,M3.5.0/02:00,M10.5.0/03:00 <br /> Wall clock: 2009-Aug-11 17:00:00 <br /> Time in UTC: 2009-Aug-11 17:00:00 <br /> </p> <p> The system I used: Debian GNU/Linux squeeze/sid <br /> uname -a<br /> Linux fafner 2.6.28.7 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> SMP Mon Mar 16 17:39:15 CET 2009 i686 GNU/Linux </p> <p> output from date:<br /> date -d "2009-8-11 17:00 CEST "<br /> Di 11. Aug 17:00:00 CEST 2009<br /> date -d "2009-8-11 17:00 CEST " -u<br /> Di 11. Aug 15:00:00 UTC 2009 </p> <p> Libraries (debian): libboost-date-time1.38.0 libboost-date-time1.38-dev libboost-date-time-dev </p> <p> The time zone spec ist taken from /usr/share/zoneinfo/CET on my system. </p> silvan@… https://svn.boost.org/trac10/ticket/3336 https://svn.boost.org/trac10/ticket/3336 Report #3318: boost/python/detail/caller.hpp doesn't compile (no member named 'get_pytype') Thu, 06 Aug 2009 10:57:51 GMT Thu, 08 Sep 2011 20:09:35 GMT <p> When compiling vegastrike-0.5.0 against boost 1.39.0 (./configure --with-boost=system to use the system boost instead of internal copy), the build breaks on errors in the boost/python/detail/caller.hpp header: </p> <pre class="wiki">In file included from /usr/include/boost/python/object/function_handle.hpp:9, from /usr/include/boost/python/converter/arg_to_python.hpp:20, from /usr/include/boost/python/call.hpp:16, from /usr/include/boost/python/object_core.hpp:13, from /usr/include/boost/python/object.hpp:10, from src/python/python_class.h:24, from src/python/briefing_wrapper.cpp:4: /usr/include/boost/python/detail/caller.hpp: In static member function 'static const PyTypeObject* boost::python::detail::converter_target_type&lt;ResultConverter&gt;::get_pytype() [with ResultConverter = boost::python::to_python_value&lt;const Vector&amp;&gt;]': /usr/include/boost/python/detail/caller.hpp:242: instantiated from 'static boost::python::detail::py_func_sig_info boost::python::detail::caller_arity&lt;1u&gt;::impl&lt;F, Policies, Sig&gt;::signature() [with F = Vector (*)(int), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector2&lt;Vector, int&gt;]' /usr/include/boost/python/object/py_function.hpp:48: instantiated from 'boost::python::detail::py_func_sig_info boost::python::objects::caller_py_function_impl&lt;Caller&gt;::signature() const [with Caller = boost::python::detail::caller&lt;Vector (*)(int), boost::python::default_call_policies, boost::mpl::vector2&lt;Vector, int&gt; &gt;]' src/python/briefing_wrapper.cpp:59: instantiated from here /usr/include/boost/python/detail/caller.hpp:102: error: 'struct boost::python::detail::caller_arity&lt;1u&gt;::impl&lt;F, Policies, Sig&gt;::operator()(PyObject*, PyObject*) [with F = Vector (*)(int), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector2&lt;Vector, int&gt;]::result_converter' has no member named 'get_pytype' make[1]: *** [src/python/briefing_wrapper.o] Error 1 </pre><p> Labelling this as regression since vegastrike is known to compile with boost 1.36.0. </p> <p> I'm using GCC 4.4.0, glibc 2.10.1, python 2.6.1 on Exherbo Linux </p> Ingmar Vanhassel <ingmar@…> https://svn.boost.org/trac10/ticket/3318 https://svn.boost.org/trac10/ticket/3318 Report #3313: Excessive line length in vector200.hpp Mon, 03 Aug 2009 18:50:50 GMT Mon, 03 Aug 2009 18:50:50 GMT <p> The file vector200.hpp, which appears to be an auto-generated file, does not import into the <a class="missing wiki">ClearCase</a> configuration management tool properly due to excessive line length. This was observed when using <a class="missing wiki">ClearCase</a> on Windows for configuration management of a software project using Boost. <a class="missing wiki">ClearCase</a> has a documented per line import maximum of 8000 characters for text files (refer to <a class="ext-link" href="http://www.ibm.com/developerworks/rational/library/4704.html"><span class="icon">​</span>http://www.ibm.com/developerworks/rational/library/4704.html</a>). In general files with lines exceeding 100+ characters are undesirable for a number of reasons. Since this file appears to be auto-generated, it should be generated such that the lines are much shorter so the file is more compatible with CM tools and other editors that may have troubles with the line length. </p> Lisa Preston <lisa.preston@…> https://svn.boost.org/trac10/ticket/3313 https://svn.boost.org/trac10/ticket/3313 Report #3301: Problem building boost with ICU (since version 1.39.0) Thu, 30 Jul 2009 05:42:27 GMT Sun, 06 Jun 2010 15:29:12 GMT <p> I have tried build boost 1.39.0 with MSVS 8.0, including regex library and with ICU support. </p> <p> The build string was </p> <pre class="wiki">bjam -j2 -sHAVE_ICU=1 --without-python --with-regex --build-dir="D:\Temp\BoostBuild" --toolset=msvc-8.0 --build-type=complete address-model=32 stage </pre><p> (version 1.38.0 was allright with this build string). </p> <p> This raised an error: </p> <pre class="wiki">error: link=shared together with runtime-link=static is not allowed error: such property combination is either impossible error: or too dangerious to be of any use </pre><p> Then I tried to narrow the building settings and use static linking only: </p> <pre class="wiki">bjam --toolset=msvc-8.0 --builddir="D:\Temp\BoostBuild" address-model=32 link=static runtime-link=static threading=multi stage debug release --with-regex -sHAVE_ICU=1 </pre><p> This also did raise the same error, despite shared linking wasn't demanded explicitly. </p> <p> The problem comes when trying to build boost with ICU. Without ICU it seems beeing ok, but I need unicode support in regex. </p> Yana A. Kireyonok <death.iron.bug@…> https://svn.boost.org/trac10/ticket/3301 https://svn.boost.org/trac10/ticket/3301 Report #3265: parse vectors Wed, 15 Jul 2009 03:09:11 GMT Thu, 27 Dec 2012 10:21:09 GMT <p> As discussed on the boost users mailinglist, when a user specified a vector as return target in their options_description, that is: </p> <p> <code>("opt", po::value&lt;float&gt;&amp;fA), "")</code> </p> <p> instead of </p> <p> <code>("vecopt", po::value&lt;vector&lt;float&gt;&gt;&amp;vfa), "")</code> </p> <p> a simple syntax for specifying such a vector (that is, an option that can occur multiple times), on the command line, in a config file or even in an environment variable (sic!) can be used. </p> <p> Compare (for command line) [--test "(1 2 3)"] with [--test 1 --test 2 --test 3]. </p> <p> Adding support for this syntax in the validate() function for vectors ensures that the braces (feel free to change them to another symbol that makes better sense to you) will only be processed specially when the user specified a vector as output variable. It will not break any existing option input systems defined by users. </p> <p> Note that it will still be possible to specify options multiple times, the values of which will be accumulated in the vector. One could even supply multiple vector-syntax inputs for the same option, which would then get concatenated together. </p> <p> The code is not yet totally finished, I need to add support for handling vectors of strings, marked as TODO in the code. </p> <p> proposed diff: </p> <pre class="wiki">Index: value_semantic.hpp =================================================================== --- value_semantic.hpp (revision 54915) +++ value_semantic.hpp (working copy) @@ -8,6 +8,8 @@ #include &lt;boost/throw_exception.hpp&gt; +#include &lt;boost/algorithm/string.hpp&gt; + namespace boost { namespace program_options { extern BOOST_PROGRAM_OPTIONS_DECL std::string arg; @@ -124,7 +126,8 @@ #endif /** Validates sequences. Allows multiple values per option occurrence - and multiple occurrences. */ + and multiple occurrences. This function is only called when user + supplied vector&lt;T&gt; as datatype in option_description */ template&lt;class T, class charT&gt; void validate(boost::any&amp; v, const std::vector&lt;std::basic_string&lt;charT&gt; &gt;&amp; s, @@ -142,11 +145,37 @@ /* We call validate so that if user provided a validator for class T, we use it even when parsing vector&lt;T&gt;. */ - boost::any a; - std::vector&lt;std::basic_string&lt;charT&gt; &gt; v; - v.push_back(s[i]); - validate(a, v, (T*)0, 0); - tv-&gt;push_back(boost::any_cast&lt;T&gt;(a)); + + vector&lt;std::basic_string&lt;charT&gt;&gt; value; + + // test if vector notation is used in input + if (*s[i].begin() == '(' &amp;&amp; *s[i].rbegin() == ')') + { + // test if it is a vector of strings + if (is_same&lt;T, string&gt;::value||is_same&lt;T, wstring&gt;::value) + { + /** TODO: needs special treatment, cant simply split + on space character + For now, proceed as before */ + value.push_back(s[i]); + } + else + { + split( value, s[i].substr(1, s[i].size()-2), is_any_of( " ") ); + } + } + else + value.push_back(s[i]); + + // validate option values + for (unsigned j = 0; j &lt; value.size(); j++) + { + boost::any a; + std::vector&lt;std::basic_string&lt;charT&gt; &gt; v; + v.push_back(value[j]); + validate(a, v, (T*)0, 0); + tv-&gt;push_back(boost::any_cast&lt;T&gt;(a)); + } } catch(const bad_lexical_cast&amp; /*e*/) { boost::throw_exception(invalid_option_value(s[i])); </pre> Diederick C. Niehorster <dcnieho@…> https://svn.boost.org/trac10/ticket/3265 https://svn.boost.org/trac10/ticket/3265 Report #3248: xlc warnings in MPL Tue, 07 Jul 2009 00:10:05 GMT Sat, 03 Mar 2012 18:57:26 GMT <p> xlc 10.1 throws the following warnings when using mpl::set: </p> <table class="wiki"> <tr>"/usr/local/include/boost/mpl/set/aux_/set0.hpp", line 63.6: 1540-0095 (W) The friend function declaration "operator<td style="text-align: left">" will cause an error when the enclosing template class is instantiated with arguments that declare a friend function that does not match an existing definition. The function declares only one function because it is not a template but the function type depends on one or more template parameters. </td></tr></table> <p> "/usr/local/include/boost/mpl/set/aux_/set0.hpp", line 64.6: 1540-0095 (W) The friend function declaration "operator%" will cause an error when the enclosing template class is instantiated with arguments that declare a friend function that does not match an existing definition. The function declares only one function because it is not a template but the function type depends on one or more template parameters. </p> Ioannis Papadopoulos <ipapadop@…> https://svn.boost.org/trac10/ticket/3248 https://svn.boost.org/trac10/ticket/3248 Report #3247: Multicast join group does not honor interface specification Mon, 06 Jul 2009 21:18:46 GMT Fri, 22 Mar 2013 10:15:55 GMT <p> I'm working with the Multicast receiver example at: </p> <p> <a href="http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio/example/multicast/receiver.cpp">http://www.boost.org/doc/libs/1_35_0/doc/html/boost_asio/example/multicast/receiver.cpp</a> </p> <p> Notice that you specify the listen_address as you create the endpoint that is bound to the socket. Later when you call socket::set_option with the multicast_address, I would expect the listen_address to be honored. The current implementation uses INET_ANY for the interface in the multicast subscription. This means the multicast messages may arrive on one interface while you are listening for them on another one. I can't think of any case in which you would want to specify an IP for the receive, but not for the join_group and it certainly shouldn't be the default behavior when you use the example code as a guide. </p> <p> Workaround: There is a different constructor for the join_group object that does produce the desired behavior, but it is not obvious that you should need it. Also it does not accept boost::asio::ip::addresses as arguments (which would make sense) but requires that you "convert" them to ip4 (or ip6) addresses. Seems awkward. </p> Dale Wilson <wilson@…> https://svn.boost.org/trac10/ticket/3247 https://svn.boost.org/trac10/ticket/3247 Report #3240: Boostbook documentation is built under the current working directory. Fri, 03 Jul 2009 10:07:48 GMT Fri, 03 Jul 2009 10:07:48 GMT <p> For a demonstration, change to <code>$BOOST_ROOT</code>, and run: </p> <blockquote> <p> bjam libs/static_assert/doc/ </p> </blockquote> <p> The documentation is built in <code>$BOOST_ROOT/html</code> when I'd expect it to be built in <code>$BOOST_ROOT/libs/static_assert/doc/html</code>. The css file is installed to <code>$BOOST_ROOT/libs/static_assert/doc/html</code> so the links to it are broken. Also, for some other documentation, links are broken unless it's built in the correct location. </p> <p> If this is fixed, the asio documentation build will have to be fixed as it relies on the current behaviour. In <code>doc/Jamfile.v2</code> an alias is used which builds the documentation in <code>doc/html</code>, so ideally there should be a way to preserve that - perhaps a parameter to specify the destination, in a similar manner to <code>install</code>. </p> <p> This isn't a priority as it doesn't create any real problems in practice but it would be nice as it would make it easy to create a Jamfile which builds all the boostbook documentation, including 'standalone' documentation. </p> Daniel James https://svn.boost.org/trac10/ticket/3240 https://svn.boost.org/trac10/ticket/3240 Report #3239: duplicate case value in error_code.cpp on mipsel Thu, 02 Jul 2009 20:23:52 GMT Mon, 20 Jul 2009 13:33:51 GMT <p> Compiler: gcc version 4.1.2 Target: mipsel-linux-uclibc </p> <p> Error: libs/system/src/error_code.cpp:223: error: duplicate case value </p> <p> libs/system/src/error_code.cpp:179: error: previously used here </p> <p> libs/system/src/error_code.cpp:232: error: duplicate case value </p> <p> libs/system/src/error_code.cpp:177: error: previously used here </p> <p> Solution? </p> <p> # if ECONNRESET != ENOTRECOVERABLE </p> <p> case ENOTRECOVERABLE: return make_error_condition( state_not_recoverable ); </p> <p> # endif <em> ECONNRESET != ENOTRECOVERABLE </em></p> <p> # if ECONNABORTED != EOWNERDEAD </p> <p> case EOWNERDEAD: return make_error_condition( owner_dead ); </p> <p> # endif <em> ECONNABORTED != EOWNERDEAD </em></p> <p> Thank you :) </p> der_felix@… https://svn.boost.org/trac10/ticket/3239 https://svn.boost.org/trac10/ticket/3239 Report #3224: shape() should return a RandomAccessCollection Fri, 26 Jun 2009 15:53:08 GMT Fri, 26 Jun 2009 15:53:08 GMT <p> Has there ever been any thought to making multi_array::shape() return something that models the Collection concept (<a class="missing wiki">RandomAccessCollection</a> in particular I suppose) rather than a raw pointer? This would allow the return value from shape() to be passed directly to multi_array::reshape() or multi_array::resize(), for added convenience. It would also allow a debug assertion to be added to make sure you don't try to access beyond the end of the array returned by shape(). </p> <p> From looking at the multi_array code, it looks like it would be relatively easy to add a new function called maybe "size()" which would replace "shape()" (which could be kept but deprecated) where size() would return a const reference to the boost::array used internally to store the extent_list_. </p> fhess https://svn.boost.org/trac10/ticket/3224 https://svn.boost.org/trac10/ticket/3224 Report #3223: number of dimensions as static constant Fri, 26 Jun 2009 15:48:15 GMT Fri, 13 Jan 2012 15:48:06 GMT <p> multi_array and friends should provide the number of dimensions as a static member constant, so it is available at compile time and can be used in generic programming. I assume the num_dimensions() non-static member function was put in the design with the idea that the number of dimensions of a multi_array object might be dynamically changed. But since the multi array concept and classes doen't support changing the number of dimensions, it doesn't provide anything useful over a static constant. </p> fhess https://svn.boost.org/trac10/ticket/3223 https://svn.boost.org/trac10/ticket/3223 Report #3222: const-correctness and documentation bugs Fri, 26 Jun 2009 15:47:00 GMT Fri, 26 Jun 2009 15:47:00 GMT <p> I am able to modify a const multi_array through a multi_array_ref. For example: </p> <p> const boost::multi_array&lt;int, 2&gt; myarray(boost::extents<a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/2" title="Add Boost Disclaimer">[2]</a>); boost::multi_array_ref&lt;int, 2&gt; myarrayref(myarray); myarrayref<a class="missing changeset" title="No changeset 0 in the repository">[0]</a><a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">[1]</a> = 2; </p> <p> IMO, trying to create a multi_array_ref from a const multi_array should fail to compile, only a const_multi_array_ref should work. Also, the reference doesn't include the public inheritance between multi_array, multi_array_ref, and const_multi_array in their class synopses. It is important because it seems to be the only reason you can do conversions from multi_array to multi_array_ref or const_multi_array_ref. </p> fhess https://svn.boost.org/trac10/ticket/3222 https://svn.boost.org/trac10/ticket/3222 Report #3221: Collection concept documentation missing reverse_iterator Fri, 26 Jun 2009 14:14:28 GMT Mon, 04 Feb 2013 22:45:10 GMT <p> The <a class="missing wiki">ReversibleCollection</a> concept should list reverse_iterator as an associated type required by the concept, with a little 1-sentence description of what it needs to to (like the listings for the associated types of a Collection). </p> fhess https://svn.boost.org/trac10/ticket/3221 https://svn.boost.org/trac10/ticket/3221 Report #3219: restrict1 or mutable_restrict1 Fri, 26 Jun 2009 08:54:56 GMT Mon, 05 Oct 2009 22:22:36 GMT <p> hi, when you compile the Bayes++ library with Boost (for 1.39 and 1.38 versions), there is a bug with uBlas : In boost/numeric/ublas/symmetric.hpp ln1145 : i = triangular_type::mutable_restrict1 (i, j); ln1175 : j = triangular_type::mutable_restrict2 (i, j); </p> <p> In boost/numeric/ublas/functional.hpp ln1730 there is a "<em> FIXME: this should not be used at all" for mutable_restrict1 and so. </em></p> <p> I get the following error message : error C2660: 'boost::numeric::ublas::detail::transposed_structure&lt;L&gt;::mutable_restrict1' : la fonction ne prend pas 2 arguments D:\Program Files\CEA\lcviExtern_test\boost_1_39_0\boost\numeric\ublas\symmetric.hpp 1145 </p> julien michot https://svn.boost.org/trac10/ticket/3219 https://svn.boost.org/trac10/ticket/3219 Report #3217: inconsistent from_xxx_string() name for date and ptime Thu, 25 Jun 2009 21:21:47 GMT Thu, 25 Jun 2009 21:21:47 GMT <p> The date and ptime class both have a function that constructs an instance from an ISO formatted string. However, date names this function from_undelimited_string() and ptime from_iso_string(). This is a unnecessary inconsistency. Either name would work for me though my preference is the iso variant. </p> "LeJacq, Jean Pierre" <jplejacq@…> https://svn.boost.org/trac10/ticket/3217 https://svn.boost.org/trac10/ticket/3217 Report #3196: compiler warnings in VC9 Sat, 20 Jun 2009 02:44:21 GMT Fri, 10 Jun 2011 08:26:33 GMT <p> The following code in boost/concept/detail/msvc.hpp generates a warning stating that 'x' is an unreferenced formal parameter under VC9 at warning level 4 when failed() isn't invoked. Since this already appears to be an msvc-specific file, can it's contents be wrapped in a #pragma warning( disable : 4100 ) to suppress the warning? </p> <p> template &lt;class Model&gt; struct check { </p> <blockquote> <p> virtual void failed(Model* x) { </p> <blockquote> <p> x-&gt;~Model(); </p> </blockquote> <p> } </p> </blockquote> <p> }; </p> kfriddile@… https://svn.boost.org/trac10/ticket/3196 https://svn.boost.org/trac10/ticket/3196 Report #3194: compiler warnings in VC9 Sat, 20 Jun 2009 01:29:13 GMT Fri, 14 Jan 2011 23:22:15 GMT <p> The following code under VC9 with warning level 4 produces the warnings below. Warnings are not allowed on my project, and rather than wrapping boost includes with a #pragma directive, I'd rather these warnings just be suppressed in the code that's causing them. </p> <p> boost::uint32_t <a class="missing wiki">GenerateChecksum</a>( const char* data, size_t length ) { </p> <blockquote> <p> boost::crc_32_type computer; </p> </blockquote> <blockquote> <p> computer = std::for_each( data, </p> <blockquote> <p> data + length, computer ); </p> </blockquote> </blockquote> <blockquote> <p> return computer(); </p> </blockquote> <p> } </p> <p> 2&gt;C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(377) : warning C4245: 'initializing' : conversion from 'int' to 'const boost::detail::mask_uint_t&lt;8&gt;::least', signed/unsigned mismatch 2&gt;C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(400) : warning C4245: 'initializing' : conversion from 'int' to 'const boost::detail::mask_uint_t&lt;16&gt;::least', signed/unsigned mismatch 2&gt;C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(574) : warning C4244: 'return' : conversion from 'unsigned int' to 'unsigned char', possible loss of data 2&gt; C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(574) : while compiling class template member function 'unsigned char boost::detail::crc_helper&lt;Bits,<a class="missing wiki">DoReflect</a>&gt;::index(unsigned int,unsigned char)' 2&gt; with 2&gt; [ 2&gt; Bits=32, 2&gt; <a class="missing wiki">DoReflect</a>=true 2&gt; ] 2&gt; C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(836) : see reference to class template instantiation 'boost::detail::crc_helper&lt;Bits,<a class="missing wiki">DoReflect</a>&gt;' being compiled 2&gt; with 2&gt; [ 2&gt; Bits=32, 2&gt; <a class="missing wiki">DoReflect</a>=true 2&gt; ] 2&gt; C:\Documents and Settings\Administrator\My Documents\Development\development\third_party\boost\1_39_0\boost/crc.hpp(836) : while compiling class template member function 'boost::crc_optimal&lt;Bits,<a class="missing wiki">TruncPoly</a>,<a class="missing wiki">InitRem</a>,<a class="missing wiki">FinalXor</a>,<a class="missing wiki">ReflectIn</a>,<a class="missing wiki">ReflectRem</a>&gt;::crc_optimal(unsigned int)' 2&gt; with 2&gt; [ 2&gt; Bits=32, 2&gt; <a class="missing wiki">TruncPoly</a>=79764919, 2&gt; <a class="missing wiki">InitRem</a>=-1, 2&gt; <a class="missing wiki">FinalXor</a>=-1, 2&gt; <a class="missing wiki">ReflectIn</a>=true, 2&gt; <a class="missing wiki">ReflectRem</a>=true 2&gt; ] 2&gt; ..\..\..\..\components\libs\checksum\source\Checksum.cpp(12) : see reference to class template instantiation 'boost::crc_optimal&lt;Bits,<a class="missing wiki">TruncPoly</a>,<a class="missing wiki">InitRem</a>,<a class="missing wiki">FinalXor</a>,<a class="missing wiki">ReflectIn</a>,<a class="missing wiki">ReflectRem</a>&gt;' being compiled 2&gt; with 2&gt; [ 2&gt; Bits=32, 2&gt; <a class="missing wiki">TruncPoly</a>=79764919, 2&gt; <a class="missing wiki">InitRem</a>=-1, 2&gt; <a class="missing wiki">FinalXor</a>=-1, 2&gt; <a class="missing wiki">ReflectIn</a>=true, 2&gt; <a class="missing wiki">ReflectRem</a>=true 2&gt; ] </p> kfriddile@… https://svn.boost.org/trac10/ticket/3194 https://svn.boost.org/trac10/ticket/3194 Report #3188: concepts for immutable types Thu, 18 Jun 2009 07:56:28 GMT Thu, 18 Jun 2009 07:56:28 GMT <p> Currently all concepts are written for mutable objects although all containers and expressions can be either constant or mutable. </p> <p> I suggest to split the current concepts in basic concepts that contain the operations for both constant and mutable classes and special concepts only for mutable classes (which are a refinement of the constant concepts). </p> Gunter https://svn.boost.org/trac10/ticket/3188 https://svn.boost.org/trac10/ticket/3188 Report #3165: wrong project-config.jam generated for intel-linux Thu, 11 Jun 2009 06:22:00 GMT Tue, 10 Nov 2009 08:27:13 GMT <p> Per <a class="ext-link" href="http://permalink.gmane.org/gmane.comp.lib.boost.user/48455"><span class="icon">​</span>http://permalink.gmane.org/gmane.comp.lib.boost.user/48455</a>, if using the intel-linux toolset, bootstrap.sh generates wrong code to check if intel-linux is already initialized, which leads to double-initialization. </p> Vladimir Prus https://svn.boost.org/trac10/ticket/3165 https://svn.boost.org/trac10/ticket/3165 Report #3154: Documentation does not specify support (or lack of) for negative strides Tue, 09 Jun 2009 11:44:35 GMT Tue, 09 Jun 2009 11:44:35 GMT <p> Are negative strides supported by the multi_array library? The documentation does not mention them explicitly. Anecdotal evidence suggests that they work in some cases when range checking is disabled. See: </p> <p> <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/190214"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.devel/190214</a> </p> John Reid <j.reid@…> https://svn.boost.org/trac10/ticket/3154 https://svn.boost.org/trac10/ticket/3154 Report #3153: Can only disable range checking by defining BOOST_DISABLE_ASSERTS macro Tue, 09 Jun 2009 11:40:56 GMT Tue, 09 Jun 2009 12:09:20 GMT <p> Defining BOOST_DISABLE_ASSERTS disables boost asserts compilation unit wide. It would be nice to have finer grained control over the range checking in multi_array via a multi_array specific macro. </p> John Reid <john.reid@…> https://svn.boost.org/trac10/ticket/3153 https://svn.boost.org/trac10/ticket/3153 Report #3152: Obtaining a minimum s-t cut edge set Tue, 09 Jun 2009 07:17:52 GMT Wed, 08 Dec 2010 19:44:37 GMT <p> The boost graph library offers a set of algorithms to solve linear max-flow problems, among them push-relabel and kolmogorov max-flow algorithms. </p> <p> Often, the application of the max-flow algorithm is in order to solve for a minimum edge cut set separating nodes s and t. Right now, obtaining a minimum edge cut set is not supported in the boost graph library. Thus one of the main applications of solving max flow problems is not catered for by boost graph. </p> <p> Limited support for this functionality is available in the kolmogorov_max_flow algorithm by means of a color map mapping vertices to black, white and gray states. However, this is specific to the kolmogorov max flow algorithm whereas the general feature to obtain the minimum cut set is so important such that it should be an own feature supported by all max flow algorithms in the library. </p> <p> Additionally, the documentation or code of the colormap in the kolmogorov max flow algorithm is wrong; there are connected but undecided states (gray) and applying the white-nonwhite or black-nonblack separation suggested in the documentation does not always yield a minimum cut set. </p> <p> Thanks for considering. </p> nowozin@… https://svn.boost.org/trac10/ticket/3152 https://svn.boost.org/trac10/ticket/3152 Report #3150: boost.asio: async_copy(in, out, ...) for POSIX sendfile() support Mon, 08 Jun 2009 13:00:57 GMT Tue, 11 Aug 2009 09:43:27 GMT <p> hey guys, </p> <p> i wanted to use boost and boost.asio in order to implement a web service, however, when transmitting static files, i feel not welcome in just memcpy'ing the file into RAM and copying back into kernel space for transmission over TCP/IP. that's where POSIX sendfile() comes into play. </p> <p> it takes an input file descriptor (local file e.g.), an output file descriptor (socket e.g.), offset and count, and transfers data directly from input to output *without* leaving kernel space, this is highly recommented e.g. when sending local files to sockets in HA software. </p> <p> just like async_read/async_write, i imagine that it could be possible in providing an </p> <blockquote> <p> return_type async_copy(input, output, count, finish_callback, ...); </p> </blockquote> <p> would you mind? </p> trapni@… https://svn.boost.org/trac10/ticket/3150 https://svn.boost.org/trac10/ticket/3150 Report #3144: Support unicode punctuation Sat, 06 Jun 2009 13:47:00 GMT Wed, 09 Apr 2014 02:19:44 GMT <p> Spirit 1's punct_p uses the standard C locale <code>ispunct</code>. So use something that supports unicode punctuation. </p> <p> Maybe also add a way to choose the locale to use and look for anywhere else that the locale matters. </p> <p> <a class="ext-link" href="http://tinyurl.com/35j57v"><span class="icon">​</span>David Abrahams wrote</a>: </p> <blockquote class="citation"> <p> It seems like Quickbook defines "punctuation" as whatever the 'C' locale says it is. As a result, none of the following foo's are italicized: </p> </blockquote> <pre class="wiki">/foo/—a generic name used in programming—came to being after WWII. “/foo/” came into being after WWII. </pre><blockquote class="citation"> <p> This fact (if I have it right) should be documented. </p> <p> [QB should be fixed to handle unicode input.] </p> </blockquote> Daniel James https://svn.boost.org/trac10/ticket/3144 https://svn.boost.org/trac10/ticket/3144 Report #3132: Provide conversions to time_t Thu, 04 Jun 2009 09:23:12 GMT Sun, 01 Jul 2012 18:11:19 GMT <p> Extracted from <a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/889" title="#889: Feature Requests: Insane Dependencies (assigned)">#889</a>. </p> <p> ==========8&lt;============ Also why no conversions to time_t? It would be nice not to have include the header outside of translation units. :) ==========&gt;8============ </p> <p> Need to provide conversion function from Boost.<a class="missing wiki">DateTime</a> types to std::time_t. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/3132 https://svn.boost.org/trac10/ticket/3132 Report #3131: DCCP protocol support in Boost.Asio Thu, 04 Jun 2009 08:45:27 GMT Fri, 10 Jul 2009 10:35:44 GMT <p> DCCP is a connected datagram protocol, which can be seen to occupy the niche between UDP and TCP. Newer versions of glibc enable support of this protocol to some extent, so I decided, it may be handy to have support for it in Asio as well. </p> <p> Considering that it only operates on connected sockets, I hacked up new basic_dccp_socket/dccp_socket_service classes, which are datagram in nature, but do not support unconnected operation. </p> <p> One problem I haven't though about the way to address (hopefully, somebody will help me out with this) is concept of DCCP service codes. Each DCCP socket must be associated with one or several service codes. Information about the desired service codes must be communicated somehow down the pipe (either through an appropriate change to the "resolver" or by some other means). </p> <p> If ignored, service code on sockets default to 0 and everything works fine, but it is not an intended approach to DCCP use. </p> oakad@… https://svn.boost.org/trac10/ticket/3131 https://svn.boost.org/trac10/ticket/3131 Report #3129: Return types of Parameter ArgumentPack creation functions should be documented Wed, 03 Jun 2009 17:57:16 GMT Wed, 03 Jun 2009 17:57:16 GMT <p> The return types of functions such as operator= on keywords, operator, on <a class="missing wiki">ArgumentPacks</a>, and the empty <a class="missing wiki">ArgumentPack</a> are not documented. This information is necessary to write functions that return <a class="missing wiki">ArgumentPacks</a>. This could be provided by a traits class that allows the underlying implementations of these constructs to be changed later. </p> Jeremiah Willcock https://svn.boost.org/trac10/ticket/3129 https://svn.boost.org/trac10/ticket/3129 Report #3128: comma operator not in reference docs Wed, 03 Jun 2009 17:10:27 GMT Wed, 03 Jun 2009 17:10:27 GMT <p> It should be described there. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/3128 https://svn.boost.org/trac10/ticket/3128 Report #3114: Modified interface to allow even lazier return types for defaults Sat, 30 May 2009 23:51:19 GMT Sat, 09 Jan 2010 19:56:50 GMT <p> There are some use cases where the return type of operator() in a default computation class is not valid in some cases when that default is not used. The current interface to such classes does not allow that case; see the message at <a class="ext-link" href="http://lists.boost.org/Archives/boost/2009/05/152009.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2009/05/152009.php</a> for more information. The attached patch allows a special member type (that must be void) to be used to change the interface to pass a single int argument to operator(), while keeping the old no-parameter interface for function objects without the special tag. The tag could also have been implemented as a traits class used with enable_if. The patch passes all of the Boost.Parameter tests except two (which appear to freeze up). I only changed the normal path through the code, and not the compatibility code which I am unable to test. A test for the new functionality added by the patch is also attached. </p> Jeremiah Willcock https://svn.boost.org/trac10/ticket/3114 https://svn.boost.org/trac10/ticket/3114 Report #3112: Tag object initialization not guaranteed legal Fri, 29 May 2009 17:53:00 GMT Fri, 29 May 2009 18:31:49 GMT <p> We should be using this technique: <a class="ext-link" href="http://tinyurl.com/threadsafe-static-globals"><span class="icon">​</span>http://tinyurl.com/threadsafe-static-globals</a> </p> Dave Abrahams https://svn.boost.org/trac10/ticket/3112 https://svn.boost.org/trac10/ticket/3112 Report #3109: time_duration::total_seconds() - overflow Fri, 29 May 2009 14:30:21 GMT Tue, 02 Aug 2016 05:45:20 GMT <p> time_duration::total_seconds() overflow value </p> <p> minimal sample (based on boost example) <em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em> #include &lt;string&gt; #include &lt;boost/date_time/local_time/local_time.hpp&gt; </em></p> <p> int main() { </p> <blockquote> <p> using namespace boost::gregorian; using namespace boost::local_time; using namespace boost::posix_time; </p> </blockquote> <blockquote> <p> date in_date(2039, 10, 04); time_duration td(12,14,32); std::string z("PST-8PDT,M4.1.0,M10.1.0"); time_zone_ptr zone(new posix_time_zone(z)); local_date_time my_time(in_date, td, zone, local_date_time::NOT_DATE_TIME_ON_ERROR); std::cout &lt;&lt; my_time &lt;&lt; std::endl; <em> ptime time_t_epoch( date(1970,1,1) ); std::cout &lt;&lt; time_t_epoch &lt;&lt; std::endl; </em> time_duration diff = my_time.utc_time() - time_t_epoch; std::cout &lt;&lt; "Seconds diff: " &lt;&lt; diff.total_seconds() &lt;&lt; std::endl; return 0; </p> </blockquote> <p> } <em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em></em><em> </em></p> ioni@… https://svn.boost.org/trac10/ticket/3109 https://svn.boost.org/trac10/ticket/3109 Report #3077: Reverse iterator compile-time bug in multi_array Mon, 25 May 2009 10:47:28 GMT Tue, 08 Jun 2010 22:51:47 GMT <p> I'm having some trouble iterating over a 2-dimensional multi_array in reverse order. I'm using boost 1.38 with gcc-4.2.4 and the following code won't compile with the error given below: </p> <pre class="wiki">#include &lt;boost/multi_array.hpp&gt; template&lt; typename It &gt; void iterate_over( It begin, It end ) { while( end != begin ) { begin-&gt;end() - begin-&gt;begin(); ++begin; } } void test() { boost::multi_array&lt; double, 2 &gt; m; iterate_over( m.begin(), m.end() ); // works fine iterate_over( m.rbegin(), m.rend() ); // causes error } </pre><p> This looks to me like a bug in the implementation of the reverse iterator for multi_array. Am I wrong? It is only a problem when iterator::operator-&gt; is used. The (*begin). notation works fine. </p> <p> /home/john/Dev/ThirdParty/boost/boost_1_38_0/boost/iterator/iterator_facade.hpp: In static member function ‘static typename boost::mpl::if_&lt;boost::is_reference&lt;Reference&gt;, Pointer, boost::detail::operator_arrow_proxy&lt;<a class="missing wiki">ValueType</a>&gt; &gt;::type boost::detail::operator_arrow_result&lt;<a class="missing wiki">ValueType</a>, Reference, Pointer&gt;::make(Reference) [with <a class="missing wiki">ValueType</a> = boost::multi_array&lt;double, 1ul, std::allocator&lt;double&gt; &gt;, Reference = boost::detail::multi_array::sub_array&lt;double, 1ul&gt;, Pointer = boost::multi_array&lt;double, 1ul, std::allocator&lt;double&gt; &gt;*]’: /home/john/Dev/ThirdParty/boost/boost_1_38_0/boost/iterator/iterator_facade.hpp:648: instantiated from ‘typename boost::detail::operator_arrow_result&lt;typename boost::detail::iterator_facade_types&lt;Value, <a class="missing wiki">CategoryOrTraversal</a>, Reference, Difference&gt;::value_type, Reference, typename boost::detail::iterator_facade_types&lt;Value, <a class="missing wiki">CategoryOrTraversal</a>, Reference, Difference&gt;::pointer&gt;::type boost::iterator_facade&lt;I, V, TC, R, D&gt;::operator-&gt;() const [with Derived = boost::reverse_iterator&lt;boost::detail::multi_array::array_iterator&lt;double, double*, mpl_::size_t&lt;2ul&gt;, boost::detail::multi_array::sub_array&lt;double, 1ul&gt; &gt; &gt;, Value = boost::multi_array&lt;double, 1ul, std::allocator&lt;double&gt; &gt;, <a class="missing wiki">CategoryOrTraversal</a> = boost::detail::iterator_category_with_traversal&lt;std::input_iterator_tag, boost::random_access_traversal_tag&gt;, Reference = boost::detail::multi_array::sub_array&lt;double, 1ul&gt;, Difference = long int]’ src/sandbox/seqan_sandbox.cpp:12: instantiated from ‘void iterate_over(It, It) [with It = boost::reverse_iterator&lt;boost::detail::multi_array::array_iterator&lt;double, double*, mpl_::size_t&lt;2ul&gt;, boost::detail::multi_array::sub_array&lt;double, 1ul&gt; &gt; &gt;]’ src/sandbox/seqan_sandbox.cpp:22: instantiated from here /home/john/Dev/ThirdParty/boost/boost_1_38_0/boost/iterator/iterator_facade.hpp:326: error: no matching function for call to ‘implicit_cast(boost::detail::multi_array::sub_array&lt;double, 1ul&gt;*)’ </p> John Reid <john.reid@…> https://svn.boost.org/trac10/ticket/3077 https://svn.boost.org/trac10/ticket/3077 Report #3054: boost::python doesn't support implicit intrusive_ptr casts Wed, 20 May 2009 12:52:44 GMT Wed, 06 Feb 2013 08:18:30 GMT <p> See <a class="ext-link" href="http://mail.python.org/pipermail/cplusplus-sig/2007-February/011651.html"><span class="icon">​</span>http://mail.python.org/pipermail/cplusplus-sig/2007-February/011651.html</a> for code that solves this. (the boostPatch namespace contents) </p> <p> I couldn't find anything on Boost.Python in the release notes for 1.38 or 1.39, so I assume it's still in there. </p> <p> Also, for those who need this before it's included in boost::python::class_, a better use of the functions (than the typedeffing in the post above) is: </p> <div class="wiki-code"><div class="code"><pre><span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">T</span><span class="p">,</span> <span class="k">class</span> <span class="nc">B</span><span class="p">,</span> <span class="k">class</span> <span class="nc">X</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Y</span><span class="o">&gt;</span> <span class="k">class</span> <span class="nc">myclass</span> <span class="o">:</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="o">::</span><span class="n">class_</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span> <span class="n">B</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="o">&gt;</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">class</span> <span class="nc">Constructor</span><span class="o">&gt;</span> <span class="n">myclass</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">name</span><span class="p">,</span> <span class="k">const</span> <span class="n">Constructor</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span> <span class="o">:</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="o">::</span><span class="n">class_</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span> <span class="n">B</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="o">&gt;</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="p">{</span> <span class="n">boostPatch</span><span class="o">::</span><span class="n">register_intrusive_ptr_from_python_and_casts</span><span class="p">(</span> <span class="p">(</span><span class="n">T</span> <span class="o">*</span><span class="p">)</span><span class="mi">0</span><span class="p">,</span> <span class="n">metadata</span><span class="o">::</span><span class="n">bases</span><span class="p">()</span> <span class="p">);</span> <span class="p">}</span> <span class="p">};</span> </pre></div></div> macke@… https://svn.boost.org/trac10/ticket/3054 https://svn.boost.org/trac10/ticket/3054 Report #3053: asio::placeholders not compatible with std::tr1::bind Wed, 20 May 2009 09:18:09 GMT Sat, 27 Jun 2009 08:03:06 GMT <p> If I use a placeholder from <code>boost::asio::placeholders</code> with <code>std::tr1::bind</code> from <code>&lt;functional&gt;</code>, I get loads of compiler output, concluding with this: </p> <pre class="wiki">/usr/include/c++/4.3/tr1_impl/functional:1138: error: no match for call to '(std::tr1::_Mem_fn&lt;void (Connection::*)(const boost::system::error_code&amp;)&gt;) (Connection*&amp;, boost::arg&lt;1&gt; (*&amp;)())' /usr/include/c++/4.3/tr1_impl/functional:551: note: candidates are: _Res std::tr1::_Mem_fn&lt;_Res (_Class::*)(_ArgTypes ...)&gt;::operator()(_Class&amp;, _ArgTypes ...) const [with _Res = void, _Class = Connection, _ArgTypes = const boost::system::error_code&amp;] /usr/include/c++/4.3/tr1_impl/functional:556: note: _Res std::tr1::_Mem_fn&lt;_Res (_Class::*)(_ArgTypes ...)&gt;::operator()(_Class*, _ArgTypes ...) const [with _Res = void, _Class = Connection, _ArgTypes = const boost::system::error_code&amp;] /usr/include/c++/4.3/tr1_impl/functional:1138: error: return-statement with a value, in function returning 'void' </pre><p> With <code>Connection</code> a self-defined class. If I use <code>boost::bind</code> instead of <code>std::tr1::bind</code>, it works. </p> <p> To me, this seems like the placeholders from asio are not usable with <code>bind</code> from TR1. Is there any way to fix this in Boost, perhaps using BOOST_HAS_TR1_BIND in the asio headers? </p> sdrongel@… https://svn.boost.org/trac10/ticket/3053 https://svn.boost.org/trac10/ticket/3053 Report #3049: libs/mpl/preprocessed need README on purpose and howto Tue, 19 May 2009 14:57:23 GMT Mon, 13 Jan 2014 22:33:55 GMT <p> After application of recent patch file: </p> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/attachment/ticket"><span class="icon">​</span>https://svn.boost.org/trac/boost/attachment/ticket</a> </p> <blockquote> <p> /3044/iter_fold_if.patch </p> </blockquote> <p> an attempt to run the test resulted in an error msg: </p> <p> gcc.compile.c++ ../../../bin.v2/libs/mpl/test/iter_fold_if.test </p> <blockquote> <p> /gcc-4.2/debug/iter_fold_if.o </p> </blockquote> <p> In file included from iter_fold_if.cpp:14: ../../../boost/mpl/iter_fold_if.hpp:86: error: wrong number of </p> <blockquote> <p> template arguments (5, should be 6) </p> </blockquote> <p> ../../../boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp:96: </p> <blockquote> <p> error: provided for 'template&lt;class Iterator, class State, class <a class="missing wiki">ForwardOp</a>, class <a class="missing wiki">ForwardPredicate</a>, class <a class="missing wiki">BackwardOp</a>, class <a class="missing wiki">BackwardPredicate</a>&gt; struct boost::mpl::aux::iter_fold_if_impl' </p> </blockquote> <p> This message indicates need to regenerate the preprocessed files from the programs in /mpl/lib/preprocessed; however, there's no README file in that directory providing instructions on how to do that. </p> <p> It would be very helpful if one were provided. </p> cppljevans@… https://svn.boost.org/trac10/ticket/3049 https://svn.boost.org/trac10/ticket/3049 Report #3044: mpl::aux_::iter_fold_if_impl allows deref l_end Mon, 18 May 2009 16:06:03 GMT Sat, 06 Jun 2009 11:07:10 GMT <p> The mpl::aux_::iter_fold_if_impl template: </p> <blockquote> <p> <a class="ext-link" href="https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux"><span class="icon">​</span>https://svn.boost.org/trac/boost/browser/trunk/boost/mpl/aux</a>_ </p> <blockquote> <p> /iter_fold_if_impl.hpp </p> </blockquote> </blockquote> <p> allows deref'ing of an end iterator. The problem is most easily shown with list because deref&lt;l_end&gt; is not possible. Apparently, deref of an end iterator from other sequences (e.g. vector or range_c) allow deref of an end iterator. </p> <p> The attached: </p> <blockquote> <p> iter_fold_if_bkprotect.zip </p> </blockquote> <p> illustrates the problem. The attached: </p> <blockquote> <p> iter_fold_if_bkprotect2.zip </p> </blockquote> <p> illustrates the cause. The attached: </p> <blockquote> <p> while.cpp </p> </blockquote> <p> illustrates a solution. However, the while.cpp suffers from the template instantiation depth problem described here: </p> <blockquote> <p> <a class="ext-link" href="http://www.mywikinet.com/mpl/paper"><span class="icon">​</span>http://www.mywikinet.com/mpl/paper</a> </p> <blockquote> <p> /mpl_paper.html#sequences.unrolling </p> </blockquote> </blockquote> <p> More (*maybe* helpful) details can be found at the following boost ml thread: </p> <blockquote> <p> <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/187289"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/187289</a> </p> </blockquote> cppljevans@… https://svn.boost.org/trac10/ticket/3044 https://svn.boost.org/trac10/ticket/3044 Report #3040: add ability to reset an accumulator_set Fri, 15 May 2009 21:39:18 GMT Fri, 15 May 2009 21:39:18 GMT <p> See discussion <a class="ext-link" href="http://groups.google.com/group/boost-list/browse_thread/thread/aaede77988f827db?pli=1"><span class="icon">​</span>here</a> </p> Eric Niebler https://svn.boost.org/trac10/ticket/3040 https://svn.boost.org/trac10/ticket/3040 Report #3030: [crc] optimization of crc_optimal::process_block Thu, 14 May 2009 21:18:29 GMT Sun, 26 Feb 2012 12:09:37 GMT <p> Function 'process_block()' can be easily optimized (I got about 20% in performance on ARM9/GCC 3.4.3/4.2.0) </p> qehgt0@… https://svn.boost.org/trac10/ticket/3030 https://svn.boost.org/trac10/ticket/3030 Report #2990: [fix in git] boost::python::detail::caller implementation should use mpl::deref while fiddling with the signature sequence Tue, 05 May 2009 05:37:13 GMT Tue, 20 Oct 2009 02:58:56 GMT <p> In boost/python/detail/caller.hpp, to get at the various elements of the call signature sequence, the code directly uses Sig_iterator::type to access the element. This has a side effect of not allowing mpl::list to be used as the sequence, even though it is an MPL front extensible sequence (stated as required for the signature argument of, say, make_function). </p> <p> The solution is to use mpl::deref&lt;Sig_iterator&gt;::type instead of Sig_iterator::type. </p> LiJie Wong <lycheewlj@…> https://svn.boost.org/trac10/ticket/2990 https://svn.boost.org/trac10/ticket/2990 Report #2985: Progress Display Remaining Time Sun, 03 May 2009 21:17:35 GMT Mon, 04 May 2009 20:08:46 GMT <p> It would be nice if the progress bar could calculate the estimated time remaining. There would have to be some kind of assumption about the uniformity of the remaining computations, but often I have a simple loop for(i = 0; i &lt; 1e6; i++) </p> <p> where I am doing the same thing in each iteration, so if I am 50% complete after 10 minutes, I expect to be done in about another 10 minutes. </p> <p> Of course this is not the case with all loops, but if the thing being timed is known not to exhibit that behavior, then this shouldn't be used. </p> daviddoria@… https://svn.boost.org/trac10/ticket/2985 https://svn.boost.org/trac10/ticket/2985 Report #2968: Add a BOOST_BUILD_DIR Environment variable Sat, 25 Apr 2009 17:10:04 GMT Sat, 25 Apr 2009 17:10:04 GMT <p> To set the global build dir it would be very convenient to have a BOOST_BUILD_DIR environment variable that has the same semantic as the --build-dir= command line switch. </p> <p> It would be equally nice to be able to specify it in the *-config.jam files, but a first glance it looks as if this would come too late in the start-up process. </p> Roland Schwarz https://svn.boost.org/trac10/ticket/2968 https://svn.boost.org/trac10/ticket/2968 Report #2960: Composing argument pack formed with positional arguments, using the comma operator Sun, 19 Apr 2009 16:33:51 GMT Thu, 01 Jan 1970 00:00:00 GMT <p> Due to a bug (or perhaps my misusage), I am unable to compose two argument packs, each formed using positional arguments, using the comma operator. </p> <p> <a class="ext-link" href="news://news.gmane.org:119/grtmb9$tpq$1@ger.gmane.org"><span class="icon">​</span>news://news.gmane.org:119/grtmb9$tpq$1@ger.gmane.org</a> Compiler : i686-apple-darwin9-gcc-4.0.1 </p> <p> BOOST_PARAMETER_KEYWORD(tag, x) BOOST_PARAMETER_KEYWORD(tag, y) template&lt;class <a class="missing wiki">ArgumentPack</a>&gt; void f(<a class="missing wiki">ArgumentPack</a> const &amp; args){ </p> <blockquote> <p> double x_val = args[x]; double y_val = args[y]; </p> </blockquote> <p> } </p> <blockquote> <p> typedef boost::parameter::parameters&lt; </p> <blockquote> <p> parameter::required&lt;tag::x&gt; </p> <blockquote class="citation"> <p> par_x_t; </p> </blockquote> </blockquote> <p> typedef boost::parameter::parameters&lt; </p> <blockquote> <p> parameter::required&lt;tag::y&gt; </p> <blockquote class="citation"> <p> par_y_t; </p> </blockquote> </blockquote> </blockquote> <blockquote> <blockquote> <p> double x_val = 9.0; double y_val = 0.1; spec_x_t spec_x; spec_y_t spec_y; f( </p> <blockquote> <p> ( spec_x(x_val),spec_y(y_val)) </p> </blockquote> <p> ); <em>no match operator[&lt;unnamed&gt;::x] </em></p> </blockquote> </blockquote> e_r https://svn.boost.org/trac10/ticket/2960 https://svn.boost.org/trac10/ticket/2960 Report #2958: [patch] changes to make asio compile on vxWorks Sat, 18 Apr 2009 22:03:37 GMT Sat, 18 Apr 2009 22:04:48 GMT <p> An explanation of some of the changes: </p> <p> socket/pipe interrupter: Despite that vxWorks has a pipe facility, it appears that you must create a named pipe, and then open the file, which is a bit different than the unix pipe function. Since its not clear to me how many different interrupters may be created by asio, its far easier to use the select_interrupter instead (and it works just as well). </p> <p> socket_ops: for whatever reason the arguments to its socket related functions take an int, and a socklen_t is an unsigned int. there are also a number of functions where a non-const arg is passed that apparently is typically a const arg on other systems. </p> <p> socket_ops/descriptor_ops: when running as a kernel module, apparently open and ioctl have three fixed arguments, with the third argument being an integer. outside of kernel modules it appears to have the traditional API. </p> <p> Patch from ticket <a class="reopened ticket" href="https://svn.boost.org/trac10/ticket/2917" title="#2917: Library Submissions: BOOST_ASIO_DISABLE_SERIAL_PORT doesn't work as expected (reopened)">#2917</a> is required for vxWorks as well, since it does not support serial ports via termios. </p> <p> There are patches to other boost libraries required also, those have been submitted in other bugs. </p> Dustin Spicuzza <dustin@…> https://svn.boost.org/trac10/ticket/2958 https://svn.boost.org/trac10/ticket/2958 Report #2956: vxWorks POSIX quirks for date_time Sat, 18 Apr 2009 20:10:47 GMT Wed, 12 Jun 2013 21:44:49 GMT <p> vxWorks is almost a unix-like platform, that supports the POSIX realtime extensions and a lot of POSIX stuff.. but its weird. </p> <p> It apparently doesn't support gettimeofday. I modified microsec_time_clock to support a situation where gettimeofday isn't available but clock_gettime is. </p> <p> vxWorks has localtime_r, but it is defined as "extern int localtime_r (const time_t *_tod, struct tm *_result);"... so it needs some hand holding to work correctly. same with gmtime_r </p> <p> Of course, this patch also requires the user to setup a config that defines BOOST_HAS_CLOCK_GETTIME, but I'm going to submit a separate patch for vxWorks platform config </p> Dustin Spicuzza <dustin@…> https://svn.boost.org/trac10/ticket/2956 https://svn.boost.org/trac10/ticket/2956 Report #2952: Windows: path.glob doesn't accept paths at the root of the current drive Fri, 17 Apr 2009 00:17:33 GMT Fri, 17 Apr 2009 20:04:05 GMT <p> Trying to provide a full pathname to boost-build caused <br /> error: Unknown target type EXE<br /> The problem occurs with<br /> </p> <pre class="wiki">boost-build /temp/boost-build ; </pre><p> Based on the debug output the leading slash of the pathname is removed in util/path.jam: </p> <pre class="wiki">/temp/boost-build/util\path.jam:54:&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;| native-NT /temp/boost-build/tools/types/*.jam /temp/boost-build/util\path.jam:464:&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt; MATCH ^/?(.*) : /temp/boost-build/tools/types/*.jam /temp/boost-build/util\path.jam:464:&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt; local result = temp/boost-build/tools/types/*.jam /temp/boost-build/util\path.jam:465:&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt;&gt;&gt;|&gt;&gt; regex.split temp/boost-build/tools/types/*.jam / </pre><p> While the equivalent </p> <pre class="wiki">boost-build c:/temp/boost-build ; </pre><p> is processed successfully. Note that the boost-build kernel is loaded using the path specified in either case, up to the point of loading the contents of tools/types/. </p> John <jwbito@…> https://svn.boost.org/trac10/ticket/2952 https://svn.boost.org/trac10/ticket/2952 Report #2944: boost::archive::xml_iarchive hangs, if BOOST_SP_USE_PTHREADS used Mon, 13 Apr 2009 21:53:51 GMT Mon, 20 Apr 2009 19:36:29 GMT <p> I use 'BOOST_SP_USE_PTHREADS' option, with serialization library. When I try to create xml_iarchive, application hangs. </p> <p> Reproduced on: x86_64 Gentoo Linux, x86_64-pc-linux-gnu-4.3.3, glibc: 2.9_p20081201 ARM (Openmoko toolchain): gcc 4.1.2, glibc: 2.6.1 </p> <p> Also tried: x32 Gentoo Linux, i686-pc-linux-gnu-4.1.2, glibc: 2.6.1 </p> <ul><li>works perfectly, without hangs. </li></ul><p> Backtrace while the application hang: </p> <p> 0x00007ffb03bf3414 in <span class="underline">lll_lock_wait () from /lib/libpthread.so.0 (gdb) bt <a class="missing ticket">#0</a> 0x00007ffb03bf3414 in </span>lll_lock_wait () from /lib/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1" title="#1: Bugs: boost.build causes ftjam to segfault (closed: Wont Fix)">#1</a> 0x00007ffb03beec50 in _L_lock_55 () from /lib/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2" title="#2: Bugs: list::size should be const (closed: fixed)">#2</a> 0x00007ffb03bee53e in pthread_mutex_lock () from /lib/libpthread.so.0 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3" title="#3: Bugs: automatic conversion and overload proble (closed: fixed)">#3</a> 0x0000000000427c43 in boost::detail::sp_counted_base::release (this=0x672140) at /home/distr/boost/x86_64_boost_1_38_0/include/boost-1_38/boost/detail/sp_counted_base_pt.hpp:91 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4" title="#4: Bugs: any_ptr in any library documentation? (closed: Fixed)">#4</a> 0x0000000000433189 in boost::archive::basic_xml_grammar&lt;char&gt;::init_chset () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/5" title="#5: Bugs: shared_ptr and self-owning objects (closed: Fixed)">#5</a> 0x0000000000440ff1 in boost::archive::basic_xml_grammar&lt;char&gt;::basic_xml_grammar () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/6" title="#6: Bugs: tie in utility.hpp and tuple.hpp clash. (closed: Duplicate)">#6</a> 0x0000000000432035 in boost::archive::xml_iarchive_impl&lt;boost::archive::xml_iarchive&gt;::xml_iarchive_impl () <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/7" title="#7: Bugs: g++ 2.96 requires NO_STRINGSTREAM (closed: Fixed)">#7</a> 0x0000000000427b81 in xml_iarchive (this=0x7fff0d07b840, is=@0x7fff0d07b630, flags=0) at /home/distr/boost/x86_64_boost_1_38_0/include/boost-1_38/boost/archive/xml_iarchive.hpp:119 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8" title="#8: Bugs: prop in undirected graph + out_edges (closed: Works For Me)">#8</a> 0x00000000004272fb in test_xmlArchive () at /home/remote_projects/fl-dict/src/test/boost_archive_load_test.cpp:43 <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/9" title="#9: Bugs: config_info ambiguity error (closed: Invalid)">#9</a> 0x00000000004273fb in main (argc=1, argv=0x7fff0d07b9c8) at /home/remote_projects/fl-dict/src/test/boost_archive_load_test.cpp:15 </p> highcatland@… https://svn.boost.org/trac10/ticket/2944 https://svn.boost.org/trac10/ticket/2944 Report #2939: Possible thread-safety issue with Boost Function Sun, 12 Apr 2009 04:56:21 GMT Sun, 12 Apr 2009 04:56:21 GMT <p> Hi, I realize this might slip through the mailing lists so I am posting it here: </p> <p> <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/188442"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.devel/188442</a> </p> <p> I was just looking through the Boost Function source and noticed the following in assign_to: </p> <pre class="wiki"> // Note: it is extremely important that this initialization use // static initialization. Otherwise, we will have a race // condition here in multi-threaded code. See // http://thread.gmane.org/gmane.comp.lib.boost.devel/164902/. static vtable_type stored_vtable = { { &amp;manager_type::manage }, &amp;invoker_type::invoke }; </pre><p> However, my copy of the C++ standard seems to say this regarding local statics in section 6.7: </p> <p> The zero-initialization (8.5) of all local objects with static storage duration (3.7.1) is performed before any other initialization takes place. A local object of POD type (3.9) with static storage duration initialized with constant-expressions is initialized before its block is first entered. An implementation is permitted to perform early initialization of other local objects with static storage duration under the same conditions that an implementation is permitted to statically initialize an object with static storage duration in namespace scope. </p> <p> I read this to mean that an implementation may decide to initialize stored_vtable statically or the first time the block is entered. So I think that this means we cannot rely on static initialization behaviour. </p> <p> If you agree, then a simple fix for this might just be: </p> <pre class="wiki">template&lt;typename VTable, typename Invoker, typename Manager&gt; struct vtable_static_constructor { static VTable vtable; }; template&lt;...&gt; VTable vtable_static_constructor&lt;V,I,M&gt;::vtable = { {&amp;Manager::manage, &amp;Manager::invoke } }; assign_to() { ... vtable_type &amp; stored_vtable = vtable_static_constructor&lt;vtable_type,invoker_type,manager_type&gt;::vtable; ... } </pre><p> If not, could you please point me to where in the standard this is guaranteed to be statically initialized? It would help me decide whether or not to fix some other code that has a similar pattern, if nothing else. </p> <p> Thanks in advance! </p> boost-trac@… https://svn.boost.org/trac10/ticket/2939 https://svn.boost.org/trac10/ticket/2939 Report #2928: Some relational operators are not listed in synopsis Wed, 08 Apr 2009 18:29:25 GMT Sat, 16 Feb 2013 00:53:25 GMT <p> Direct comparison between optional&lt;T&gt; and T has been supported since Boost 1.34. But such operators are not listed in synopsis in the latest docs. </p> <p> They were added to optional.html in <a class="changeset" href="https://svn.boost.org/trac10/changeset/37126" title="none_t/none reimplemented to avoid precompiled header issues (thanks ...">r37126</a>. But they seems to have been missed in <a class="changeset" href="https://svn.boost.org/trac10/changeset/43247" title="optional docs fixes">r43247</a>. </p> Kazutoshi Satoda <k_satoda@…> https://svn.boost.org/trac10/ticket/2928 https://svn.boost.org/trac10/ticket/2928 Report #2927: BOOST_MPL_DISABLE_ASSERTS Wed, 08 Apr 2009 16:23:28 GMT Sun, 10 Apr 2011 10:56:44 GMT <p> analogous to BOOST_DISABLE_ASSERTS </p> <p> The use case that drove this was some places in proto where mpl asserts could be, but aren't (like to enforce the arity requirement of the _value transform), because proto is trying to keep compile times down. </p> troy d. straszheim https://svn.boost.org/trac10/ticket/2927 https://svn.boost.org/trac10/ticket/2927 Report #2917: BOOST_ASIO_DISABLE_SERIAL_PORT doesn't work as expected Sun, 05 Apr 2009 21:48:58 GMT Sun, 05 Jun 2016 04:35:25 GMT <p> The expected result is that none of the serial port code would be included. This does not happen, many of the serial port related headers get included and potentially cause many compile errors (for example, if your platform doesn't have termios). </p> <p> Obviously there are a number of different ways to handle this problem, I can provide a patch if you like, but placement of the checks is just a matter of opinion (it seems like one would want to just put the check in the top level serial port files after boost/config.hpp is included, however). </p> dustin@… https://svn.boost.org/trac10/ticket/2917 https://svn.boost.org/trac10/ticket/2917 Report #2915: Request for allowing ParameterSpec to be defined by an MPL sequence Sun, 05 Apr 2009 16:25:42 GMT Mon, 08 Jun 2009 01:31:21 GMT <p> May I please suggest that a metafunction be provided that maps an mpl sequence such as </p> <blockquote> <p> typedef mpl::vector&lt;<a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>,...,rn&gt; IN; </p> </blockquote> <p> <em>each r is of the form required&lt;T&gt; or required&lt;T,P&gt; </em></p> <p> to the template class boost::parameter::parameters instantiated with the elements of that sequence: </p> <blockquote> <p> typedef parameter::parameters&lt; </p> <blockquote> <p> <a class="changeset" href="https://svn.boost.org/trac10/changeset/1" title="Import core sources for SVNmanger 0.38 ">r1</a>, ... rn </p> <blockquote class="citation"> <p> OUT; </p> </blockquote> </blockquote> </blockquote> <p> This need arises when we can generate IN automatically, for example: </p> <p> typedef mpl::transform&lt;range_c&lt;1,n+1&gt;,meta_r&gt;::type IN; </p> <p> Thanks. </p> e_r https://svn.boost.org/trac10/ticket/2915 https://svn.boost.org/trac10/ticket/2915 Report #2914: Support for cumulative parameters in a doxyfile Sun, 05 Apr 2009 11:44:56 GMT Thu, 04 Mar 2010 16:22:24 GMT <p> It would be nice if it was possible to specify cumulative parameters as arguments to &lt;doxygen:param&gt;. Aliases for instance really require this. E.g.: </p> <pre class="wiki">DOXYGEN_PARAMS = ... ALIASES+=defModule{1}="\"\module{\1} \defgroup group_class_\1 \1\"" ALIASES+=module{1}="\"\ingroup group_class_\1 \\n&lt;div&gt;&lt;span class=\"module\"&gt;Module:&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=\"module_text\"&gt;\ref group_class_\1&lt;/span&gt;&lt;/div&gt;\"" ... ; doxygen doc.html : [ glob include/*/*.hpp ] # or whatever : &lt;doxygen:param&gt;$(DOXYGEN_PARAMS) ; </pre><p> Currently the parser chokes on the += construct; it expects = always. I have tinkered with doxygen.jam in my local BBv2 dir, but I am very unsure about the correctness of what I'm doing. FWIW here is the patch for what I currently use... </p> <pre class="wiki">Index: tools/doxygen.jam =================================================================== --- tools/doxygen.jam (revision 52181) +++ tools/doxygen.jam (working copy) @@ -197,11 +197,11 @@ # Translate &lt;doxygen:param&gt; into command line flags. for local param in [ feature.get-values &lt;doxygen:param&gt; : $(properties) ] { - local namevalue = [ regex.match ([^=]*)=(.*) : $(param) ] ; - text += "$(namevalue[1]) = $(namevalue[2])" ; + local namevalue = [ regex.match ([^+=]*)([+]?=)(.*) : $(param) ] ; + text += "$(namevalue[1]) $(namevalue[2]) $(namevalue[3])" ; if $(namevalue[1]) = OUTPUT_DIRECTORY { - output-dir = "$(namevalue[2])" ; + output-dir = "$(namevalue[3])" ; } } </pre> brian@… https://svn.boost.org/trac10/ticket/2914 https://svn.boost.org/trac10/ticket/2914 Report #2911: shared_from_this free function Fri, 03 Apr 2009 21:27:21 GMT Tue, 01 Dec 2009 01:49:22 GMT <p> Attached is an implementation of a free shared_from_this function, plus a non-template enable_shared_from_this_base class which can only be used with the free shared_from_this function. The free function will also work with the usual enable_shared_from_this template. It is implemented on top of the existing enable_shared_from_this class, and so requires no modification of the existing smart_ptr code. </p> <p> This scheme has the advantage of simplicity, since the "curiously recurring template pattern" is not needed. It also "just works" if you have a class hierarchy that looks like "X is derived from Y is derived from enable_shared_from_this_base" and want to use shared_from_this with both X and Y. </p> <p> I've only tried it with gcc 4.3. </p> fhess https://svn.boost.org/trac10/ticket/2911 https://svn.boost.org/trac10/ticket/2911 Report #2909: [Fix in git] Wrong type signatures? Fri, 03 Apr 2009 13:11:45 GMT Mon, 12 Oct 2009 22:44:10 GMT <p> In python/converter/builtin_converters.hpp, I found these lines: </p> <p> BOOST_PYTHON_TO_PYTHON_BY_VALUE(signed BOOST_PYTHON_LONG_LONG, ::PyLong_FromLongLong(x), &amp;PyInt_Type) BOOST_PYTHON_TO_PYTHON_BY_VALUE(unsigned BOOST_PYTHON_LONG_LONG, ::PyLong_FromUnsignedLongLong(x), &amp;PyInt_Type) </p> <p> and, </p> <p> BOOST_PYTHON_TO_PYTHON_BY_VALUE(std::wstring, ::PyUnicode_FromWideChar(x.data(),implicit_cast&lt;ssize_t&gt;(x.size())), &amp;PyString_Type) </p> <p> Seems it is a typo. Should the PyInt_Type be PyLong_Type, and the PyString_Type be PyUnicode_Type? </p> <p> These macro argument is used for generate the return value of get_pytype(). And seems get_pytype() is only used to generate docstring. So there's accutally no problem caused by these. </p> <p> But, should these be typo? If so, we'd better fix it. </p> <p> Thanks! </p> Haoyu Bai https://svn.boost.org/trac10/ticket/2909 https://svn.boost.org/trac10/ticket/2909 Report #2904: boost::date_time io fails simple back-and-forth test Thu, 02 Apr 2009 21:18:24 GMT Thu, 02 Apr 2009 22:44:08 GMT <p> set up a stringstream and use boost::io facets to specify a time format. Sent a time_t from a known time through it to get a string (converting to posix_time along the way), then back through to to get a time, and back through to get a string. The string results should always match, and the time_t results always match. Both tests fail. </p> <p> stringstream&gt;&gt; operator does not seem to modify the supplied instance of class boost::posix_time. </p> mgl@… https://svn.boost.org/trac10/ticket/2904 https://svn.boost.org/trac10/ticket/2904 Report #2901: Resizing banded matrices Tue, 31 Mar 2009 15:22:21 GMT Mon, 05 Oct 2009 22:16:55 GMT <p> Similar to <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1237" title="#1237: Bugs: Resizing symmetric matrices (closed: fixed)">#1237</a> but with banded matrices. When resizing a banded matrix with preserve set to true, I get </p> <pre class="wiki">Check failed in file /home/britter/include/boost/numeric/ublas/storage.hpp at line 195: i &lt; size_ terminate called after throwing an instance of 'boost::numeric::ublas::bad_index' what(): bad index </pre><p> See attached program. </p> Burkhard Ritter <burkhard@…> https://svn.boost.org/trac10/ticket/2901 https://svn.boost.org/trac10/ticket/2901 Report #2896: Gregorian date input facet do not handle every string form Fri, 27 Mar 2009 12:43:12 GMT Fri, 27 Mar 2009 12:43:12 GMT <p> boost::gregorian::date_input_facet do not follow other date facet schems (like local_time_input_facet). The folowing test case can be used to reproduce the trouble. </p> anonymous https://svn.boost.org/trac10/ticket/2896 https://svn.boost.org/trac10/ticket/2896 Report #2888: python static linking must use defaults for dl and pthread Thu, 26 Mar 2009 15:35:55 GMT Thu, 26 Mar 2009 15:35:55 GMT <p> When statically linking boost.python, you will get errors when it also tries to statically link libdl and and pthread.<br /> </p> <p> The solution is to change a line in boost_1_38_0/tools/build/v2/tools/python.jam<br /> </p> <p> line 657 from </p> <p> case * : return &lt;library&gt;pthread &lt;library&gt;dl<br /> </p> <p> to<br /> </p> <p> case * : return <br /> </p> niklas@… https://svn.boost.org/trac10/ticket/2888 https://svn.boost.org/trac10/ticket/2888 Report #2883: Boost::signals compile problem with GCC 3.4.5 Mon, 23 Mar 2009 23:51:19 GMT Wed, 12 Jun 2013 21:46:23 GMT <p> I get the following error when trying to use boost sigals with GCC 3.4.5 for arm: </p> <pre class="wiki"> In file included from /home/tk/centidev/target/staging/include/boost/signals/detail/signal_base.hpp:15, from /home/tk/centidev/target/staging/include/boost/signals/signal_template.hpp:23, from /home/tk/centidev/target/staging/include/boost/signals/signal0.hpp:24, from /home/tk/centidev/target/staging/include/boost/signal.hpp:19, from TableScoreboard.h:4, from TableAssembler.cpp:3: /home/tk/centidev/target/staging/include/boost/signals/detail/named_slot_map.hpp: In member function `boost::signals::detail::connection_slot_pair&amp; boost::signals::detail::named_slot_map_iterator::dereference() const': /home/tk/centidev/target/staging/include/boost/signals/detail/named_slot_map.hpp:114: error: invalid initialization of reference of type 'boost::signals::detail::connection_slot_pair&amp;' from expression of type 'const boost::signals::detail::connection_slot_pair' </pre><p> Thomas </p> tk@… https://svn.boost.org/trac10/ticket/2883 https://svn.boost.org/trac10/ticket/2883 Report #2881: Macros conflict: BOOST_HAS_FTIME and BOOST_NO_GETSYSTEMTIMEASFILETIME Mon, 23 Mar 2009 19:19:18 GMT Wed, 13 Jul 2011 18:08:22 GMT <p> There are two macros related to the WinAPI FILETIME-related functions: BOOST_HAS_FTIME and BOOST_NO_GETSYSTEMTIMEASFILETIME. The first one is documented as the one that is defined if the <a class="missing wiki">GetSystemTimeAsFileTime</a> API is available, whereas the second one is defined when it's not (while other functions and the FILETIME type itself are available). On Windows Mobile it is possible to get both these macros defined, which is quite contradictory to the documentation. </p> <p> I believe, docs and tests should be corrected so that BOOST_HAS_FTIME is defined if the FILETIME type is available, and BOOST_NO_GETSYSTEMTIMEASFILETIME is only defined when the <a class="missing wiki">GetSystemTimeAsFileTime</a> function is not available. A quick search shows that these macros are only used in Boost.<a class="missing wiki">DateTime</a> and in the described meaning. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/2881 https://svn.boost.org/trac10/ticket/2881 Report #2875: Windows: ip::tcp::acceptor::local_endpoint() cannot be used in socket connect Fri, 20 Mar 2009 06:19:50 GMT Thu, 09 Apr 2009 13:05:18 GMT <p> On linux the local_endpoint() function returns an endpoint similar to 0.0.0.0:1234. A socket which is given this endpoint to connect to will connect successfully. A similar endpoint is returned on Windows, however the socket connection is not successful. </p> <p> I am currently working around this problem by inserting loopback as the address to connect to. For the sake of consistency between platforms it may be worthwhile including a similar substitution within the socket's connect operation if 0.0.0.0 is detected. </p> Benjamin Carlyle <ben.carlyle@…> https://svn.boost.org/trac10/ticket/2875 https://svn.boost.org/trac10/ticket/2875 Report #2863: svn.boost.org uses an invalid security certificate Tue, 17 Mar 2009 18:59:21 GMT Fri, 06 Feb 2015 00:13:42 GMT <p> When I navigate to <a class="ext-link" href="https://svn.boost.org/trac/boost/"><span class="icon">​</span>https://svn.boost.org/trac/boost/</a> in Firefox (Windows version 3.0.7), I get the following message: </p> <hr /> <h2 class="section" id="SecureConnectionFailed">Secure Connection Failed</h2> <p> svn.boost.org uses an invalid security certificate. </p> <p> The certificate is not trusted because the issuer certificate is unknown. </p> <p> (Error code: sec_error_unknown_issuer) </p> <ul><li>This could be a problem with the server's configuration, or it could be someone trying to impersonate the server. </li></ul><ul><li>If you have connected to this server successfully in the past, the error may be temporary, and you can try again later. </li></ul><hr /> <p> This can be worked around by adding a security exception. The certificate's status in the Add Security Exception dialog: </p> <hr /> <p> This site attempts to identify itself with invalid information. </p> <p> <strong>Unknown Identity</strong><br /> Certificate is not trusted, because it hasn't been verified by a recognised authority. </p> <hr /> <p> MS Internet Explorer (version 6 SP2) also complains: </p> <hr /> <p> Information you exchange with this site cannot be viewed or changed by others. However, there is a problem with the site's security certificate. </p> <ul><li>The security certificate was issued by a company you have not chosen to trust. View the certificate to determine whether you want to trust the certifying authority. </li></ul><ul><li>The security certificate date is valid. </li></ul><ul><li>The security certificate has a valid name matching the name of the page you are trying to view. </li></ul><p> Do you want to proceed? </p> <hr /> anonymous https://svn.boost.org/trac10/ticket/2863 https://svn.boost.org/trac10/ticket/2863 Report #2841: boost::hash to support boost::dynamic_bitset Mon, 09 Mar 2009 21:24:31 GMT Thu, 06 Jun 2019 13:56:16 GMT <p> IIUC, there's no out-of-box support for hashing of dynamic_bitset. </p> <p> Could something as simple as </p> <div class="wiki-code"><div class="code"><pre> <span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">B</span><span class="p">,</span> <span class="k">typename</span> <span class="n">A</span><span class="o">&gt;</span> <span class="k">friend</span> <span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">hash_value</span><span class="p">(</span><span class="k">const</span> <span class="n">dynamic_bitset</span><span class="o">&lt;</span><span class="n">B</span><span class="p">,</span> <span class="n">A</span><span class="o">&gt;&amp;</span> <span class="n">v</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">hash_value</span><span class="p">(</span> <span class="n">v</span><span class="p">.</span><span class="n">m_bits</span> <span class="p">);</span> <span class="p">}</span> </pre></div></div><p> be added to <code>boost::dynamic_bitset</code> class? </p> astukalov@… https://svn.boost.org/trac10/ticket/2841 https://svn.boost.org/trac10/ticket/2841 Report #2838: MPI Python bindings not installed correctly Mon, 09 Mar 2009 09:22:55 GMT Sat, 03 Nov 2012 23:51:39 GMT <p> I've successfully built and installed boost.MPI and the Python bindings in my home dir. </p> <p> Unfortunately, the Python module "mpi.so" is installed directly in the lib/-path as all the other Boost libs. When setting the PYTHONPATH to point to this location, the boost.mpi python bindings are accessible only via "import mpi" from within Python, and not via "import boost.mpi", as described in the docs at </p> <p> <a href="http://www.boost.org/doc/libs/1_38_0/doc/html/mpi/python.html">http://www.boost.org/doc/libs/1_38_0/doc/html/mpi/python.html</a> </p> <p> I think that the Python modules should go to a sudirectory "boost" in the lib path, or it should be fixed in the documentation. </p> <p> Otherwise, the boost.mpi Python bindings are gorgeous! </p> lenzo@… https://svn.boost.org/trac10/ticket/2838 https://svn.boost.org/trac10/ticket/2838 Report #2836: Request boost::optional<T>::optional_assign_to, optional_move_to, optional_swap Sat, 07 Mar 2009 11:25:11 GMT Sat, 07 Mar 2009 12:46:48 GMT <p> I request the three member functions </p> <p> template&lt; class U &gt; bool boost::optional&lt;T&gt;::optional_assign_to(U&amp; t) const; template&lt; class U &gt; bool boost::optional&lt;T&gt;::optional_move_to(U&amp; t); bool boost::optional&lt;T&gt;::optional_swap(T&amp; t); </p> <p> which, if !*this, return false, and otherwise return true and are equivalent to </p> <p> t=<strong>this; t=</strong>this; and *this may have any value after the move std::swap( t, <strong>this ); </strong></p> aschoedl@… https://svn.boost.org/trac10/ticket/2836 https://svn.boost.org/trac10/ticket/2836 Report #2833: extract result during initialization Thu, 05 Mar 2009 20:26:40 GMT Thu, 05 Mar 2009 20:26:40 GMT <p> This is a follow up to: </p> <p> <a class="ext-link" href="news://news.gmane.org:119/goeic6$q4t$1@ger.gmane.org"><span class="icon">​</span>news://news.gmane.org:119/goeic6$q4t$1@ger.gmane.org</a> </p> <p> where I asked : I have an accumulator (a) that takes an initial value (x_), and another (b), whose initial value (x_) depends on that of (a). I would have thought that this is feasible because accumulator_set initializes (a) before (b), but apparently b.x_ is initialized with a garbage value. </p> e_r https://svn.boost.org/trac10/ticket/2833 https://svn.boost.org/trac10/ticket/2833 Report #2826: constant boost::mpl::aux::template_arity_impl::value causes 64 bit truncation warning Tue, 03 Mar 2009 22:29:56 GMT Sun, 10 Apr 2011 07:35:15 GMT <p> When compiled for a 64 bit target, the constant boost::mpl::aux::template_arity_impl::value causes a warning about possible truncation of a 64 bit value to 32 bits. This is because size_t (returned by sizeof()) is 64 bits, while value is declared as an int. One fix would be to declare the constant as a size_t. Instead I added a static_cast on the assumption that it would be less disruptive and the value returned by sizeof() was unlikely to require more than 32 bits. </p> <pre class="wiki">typename arity_tag&lt;6&gt;::type arity_helper(type_wrapper&lt; F&lt; T1,T2,T3,T4,T5,T6 &gt; &gt;, arity_tag&lt;6&gt;); template&lt; typename F, int N &gt; struct template_arity_impl { BOOST_STATIC_CONSTANT(int, value = static_cast&lt;int&gt;(sizeof(arity_helper(type_wrapper&lt;F&gt;(), arity_tag&lt;N&gt;())) - 1) ); }; </pre> pelee@… https://svn.boost.org/trac10/ticket/2826 https://svn.boost.org/trac10/ticket/2826 Report #2812: Tutorial example errors Sat, 28 Feb 2009 09:45:42 GMT Sat, 28 Feb 2009 09:45:42 GMT <p> In the tutorial for Boost parameter there are a number of documentation errors in section 2.1.2 when initially giving the depth_first_search example. </p> <p> 1) The example says "depth_first_search algorithm is a generic function accepting from one to four arguments by reference" but clearly the generic function takes 5 arguments with some by value. </p> <p> 2) The third argument listed in the prototype is given as "typename graph_traits&lt;g&gt;::vertex_descriptor root_vertex" but probably should be "typename graph_traits&lt;graph&gt;::vertex_descriptor root_vertex" as there is no 'g' argument in the prototype. </p> <p> These are cosmetic documentation changes which should be made to allow someone who wants to understand the tutorial correctly to do so. </p> Edward Diener <eld@…> https://svn.boost.org/trac10/ticket/2812 https://svn.boost.org/trac10/ticket/2812 Report #2811: date_time iostream dependencies Fri, 27 Feb 2009 23:46:24 GMT Fri, 27 Feb 2009 23:46:24 GMT <p> For footprint and performance reasons our codebase uses boost with BOOST_NO_IOSTREAM. However, date_time has some iostream dependency in the form of std::ostringstream used for formatting string outputs. For example, the method partial_date::to_string uses std::ostringstream to convert an integer to a string. </p> <p> An alternative is as follows: </p> <pre class="wiki"> //! Returns string suitable for use in POSIX time zone string /*! Returns string formatted with up to 3 digits: * Jan-01 == "0" * Feb-29 == "58" * Dec-31 == "365" */ virtual std::string to_string() const { date_type d(2004, month_, day_); unsigned short c = d.day_of_year() - 1; // numbered 0-365 while day_of_year is 1 based... std::string ret; if (c/100) { ret += '0' + c/100; c = c%100; } if (c/10) { ret += '0' + c/10; c = c%10; } ret += '0' + c; return ret; } </pre><p> Would you be likely to accept a patch that simply omits all the iostream-dependent API, if BOOST_NO_IOSTREAM is defined? </p> <p> Is there a boost-friendly alternative to std::ostringstream? </p> Nigel T Stewart <nigels@…> https://svn.boost.org/trac10/ticket/2811 https://svn.boost.org/trac10/ticket/2811 Report #2806: Link to cross-compile instructions from Getting Started Fri, 27 Feb 2009 07:36:41 GMT Fri, 27 Feb 2009 12:16:06 GMT <p> Every now and then someone asks for cross-compilation instructions on the boost mailing lists. I do cross-compilation occasionally, too, and would like to find the instructions with a few clicks rather than digging deep into the boost-build documentation. A newbie user wouldn't even know where to look for. Therefore, I suggest the Getting Started guide would link to <a href="http://www.boost.org/boost-build2/doc/html/bbv2/tasks/crosscompile.html">http://www.boost.org/boost-build2/doc/html/bbv2/tasks/crosscompile.html</a> </p> anonymous https://svn.boost.org/trac10/ticket/2806 https://svn.boost.org/trac10/ticket/2806 Report #2805: Add Documentation to Date_Time to Highlight a Pitfall Fri, 27 Feb 2009 03:34:27 GMT Fri, 27 Feb 2009 03:34:27 GMT <p> A note should be added to the Date_Time documentation to warn programmers of a pitfall in the use of the comparison operators. Comparison of a valid date with not_a_date_time may return an unexpected result. In the expression, <em>date A &lt; date B</em> if A is a valid date and B is <em>not_a_date_time</em>, a Boolean true is returned. A programmer may expect that any comparison of valid date with <em>not_a_date_time</em> always returns false. In some cases it will return true. </p> <p> In the <em>\libs\date_time\xmldoc\date_class.xml</em> file in the Operator table of the Gregorian Date System section I suggest the following text. </p> <p> <em>Warning: Some comparisons of valid dates and not_a_date_time will return true. See the \libs\date_time\test\gregorian\testdate.cpp program for illustrations of the comparisons.</em> </p> <p> The tests for the various comparisons are included in a patch contained in Trac <a class="new ticket" href="https://svn.boost.org/trac10/ticket/2804" title="#2804: Bugs: Add Some Missing Items to the Date_Time Tests (new)">#2804</a>. </p> Charles Brockman <cmbrockman@…> https://svn.boost.org/trac10/ticket/2805 https://svn.boost.org/trac10/ticket/2805 Report #2804: Add Some Missing Items to the Date_Time Tests Fri, 27 Feb 2009 03:30:07 GMT Fri, 27 Feb 2009 03:36:32 GMT <p> The attached patch adds five missing tests to <em>\libs\date_time\test\gregorian\testdate.cpp</em> program. They demonstrate a pitfall in the use of the Date_Time comparison operators. </p> Charles Brockman <cmbrockman@…> https://svn.boost.org/trac10/ticket/2804 https://svn.boost.org/trac10/ticket/2804 Report #2801: gregorian_calendar_base: incorrectly assumes that sizeof(int)==sizeof(long) Wed, 25 Feb 2009 20:54:04 GMT Thu, 18 Jan 2018 14:19:55 GMT <p> boost::date_time::gregorian_calendar_base() returns an int, but uses several local variables of type unsigned long, leading to warnings about possible loss of data when converting from unsigned long to int on 64 bit OSes that use the LP64 data model. </p> <p> Here is a rewrite of the function that generates no warnings when compiled with -Wshorten-64-to-32 under GCC 4.0.1 on Mac OS 10.5: </p> <pre class="wiki"> template&lt;typename ymd_type_, typename date_int_type_&gt; BOOST_DATE_TIME_INLINE int gregorian_calendar_base&lt;ymd_type_,date_int_type_&gt;::week_number(const ymd_type&amp; ymd) { date_int_type_ julianbegin = julian_day_number(ymd_type(ymd.year,1,1)); date_int_type_ juliantoday = julian_day_number(ymd); date_int_type_ day = (julianbegin + 3) % 7; date_int_type_ week = (juliantoday + day - julianbegin + 4)/7; if ((week &gt;= 1) &amp;&amp; (week &lt;= 52)) { return static_cast&lt;int&gt;(week); } if ((week == 53)) { if((day==6) ||(day == 5 &amp;&amp; is_leap_year(ymd.year))) { return static_cast&lt;int&gt;(week); //under these circumstances week == 53. } else { return 1; //monday - wednesday is in week 1 of next year } } //if the week is not in current year recalculate using the previous year as the beginning year else if (week == 0) { julianbegin = julian_day_number(ymd_type(static_cast&lt;unsigned short&gt;(ymd.year-1),1,1)); juliantoday = julian_day_number(ymd); day = (julianbegin + 3) % 7; week = (juliantoday + day - julianbegin + 4)/7; return static_cast&lt;int&gt;(week); } return static_cast&lt;int&gt;(week); //not reachable -- well except if day == 5 and is_leap_year != true } </pre> pelee@… https://svn.boost.org/trac10/ticket/2801 https://svn.boost.org/trac10/ticket/2801 Report #2793: function types don't work for named template type parameters Sun, 22 Feb 2009 17:16:59 GMT Wed, 30 Jan 2013 02:19:47 GMT <p> See this thread for a more detailed description: </p> <p> <a class="ext-link" href="http://www.nabble.com/-parameter--function-types-as-named-template-parameters--td21614543.html"><span class="icon">​</span>http://www.nabble.com/-parameter--function-types-as-named-template-parameters--td21614543.html</a> </p> <p> Dave Abrahams posted a patch for this problem to the mailing list, I will attach it to this ticket. </p> Frank Mori Hess https://svn.boost.org/trac10/ticket/2793 https://svn.boost.org/trac10/ticket/2793 Report #2792: HP aCC rejects string_parse_tree <> in string_parse_tree.hpp Sun, 22 Feb 2009 10:11:13 GMT Sun, 10 Mar 2013 17:27:15 GMT <p> When trying to use date_time's format_date_parser&lt;&gt; I get errors on string_parse_tree&lt;&gt; template instantiation. The error message says "incomplete type is not allowed", the exact compiler version is HP C/aC++ B3910B A.06.20. </p> <p> The core reason for the error is that string_parse_tree&lt;&gt; includes the definition of "ptree_coll" and several typedefs above it: </p> <p> template&lt;typename charT&gt; struct string_parse_tree { </p> <blockquote> <p> ... typedef std::multimap&lt;charT, string_parse_tree &gt; ptree_coll; ... typedef typename ptree_coll::value_type value_type; typedef typename ptree_coll::iterator iterator; ... ptree_coll m_next_chars; .. </p> </blockquote> <p> }; </p> <p> AFAIK this is not guaranteed to work by the current C++ standard, because string_parse_tree&lt;&gt; is, generally speaking, incomplete at the point of instantiation of ptree_coll. </p> <p> I asked at comp.lang.c++.moderated, and these are the replies: </p> <p> <a class="ext-link" href="http://groups.google.ru/group/comp.lang.c++.moderated/browse_thread/thread/f04915083b8f0f93/a11c78689cffb71b"><span class="icon">​</span>http://groups.google.ru/group/comp.lang.c++.moderated/browse_thread/thread/f04915083b8f0f93/a11c78689cffb71b</a> </p> Max Zinal <MaxZinal@…> https://svn.boost.org/trac10/ticket/2792 https://svn.boost.org/trac10/ticket/2792 Report #2790: Executable bit is lost on windows builds. Sat, 21 Feb 2009 18:05:09 GMT Tue, 08 Nov 2011 15:48:56 GMT <p> The windows releases of boost don't have the executable bit set for scripts, so they can't be run if extracted on file systems which support the unix permissions (e.g. for OS X and linux). I think it would be retained if built on such a system. </p> Daniel James https://svn.boost.org/trac10/ticket/2790 https://svn.boost.org/trac10/ticket/2790 Report #2781: Add python exception info extractor Thu, 19 Feb 2009 13:54:29 GMT Mon, 22 Jan 2018 06:34:57 GMT <p> Something like this is useful when embedding python, and it took me almost an entire day to figure out how to do this. (Having not used boost::python before, I got many crashes when trying to extract data again.) </p> <p> Example: </p> <pre class="wiki"> try { boost::python::eval(...); } catch (boost::python::error_already_set&amp;) { std::string msg = handle_pyerror(); std::cerr &lt;&lt; "Error runnin python code: " &lt;&lt; msg; } </pre><p> Implementation: </p> <div class="wiki-code"><div class="code"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">handle_pyerror</span><span class="p">()</span> <span class="p">{</span> <span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">python</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">ostringstream</span> <span class="n">os</span><span class="p">;</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Python error:</span><span class="se">\n</span><span class="s"> &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">flush</span><span class="p">;</span> <span class="n">PyObject</span> <span class="o">*</span><span class="n">type</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="o">*</span><span class="n">val</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="o">*</span><span class="n">tb</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">PyErr_Fetch</span><span class="p">(</span><span class="o">&amp;</span><span class="n">type</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">val</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tb</span><span class="p">);</span> <span class="n">handle</span><span class="o">&lt;&gt;</span> <span class="n">e_val</span><span class="p">(</span><span class="n">val</span><span class="p">),</span> <span class="n">e_type</span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">e_tb</span><span class="p">(</span><span class="n">allow_null</span><span class="p">(</span><span class="n">tb</span><span class="p">));</span> <span class="k">try</span> <span class="p">{</span> <span class="n">object</span> <span class="n">t</span> <span class="o">=</span> <span class="n">extract</span><span class="o">&lt;</span><span class="n">object</span><span class="o">&gt;</span><span class="p">(</span><span class="n">e_type</span><span class="p">.</span><span class="n">get</span><span class="p">());</span> <span class="n">object</span> <span class="n">t_name</span> <span class="o">=</span> <span class="n">t</span><span class="p">.</span><span class="n">attr</span><span class="p">(</span><span class="s">&quot;__name__&quot;</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">typestr</span> <span class="o">=</span> <span class="n">extract</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">t_name</span><span class="p">);</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">typestr</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">flush</span><span class="p">;</span> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">error_already_set</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Internal error getting error type:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">PyErr_Print</span><span class="p">();</span> <span class="p">}</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;: &quot;</span><span class="p">;</span> <span class="k">try</span> <span class="p">{</span> <span class="n">object</span> <span class="n">v</span> <span class="o">=</span> <span class="n">extract</span><span class="o">&lt;</span><span class="n">object</span><span class="o">&gt;</span><span class="p">(</span><span class="n">e_val</span><span class="p">.</span><span class="n">get</span><span class="p">());</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">valuestr</span> <span class="o">=</span> <span class="n">extract</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">v</span><span class="p">.</span><span class="n">attr</span><span class="p">(</span><span class="s">&quot;__str__&quot;</span><span class="p">)());</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">valuestr</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">flush</span><span class="p">;</span> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">error_already_set</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Internal error getting value type:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">PyErr_Print</span><span class="p">();</span> <span class="p">}</span> <span class="k">if</span> <span class="p">(</span><span class="n">tb</span><span class="p">)</span> <span class="p">{</span> <span class="k">try</span> <span class="p">{</span> <span class="n">object</span> <span class="n">tb_list</span> <span class="o">=</span> <span class="n">import</span><span class="p">(</span><span class="s">&quot;traceback&quot;</span><span class="p">).</span><span class="n">attr</span><span class="p">(</span><span class="s">&quot;format_tb&quot;</span><span class="p">)(</span><span class="n">e_tb</span><span class="p">);</span> <span class="n">object</span> <span class="n">tb_str</span> <span class="o">=</span> <span class="n">str</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">).</span><span class="n">attr</span><span class="p">(</span><span class="s">&quot;join&quot;</span><span class="p">)(</span><span class="n">tb_list</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">str</span> <span class="o">=</span> <span class="n">extract</span><span class="o">&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="n">tb_str</span><span class="p">);</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">Traceback (recent call last):</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">str</span><span class="p">;</span> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">error_already_set</span> <span class="k">const</span> <span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Internal error getting traceback:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="n">PyErr_Print</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">os</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span> <span class="k">return</span> <span class="n">os</span><span class="p">.</span><span class="n">str</span><span class="p">();</span> <span class="p">}</span> </pre></div></div><p> I'm sure it could be done better, but I'm sure this would help quite a bit. </p> <p> A wrapper for all python calls that translated python errors into C++-exceptions with proper contents would be very nice, but I can live with this. </p> macke@… https://svn.boost.org/trac10/ticket/2781 https://svn.boost.org/trac10/ticket/2781 Report #2778: Request for forward declarations header Wed, 18 Feb 2009 16:17:16 GMT Tue, 12 Jan 2010 22:23:01 GMT <p> I'm trying to implement a library that does something over the network. It exposes an interface that allows to supply local and remote host addresses to work with. However, as ASIO is header-only and depends on system headers, such as windows.h, I don't want to force the users of my library to include the whole implementation of ASIO and the system headers by using my library interface. </p> <p> A header with forward declarations of the most commonly used ASIO types could help me to achieve this goal. In particular, forward declarations of IP address classes would be helpful. </p> Andrey Semashev https://svn.boost.org/trac10/ticket/2778 https://svn.boost.org/trac10/ticket/2778 Report #2776: [fix in git] Failed to wrap classes with virtual inheritance Wed, 18 Feb 2009 12:02:10 GMT Fri, 25 Sep 2009 04:46:45 GMT <p> Hi! </p> <p> I've just generated a wrapper for the simple classes with virtual function and virtual inheritance with Py++ and generated code is failed to compile. Without virtual inheritance everything is ok. </p> <p> Error log is below, source and generated files are in attachment. </p> <p> % c++ -I/usr/include/python2.5 -lboost_python -shared -o test.so test.cxx /usr/include/boost/python/class.hpp: In static member function `static void boost::python::detail::error::virtual_function_default&lt;T, Fn&gt;::must_be_derived_class_member(const Default&amp;) [with Default = void (Petq_wrapper::*)(), T = Petq_wrapper, Fn = void (Vasq::*)()]': /usr/include/boost/python/class.hpp:565: instantiated from `void boost::python::class_&lt;T, X1, X2, X3&gt;::def_default(const char*, Fn, const Helper&amp;, mpl_::bool_&lt;true&gt;) [with Fn = void (Vasq::*)(), Helper = boost::python::detail::def_helper&lt;void (Petq_wrapper::*)(), boost::python::detail::not_specified, boost::python::detail::not_specified, boost::python::detail::not_specified&gt;, W = Petq_wrapper, X1 = boost::python::bases&lt;Vasq, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_&gt;, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' /usr/include/boost/python/class.hpp:548: instantiated from `void boost::python::class_&lt;T, X1, X2, X3&gt;::def_impl(T*, const char*, Fn, const Helper&amp;, ...) [with T = Petq, Fn = void (Vasq::*)(), Helper = boost::python::detail::def_helper&lt;void (Petq_wrapper::*)(), boost::python::detail::not_specified, boost::python::detail::not_specified, boost::python::detail::not_specified&gt;, W = Petq_wrapper, X1 = boost::python::bases&lt;Vasq, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_&gt;, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' /usr/include/boost/python/class.hpp:608: instantiated from `void boost::python::class_&lt;T, X1, X2, X3&gt;::def_maybe_overloads(const char*, Fn, const A1&amp;, ...) [with Fn = void (Vasq::*)(), A1 = void (Petq_wrapper::*)(), W = Petq_wrapper, X1 = boost::python::bases&lt;Vasq, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_&gt;, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' /usr/include/boost/python/class.hpp:244: instantiated from `boost::python::class_&lt;T, X1, X2, X3&gt;&amp; boost::python::class_&lt;T, X1, X2, X3&gt;::def(const char*, A1, const A2&amp;) [with A1 = void (Vasq::*)(), A2 = void (Petq_wrapper::*)(), W = Petq_wrapper, X1 = boost::python::bases&lt;Vasq, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_&gt;, X2 = boost::noncopyable_::noncopyable, X3 = boost::python::detail::not_specified]' test.cxx:52: instantiated from here /usr/include/boost/python/class.hpp:146: error: pointer to member conversion via virtual base `Vasq' </p> Alexander Kogan <alexander@…> https://svn.boost.org/trac10/ticket/2776 https://svn.boost.org/trac10/ticket/2776 Report #2769: x86_64 + g++: wrong results for sin() Tue, 17 Feb 2009 17:41:19 GMT Mon, 29 Nov 2010 03:13:12 GMT <p> When using boost's interval library under x86_64-Linux with g++ we encountered strange results for sin(): For example for an interval [-2.1,-2.1] sin() returns [nan,nan]. </p> anonymous https://svn.boost.org/trac10/ticket/2769 https://svn.boost.org/trac10/ticket/2769 Report #2758: Move container_device right inside Iostreams library Fri, 13 Feb 2009 09:38:07 GMT Fri, 13 Feb 2009 09:38:47 GMT <p> It will be useful to have container_source/sink/device classes (from libs/iostreams/example/container_device.hpp) right inside the Iostreams library. </p> anonymous https://svn.boost.org/trac10/ticket/2758 https://svn.boost.org/trac10/ticket/2758 Report #2746: Please allow specifying the library SONAME in Jamroot Wed, 11 Feb 2009 02:11:36 GMT Mon, 09 Nov 2009 18:03:08 GMT <p> In working on packaging the luabind library (which utilizes Boost.Jam) for Debian, I found the way that the library SONAME is passed to the linker is not "correct." It seems like since the SONAME is something that should ideally be managed by the library developer, it would be good if Boost.Jam allowed the library SONAME to be specified in the Jamroot file (for operating systems that have a notion of a SONAME). </p> <p> Here is the related thread from the luabind-user mailing list: </p> <p> <a class="ext-link" href="http://news.gmane.org/find-root.php?message_id=%3c20090131051842.GA15718%40connexer.com%3e"><span class="icon">​</span>http://news.gmane.org/find-root.php?message_id=%3c20090131051842.GA15718%40connexer.com%3e</a> </p> <p> Thanks to some help from volodya in IRC, we worked up the patch from the first message in the above thread. However, I think that some sort of configuration variable, that if set, allowed specifying the SONAME would be better. In the absence of the SONAME being specified in the Jamroot file, the current behavior could be kept as default. </p> roberto@… https://svn.boost.org/trac10/ticket/2746 https://svn.boost.org/trac10/ticket/2746 Report #2732: boost bjam install respects umask Thu, 05 Feb 2009 21:19:52 GMT Tue, 10 Nov 2009 08:17:53 GMT <p> Using bjam to install boost 1.37 the install procedure respects the current umask of the user. </p> <p> This is not the expected behaviour. Other software install routines usually make sure to set the file modes explicitly (for example they use the unix program 'install'). </p> <p> Thus, if you have a umask like 0077 you have by default a boost installation which is only readable by yourself. Again, no other 'make install' or such command behaves like this. </p> <p> I used this command line to install boost under Solaris 10: ./tools/jam/src/bin.solaris/bjam -sICU_PATH=/usr --user-config=user-config.jam --with-test --with-program_options address-model=64 -d3 --prefix=myprefix install </p> gsauthof@… https://svn.boost.org/trac10/ticket/2732 https://svn.boost.org/trac10/ticket/2732 Report #2730: Boostbook might place many authors on one line? Thu, 05 Feb 2009 12:22:26 GMT Thu, 08 Nov 2012 11:18:09 GMT <p> I note that many Boost libraries have many authors. </p> <p> For example the math library, where the seven authors (so far) are listed separately, half of page one is a list of authors, rather widely spaced. </p> <p> The Boost.Traits library ducks the issue by saying 'various authors', but listing them all in the copyright. This doesn't seem ideal. </p> <p> (If we output bibliographic info in future, we also want to be sure that all authors are specified, so putting "various authors" will output "various authors" as the authors!) </p> <p> So could the authors be better placed on one line? </p> <p> (I also note that the "Distributed under the Boost Software License, ..." is in a larger font that I think it need to be?) </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/2730 https://svn.boost.org/trac10/ticket/2730 Report #2726: better control over error-handling in Accumulators Wed, 04 Feb 2009 17:24:19 GMT Wed, 04 Feb 2009 17:24:19 GMT <p> Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/2671" title="#2671: Bugs: Calculation overflow for the 4th moment (closed: wontfix)">#2671</a> describes a scenario where accumulators causes an integral overflow. The simple solution there is to use doubles, but the larger issue is how to accommodate both fast, unchecked integral arithmetic and slower checked arithmetic. This is an open design issue, and it probably makes sense to come up with a uniform solution across all math-related libraries in Boost. </p> Eric Niebler https://svn.boost.org/trac10/ticket/2726 https://svn.boost.org/trac10/ticket/2726 Report #2718: local_date_time noticeably faster than ptime Tue, 03 Feb 2009 09:14:18 GMT Tue, 03 Feb 2009 09:14:18 GMT <p> We noticed recently that using a local_date_time in tight loops was several times faster than using a ptime object. As these are both based largerly on the same template code this was a surprise. It appears this is caused by the implementation of the operater+=/-= and was wondering if there was any justification for the difference or if this was just an oversight. </p> <div class="wiki-code"><div class="code"><pre> <span class="c1">//.\boost\date_time\local_time\local_date_time.hpp</span> <span class="n">local_date_time_base</span> <span class="k">operator</span><span class="o">+=</span><span class="p">(</span><span class="k">const</span> <span class="n">time_duration_type</span><span class="o">&amp;</span> <span class="n">td</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">time_</span> <span class="o">=</span> <span class="n">time_system_type</span><span class="o">::</span><span class="n">add_time_duration</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">time_</span><span class="p">,</span><span class="n">td</span><span class="p">);</span> <span class="k">return</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><div class="wiki-code"><div class="code"><pre> <span class="c1">//.\boost\date_time\time.hpp</span> <span class="n">time_type</span> <span class="k">operator</span><span class="o">+=</span><span class="p">(</span><span class="k">const</span> <span class="n">time_duration_type</span><span class="o">&amp;</span> <span class="n">td</span><span class="p">)</span> <span class="p">{</span> <span class="n">time_</span> <span class="o">=</span> <span class="p">(</span><span class="n">time_system</span><span class="o">::</span><span class="n">get_time_rep</span><span class="p">(</span><span class="n">date</span><span class="p">(),</span> <span class="n">time_of_day</span><span class="p">()</span> <span class="o">+</span> <span class="n">td</span><span class="p">));</span> <span class="k">return</span> <span class="nf">time_type</span><span class="p">(</span><span class="n">time_</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> It looks like the ptime implementation is doing extra work to split the ptime into date and time_duration components and if it is changed to follow a similar pattern to that used in the local time the performance is then indistinguishable. </p> <div class="wiki-code"><div class="code"><pre> <span class="c1">//.\boost\date_time\time.hpp</span> <span class="n">time_type</span> <span class="k">operator</span><span class="o">+=</span><span class="p">(</span><span class="k">const</span> <span class="n">time_duration_type</span><span class="o">&amp;</span> <span class="n">td</span><span class="p">)</span> <span class="p">{</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">time_</span> <span class="o">=</span> <span class="n">time_system</span><span class="o">::</span><span class="n">add_time_duration</span><span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">time_</span><span class="p">,</span> <span class="n">td</span><span class="p">);</span> <span class="k">return</span> <span class="nf">time_type</span><span class="p">(</span><span class="n">time_</span><span class="p">);</span> <span class="p">}</span> </pre></div></div><p> I can only think that maybe this was done to work around an issue and in which case should the same then be applied to the local time implementation? </p> <p> <a class="ext-link" href="http://www.nabble.com/user/SendEmail.jtp?type=user&amp;user=627065"><span class="icon">​</span>email via nabble</a> </p> oneill1979 https://svn.boost.org/trac10/ticket/2718 https://svn.boost.org/trac10/ticket/2718 Report #2692: No concepts supporting the idea of dense Wed, 28 Jan 2009 20:51:45 GMT Thu, 18 Jun 2009 08:01:37 GMT <p> data() returns a reference to a Storage. However, nowhere in the concepts is a statement saying that &amp;m.data()<a class="missing changeset" title="No changeset 0 in the repository">[0]</a> must to be the address of the first element of the linearly stored data in the Storage. The adjective "dense" is used all over, but nowhere is this term given any operational guarantees. Without such guarantees, all the interfaces in, say, the numerics::binding libraries are being built on sand. Related to this is that nothing requires unbounded_array&lt;T&gt;::value_type to be T. The problem boils down to the ublas concepts documentation borrowing from the stl vector concepts which are general enough to support vector&lt;bool&gt;. The basic (and inadequate) change is the sprinkling around of the word dense and the phrase "strict linear order". Instead you need to explicitly says things like value_type is T and &amp;v[i+j] == &amp;v[i]+j (for reasonable i+j). </p> dougrm@… https://svn.boost.org/trac10/ticket/2692 https://svn.boost.org/trac10/ticket/2692 Report #2676: CodeGear compile error when including utility/result_of.hpp Fri, 23 Jan 2009 18:45:24 GMT Sat, 13 Apr 2013 16:51:06 GMT <p> <a class="missing wiki">CodeGear</a> fails to compile utility/result_of.hpp instead of gracefully degrading to the version for compilers without ISO decltype --apparently <a class="missing wiki">CodeGear</a> has a decltype which is not ISO conformant, leading to the problem. </p> <p> See complete discussion at <a class="ext-link" href="http://lists.boost.org/Archives/boost/2009/01/147163.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2009/01/147163.php</a> </p> <p> Daniel Walker provides a patch for this problem (attached.) I'm initially assigning this to Doug Gregor, but Daniel is CCed just in case he wants to reassign to himself. </p> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/2676 https://svn.boost.org/trac10/ticket/2676 Report #2674: request to make BOOST_PARAMETER_MAX_ARITY re-defineable Fri, 23 Jan 2009 14:59:29 GMT Thu, 30 Oct 2014 19:14:38 GMT <p> I'd like to be able to increase BOOST_PARAMETER_MAX_ARITY in my library header if needed, and then include the Boost.Parameter library without worrying that the user might have already included Boost.Parameter headers and thus made my attempt to increase the max arity futile. I believe the Boost.Function library has this feature. My use case is trying to apply Boost.Parameter to the boost::signals2::signal class, which currently has 7 template type parameters (but BOOST_PARAMETER_MAX_ARITY defaults to 5). </p> Frank Mori Hess https://svn.boost.org/trac10/ticket/2674 https://svn.boost.org/trac10/ticket/2674 Report #2660: `fd_set' has not been declared Fri, 16 Jan 2009 12:13:14 GMT Sun, 12 Apr 2015 13:21:53 GMT <p> I'm using Boost.Thread and Boost.Asio on Cygwin. </p> <p> If I include boost/thread.hpp, without boost/asio.hpp first, I get a compiler error: </p> <p> In file included from /usr/include/cygwin/sys_time.h:13, </p> <blockquote> <p> from /usr/include/sys/time.h:27, from D:/local/boost/include/boost-1_37/boost/date_time/c_time.hpp:28, from D:/local/boost/include/boost-1_37/boost/date_time/microsec_time_clock.hpp:18, from D:/local/boost/include/boost-1_37/boost/thread/thread_time.hpp:9, from D:/local/boost/include/boost-1_37/boost/thread/locks.hpp:12, from D:/local/boost/include/boost-1_37/boost/thread/pthread/mutex.hpp:11, from D:/local/boost/include/boost-1_37/boost/thread/mutex.hpp:16, from D:/local/boost/include/boost-1_37/boost/thread/pthread/thread_data.hpp:12, from D:/local/boost/include/boost-1_37/boost/thread/thread.hpp:17, from D:/local/boost/include/boost-1_37/boost/thread.hpp:13, from src/flightpath_controller.cpp:27: </p> </blockquote> <p> /usr/include/sys/select.h:31: error: `fd_set' has not been declared /usr/include/sys/select.h:31: error: `fd_set' has not been declared /usr/include/sys/select.h:31: error: `fd_set' has not been declared /usr/include/sys/select.h:33: error: `fd_set' has not been declared /usr/include/sys/select.h:33: error: `fd_set' has not been declared /usr/include/sys/select.h:33: error: `fd_set' has not been declared make: <strong>* [build/flightpath_controller.o] Error 1 </strong></p> <p> A workaround for this issue is to include boost/asio.hpp before boost/thread.hpp within the given sourcefile. </p> jens.luedicke@… https://svn.boost.org/trac10/ticket/2660 https://svn.boost.org/trac10/ticket/2660 Report #2640: Legal forward iterators cannot store their referents (was: counting_iterator::reference lifetime tied to iterator) Mon, 05 Jan 2009 20:54:53 GMT Tue, 30 Sep 2014 15:34:14 GMT <p> The iterators library needs a redesign based on the facts noted in <a class="new ticket" href="https://svn.boost.org/trac10/ticket/2640#comment:2" title="#2640: Bugs: Legal forward iterators cannot store their referents (was: ... (new)">this comment</a> </p> <p> The original report is below. </p> <hr /> <p> Currently, counting_iterator&lt;T&gt;::reference is Incrementable const&amp;. This makes reverse_iterator&lt; counting_iterator&lt;T&gt; &gt;::dereference return a reference to a temporary variable: </p> <p> typename super_t::reference dereference() const { return *boost::prior(this-&gt;base()); } </p> <p> The problem is that iterator::reference is expected to stay valid even if the iterator it was obtained from is dead. </p> schoedl https://svn.boost.org/trac10/ticket/2640 https://svn.boost.org/trac10/ticket/2640 Report #2635: date_time input_facet formatting Mon, 05 Jan 2009 13:02:35 GMT Mon, 05 Jan 2009 19:36:24 GMT <p> Hi, </p> <p> I've found a problem with the input_facet formating. The following format: "%Y-%m-%d" causes that the date: "1999-1-01" is allowed, but shouldn't be (month has to be in 2-digit format). See attached main.cpp file. It's a unit test clearly describing the problem. Tested on gcc 3.3.6 and 4.3.1. </p> tmmikolajczyk@… https://svn.boost.org/trac10/ticket/2635 https://svn.boost.org/trac10/ticket/2635 Report #2628: Sequence concept incorrectly fails for basic_string Thu, 01 Jan 2009 03:38:48 GMT Fri, 21 Feb 2014 09:24:23 GMT <p> The Sequence concept fails when tested against basic_string (e.g. BOOST_CONCEPT_ASSERT((Sequence&lt;T&gt;)); ) because an extra constructor test is included. This test is for X a(n) where n is the size of the sequence to be created. However, section 23.1.1 table 67 of the C++ standard does not include this test in the definition of the Sequence concept. Because this test is in place, basic_string is rejected by the current implementation of the Sequence concept, since basic_string does not have this constructor. However, section 21.3 paragraph 2 of the C++ standard states, "The class template basic_string conforms to the requirements of a Sequence, as specified in (23.1.1)." </p> <p> The fix for this should be as simple as removing the test for a constructor of the form X a(n) in the Sequence concept implementation. </p> Joel Lathrop <jal6806@…> https://svn.boost.org/trac10/ticket/2628 https://svn.boost.org/trac10/ticket/2628 Report #2565: posix_chat_client.cpp does not work on mac os x Thu, 04 Dec 2008 21:38:50 GMT Tue, 12 Jan 2010 22:43:49 GMT <p> I am using Mac OS X 10.5 (Leopard), macbook pro and this example seems to be broken. </p> <p> when I run </p> <p> ./chat_server 12345 </p> <p> and in a different terminal on the same machine run </p> <p> ./posix_chat_client localhost 12345 </p> <p> the client exits immediately (instead of accepting input to send to the server which echos is back). </p> <p> the chat_client works fine however. Note that the source is in boost/libs/asio/examples/chat </p> <p> In similar code I get the error "Operation not supported" </p> <p> This same code works on linux (ubuntu 4.3.2) just fine. Same build flags. </p> kyle.tarplee@… https://svn.boost.org/trac10/ticket/2565 https://svn.boost.org/trac10/ticket/2565 Report #2557: iostreams filtering_stream w/ gzip infinite loop when writing to a full drive Mon, 01 Dec 2008 19:27:03 GMT Wed, 12 Jul 2017 12:45:47 GMT <p> When a filtering_stream with a gzip_compressor is used to write to a full hard drive (i.e. insufficient free space), boost enters an infinite loop in /boost/iostreams/detail/adapter/non_blocking_adapter.hpp:41 because the write function keeps returning zero. This loop happens during the destruction of the stream. I can't seem to find a client-side workaround. </p> <p> Attached is a test case, point it to a volume with zero space and give some large number of bytes. If there's insufficient space, execution hangs. Tested on mingw/winxp/gcc4.2 but seems to fail on linux/gcc as well. </p> Tomasz Śniatowski <kailoran@…> https://svn.boost.org/trac10/ticket/2557 https://svn.boost.org/trac10/ticket/2557 Report #2555: SIGTRAP received while calling a wrapped function with "" Mon, 01 Dec 2008 16:00:35 GMT Tue, 23 Dec 2008 09:20:15 GMT <p> We have a function that takes a std::string in parameter, and we wrap it using Boost.Python: </p> <p> void foo(string s) { </p> <blockquote> <p> cout &lt;&lt; "foo" &lt;&lt; endl; </p> </blockquote> <p> } </p> <p> BOOST_PYTHON_MODULE(mymodule) { </p> <blockquote> <p> def("foo", &amp;foo); </p> </blockquote> <p> } </p> <p> When we call it under gdb, we receive a SIGTRAP signal (see attachment). Note that the problem disappears if the std::string is replaced by a const char* or if we pass a non-empty literal string. Also, it only appears under gdb, a normal run won't make the program crash. </p> <p> Here are the different platforms tested: </p> <ul><li>win32 - python2.2.3 - gcc3.4.5 - boost1.35 - gdb6.8 : KO </li><li>win32 - python2.5.2 - gcc3.4.5 - boost1.35 - gdb6.8 : KO </li><li>win32 - python2.5.2 - gcc3.4.5 - boost1.36 - gdb6.8 : KO </li><li>win32 - python2.5.2 - gcc4.2.1-sjlj - boost1.36 - gdb6.8 : KO </li><li>redhat 7.2 - python2.4. - gcc3.3.6 - boost1.35 - gdb5.0 : OK </li><li>ubuntu 8.10 - python2.5.2 - gcc4.3.2 - boost1.35 - gdb6.8: OK </li></ul><p> So the problem seems to be reproducible only with win32. </p> <p> Bruno </p> bruno dot lalande at gmail dot com https://svn.boost.org/trac10/ticket/2555 https://svn.boost.org/trac10/ticket/2555 Report #2539: advance() and distance() for new iterator concepts Wed, 26 Nov 2008 15:42:24 GMT Mon, 22 Feb 2016 02:25:30 GMT <p> I can't find a trace of a problem submitted by Sebastian Redl last year : <a class="ext-link" href="http://lists.boost.org/Archives/boost/2007/09/127785.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2007/09/127785.php</a> </p> <p> In brief, the std version of advance() and distance() functions does not dispatch accordingly to the traversal_tag. For instance a transform_iterator is categorized as std::input_iterator_tag, boost::random_access_traversal_tag and the chosen distance() implementation is O(n) while O(1) is expected. </p> <p> The patch suggested by Sebastian works fine. The only thing is that names collides with Boost.Range (which already have boost::distance). </p> debionne@… https://svn.boost.org/trac10/ticket/2539 https://svn.boost.org/trac10/ticket/2539 Report #2522: iostreams/stream_offset_64bit_test fails on QNX 6.4.0 Fri, 21 Nov 2008 11:13:26 GMT Fri, 21 Nov 2008 11:13:26 GMT <p> ...with the Dinkumware 5 library. </p> <p> It fails on the first iteration and reports this:<br /> </p> <ul><li>sizeof(fpos_t) = 16<br /> </li><li>sizeof(streamoff) = 4<br /> </li><li>sizeof(stream_offset) = 8<br /> </li></ul><p> ... </p> <p> The constructor of std::streampos (fpos&lt;_Mbstatet&gt;) puts the value in a streamoff so the most significant 32 bits get chopped off. </p> <p> Defining BOOST_IOSTREAMS_HAS_DINKUMWARE_FPOS results in this:<br /> positioning.hpp: In function 'std::streampos boost::iostreams::offset_to_position(boost::iostreams::stream_offset)':<br /> positioning.hpp:52: error: no matching function for call to 'std::fpos&lt;_Mbstatet&gt;::fpos(std::mbstate_t, boost::iostreams::stream_offset&amp;)'<br /> iosfwd:32: note: candidates are: std::fpos&lt;_Statetype&gt;::fpos(_Statetype, std::fpos_t) [with _Statetype = _Mbstatet]<br /> iosfwd:27: note: std::fpos&lt;_Statetype&gt;::fpos(std::streamoff) [with _Statetype = _Mbstatet]<br /> iosfwd:23: note: std::fpos&lt;_Mbstatet&gt;::fpos(const std::fpos&lt;_Mbstatet&gt;&amp;) </p> <p> std::fpos_t is defined like this:<br /> struct _Fpost {<br /> </p> <blockquote> <p> _Off64t _Off;<br /> _Mbstatet _Wstate;<br /> </p> </blockquote> <p> } </p> <p> I wrote this simple test:<br /> std::fpos_t fpos = { 100000000000LL, std::mbstate_t() };<br /> std::streampos pos(std::mbstate_t(), fpos);<br /> std::cout &lt;&lt; _FPOSOFF(pos.seekpos()) &lt;&lt; std::endl; </p> <p> It prints 100 billion. Is there a better way to initialize fpos_t? I'm not sure it's correct to use the default value for mbstate_t but offset_to_position() currently does it. </p> Niklas Angare <li51ckf02@…> https://svn.boost.org/trac10/ticket/2522 https://svn.boost.org/trac10/ticket/2522 Report #2515: [MSVC] ambiguous symbol type_info in boost/python tests Wed, 19 Nov 2008 10:32:17 GMT Wed, 19 Nov 2008 10:32:17 GMT <p> The most of the boost/python tests are failed to compile on MSVC with Apache stdcxx library. </p> <p> <a class="ext-link" href="http://tinyurl.com/6hdez7"><span class="icon">​</span>example 1</a> <a class="ext-link" href="http://tinyurl.com/5wywqb"><span class="icon">​</span>example 2</a> </p> <p> The reason is that &lt;eh.h&gt; header contains declaration of the: </p> <pre class="wiki">int _is_exception_typeof(const type_info &amp;, _EXCEPTION_POINTERS *) ; </pre><p> &lt;eh.h&gt; header is included in libs/python/test/module_tail.cpp file. The module_tail.cpp is included in other pythons tests at the end of file after introducing boost::python symbols in global namespace. </p> <p> That tests are compiled successfully on MSVC without stdcxx due to &lt;eh.h&gt; implicitly included thus &lt;exception&gt; header (before "using namespace boost::python;" directive). But any of the stdcxx headers are not including the &lt;eh.h&gt; (see <a class="ext-link" href="http://svn.boost.org/trac/boost/ticket/1599"><span class="icon">​</span>ticket 1599</a>). </p> <p> The possible solution is explicitly include &lt;eh.h&gt; in every test, that includes module_tail.cpp. </p> <p> Another solution: </p> <pre class="wiki">Index: module_tail.cpp =================================================================== --- module_tail.cpp (revision 49830) +++ module_tail.cpp (working copy) @@ -13,7 +13,9 @@ # endif # ifdef _MSC_VER +# define type_info ::type_info # include &lt;eh.h&gt; // for _set_se_translator() +# undef type_info # pragma warning(push) # pragma warning(disable:4297) # pragma warning(disable:4535) </pre> Farid Zaripov <faridz@…> https://svn.boost.org/trac10/ticket/2515 https://svn.boost.org/trac10/ticket/2515 Report #2487: Calculate the mlp::and_ or mpl_or of a sequence of nullary logical metafunctions. Sat, 08 Nov 2008 22:41:27 GMT Sat, 12 Jun 2010 16:46:25 GMT <p> Do you think that these two metafunctions have a place in mpl? </p> <p> template &lt;typename Seq&gt; struct and_seq : boost::is_same&lt;typename mpl::find_if&lt;Seq, mpl::not_&lt;mpl::_&gt; &gt;::type, </p> <blockquote> <p> typename mpl::end&lt;Seq&gt;::type&gt; </p> </blockquote> <blockquote> <p> {}; </p> </blockquote> <p> template &lt;typename Seq&gt; struct or_seq : mpl::not_&lt;boost::is_same&lt;typename mpl::find_if&lt;Seq, mpl::_&gt;::type, </p> <blockquote> <p> typename mpl::end&lt;Seq&gt;::type&gt; </p> <blockquote class="citation"> <p> {}; </p> </blockquote> </blockquote> <p> I have attached the code and the tests. </p> vicente.botet@… https://svn.boost.org/trac10/ticket/2487 https://svn.boost.org/trac10/ticket/2487 Report #2482: msvc-9.0 unreferenced formal parameter warning when using boost::breadth_first_visit Thu, 06 Nov 2008 21:36:19 GMT Wed, 21 May 2014 10:22:34 GMT <p> Boost. 1.37.0 (maybe earlier) and Boost.Trunk trigger msvc " warning C4100: 'b' : unreferenced formal parameter" in concept_check.hpp(144) and in concept/detail/msvc.hpp(21) : warning C4100: 'x' : unreferenced formal parameter. </p> <p> Full obfuscated template instation stack attached. </p> <p> I've attached our patch against 1.37.0, a patch against current trunk for msvc.hpp and a patch showing that trunk and release version of boost/concept_check.hpp are different. </p> Jürgen Hunold https://svn.boost.org/trac10/ticket/2482 https://svn.boost.org/trac10/ticket/2482 Report #2473: unsigned integers going into interval of doubles get wrongly negated Tue, 04 Nov 2008 13:12:14 GMT Thu, 02 Apr 2009 22:36:44 GMT <p> interval&lt;double&gt; x(1U) gets wrong lower bound (-2<strong>32+1 instead of 1). Apparently, the unary - operation is performed on the unsigned int instead of the double. </strong></p> <p> Workaround: manually cast to double before creating the interval. </p> David Monniaux <David.Monniaux@…> https://svn.boost.org/trac10/ticket/2473 https://svn.boost.org/trac10/ticket/2473 Report #2448: syntax highlighting for code in documentation or website Wed, 29 Oct 2008 19:56:48 GMT Sat, 21 Feb 2009 17:15:22 GMT <p> In Boost documentation there are a lot of code examples which it would be better if it will be with syntax highlighting to be more readable. </p> hagai26@… https://svn.boost.org/trac10/ticket/2448 https://svn.boost.org/trac10/ticket/2448 Report #2438: gcc.jam sets LD_LIBRARY_PATH which breaks FreeBSD build Mon, 27 Oct 2008 16:57:06 GMT Mon, 11 Jan 2010 17:10:44 GMT <p> In build/tools/v2/tools/gcc.jam we are setting the LD_LIBRARY_PATH for compilation to: </p> <p> /usr/bin:/usr/lib:/usr/lib32:/usr/lib64 </p> <p> Couple of points: </p> <ul><li>/usr/bin (?) :D </li><li>/usr/lib on FreeBSD does not contain major number libs so most if not all binaries will not pick up anything from here </li><li>/usr/lib32 on FreeBSD DOES CONTAIN major number libs so if you are building on 32-bit this will work, HOWEVER if you are building 64-bit then this will cause failures </li><li>/usr/lib64 does not exist on FreeBSD (I believe this is a Linux thing) </li></ul><p> Based on the comments within gcc.jam I FEEL as do some other people (see thread reference) that if bjam is *really* going to rely on rtld then it should do so by NOT setting anything to LD_LIBRARY_PATH which many have pointed out is only to be used when the standard search path is not enough. Setting this PATH is very dangerous and for 99% of the build cases, rtld does the right thing. </p> <p> Thread: </p> <p> <a class="ext-link" href="http://www.nabble.com/Boost-1.36.0-FreeBSD-patches-for-review-td20143328.html"><span class="icon">​</span>http://www.nabble.com/Boost-1.36.0-FreeBSD-patches-for-review-td20143328.html</a> </p> <p> If it is decided to set LD_LIBRARY_PATH then we need to make this OS specific and unset it for FreeBSD (or minimally add back /lib which Steven pointed out in the above thread is probably not the right solution given LD_LIBRARY_PATH's semantics). </p> pisymbol@… https://svn.boost.org/trac10/ticket/2438 https://svn.boost.org/trac10/ticket/2438 Report #2433: bjam should honor include paths order Sat, 25 Oct 2008 13:47:32 GMT Wed, 23 Nov 2011 18:49:55 GMT <p> Currently bjam does not honor include paths and sorts things alphabetically as an speed optimization (I believe it has to do with comparing sets of paths for equivalence). In reality, bjam should honor include path order not only within a &lt;include&gt; attribute but also within a project hierarchy itself. </p> <p> Here is a great thread with a lot of good discussion about the issue and what I have in mind for bjam: </p> <p> <a class="ext-link" href="http://www.nabble.com/Sorting-include-headers-td19995752.html"><span class="icon">​</span>http://www.nabble.com/Sorting-include-headers-td19995752.html</a> </p> pisymbol@… https://svn.boost.org/trac10/ticket/2433 https://svn.boost.org/trac10/ticket/2433 Report #2430: shared_mutex for win32 doesn't have timed_lock_upgrade Wed, 22 Oct 2008 19:43:10 GMT Sat, 19 Jan 2013 11:06:19 GMT <p> The shared_mutex in boost/thread/win32/shared_mutex.hpp doesn't provide timed_lock_upgrade method while the POSIX counterpart does. Applies to 1.36, 1.37 (release in SVN) and trunk. </p> Andrey.Semashev@… https://svn.boost.org/trac10/ticket/2430 https://svn.boost.org/trac10/ticket/2430 Report #2426: Error in documentation for boost::python indexing suite Tue, 21 Oct 2008 14:27:45 GMT Sat, 30 Oct 2010 12:33:52 GMT <p> The documentation for boost::python indexing suite at <a href="http://www.boost.org/doc/libs/1_36_0/libs/python/doc/v2/indexing.html">http://www.boost.org/doc/libs/1_36_0/libs/python/doc/v2/indexing.html</a> claims the headers are in &lt;boost/python/indexing/indexing_suite.hpp&gt;. When I unpack boost_1_36_0 I get &lt;boost/python/suite/indexing/vector_indexing_suite.hpp&gt; (note boost/python/<strong>*suite</strong>*/... </p> <p> Robert </p> rswanca@… https://svn.boost.org/trac10/ticket/2426 https://svn.boost.org/trac10/ticket/2426 Report #2400: Messages corrupted if isend requests are not retained Thu, 09 Oct 2008 21:16:30 GMT Tue, 01 Jan 2013 10:59:07 GMT <p> If I do a series of isends and discard the request objects (because I don't need to know when they complete), the messages can get corrupted. I realize this is the way the MPI library is designed, but I'm wondering if it possible to use some C++ goodness to make the request objects persist behind-the-scenes until the request is completed? The behavior is particularly unexpected in the Python layer. Thanks very much! </p> dwchiang@… https://svn.boost.org/trac10/ticket/2400 https://svn.boost.org/trac10/ticket/2400 Report #2399: Python boost.mpi.Request.test() crashes Thu, 09 Oct 2008 21:02:05 GMT Fri, 07 Aug 2009 17:05:55 GMT <p> With the addition of the request_with_value type, the wrapper for request::test() was broken (can't convert optional&lt;status&gt; to Python type). A fix: </p> <pre class="wiki">const object request_test(request &amp;req) { ::boost::optional&lt;status&gt; stat = req.test(); if (stat) return object(*stat); else return object(); } </pre><p> and change the wrapper for Request to use &amp;request_test instead of &amp;cl::test. </p> dwchiang@… https://svn.boost.org/trac10/ticket/2399 https://svn.boost.org/trac10/ticket/2399 Report #2348: const qualified return value in iterator_facade Fri, 19 Sep 2008 17:09:15 GMT Wed, 21 Nov 2012 19:41:56 GMT <p> This is a very minor thing: </p> <p> The line: </p> <pre class="wiki">boost::indirect_iterator&lt;const int* const *&gt; it; </pre><p> creating a iterator for constant iteration through a container of constant pointers creates a warning </p> <p> "boost/iterator/iterator_facade.hpp:653: warning: type qualifiers ignored on function return type" </p> <p> obviously this is not the way to fix it, but changing this line to typename remove_const&lt;typename boost::detail::operator_brackets_result&lt;Derived,Value,reference&gt;::type&gt;::type solves the problem. </p> brian.tyler@… https://svn.boost.org/trac10/ticket/2348 https://svn.boost.org/trac10/ticket/2348 Report #2331: Boost.Parameter -- oveloading on keyword signature Tue, 16 Sep 2008 20:10:19 GMT Wed, 17 Sep 2008 20:56:11 GMT <p> This bug was described in the users mailing list: </p> <p> <a class="ext-link" href="http://www.nabble.com/overloading-on-keyword-signature-td19503100.html"><span class="icon">​</span>http://www.nabble.com/overloading-on-keyword-signature-td19503100.html</a> </p> <p> I used gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7) </p> e_r https://svn.boost.org/trac10/ticket/2331 https://svn.boost.org/trac10/ticket/2331 Report #2326: Library does not directly support serializing data of type "foo**" Mon, 15 Sep 2008 03:40:34 GMT Thu, 18 Sep 2008 15:44:22 GMT <p> The following example fails to compile, trying to find a .serialize() member function in an int*. Clearly the user can program around this, but serializing pointers-to-pointers seems a natural capability that should be in the library. </p> <p> #include &lt;fstream&gt; </p> <p> #include "boost/archive/text_oarchive.hpp" </p> <p> class foo { </p> <blockquote> <p> friend class boost::serialization::access; </p> </blockquote> <blockquote> <p> template&lt;class archive&gt; </p> </blockquote> <blockquote> <p> void serialize(archive&amp; ar, const unsigned int version) { </p> </blockquote> <blockquote> <blockquote> <p> ar &amp; BOOST_SERIALIZATION_NVP(buff); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> ar &amp; BOOST_SERIALIZATION_NVP(ptr); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> } </p> </blockquote> </blockquote> <p> public: </p> <blockquote> <p> foo() : ptr(&amp;buff<a class="changeset" href="https://svn.boost.org/trac10/changeset/3" title="Tweak disclaimer text">[3]</a>) {} </p> </blockquote> <blockquote> <p> int* buff<a class="changeset" href="https://svn.boost.org/trac10/changeset/10" title="*** empty log message *** ">[10]</a>; </p> </blockquote> <blockquote> <p> int<strong> ptr; </strong></p> </blockquote> <blockquote> <p> }; </p> </blockquote> <p> int main() { </p> <blockquote> <p> foo f; </p> </blockquote> <blockquote> <p> std::ofstream serial("serial"); </p> </blockquote> <blockquote> <p> boost::archive::text_oarchive oa(serial); </p> </blockquote> <blockquote> <p> oa &lt;&lt; BOOST_SERIALIZATION_NVP(f); </p> </blockquote> <blockquote> <p> return 0; </p> </blockquote> <blockquote> <p> } </p> </blockquote> anonymous https://svn.boost.org/trac10/ticket/2326 https://svn.boost.org/trac10/ticket/2326 Report #2319: function::operator= should "move", copy assignment should have by-value argument Thu, 11 Sep 2008 16:11:21 GMT Wed, 05 Sep 2012 20:28:52 GMT <p> A few days ago, I added a comment to ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1910" title="#1910: Bugs: function::swap should avoid doing memory allocations (closed: fixed)">#1910</a> (regarding function::swap), suggesting to have boost::function's assignment operators calling its new <em>move_assign</em> member function, instead of calling <em>swap</em>. Doing so would significantly improve its performance. </p> <p> Now I think that function::operator= deserves its own ticket, especially because the <em>copy assignment</em> of boost::function can be improved even more, by having its argument passed <em>by value</em>, instead of creating a copy of the argument inside the body of the function. Doing so would allow the compiler to do copy elision, when its argument is an rvalue. See also <a class="ext-link" href="http://lists.boost.org/Archives/boost/2008/09/142106.php"><span class="icon">​</span>Improving the assignment operators of various Boost types</a> </p> <p> So please consider the attached patch. </p> niels_dekker https://svn.boost.org/trac10/ticket/2319 https://svn.boost.org/trac10/ticket/2319 Report #2314: Finish intrusive_ptr_test.cpp Wed, 10 Sep 2008 11:05:51 GMT Thu, 24 Feb 2011 22:06:43 GMT <p> intrusive_ptr_test.cpp is incomplete and unfinished; it's missing, among other things, assignment tests, needed for <a class="new ticket" href="https://svn.boost.org/trac10/ticket/2312" title="#2312: Patches: intrusive_ptr::operator= should have by-value argument (new)">#2312</a>. </p> Peter Dimov https://svn.boost.org/trac10/ticket/2314 https://svn.boost.org/trac10/ticket/2314 Report #2312: intrusive_ptr::operator= should have by-value argument Wed, 10 Sep 2008 09:16:41 GMT Thu, 24 Feb 2011 22:11:26 GMT <p> When a copy assignment operator is implemented simply by doing copy-and-swap, it should pass its argument by value, instead of doing the copy inside the body of the function, to allow the compiler to do copy elision. As was discussed at the Boost developer mailing list, <a class="ext-link" href="http://lists.boost.org/Archives/boost/2008/09/142106.php"><span class="icon">​</span>Improving the assignment operators of various Boost types</a>. </p> <p> So please consider the attached patch. </p> niels_dekker https://svn.boost.org/trac10/ticket/2312 https://svn.boost.org/trac10/ticket/2312 Report #2297: Workaround for GCC bug Mon, 08 Sep 2008 02:02:31 GMT Mon, 11 Apr 2011 08:28:20 GMT <p> This patch works around <a class="ext-link" href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28088"><span class="icon">​</span>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28088</a>, simplifies the code, and <em>ought</em> to speed up compilation a bit into the bargain by instantiating fewer templates. However, whether it breaks on any compilers other than GCC remains to be seen. </p> <p> Preprocessed headers need to be regenerated, of course. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/2297 https://svn.boost.org/trac10/ticket/2297 Report #2289: Problem with BOOST_AUTO and this keyword on VC8/9 Fri, 05 Sep 2008 10:57:15 GMT Mon, 10 Sep 2012 14:52:19 GMT <p> On both VC8SP1 and VC9SP1, the code </p> <pre class="wiki">struct foo { int i; foo::foo() { BOOST_AUTO(j, this-&gt;i); } }; </pre><p> results in the compiler error </p> <pre class="wiki"> error C2355: 'this' : can only be referenced inside non-static member functions error C2227: left of '-&gt;i' must point to class/struct/union/generic type error C2955: 'boost::type_of::msvc_typeid_wrapper' : use of class template requires template argument list e:\boostsvn\boost\typeof\msvc\typeof_impl.hpp(209) : see declaration of 'boost::type_of::msvc_typeid_wrapper' </pre><p> In both cases, changing it to simply BOOST_AUTO(j, i); allows it to compile. </p> <p> The foreach lib used to have a similar problem (Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1652" title="#1652: Bugs: foreach + this keyword -&gt; fails under MSVC (closed: fixed)">#1652</a>), possibly down to the same compiler bug? </p> Richard Webb <Richard.Webb@…> https://svn.boost.org/trac10/ticket/2289 https://svn.boost.org/trac10/ticket/2289 Report #2287: pi test runtime failures Fri, 05 Sep 2008 02:11:35 GMT Sun, 14 Sep 2008 08:58:52 GMT <p> On Suse Linux Enterprise Server 10, with the default installed gcc-4.0.1, I am getting the following errors: </p> <pre class="wiki">/zorak/sles/boost_1_35_0/libs/numeric/interval/test/pi.cpp(37): test subset(pi_f, widen(I_f((float) PI), (std::numeric_limits&lt;float&gt; ::min)())) failed in function: 'int test_main(int, char**)' /zorak/sles/boost_1_35_0/libs/numeric/interval/test/pi.cpp(38): test subset(pi_d, widen(I_d((double)PI), (std::numeric_limits&lt;double&gt;::min)())) failed in function: 'int test_main(int, char**)' </pre><p> My bjam command-line is: </p> <pre class="wiki">#!/sh ~/bin/bjam -sHAVE_ICU=1 -sEXPAT_INCLUDE=/usr/include -sEXPAT_LIBPATH=/usr/lib64 --debug-configuration -j4 release --build-dir=/zorak/sles/build cxxflags=-Wno-non-virtual-dtor </pre><p> Even if there is no immediate fix, an explanation would be helpful. Thanks! </p> Dave Abrahams https://svn.boost.org/trac10/ticket/2287 https://svn.boost.org/trac10/ticket/2287 Report #2262: BOOST_MPL_ASSERT_MSG producing linking problems in MSVC++ 8.0 Tue, 26 Aug 2008 15:43:22 GMT Fri, 19 Apr 2013 02:16:07 GMT <p> Steps to reproduce the problem: </p> <ul><li>Create a basic console project in Visual Studio 2005<br /> </li><li>Include files foo1.cpp and foo2.cpp<br /> </li><li>Build; the following error shows up at linking time:<br /> </li></ul><pre class="wiki">&gt;Linking... &gt;foo2.obj : error LNK2005: "public: static struct boost::mpl::failed * * * * * * * * * * * * (__thiscall `bool __cdecl f&lt;int&gt;(void)'::`2' ::ALWAYS_TRUE::** * * * * * * * * * * __cdecl `bool __cdecl f&lt;int&gt; (void)'::`2'::ALWAYS_TRUE0::assert_arg(void))(int)" (?assert_arg@ALWAYS_TRUE0@?1???$f@H@@YA_NXZ@SAPAPAPAPAPAPAPAPAPAPAPAP8 ALWAYS_TRUE@?1???$f@H@@YA_NXZ@AEPAPAPAPAPAPAPAPAPAPAPAPAUfailed@mpl@boost@@H@ZXZ) already defined in foo1.obj </pre> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/2262 https://svn.boost.org/trac10/ticket/2262 Report #2258: Test annotation problems Mon, 25 Aug 2008 21:50:03 GMT Mon, 25 Aug 2008 21:51:01 GMT <p> With x86 linux gcc-4.0.1, I get this for the member_ccs test: </p> <blockquote> <p> member_ccs.cpp:17:5: error: #error "test not supported with this compiler/platform" </p> </blockquote> <p> and the test is annotated thusly: </p> <blockquote> <p> Not all compilers/platforms implement nonstandard calling conventions. </p> </blockquote> <blockquote> <p> With GCC/x86 this failure reflects <a class="ext-link" href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328"><span class="icon">​</span>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328</a> . </p> </blockquote> <p> But the nonme the nonmember_ccs test *also* fails with the same error, and this annotation: </p> <blockquote> <p> Not all compilers/platforms implement nonstandard calling conventions. </p> </blockquote> <p> i.e. there is no reference to a GCC bug. </p> <p> Points: </p> <ul><li>The error message for member_ccs is inconsistent with the note about the gcc bug. </li></ul><ul><li>The function types library documentation barely mentions "calling conventions" and doesn't explain what "nonstandard" means in this context. For example, does extern "C" count? </li></ul><ul><li>Since I am running x86/GCC, the note about the GCC bug much more specific than the other part of the note, so I assumed that it applied. That would mean that my platform implements a nonstandard calling convention, but a compiler bug is causing the test to fail. </li></ul><ul><li>However, that interpretation would be inconsistent with the annotation for nonmember_ccs. </li></ul><ul><li>I suspect that my platform does not support nonstandard calling convention, and the bug only applies on platforms where GCC supports nonstandard calling conventions (e.g. Windows), and does not apply to me. If so, the annotation should be more specific about the platforms on which the note applies. </li></ul><ul><li>The error message should be better, e.g.: "this platform does not support nonstandard calling conventions; the test is irrelevant here" </li></ul><ul><li>A test that always succeeds when the platform doesn't support nonstandard calling conventions would yield far more reliable results than the overly general wildcard matching of failure annotations you have now, which makes a failure on any platform look as though it were expected in the testing chart. </li></ul><p> (Also posted to the boost list because I want to start a discussion about test markup there) </p> Dave Abrahams https://svn.boost.org/trac10/ticket/2258 https://svn.boost.org/trac10/ticket/2258 Report #2256: Function/signals needs ABI prefix and suffix headers Mon, 25 Aug 2008 18:22:34 GMT Mon, 25 Aug 2008 18:22:34 GMT <p> Both Boost.Function and Boost.Signals need to include the ABI prefix and suffix headers in the appropriate places, to cope with projects that use non-default alignments. </p> Douglas Gregor https://svn.boost.org/trac10/ticket/2256 https://svn.boost.org/trac10/ticket/2256 Report #2252: Doc or design problem Mon, 25 Aug 2008 07:25:37 GMT Mon, 25 Aug 2008 07:25:37 GMT <blockquote> <p> The library is designed to work well with other Boost libraries and uses well-accepted concepts introduced by Boost and TR1. </p> </blockquote> <blockquote> <p> Templates that encapsulate boolean or numeric properties define a static member constant called value. </p> </blockquote> <pre class="wiki">is_function_pointer&lt; bool(*)(int) &gt;::value // == true function_arity&lt; bool(*)(int) &gt;::value // == 1 </pre><p> The problem is that having a nested static member constant called value is neither necessary nor sufficient to work with MPL. The approach that makes it work the most smoothly would derive the template specialization from an <a href="http://www.boost.org/doc/libs/1_36_0/libs/mpl/doc/refmanual/integral-constant.html:">MPL Integral Constant</a>, but at <em>least</em> you need a nested <code>::type</code> member. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/2252 https://svn.boost.org/trac10/ticket/2252 Report #2249: MPL::switch_ not working and not documented Sat, 23 Aug 2008 15:43:11 GMT Tue, 30 Oct 2012 17:45:13 GMT <p> Seems the current swich_ implementations uses lambda&lt;&gt; where it shouldn't. Moreover, there is no documentation for switch_. </p> <p> Here's a link to a working code with added default_ and case_ meta-functions (for purely cosmetic feature, remove if uneeded). </p> <p> <a class="ext-link" href="http://codepad.org/OOZ7riiy"><span class="icon">​</span>http://codepad.org/OOZ7riiy</a> </p> <p> Here's a link to a sample usage. <a class="ext-link" href="http://codepad.org/Vho6k97u"><span class="icon">​</span>http://codepad.org/Vho6k97u</a> </p> Joel Falcou <joel.falcou@…> https://svn.boost.org/trac10/ticket/2249 https://svn.boost.org/trac10/ticket/2249 Report #2240: Move placeholders into the boost::placeholders namespace Thu, 21 Aug 2008 15:22:31 GMT Wed, 29 Jan 2014 16:41:46 GMT Peter Dimov https://svn.boost.org/trac10/ticket/2240 https://svn.boost.org/trac10/ticket/2240 Report #2232: Documentation build needs to detect missing prerequisites Wed, 20 Aug 2008 11:04:05 GMT Sun, 28 Apr 2013 14:11:49 GMT <p> Building documentation requires a lengthy tool chain to work correctly. </p> <p> The following tools have to be installed: </p> <blockquote> <p> libxml2, libxslt, doxygen, docbook-xml42, docbook-xsl, tetex (?), ghostscript </p> </blockquote> <p> user-config.jam needs to supply usings for: </p> <blockquote> <p> xsltproc, boostbook with docbook-xsl and docbook/4.2, doxygen, quickbook </p> </blockquote> <p> Experience has shown that (1) even very experienced Boost developers can have missing tool chain items, and (2) missing tool chain items are very difficult to diagnose and repair because the current bjam setup does not issue meaningful error messages, produces partial documentation, and gives the appearance of working. </p> <p> The requested fix is twofold: </p> <ul><li> Specific error messages should be issued if the tool chain is not complete. The messages should distinguish between tools not being installed and user-config.jam not having all the required entires. The error messages should name the specific missing tool or missing user-config.jam entry. </li></ul><ul><li> If one of the above errors is detected, the process should stop at that point. Currently partial documentation is built, and that can be very misleading and time-consuming. If the tool chain is wrong, nothing at all should be built. </li></ul> Beman Dawes https://svn.boost.org/trac10/ticket/2232 https://svn.boost.org/trac10/ticket/2232 Report #2215: Using of accumulators in paralled computation Mon, 18 Aug 2008 14:41:06 GMT Mon, 18 Aug 2008 14:41:06 GMT <p> In the time of multicore processors and Thread Building Blocks at hand, it would be nice to be able to use accumulators in parallel computations. </p> <p> To do so, one would need to combine partial computations. In other words,we need accumulator_set::combine(). This would combine the partial computation state from another accumulator_set. </p> <p> This operation would enable the accumulators to be used with parallel_reduce. </p> Pavol Droba https://svn.boost.org/trac10/ticket/2215 https://svn.boost.org/trac10/ticket/2215 Report #2179: add support for weak_ptr Sat, 09 Aug 2008 02:44:28 GMT Fri, 19 Apr 2013 06:03:05 GMT <p> Today shared_ptr works very well, but it makes it difficult for the C++ application to retain control over the lifetime of its objects. Variables in the interpreter which are hard to clear can prevent an object from being deleting. </p> <p> weak_ptr support would be the ideal solution. A application could hand out only weak_ptrs to Python. The object could then be deleted as normal. </p> <p> Attempting to use a weak_ptr in Python if the object has been released should throw. Python code which knows its objects might be deleted out from under it can catch this exception. </p> <p> See thread w/ Dave Abrahams titled "application exit and shared_ptr" in C++-sig. </p> pwinston@… https://svn.boost.org/trac10/ticket/2179 https://svn.boost.org/trac10/ticket/2179 Report #2150: Inspect needs to check for missing files Mon, 28 Jul 2008 14:51:59 GMT Thu, 03 Jan 2013 19:10:48 GMT <p> Objective: Report missing files early enough to take corrective action before a crisis develops. Include generated doc files in the lists searched for. </p> <p> Design: Top level "required_files.txt" points to "required_files.txt" in subdirectories. That way the root/required_files.txt only has to be edited when a library is added. </p> <p> See attached file for possible "required_files.txt" format. </p> Beman Dawes https://svn.boost.org/trac10/ticket/2150 https://svn.boost.org/trac10/ticket/2150 Report #2142: [fix in git] Patch for boost.python - return_pointee_value Wed, 23 Jul 2008 08:07:40 GMT Sat, 24 Oct 2009 04:57:21 GMT <p> The patch adds the return value policy return_pointee_value, which can be nicely used for functions that return pointers to non-exposed objects. I wrote documentation, the header and testcases.<br /> </p> <p> There are some issues: </p> <ul><li>The test cases are not integrated into the Jamfile in the tests-directory (I dont know bjam very well).<br /> </li><li>I dont know, wether the tests are OK the way they are done.<br /> </li><li>I did not add an #include directive to any boost-python header. But some header should include the &lt;boost/python/return_pointee_value.hpp&gt;, but I dont know which one. </li></ul> Maximilian Matthe <Maxi.Matthe@…> https://svn.boost.org/trac10/ticket/2142 https://svn.boost.org/trac10/ticket/2142 Report #2138: Windows test cases need to include \\?\ and \\.\ prefixes Tue, 22 Jul 2008 14:54:39 GMT Tue, 22 Jul 2008 15:01:35 GMT <p> See Naming a Volume docs, <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/aa365248(VS.85).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/aa365248(VS.85).aspx</a>, for information about <br />?\ prefixes. </p> <p> See <a class="missing wiki">CreateFile</a>() docs, <a class="ext-link" href="http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx"><span class="icon">​</span>http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx</a>, for information about <br />.\ prefixes. </p> Beman Dawes https://svn.boost.org/trac10/ticket/2138 https://svn.boost.org/trac10/ticket/2138 Report #2135: Biggest integral types for value-based template arguments Tue, 22 Jul 2008 05:22:52 GMT Tue, 22 Jul 2008 05:23:12 GMT <p> This is based on the post at &lt;<a class="ext-link" href="http://lists.boost.org/Archives/boost/2008/07/139965.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2008/07/139965.php</a>&gt;: </p> <p> The <code>boost::intmax_t</code> and <code>boost::uintmax_t</code> types in "[source:trunk/boost/boost/cstdint.hpp@32397 boost/cstdint.hpp]" alias the largest built-in signed and unsigned integer types. They should be the special 64-bit types, (<code>unsigned</code>) <code>long long</code> or<code> __int64</code>, on systems that support 64-bit registers (and no higher). However, the <code>BOOST_NO_INTEGRAL_INT64_T</code> preprocessor flag warns when these types are not suitable as integral constant expressions. Therefore, there needs to be types that indicate the largest integral types still suitable in integral constant expressions. </p> Daryle Walker https://svn.boost.org/trac10/ticket/2135 https://svn.boost.org/trac10/ticket/2135 Report #2129: iterator problem in ublas::basic_range (boost/numeric/ublas/storage.hpp) Sat, 19 Jul 2008 19:26:41 GMT Tue, 29 Jul 2008 20:06:07 GMT <p> Decrementing (--) a forward iterator through a basic_range containing negative values throws an error (bad_index). This seems inconsistent because it is possible to increment (++) through such a range without throwing error. </p> <p> lines 937 - 941 of boost/numeric/ublas/storage.hpp read </p> <pre class="wiki">const_iterator &amp;operator -- () { BOOST_UBLAS_CHECK (it_ &gt; 0, bad_index ()); -- it_; return *this; } </pre><p> Removing "BOOST_UBLAS_CHECK (it_ &gt; 0, bad_index ());" solves the problem. Similarly for the += and -= operators. </p> <p> The documentation makes no mention of the range needing to consist only of positive values and this seems a rather arbitrary restriction. </p> brian.tyler@… https://svn.boost.org/trac10/ticket/2129 https://svn.boost.org/trac10/ticket/2129 Report #2087: enable in-place construction of fusion container content Tue, 08 Jul 2008 11:16:27 GMT Tue, 08 Jul 2008 11:16:27 GMT <p> when a fusion container is initialized, the objects in the container are constructed and after that copied (using the copy constructor). an in-place initialization would allow to have a fusion container of non-copy-constructible types as the copy construction would not be necessary anymore. (fusion sequence of non-copy-constructible types are not currently supported.) using an in-place solution should also be more efficient. </p> oliver.mueller@… https://svn.boost.org/trac10/ticket/2087 https://svn.boost.org/trac10/ticket/2087 Report #2068: Better path comparison for common.mkdir Thu, 03 Jul 2008 22:10:49 GMT Sun, 10 Jan 2010 10:14:47 GMT <p> The problem is exposed by the accumulators doc build, which fails because bjam tries to create the same target directory twice, once with a relative path and once with an absolute path. bjam doesn't normalize the paths correctly and therefore fails to recognize that the targets are the same. The build fails on the second mkdir attempt because the target directory already exists. </p> <p> Jurko Gospodnetić tracked the problem down to the following: </p> <p> Ok, I managed to reproduce an equivalent problem using regular Windows bjam. To reproduce it use the following jamroot.jam file placed in a folder called UUU: </p> <pre class="wiki">import common ; install fff : jamroot.jam ; &lt;name&gt;file.1 ; install fff/ggg/.. : jamroot.jam : &lt;name&gt;file.2 ; install fff/ggg/../ggg/../../fff : jamroot.jam : &lt;name&gt;file.3 ; install ../UUU/fff : jamroot.jam : &lt;name&gt;file.4 ; </pre><p> Boost Build tries to battle this problem by normalizing any paths passed to it (i.e. shortcircuiting any . path elements except and any .. path elements except for the initial series), which makes cases 2 &amp; 3 above not conflict with case 1. However the path passed in case 4. is already normalized and does not get recognized as pointing to the same location as the one in case 1. Therefore the initial build fails, while any repeated builds work as expected. </p> <p> The problem could be solved by updating the bindtarget() function in Boost Jam's rules.c source file to find some sort of a 'unique' identifier for each of its targets. Any suggestions on what such an identifier might be? </p> <p> I guess we could attempt to root any non absolute paths from the current folder's absolute path and then normalize that. But is that enough? </p> <p> Should we be prepared to handle stuff like symbolic links? </p> <p> I have not researched this much before, but is there any 'standard solution' to such a problem that I am not aware of? </p> <p> Is there some portable 'file system object identifier' we can use in case the file system already exists? There are some other places in Boost Jam code (e.g. file_query() function in filent.c) that could benefit from such an identifier since they hash their results based on the parameter name and so may cache multiple result sets for the same file in some cases. If there is no portable identifier, then are there at least different identifiers on different systems? </p> <p> Note that this is not just a <a class="missing wiki">MkDir</a> problem. Any other target build could fail due to similar reasons. </p> Eric Niebler https://svn.boost.org/trac10/ticket/2068 https://svn.boost.org/trac10/ticket/2068 Report #2066: Inspect needs to review generated doc files too Thu, 03 Jul 2008 11:16:35 GMT Thu, 03 Jan 2013 19:11:23 GMT <p> Inspect needs to run on release snapshot so that it is looking at the generated doc files too. </p> <p> But it also needs to be modified so that if it is running on a snapshot (or other cases where svn info doesn't work), the revision number and URL are picked up from somewhere else. </p> <p> Maybe it would be easier to copy the files from the release snapshot into a release working copy so that inspect will work as it is not. </p> Beman Dawes https://svn.boost.org/trac10/ticket/2066 https://svn.boost.org/trac10/ticket/2066 Report #2041: MPL: more comprehensive test coverage for "fail" situations requiring diagnostics Mon, 23 Jun 2008 21:07:19 GMT Mon, 23 Jun 2008 21:07:36 GMT <p> See <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.user/36876"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.user/36876</a> </p> Aleksey Gurtovoy https://svn.boost.org/trac10/ticket/2041 https://svn.boost.org/trac10/ticket/2041 Report #2031: PDF version of MPL reference manual is out-of-date Sat, 21 Jun 2008 03:09:30 GMT Sat, 21 Jun 2008 03:09:30 GMT <p> The reference manual in PDF is out-of-sync with HTML docs (and .rst sources). It either needs to be regenerated or removed from the docs. </p> Aleksey Gurtovoy https://svn.boost.org/trac10/ticket/2031 https://svn.boost.org/trac10/ticket/2031 Report #2013: Support for homogeneous MPI builds in BBv2 Mon, 16 Jun 2008 19:43:41 GMT Thu, 16 Dec 2010 16:43:34 GMT <p> We need a BBv2 feature to determine whether to build the MPI library for homogeneous clusters or heterogeneous clusters. The default will be heterogeneous clusters, but we can provide some additional optimizations for homogeneous clusters. </p> Douglas Gregor https://svn.boost.org/trac10/ticket/2013 https://svn.boost.org/trac10/ticket/2013 Report #1979: More example hash functions Sun, 01 Jun 2008 10:17:27 GMT Sat, 21 Feb 2009 18:17:46 GMT Daniel James https://svn.boost.org/trac10/ticket/1979 https://svn.boost.org/trac10/ticket/1979 Report #1974: ambiguous call to ref in vector_of_vector.hpp when using bind.hpp Fri, 30 May 2008 14:13:00 GMT Sat, 17 Feb 2018 15:32:15 GMT <p> When bind.hpp and numeric/ublas/vector_of_vector.hpp are both included, instantiating and using a generalized_vector_of_vector causes an ambiguous call to the overloaded function 'boost::numeric::ublas::ref'. See attached code for a simple example and attached patch for the simple proposed fix. </p> Will Moss <wmoss@…> https://svn.boost.org/trac10/ticket/1974 https://svn.boost.org/trac10/ticket/1974 Report #1966: Need VC8 workaround Wed, 28 May 2008 16:29:06 GMT Sat, 30 May 2009 00:14:49 GMT <pre class="wiki">template &lt;class A0, class A1 = boost::parameter::void_&gt; struct sparse : sparse_impl&lt; typename sparse_signature::bind&lt;A0,A1&gt;::type &gt; { typedef sparse_impl&lt; typename sparse_signature::bind&lt;A0,A1&gt;::type &gt; base; BOOST_PARAMETER_CONSTRUCTOR( sparse, (base), tag, (required (nrows, (std::size_t)) ) (optional (nstored, (std::size_t)) ) ) // workarounds for VC8 bugs sparse(sparse const&amp; rhs) : sparse_impl((sparse_impl const&amp;)rhs) {} sparse&amp; operator=(sparse const&amp; rhs) { *(sparse_impl*)this = (sparse_impl const&amp;)rhs; return *this; } }; </pre><p> The problem is that the automatically-generated copy ctor and assignment essentially leave out the casts above, and get routed to the templated ctor in the base class. The question is, should we incorporate these fixes in BOOST_PARAMETER_CONSTRUCTOR? </p> Dave Abrahams https://svn.boost.org/trac10/ticket/1966 https://svn.boost.org/trac10/ticket/1966 Report #1949: suggestion for iterator library - templated constructors Mon, 26 May 2008 03:28:23 GMT Wed, 21 Nov 2012 19:41:16 GMT <p> This feature was implemented via derivation for "<a class="missing wiki">DataFlow</a>" iterators in the serialization library. It is described in a page in that library at libs\serialization\doc\dataflow.html </p> <p> I don't think that actually adding the feature would be a huge deal. But a good tutorial document on the utility of such a feature would take some effort. </p> <p> Robert Ramey </p> Robert Ramey https://svn.boost.org/trac10/ticket/1949 https://svn.boost.org/trac10/ticket/1949 Report #1948: shared_container_const_iterator to complement shared_container_iterator Mon, 26 May 2008 01:42:39 GMT Wed, 21 Nov 2012 19:40:30 GMT <p> A version of shared_container_iterator that can iterate over a const container might be useful. I was able to locally modify shared_container_iterator to work with a shared_ptr&lt;const Container&gt; without too much trouble. </p> Frank Mori Hess https://svn.boost.org/trac10/ticket/1948 https://svn.boost.org/trac10/ticket/1948 Report #1947: traversal access decoupling Sun, 25 May 2008 14:21:10 GMT Wed, 21 Nov 2012 22:38:25 GMT <p> In an attempt to use iterator_facade to implement a "Readable" and "Writeable" </p> <h2 class="section" id="SwapableRandomAccessiterator">"Swapable" "Random Access" iterator</h2> <p> I found that the expression: it[n] returns an object of type operator_brackets_proxy that is convert- ible to "reference" but not to "value_type". </p> <p> Consequently I can use </p> <p> value_type a; it[n] = a; </p> <p> but not a = it[n]; </p> <p> I am not sure of how to correctly solve this issue. Here is a pointer to a discussion on the list: </p> <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2008/05/137868.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2008/05/137868.php</a> </p> Roland Schwarz https://svn.boost.org/trac10/ticket/1947 https://svn.boost.org/trac10/ticket/1947 Report #1916: [mpl] MPL_HAS_XXX_TRAIT_DEF bug in MSVC71 Wed, 14 May 2008 10:24:32 GMT Wed, 14 May 2008 10:24:32 GMT <p> The MSVC71 implementation of MPL_HAS_XXX_TRAIT_DEF does not correctly support defining a trait of the same name even if that is enclosed within a different namespace. It seems to have something to do with the instantiation of the 'msvc71_sfinae_helper'. In the code below I do the following: </p> <div class="wiki-code"><div class="code"><pre><span class="k">namespace</span> <span class="n">one</span> <span class="p">{</span> <span class="n">BOOST_MPL_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">result_type</span><span class="p">)</span> <span class="n">BOOST_MPL_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">another_type</span><span class="p">)</span> <span class="p">}</span> <span class="k">namespace</span> <span class="n">two</span> <span class="p">{</span> <span class="n">BOOST_MPL_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">result_type</span><span class="p">)</span> <span class="p">}</span> </pre></div></div><p> Namespace two's <code>has_result_type</code> actually ends up testing for the presence of <code>another_type</code> rather than <code>result_type</code>. If the declarations in namespace one are reordered so that result_type trait is last, then the namespace two trait works as expected. </p> <p> I wrote a basic sfinae trait-check implementation myself which worked ok. Maybe something similar could be used for msvc71 in the mpl? </p> <p> If the following code is compiled with -DUSE_MPL_TRAIT_DEF then the mpl is used, otherwise my own implementation is used. </p> <div class="wiki-code"><div class="code"><pre> <span class="cp">#if USE_MPL_TRAIT_DEF</span> <span class="cp">#define SELECTIVE_HAS_XXX_TRAIT_DEF BOOST_MPL_HAS_XXX_TRAIT_DEF</span> <span class="cp">#include</span> <span class="cpf">&lt;boost/mpl/has_xxx.hpp&gt;</span><span class="cp"></span> <span class="cp">#else</span> <span class="cp">#define SELECTIVE_HAS_XXX_TRAIT_DEF MY_HAS_XXX_TRAIT_DEF</span> <span class="cp">#define MY_HAS_XXX_TRAIT_DEF( trait ) \</span> <span class="cp"> template &lt;class T&gt; \</span> <span class="cp"> struct has_##trait \</span> <span class="cp"> { \</span> <span class="cp"> template &lt;typename U&gt; \</span> <span class="cp"> static char test( U const volatile*, typename U::trait* = 0 ); \</span> <span class="cp"> static long test( ... ); \</span> <span class="cp"> \</span> <span class="cp"> static const bool value = sizeof test( static_cast&lt;T*&gt;(0) ) == sizeof(char); \</span> <span class="cp"> }; \</span> <span class="cp">#endif</span> <span class="k">namespace</span> <span class="n">one</span> <span class="p">{</span> <span class="n">SELECTIVE_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">result_type</span><span class="p">)</span> <span class="n">SELECTIVE_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">another_type</span><span class="p">)</span> <span class="p">}</span> <span class="k">namespace</span> <span class="n">two</span> <span class="p">{</span> <span class="c1">// This instantiation of msvc71_sfinae_helper in the msvc71</span> <span class="c1">// implementation has been seen before --- but its function is that</span> <span class="c1">// of the last trait def.</span> <span class="c1">// </span> <span class="c1">// This line has the effect of defining a &#39;has_result_type&#39; struct</span> <span class="c1">// that tests for &#39;another_type&#39; in msvc71.</span> <span class="c1">//</span> <span class="n">SELECTIVE_HAS_XXX_TRAIT_DEF</span><span class="p">(</span><span class="n">result_type</span><span class="p">)</span> <span class="p">}</span> <span class="k">template</span> <span class="o">&lt;</span><span class="kt">bool</span><span class="o">&gt;</span> <span class="k">struct</span> <span class="n">test</span><span class="p">;</span> <span class="k">template</span> <span class="o">&lt;&gt;</span> <span class="k">struct</span> <span class="n">test</span><span class="o">&lt;</span><span class="nb">true</span><span class="o">&gt;</span> <span class="p">{};</span> <span class="k">struct</span> <span class="n">X</span> <span class="p">{</span> <span class="k">typedef</span> <span class="kt">int</span> <span class="n">result_type</span><span class="p">;</span> <span class="k">typedef</span> <span class="kt">int</span> <span class="n">another_type</span><span class="p">;</span> <span class="p">};</span> <span class="k">struct</span> <span class="n">Y</span> <span class="p">{</span> <span class="k">typedef</span> <span class="kt">int</span> <span class="n">result_type</span><span class="p">;</span> <span class="p">};</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="n">test</span><span class="o">&lt;</span> <span class="n">one</span><span class="o">::</span><span class="n">has_another_type</span><span class="o">&lt;</span> <span class="n">X</span> <span class="o">&gt;::</span><span class="n">value</span> <span class="o">&gt;</span><span class="p">();</span> <span class="n">test</span><span class="o">&lt;</span> <span class="n">one</span><span class="o">::</span><span class="n">has_result_type</span><span class="o">&lt;</span> <span class="n">X</span> <span class="o">&gt;::</span><span class="n">value</span> <span class="o">&gt;</span><span class="p">();</span> <span class="c1">// this works but is actual testing for &#39;another_type&#39;!!!</span> <span class="n">test</span><span class="o">&lt;</span> <span class="n">two</span><span class="o">::</span><span class="n">has_result_type</span><span class="o">&lt;</span> <span class="n">X</span> <span class="o">&gt;::</span><span class="n">value</span> <span class="o">&gt;</span><span class="p">();</span> <span class="c1">// this fails as it doesn&#39;t have &#39;another_type&#39;</span> <span class="n">test</span><span class="o">&lt;</span> <span class="n">two</span><span class="o">::</span><span class="n">has_result_type</span><span class="o">&lt;</span> <span class="n">Y</span> <span class="o">&gt;::</span><span class="n">value</span> <span class="o">&gt;</span><span class="p">();</span> <span class="p">}</span> </pre></div></div> Adam Butcher <adam.butcher@…> https://svn.boost.org/trac10/ticket/1916 https://svn.boost.org/trac10/ticket/1916 Report #1915: Nested matrix products with transposes causes compiler to complain error: invalid application of ‘sizeof’ Wed, 14 May 2008 05:52:05 GMT Wed, 14 May 2008 21:56:28 GMT <p> When using ublas, a pair of nested products will cause the compiler to complain if there is a <code>trans</code> on any of the operands. For example: </p> <div class="wiki-code"><div class="code"><pre><span class="k">using</span> <span class="k">namespace</span> <span class="n">boost</span><span class="o">::</span><span class="n">numeric</span><span class="o">::</span><span class="n">ublas</span><span class="p">;</span> <span class="n">matrix</span><span class="o">&lt;</span><span class="kt">float</span><span class="o">&gt;</span> <span class="n">A</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="n">B</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="n">C</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">);</span> <span class="n">prod</span><span class="p">(</span><span class="n">prod</span><span class="p">(</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">),</span><span class="n">trans</span><span class="p">(</span><span class="n">C</span><span class="p">));</span> <span class="c1">// fails</span> <span class="n">prod</span><span class="p">(</span><span class="n">prod</span><span class="p">(</span><span class="n">trans</span><span class="p">(</span><span class="n">A</span><span class="p">),</span><span class="n">B</span><span class="p">),</span><span class="n">C</span><span class="p">);</span> <span class="c1">// fails</span> <span class="n">prod</span><span class="p">(</span><span class="n">prod</span><span class="p">(</span><span class="n">A</span><span class="p">,</span><span class="n">trans</span><span class="p">(</span><span class="n">B</span><span class="p">)),</span><span class="n">C</span><span class="p">);</span> <span class="c1">// fails</span> <span class="n">prod</span><span class="p">(</span><span class="n">prod</span><span class="p">(</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">),</span><span class="n">C</span><span class="p">);</span> <span class="c1">// OK</span> </pre></div></div><p> The compiler produces the following error message: </p> <pre class="wiki">/opt/local/include/boost/numeric/ublas/matrix_expression.hpp: In function ‘typename boost::numeric::ublas::matrix_matrix_binary_traits&lt;typename E1::value_type, E1, typename E2::value_type, E2&gt;::result_type boost::numeric::ublas::prod(const boost::numeric::ublas::matrix_expression&lt;E&gt;&amp;, const boost::numeric::ublas::matrix_expression&lt;E2&gt;&amp;) [with E1 = boost::numeric::ublas::matrix_matrix_binary&lt;boost::numeric::ublas::matrix&lt;float, boost::numeric::ublas::basic_row_major&lt;size_t, ptrdiff_t&gt;, boost::numeric::ublas::unbounded_array&lt;float, std::allocator&lt;float&gt; &gt; &gt;, boost::numeric::ublas::matrix&lt;float, boost::numeric::ublas::basic_row_major&lt;size_t, ptrdiff_t&gt;, boost::numeric::ublas::unbounded_array&lt;float, std::allocator&lt;float&gt; &gt; &gt;, boost::numeric::ublas::matrix_matrix_prod&lt;float, float, float&gt; &gt;, E2 = boost::numeric::ublas::matrix_unary2&lt;boost::numeric::ublas::matrix&lt;float, boost::numeric::ublas::basic_row_major&lt;size_t, ptrdiff_t&gt;, boost::numeric::ublas::unbounded_array&lt;float, std::allocator&lt;float&gt; &gt; &gt;, boost::numeric::ublas::scalar_identity&lt;float&gt; &gt;]’: bad_multiply.cpp:9: instantiated from here /opt/local/include/boost/numeric/ublas/matrix_expression.hpp:4815: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE&lt;false&gt;’ </pre> Leo Singer <aronnax@…> https://svn.boost.org/trac10/ticket/1915 https://svn.boost.org/trac10/ticket/1915 Report #1913: Null deleter for shared_ptr Mon, 12 May 2008 21:58:36 GMT Tue, 08 Mar 2011 13:25:32 GMT <p> As raised in this (<a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.user/35693"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.user/35693</a>) message on the boost-users mailing list, it would be very nice if the smart pointer library contained a null deleter object so it could be used for stack/static objects. To save the user having to define their own. </p> Kevin Martin <kev82@…> https://svn.boost.org/trac10/ticket/1913 https://svn.boost.org/trac10/ticket/1913 Report #1909: Documentation is out of sync Fri, 09 May 2008 07:55:33 GMT Mon, 07 Jun 2010 15:20:16 GMT <p> The page "Implementation" of the documentation still uses the deprecated way of defining and checking concepts: </p> <p> <a href="http://www.boost.org/doc/libs/1_35_0/libs/concept_check/implementation.htm">http://www.boost.org/doc/libs/1_35_0/libs/concept_check/implementation.htm</a> </p> <p> The rest of the pages seem to be up to date. </p> <p> Another small thing is that the "Prev" and "Next" links at the the bottom of the page "Using Concept Checks" are switched compared to the other pages. </p> <p> <a href="http://www.boost.org/doc/libs/1_35_0/libs/concept_check/using_concept_check.htm">http://www.boost.org/doc/libs/1_35_0/libs/concept_check/using_concept_check.htm</a> </p> Kimon.Hoffmann@… https://svn.boost.org/trac10/ticket/1909 https://svn.boost.org/trac10/ticket/1909 Report #1900: Missing documentation for mpl::print in the MPL library Wed, 07 May 2008 19:31:27 GMT Sun, 27 Nov 2011 18:46:09 GMT <p> The documentation for mpl::print is missing from the Boost reference documentation. </p> Edward Diener <eldiener@…> https://svn.boost.org/trac10/ticket/1900 https://svn.boost.org/trac10/ticket/1900 Report #1888: Why doesn't InputIterator require that reference is convertible to value_type? Thu, 01 May 2008 19:34:50 GMT Thu, 01 May 2008 21:09:47 GMT <p> Bug title says it all. boost::<a class="missing wiki">InputIterator</a> doesn't enforce any relationship between the reference and value_type associated types. Seems wrong to me, but perhaps there is a reason. </p> <p> It also doesn't check that the type of dereferencing an input iterator is reference. </p> Eric Niebler https://svn.boost.org/trac10/ticket/1888 https://svn.boost.org/trac10/ticket/1888 Report #1887: [doc] input_iterator_archetype is not a valid InputIterator Thu, 01 May 2008 19:02:56 GMT Tue, 20 Sep 2011 19:15:01 GMT <p> creating_concepts.htm shows an <a class="missing wiki">InputIterator</a> concept which requires that the type of *it++ is the same as the value_type. (This is legit according to the C++03 requirements table for input iterators, but probably too strict in practice.) Then, concept_covering.htm shows an input_iterator_archetype, which fails to meet this requirement because *it++ will return an object of type input_iterator_archetype::reference which is distinct from, but convertible to, the iterator's value_type. If you try to assert that input_iterator_archetype satisfies the <a class="missing wiki">InputIterator</a> concepts as both are presented in the docs, it will fail. </p> <p> This is only a documentation problem. As defined by the BCCL, input_iterator_archetype is a valid <a class="missing wiki">InputIterator</a>. </p> Eric Niebler https://svn.boost.org/trac10/ticket/1887 https://svn.boost.org/trac10/ticket/1887 Report #1836: bug in serializing wide character strings Thu, 17 Apr 2008 21:12:21 GMT Mon, 29 Nov 2010 20:32:54 GMT <p> We've discovered an issue Boost has writing and reading wide character strings (wchar_t* and std::wstrings) to non-wide character file streams (std::ifstream and std::ofstream). The issue stems from the fact that wide characters are written and read as a sequence of characters (in text_oarchive_impl.ipp and text_iarchive_impl.ipp, respectively). For text streams, an EOF character terminates the reading of a file on Windows. Some wide characters have EOF (value = 26 decimal) as one of the bytes so reading that byte causes early termination of the read. We have worked around the issue by deriving our own input and output archives from text_i|oarchive_impl&lt;Archive&gt; and overriding load_override() and save_override for std::wstring and wchar_t*. Our implementation just sequences through the wide characters and writes them 1 by 1 as wchar_t to the archive. This isn't very elegant and is even less readable in the file than the current implementation but does resolve the problem. </p> <p> Although the test test_simple_class does test wstrings, it only uses characters 'a'-'z' which does not expose this problem. </p> Jeff Faust <jeff@…> https://svn.boost.org/trac10/ticket/1836 https://svn.boost.org/trac10/ticket/1836 Report #1811: Help packaging by supporting DESTDIR Thu, 10 Apr 2008 23:36:48 GMT Fri, 13 Jul 2018 07:10:00 GMT <p> Usual practice for package builders is to invoke installation with </p> <pre class="wiki">DESTDIR=/tmp/package make install </pre><p> and then build package from the content of "/tmp/package" directory. When package is installed "/tmp/package/usr" becomes "/usr" </p> <p> Usually this is different than --prefix, because some component may need to reference another by using the full path. For example - in pkgconfig .pc files. If prefix is set to the temporarily location the component would try to reference on the wrong place, instead of the place where the needed component is installed. </p> <p> I was assured that boost doesn't have any such dependences, however for packager convenience it is relatively easy to make it follow the above convention. </p> <p> The attached patch adds "${DESTDIR}" into the generated Makefile, so when make is involved normally , DESTDIR would be empty and files would be generated using the PREFIX where they are going to reside. On installation if it is not empty, it would place the files in the directory requested by the package builder. </p> iive https://svn.boost.org/trac10/ticket/1811 https://svn.boost.org/trac10/ticket/1811 Report #1808: Trim middle Thu, 10 Apr 2008 12:55:28 GMT Wed, 29 Feb 2012 23:53:14 GMT <p> Could you add a function to trim 'internal' whitespace? I think two functions would be handy, one for single-line data and one for multi-line data. The single-line one would replace all internal whitespace by a single space character. The multi-line one would replace multiple empty lines by a single empty line and remove trailing whitespace from each line. </p> Olaf van der Spek https://svn.boost.org/trac10/ticket/1808 https://svn.boost.org/trac10/ticket/1808 Report #1802: Add autodetection of Expat and MPI in configure Wed, 09 Apr 2008 17:04:00 GMT Tue, 10 Nov 2009 07:43:20 GMT <p> The configure script in Boost already autodetects the presence and versions of Python and ICU, but the paths for Expat and the user's MPI implementation must be provided by hand. It would be useful if the script found those and added them to user-config.jam automatically. </p> jewillco@… https://svn.boost.org/trac10/ticket/1802 https://svn.boost.org/trac10/ticket/1802 Report #1798: met an error using boost::tokenizer in multi-times in vs2005, unicode Wed, 09 Apr 2008 08:12:28 GMT Wed, 09 Apr 2008 08:12:28 GMT <p> test function: </p> <p> const CHAR* tnotifymsg = “HTTP/1.1 Host: 176.177.193.111 Content-Length: 110 Date : ...... </p> <p> &lt;?xml version="1.0"?&gt; &lt;Encodeing&gt; </p> <blockquote> <p> &lt;Body cls="auto" obj="10001"&gt; </p> <blockquote> <p> &lt;ID&gt;19&lt;/ID&gt; </p> </blockquote> </blockquote> <p> &lt;/ Encodeing &gt;”; </p> <p> CHAR* pSeparator = " ,;\n\r"; </p> <blockquote> <p> int nErrorcode = 0; </p> </blockquote> <blockquote> <p> boost::char_separator&lt;CHAR&gt; sep(pSeparator); std::string strNotifymsg = tnotifymsg; boost::tokenizer&lt;boost::char_separator&lt;CHAR&gt;&gt; tokens(strNotifymsg, sep); </p> </blockquote> <blockquote> <p> boost::tokenizer&lt;boost::char_separator&lt;CHAR&gt;&gt;::iterator itBegin = tokens.begin(); </p> </blockquote> <blockquote> <p> boost::tokenizer&lt;boost::char_separator&lt;CHAR&gt;&gt;::iterator itEnd = tokens.end(); </p> </blockquote> <blockquote> <p> boost::tokenizer&lt;boost::char_separator&lt;CHAR&gt;&gt;::iterator beg = itBegin; </p> </blockquote> <blockquote> <p> <em> error code if "HTTP/1.1" at the beginning of notify message if(_stricmp((*beg).c_str(), "HTTP/1.1") == 0) { </em></p> <blockquote> <p> using boost::lexical_cast; ++beg; nErrorcode = lexical_cast&lt;int&gt;(*beg); </p> </blockquote> </blockquote> <blockquote> <blockquote> <p> return nErrorcode; </p> </blockquote> <p> } else{ </p> </blockquote> <blockquote> <blockquote> <p> <em> else the right message for parser for(; !bFinishFlag; ++beg) { </em></p> <blockquote> <p> ; </p> </blockquote> </blockquote> </blockquote> <p> } </p> <blockquote> <p> } </p> </blockquote> wingo <wangtonggu@…> https://svn.boost.org/trac10/ticket/1798 https://svn.boost.org/trac10/ticket/1798 Report #1726: boost/date_time/posix_time/time_formatters.hpp incorrectly formats fractional seconds using global locale Fri, 28 Mar 2008 22:51:42 GMT Fri, 28 Mar 2008 22:51:42 GMT <p> The function boost::posix_time::to_iso_string_type() uses the ostream::operator&lt;&lt;() function to write the time. This later function will use the current global locale to format each of the elements of the time. In particular, when the global locale is set to en_US, the fractional will be formatted to be 123,456 when there are six digits, which is incorrect. </p> <p> The proposed solution is to temporarily imbue the ostream with the classic locale to disable formatting. The attached patch only applies this to the fractional seconds but it would be more robust to apply to the other time components as well. </p> <p> This type of error probably exists in other functions. In particular see Ticket <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/1674" title="#1674: Bugs: date_time::date_formatting.hpp: incorrectly formats year using global ... (closed: fixed)">#1674</a> which is the same error. </p> jplejacq@… https://svn.boost.org/trac10/ticket/1726 https://svn.boost.org/trac10/ticket/1726 Report #1702: serialization for Mersenne twister Thu, 20 Mar 2008 22:48:22 GMT Thu, 07 Apr 2011 15:49:48 GMT <p> Based on email by Neal Becker from 2007-12-17, quoting: </p> <p> This is an improved patch for mt serialization, using the serialization collection stuff </p> Pavel Vozenilek https://svn.boost.org/trac10/ticket/1702 https://svn.boost.org/trac10/ticket/1702 Report #1670: wave almost unusably slow on real-world input Tue, 04 Mar 2008 16:31:40 GMT Thu, 20 Nov 2008 21:25:01 GMT <p> I'm running a wave-based preprocessor on boost/python.hpp as part of document generation (Synopsis). The preprocessing alone takes &gt;6 hours ! (The subsequent parsing with Synopsis' own C++ parser is then relatively quick, surprisingly. </p> <p> I notice that wave seems to get increasingly slow, so I wonder whether the speed decrease is caused by some internal lookup on a growing dictionary (map) that has super-linear lookup time ? </p> Stefan Seefeld https://svn.boost.org/trac10/ticket/1670 https://svn.boost.org/trac10/ticket/1670 Report #1656: Consider implementing flush() for symmetric filters Wed, 27 Feb 2008 03:32:19 GMT Fri, 13 Jul 2018 17:33:45 GMT Jonathan Turkanis https://svn.boost.org/trac10/ticket/1656 https://svn.boost.org/trac10/ticket/1656 Report #1649: Fix definition of JavaScript menu to avoid long chains of functions Wed, 20 Feb 2008 00:14:39 GMT Wed, 20 Feb 2008 00:14:39 GMT <p> See problem raised here: <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/171201"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.devel/171201</a>. </p> <p> This was fixed for the platform in question by breaking the menu definition into chunks, but the chunks should be made even smaller in case other platforms have lower limits on the size of function chains </p> Jonathan Turkanis https://svn.boost.org/trac10/ticket/1649 https://svn.boost.org/trac10/ticket/1649 Report #1633: Make pipelines first class devices, so they can be passed to copy Tue, 12 Feb 2008 19:26:21 GMT Sun, 19 Apr 2009 19:18:42 GMT <p> See thread starting with <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.user/33255"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.user/33255</a> </p> Jonathan Turkanis https://svn.boost.org/trac10/ticket/1633 https://svn.boost.org/trac10/ticket/1633 Report #1632: Default Interval rounding policies incomplete Mon, 11 Feb 2008 03:42:41 GMT Sat, 24 May 2008 16:15:02 GMT <p> Report originates at <a class="ext-link" href="http://bugs.debian.org/440178"><span class="icon">​</span>http://bugs.debian.org/440178</a> </p> <p> The rounding policy requirements (<a class="ext-link" href="http://boost.org/libs/numeric/interval/doc/rounding.htm"><span class="icon">​</span>http://boost.org/libs/numeric/interval/doc/rounding.htm</a>) list e.g. tan_down(), but none of the implementations in rounded_arith.hpp implement it. </p> <p> The result is that this code fails to compile: </p> <pre class="wiki">#include &lt;boost/numeric/interval.hpp&gt; int main( int ac, char* av[] ) { boost::numeric::interval&lt;double&gt; I(0.1, 0.2); I = tan(I); return 0; } </pre> Steven Robbins <smr@…> https://svn.boost.org/trac10/ticket/1632 https://svn.boost.org/trac10/ticket/1632 Report #1574: operator<< for boost::posix_time::ptime ignores ostream flags Wed, 16 Jan 2008 17:15:54 GMT Thu, 24 Oct 2013 11:10:51 GMT <p> Consider the following: </p> <pre class="wiki">boost::posix_time::ptime a; cout &lt;&lt; "one " &lt;&lt; 1 &lt;&lt; endl; cout.clear(ios::failbit); cout &lt;&lt; "two " &lt;&lt; 2 &lt;&lt; endl; cout &lt;&lt; "time " &lt;&lt; a &lt;&lt; endl; cout &lt;&lt; "three" &lt;&lt; 3 &lt;&lt; endl; cout.clear(ios::goodbit); cout &lt;&lt; "four " &lt;&lt; 4 &lt;&lt; endl; </pre><p> Since cout should not produce output when ios::failbit is set, one would expect the output to be: </p> <pre class="wiki">one 1 four 4 </pre><p> However, the output is: </p> <pre class="wiki">one 1 not-a-date-timefour 4 </pre> adam@… https://svn.boost.org/trac10/ticket/1574 https://svn.boost.org/trac10/ticket/1574 Report #1560: Performance testing with boost::test Mon, 07 Jan 2008 22:06:36 GMT Wed, 23 Jan 2008 09:00:20 GMT <p> I have been trying to use boost::test to do some performance testing. </p> <p> With the following macros: </p> <pre class="wiki">// The basic idea of "test" is to call the function to be timed many // times (say up to 1000), throw away the slowest 10% of those times, // and average the rest. Why? &lt;shrug&gt; shoot-from-the-hip "theory" and // experience that its return is fairly consistent to 2, maybe 3 // digits. The test function has a "time out" feature where it quits if // the accumulated measured time grows beyond 1 second (which may not be // appropriate for all tests). But it is easy to get bored when you // unexpectedly find yourself waiting 30 minutes for timing result, so // that's why it's there. Otoh, I put in a minimum repetition of at // least 10, no matter how long the measured time is, so you get at // least some accuracy (tweak knobs as you like). Note that the // accumulation/averaging happens in double, even though the data and // answer are float (just paranoia really). Weakness: If you're timing // something that is quicker than the minimum resolution of your timer, // this doesn't work. But otherwise, this is better than the // traditional loop inside the timer as it throws away those results // that happen to get interrupted by your email checker running. :-) #include &lt;numeric&gt; #include &lt;boost\timer.hpp&gt; template &lt;class F&gt; double time_tests(F f) // f is a function that returns its execution time { std::vector&lt;double&gt; t; // Store time of 10 executions of f unsigned int i; for (i = 0; i &lt; 10; ++i) t.push_back(f()); double total_time = std::accumulate(t.begin(), t.end(), 0.0); // Keep running until at least 1s of results are available, or 1000 executions while (i &lt; 1000 &amp;&amp; total_time &lt; 1.0) { t.push_back(f()); total_time += t.back(); ++i; } std::sort(t.begin(), t.end()); t.resize(t.size() * 9 / 10); return std::accumulate(t.begin(), t.end(), 0.0) / t.size(); } #define TIMED_TEST_CASE( test_name ) \ double \ time_test_##test_name() \ { \ boost::timer t; \ { \ test_name##_impl(); \ } \ return t.elapsed(); \ } #define TIMED_AUTO_TEST_CASE( test_name ) \ void \ test_name##_impl(); \ \ TIMED_TEST_CASE( test_name ) \ \ BOOST_AUTO_TEST_CASE( test_name ) \ { \ double execution_time = time_test_##test_name(); \ boost::unit_test::unit_test_log.set_threshold_level( boost::unit_test::log_messages ); \ BOOST_TEST_MESSAGE(BOOST_TEST_STRINGIZE( test_name ).trim( "\"" ) &lt;&lt; " execution time: " &lt;&lt; execution_time &lt;&lt; "s"); \ BOOST_CHECK( true ); \ } \ \ inline void test_name##_impl() </pre><p> I can define tests such as </p> <pre class="wiki"> // Boost.Test //#define BOOST_AUTO_TEST_MAIN // #include &lt;boost/test/unit_test.hpp&gt; #define BOOST_TEST_MODULE allTests #include &lt;boost/test/unit_test.hpp&gt; #include "time_test.h" #include &lt;vector&gt; #define BaseT float BOOST_AUTO_TEST_SUITE(vectors); TIMED_AUTO_TEST_CASE( vector_test ) { unsigned int const v1_dim = 6; unsigned int const v2_dim = 4; unsigned int const v3_dim = 65535; std::vector&lt;BaseT&gt; v1(v1_dim, 1.0); std::vector&lt; std::vector&lt;BaseT&gt; &gt; v2(v2_dim, v1); std::vector&lt; std::vector&lt; std::vector&lt;BaseT&gt; &gt; &gt; v3(v3_dim, v2); } TIMED_AUTO_TEST_CASE( test2 ) { BOOST_CHECK( true ); } TIMED_AUTO_TEST_CASE( test3 ) { for (int i=0; i&lt;10000; i++) { BOOST_CHECK( true ); } } BOOST_AUTO_TEST_SUITE_END(); </pre><p> This works, but is not particularly elegant. Is there a better solution (eg, involving defining a class that inherits from one of the existing ones)? </p> John Pavel <jrp@…> https://svn.boost.org/trac10/ticket/1560 https://svn.boost.org/trac10/ticket/1560 Report #1558: Optional separate compilation Sun, 06 Jan 2008 18:41:53 GMT Sat, 21 Feb 2009 18:17:31 GMT <p> There are some parts of Boost.Unordered that could be compiled into a library file. Provide an option to do this. </p> Daniel James https://svn.boost.org/trac10/ticket/1558 https://svn.boost.org/trac10/ticket/1558 Report #1549: Boost.MPL: 'index_of' algorithm is not documented Fri, 04 Jan 2008 02:24:33 GMT Fri, 04 Jan 2008 02:24:52 GMT Aleksey Gurtovoy https://svn.boost.org/trac10/ticket/1549 https://svn.boost.org/trac10/ticket/1549 Report #1499: xxx is not a member of 'boost::signals::detail::named_slot_map_iterator Mon, 03 Dec 2007 18:52:05 GMT Fri, 08 Aug 2014 04:09:15 GMT <p> Compiling boost with msvc-9.0 I get errors such as </p> <pre class="wiki">.\boost/iterator/iterator_facade.hpp(529) : error C2039: 'decrement' : is not a member of 'boost::signals::detail::named_slot_map_iterator' </pre><p> and </p> <pre class="wiki"> .\boost/iterator/iterator_facade.hpp(547) : error C2039: 'advance' : is not a member of 'boost::signals::detail::named_slot_map_iterator' </pre> jrp at dial dot pipex dot com https://svn.boost.org/trac10/ticket/1499 https://svn.boost.org/trac10/ticket/1499 Report #1497: Ruling needed on tracker usage Mon, 03 Dec 2007 14:54:44 GMT Mon, 29 Nov 2010 15:24:28 GMT <p> I know my concerns of <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/167139/focus=167657"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/167139/focus=167657</a> were not universally well-received, and Beman was silent on the issue. Beman, I really think the release manager for 1.35 needs to definitively demonstrate support for, or opposition to, this approach. I think you know my opinion: if we don't institute these practices now, our new tracking system will be just as ineffective as the last one was. </p> <p> I will be happy to write documentation if necessary. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/1497 https://svn.boost.org/trac10/ticket/1497 Report #1487: Update the writing documentation instructions Fri, 30 Nov 2007 20:01:35 GMT Mon, 07 Jun 2010 22:40:00 GMT <p> The documentation (<a href="http://www.boost.org/more/writingdoc/structure.html">http://www.boost.org/more/writingdoc/structure.html</a>) needs to updated and probably should be moved to the new site. </p> Daniel James https://svn.boost.org/trac10/ticket/1487 https://svn.boost.org/trac10/ticket/1487 Report #1485: Add ability to have some blocks before doc-info. Fri, 30 Nov 2007 06:34:22 GMT Wed, 09 Apr 2014 01:57:54 GMT <p> Now that templates are reasonably functional, it would be nice to allow including and defining them even before one gets to a doc-info. It might be useful to use other blocks before the doc-info. So change the syntax so that one can at minimum place "include", "template", and comments before doc-info. </p> René Rivera https://svn.boost.org/trac10/ticket/1485 https://svn.boost.org/trac10/ticket/1485 Report #1482: boost::python::throw_error_already_set should be marked noreturn Thu, 29 Nov 2007 19:34:10 GMT Tue, 11 Dec 2007 14:20:12 GMT <p> boost::python::throw_error_already_set should be marked noreturn, so that gcc doesn't complain when functions call it at the end and then don't return. </p> <p> Thanks! Geoffrey </p> irving@… https://svn.boost.org/trac10/ticket/1482 https://svn.boost.org/trac10/ticket/1482 Report #1479: Document litre tool. Sun, 25 Nov 2007 17:04:39 GMT Tue, 08 Nov 2011 15:47:06 GMT <p> Add documentation, and copyrights, for the code at tools/litre. Could use a general cleanup into build/src/doc/example structure. </p> René Rivera https://svn.boost.org/trac10/ticket/1479 https://svn.boost.org/trac10/ticket/1479 Report #1469: [mpl] nested typedef of set has two different meanings Thu, 22 Nov 2007 13:25:20 GMT Thu, 22 Nov 2007 13:25:20 GMT <p> This problem was diagnosed by Steve Watanabe after my posting on the developer list (see <a class="ext-link" href="http://thread.gmane.org/gmane.comp.lib.boost.devel/168339/focus=168366"><span class="icon">​</span>http://thread.gmane.org/gmane.comp.lib.boost.devel/168339/focus=168366</a>) </p> <p> Basically the following doesn't compile: </p> <pre class="wiki">#include &lt;boost/mpl/set.hpp&gt; #include &lt;boost/mpl/vector.hpp&gt; #include &lt;boost/mpl/copy.hpp&gt; #include &lt;boost/mpl/insert.hpp&gt; #include &lt;boost/mpl/inserter.hpp&gt; using namespace boost::mpl; template&lt; typename T &gt; &gt; struct as_set : copy&lt; T , inserter&lt; set&lt;&gt; , insert&lt; _1, _2 &gt; &gt; &gt; {}; typedef set&lt;int,char&gt; a_set; typedef vector&lt;int,int,char&gt; a_vector; typedef as_set&lt; a_set &gt;::type set_as_set; typedef as_set&lt; a_vector &gt;::type vector_as_set; typedef next&lt; begin&lt; a_set &gt;::type &gt;::type THIS_IS_OK; typedef next&lt; next&lt; begin&lt; a_set &gt;::type &gt;::type &gt;::type THIS_IS_OK_AS_WELL; typedef next&lt; begin&lt; a_vector &gt;::type &gt;::type THIS_IS_OK_TOO; typedef next&lt; begin&lt; set_as_set &gt;::type &gt;::type THIS_WORKS_TOO; typedef next&lt; next&lt; begin&lt; set_as_set &gt;::type &gt;::type &gt;::type THIS_FAILS; typedef next&lt; next&lt; begin&lt; vector_as_set &gt;::type &gt;::type &gt;::type THIS_FAILS_TOO; </pre><p> Steve Watanabe diagnosed this to be a problem of mpl::set using the nested typedef 'type' for two different purposes: one as an alias of the set&lt;&gt;, the other refering to the item type. The result is that upon iteration the termination condition isn't recognized and the iterator blows up </p> sven.vanechelpoel@… https://svn.boost.org/trac10/ticket/1469 https://svn.boost.org/trac10/ticket/1469 Report #1460: Python classes with multiple bases are convertible only to the first class in the lists (even if super(classname, self).__init__() is called) Sun, 18 Nov 2007 13:42:37 GMT Wed, 02 May 2018 13:22:42 GMT <p> first reported here: <a class="ext-link" href="http://mail.python.org/pipermail/c++-sig/2007-October/012926.html"><span class="icon">​</span>http://mail.python.org/pipermail/c++-sig/2007-October/012926.html</a> </p> <pre class="wiki">C++: #include &lt;boost/python.hpp&gt; namespace bp = boost::python; struct A { }; struct B { }; void test_A(const A &amp;) { } void test_B(const B &amp;) { } BOOST_PYTHON_MODULE(multiple_inheritance) { bp::def("test_A", &amp;test_A); bp::def("test_B", &amp;test_B); bp::class_&lt;A&gt;("A", bp::init&lt;&gt;()); bp::class_&lt;B&gt;("B", bp::init&lt;&gt;()); } Python: class C(A, B): pass test_A(C()) test_B(C()) And I get: Traceback (most recent call last): File "./multiple_inheritance.py", line 10, in &lt;module&gt; test_B(C()) Boost.Python.ArgumentError: Python argument types in multiple_inheritance.test_B(C) did not match C++ signature: test_B(B) </pre><p> I will try to figure it out once I am done with the exceptions. </p> Piotr Jaroszyński <p.jaroszynski@…> https://svn.boost.org/trac10/ticket/1460 https://svn.boost.org/trac10/ticket/1460 Report #1404: Unordered Fusion Map constructors. Fri, 02 Nov 2007 06:10:55 GMT Thu, 28 May 2009 17:48:33 GMT <p> Currenty, when constructing Fusion Maps, the order of type arguments used as template parameters need to be followed in the constructor as well. </p> <p> Example: </p> <pre class="wiki"> struct tags { struct type_1 { }; struct type_2 { }; }; using namespace boost::fusion ; typedef map&lt; pair&lt;tags::type_1, int&gt;, pair&lt;tags::type_2, int&gt; &gt; my_map_type ; { // following line will not compile, because of the argument ordering my_map_type instance( make_pair&lt;tags::type_2&gt;(2), make_pair&lt;tags::type_1&gt;(1) ); // following line will compile, because the argument order is the same as // the order of elements in the fusion map specialization my_map_type instace_works( make_pair&lt;tags::type_1&gt;(1), make_pair&lt;tags::type_2&gt;(2) ); } </pre><p> The feature request is to support arbitrary ordering of constructor arguments, not necessarily to follow the order of argument types as prescribed in the template arguments to the fusion map. </p> Dean Michael Berris <mikhailberis@…> https://svn.boost.org/trac10/ticket/1404 https://svn.boost.org/trac10/ticket/1404 Report #1396: wrong result_of invocation around transform_view Wed, 31 Oct 2007 22:49:37 GMT Thu, 29 Nov 2007 03:15:42 GMT <p> See the following snippet. For some reason, <code>boost::result_of&lt; ::identity(int) &gt;</code> is invoked in <code>as_vector</code>, which means that the argument is rvalue. It should be <code>boost::result_of&lt; ::identity(int &amp;) &gt;</code>. </p> <pre class="wiki">#include &lt;boost/fusion/include/as_vector.hpp&gt; #include &lt;boost/fusion/include/transform_view.hpp&gt; #include &lt;boost/fusion/include/vector.hpp&gt; struct identity { template&lt;class FunCall&gt; struct result; template&lt;class Fun&gt; struct result&lt;Fun(int&amp;)&gt; { typedef int&amp; type; }; int&amp; operator()(int&amp; i) const { return i; } }; int main() { typedef boost::fusion::vector&lt;int, int&gt; from_t; from_t from; boost::fusion::transform_view&lt;from_t, ::identity&gt; v(from, ::identity()); boost::fusion::as_vector(v); // doesn't compile. } </pre> Shunsuke Sogame <pstade.mb@…> https://svn.boost.org/trac10/ticket/1396 https://svn.boost.org/trac10/ticket/1396 Report #1393: library binaries should be buildable by name from the top level Wed, 31 Oct 2007 16:18:52 GMT Sat, 29 Aug 2009 08:00:45 GMT <p> <a class="ext-link" href="http://article.gmane.org/gmane.comp.lib.boost.devel/166925"><span class="icon">​</span>http://article.gmane.org/gmane.comp.lib.boost.devel/166925</a> </p> Dave Abrahams https://svn.boost.org/trac10/ticket/1393 https://svn.boost.org/trac10/ticket/1393 Report #1387: Review / update docs to reflect changes Tue, 30 Oct 2007 16:29:58 GMT Fri, 27 Jun 2008 00:18:54 GMT <p> There are at <em>least</em> changes in the equivalent C++ for <code>BOOST_PARAMETER_KEYWORD(tag,name)</code>. However, there may well be other changes that need to be documented. </p> <p> Daniel, If you can think of any, please add them to this ticket or create a ticket of your own. </p> Dave Abrahams https://svn.boost.org/trac10/ticket/1387 https://svn.boost.org/trac10/ticket/1387 Report #1338: g++ warnings and incomplete header inclusions Sun, 21 Oct 2007 12:31:56 GMT Sun, 19 Apr 2009 19:17:25 GMT <p> Hi, </p> <p> as reported in <a class="ext-link" href="http://lists.boost.org/Archives/boost/2007/10/128948.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2007/10/128948.php</a> g++ reports various minor issues processing header files of numeric in current trunk. Please fix it! </p> jensseidel@… https://svn.boost.org/trac10/ticket/1338 https://svn.boost.org/trac10/ticket/1338 Report #1326: Unable to check graph isomorphism using LEDA adapter Thu, 18 Oct 2007 11:08:58 GMT Wed, 04 Jan 2012 23:41:20 GMT <p> I tried to use isomorphism() algorithm with LEDA graphs and encountered several compilation issues: </p> <ol><li>"leda::" namespace is not used in LEDA 4.3.1, therefore declaration "leda::GRAPH&lt;vtype,etype&gt;" might be wrong. </li></ol><ol start="2"><li><a class="missing wiki">EdgeListGraph</a> concept must be supported by a graph in order to use it by the isomorphism() algorithm. For me it's unclear why this interface is not implemented in LEDA adapter. Generally, it is possible to iterate through edges in LEDA graphs. Moreover, <a class="missing wiki">EdgeListGraph</a> interface implementation may look very similar to <a class="missing wiki">VertexListGraph</a> one. </li></ol><ol start="3"><li>All LEDA adapter iterators publicly inherit from iterator_facade&lt; Derived, Value, <a class="missing wiki">CategoryOrTraversal</a>, Reference, Difference &gt; </li></ol><p> but const pointers to Value are incorrectly passed as the last argument (i.e. Difference) while ptrdiff_t is expected. It causes wrong instantiation of count() and count_if() algorithms used by isomorphism() one. </p> <p> I would like to present my fixes of these problems in LEDA adapter for review. Thanks! </p> iouri.smirnov@… https://svn.boost.org/trac10/ticket/1326 https://svn.boost.org/trac10/ticket/1326 Report #1315: iterator_adaptor does not work with incomplete Value types Thu, 11 Oct 2007 12:05:46 GMT Thu, 22 Nov 2012 15:52:09 GMT <p> boost::iterator_adaptor doesn't work when the associated Value type is incomplete, at least in MSVC++ 8.0 (my hunch is that the problem is general). The following </p> <pre class="wiki">#include &lt;boost/iterator/iterator_adaptor.hpp&gt; template&lt;typename T&gt; struct my_iterator: boost::iterator_adaptor&lt;my_iterator&lt;T&gt;,T*&gt; { }; struct foo { my_iterator&lt;foo&gt; it; }; int main(){} </pre><p> results in: </p> <pre class="wiki">...\boost\type_traits\is_pod.hpp(34) : error C2139: 'foo' : an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_pod' ...\sandbox.cpp(10) : see declaration of 'foo' ...\type_traits\is_pod.hpp(128) : see reference to class template instantiation 'boost::detail::is_pod_impl&lt;T&gt;' being compiled [...] ...\boost\iterator\iterator_facade.hpp(652) : see reference to class templateinstantiation 'boost::detail::operator_brackets_result&lt;Iterator,Value,Reference&gt;' being compiled with [ Iterator=my_iterator&lt;foo&gt;, Value=foo, Reference=foo &amp; ] [...] </pre><p> Although this is probably not a bug strictly speaking, it would be fine if iterator_adaptor could be made to work with incomplete Value types, just as the canonical model for iterators, Value*, does. </p> Joaquín M López Muñoz https://svn.boost.org/trac10/ticket/1315 https://svn.boost.org/trac10/ticket/1315 Report #1303: Per-target resource limits. Sun, 07 Oct 2007 18:52:16 GMT Tue, 16 Oct 2012 07:14:53 GMT <p> The -lN options is a nice addition, but it's a rather blunt tool. Martin is wanting a system where one can limit the resources used by individual actions. Currently he does something like it on Linux with the use of a launcher script. It would be good to provide that functionality in a portable manner in bjam. Tasks would be: </p> <ul><li>RLIMIT_CPU, RLIMIT_DATA, etc. target variables. </li><li>Change current time limit code to check the RLIMIT_CPU target var and using that instead of the -lN value. </li><li>Implement other limits as possible. </li></ul> René Rivera https://svn.boost.org/trac10/ticket/1303 https://svn.boost.org/trac10/ticket/1303 Report #1288: Quickbook article info needs expansion to include more bibliographic info Thu, 27 Sep 2007 11:13:20 GMT Wed, 09 Apr 2014 02:19:17 GMT <p> Quickbook article info needs expansion to include more bibliographic info </p> <p> [@ <a class="ext-link" href="http://www.oasis-open.org/docbook/documentation/reference/html/biblioset.html"><span class="icon">​</span>http://www.oasis-open.org/docbook/documentation/reference/html/biblioset.html</a> Docbook Bibliographic info] </p> <p> It is unclear which items are to appear on the front page (and indeed I think there is a bug in that this </p> <p> [article Math Toolkit </p> <blockquote> <p> [quickbook 1.4] [copyright 2006-2007 John Maddock, Paul A. Bristow, Hubert Holin and Xiaogang Zhang] [purpose ISBN 0-9504833-2-X 978-0-9504833-2-0] [license </p> <blockquote> <p> Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@<a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>]) </p> </blockquote> <p> ] [authors [Maddock, John], [Bristow, Paul A.], [Holin, Hubert], [Zhang, Xiaogang]] [category math] [purpose mathematics] <a href="https://svn.boost.org/trac10/last-revision">$Date: 2007-09-24 11:12:19 +0100 (Mon, 24 Sep 2007) $</a> </p> </blockquote> <p> ] </p> <p> Note the TWO [purpose...] blocks. </p> <p> produces this XML </p> <blockquote> <p> &lt;articlepurpose&gt;mathematics&lt;/articlepurpose&gt; &lt;articlecategory name="category:math" /&gt; &lt;/articleinfo&gt; &lt;title&gt;Math Toolkit&lt;/title&gt; &lt;para&gt;ISBN 0-9504833-2-X 978-0-9504833-2-0&lt;/para&gt; </p> </blockquote> <p> Actually this would be best as &lt;isbn&gt; - but of course it needs to be printed. </p> <p> This needs my needs to show an ISBN on the front page for now, but is a kludge! </p> Paul A. Bristow https://svn.boost.org/trac10/ticket/1288 https://svn.boost.org/trac10/ticket/1288 Report #1279: Make sure multiple #import of a file imports the file only once. Mon, 24 Sep 2007 06:37:48 GMT Sun, 29 Sep 2013 11:21:32 GMT Joel de Guzman https://svn.boost.org/trac10/ticket/1279 https://svn.boost.org/trac10/ticket/1279 Report #1264: Add option to specify qbk file to use. Thu, 13 Sep 2007 23:49:27 GMT Sun, 28 Oct 2007 15:02:03 GMT <p> Need to add an option to let users specify the backend qbk file to use in generation (which would be found in the search path). This brings up the question of how to supply the default boostbook backend. In particular, if we want to keep the simple distribution of a single executable, the need to embed the default backend into the code. </p> René Rivera https://svn.boost.org/trac10/ticket/1264 https://svn.boost.org/trac10/ticket/1264 Report #1251: Implement RSS backend for Quickbook. Wed, 12 Sep 2007 20:25:11 GMT Sun, 28 Oct 2007 22:43:39 GMT <p> Implement backend for Quickbook that generates RSS feed files. This is to have the Boost website news items edited in the easier Quickbook, and have them be automatically generated for inclusion in the website. </p> René Rivera https://svn.boost.org/trac10/ticket/1251 https://svn.boost.org/trac10/ticket/1251 Report #1236: email addresses of bug submitters should be obfuscated on publicly visible Trac pages Sat, 08 Sep 2007 18:34:17 GMT Mon, 09 Jan 2017 13:34:58 GMT <p> If you ask bug submitters on Trac to use a valid email address you should not make these addresses publicly visible or at least obfuscate them such that naive email spiders overlook them. </p> Stephan Tolksdorf <andorxor (at) gmx (dot) de> https://svn.boost.org/trac10/ticket/1236 https://svn.boost.org/trac10/ticket/1236 Report #1227: Original/Signed/Unsigned Integer Variant Selection Templates Sun, 02 Sep 2007 20:06:24 GMT Sun, 13 Jul 2008 21:59:21 GMT <p> Add new integer selection templates to "boost/integer.hpp" for </p> <ul><li> The underlying type for a given integral type. This could be called <code>underlying</code> and would map <ul><li> <code>char</code> to whichever of {<code>signed char</code>, <code>unsigned char</code>} that shares the same values (section 3.9.1, paragraph 1 of the 2003 C++ standard) </li><li> <code>wchar_t</code> to its underlying type (paragraph 5 of the same part of the standard) </li><li> any other type to itself (This includes <code>bool</code> because it could be implemented distinctly from any other integral type.) </li><li> (Someday: extend this to find the underlying type of an enumeration) </li></ul></li><li> Find the unsigned equivalent of a given signed integral type, like the <code>get_unsigned</code> examples at source:/tags/Version_1_34_1/boost/boost/typeof/int_encoding.hpp and source:/tags/Version_1_34_1/boost/boost/wave/util/flex_string.hpp </li><li> Find the signed equivalent of a given unsigned integral type, as a dual to the previous point (for both templates, non-matching types return themselves) </li></ul> Daryle Walker https://svn.boost.org/trac10/ticket/1227 https://svn.boost.org/trac10/ticket/1227 Report #1215: Boost 1.34.1, mpl: Wrong workaround detection using MinGW32 (or.hpp, line #33) Sun, 26 Aug 2007 15:31:24 GMT Mon, 25 Jan 2010 01:20:08 GMT <p> #if defined(_MSC_VER) is not the right thing for MinGW because _MSC_VER is defined but the compiler is still from GNUs Compiler Collection. But i am not sure about the MinGW support in general. </p> <p> Regard, Hans. </p> hfp@… https://svn.boost.org/trac10/ticket/1215 https://svn.boost.org/trac10/ticket/1215 Report #1207: Method "from_julian_day_number" (class gregorian_calendar) not documented Thu, 23 Aug 2007 10:19:03 GMT Sun, 01 Jul 2012 17:53:56 GMT <p> please could you put the method gregorian_calendar::from_julian_day_number() in the documentation ? library: date_time </p> <p> thanks </p> <p> gizmo </p> thom_schu@… https://svn.boost.org/trac10/ticket/1207 https://svn.boost.org/trac10/ticket/1207 Report #1206: Document escaping from within code. Thu, 23 Aug 2007 00:04:33 GMT Wed, 09 Apr 2014 02:18:11 GMT <p> John: </p> <p> Just another data point: escaping to <a class="missing wiki">BoostBook</a> from within code doesn't work unless the escape is inside a macro: </p> <p> template &lt;class T&gt; struct function_traits { </p> <blockquote> <p> static const std::size_t arity = <span class="underline">below; typedef </span>below result_type; typedef <span class="underline">below <strong>arg&lt;replaceable&gt;N&lt;/replaceable&gt;_type</strong>; </span></p> </blockquote> <p> }; </p> <p> Does *not* process the escape, whereas: </p> <p> [def <span class="underline">argN <strong>arg&lt;replaceable&gt;N&lt;/replaceable&gt;_type</strong>] template &lt;class T&gt; struct function_traits { </span></p> <blockquote> <p> static const std::size_t arity = <span class="underline">below; typedef </span>below result_type; typedef <span class="underline">below </span>argN; </p> </blockquote> <p> }; </p> <p> Does process the escape. Took me a while to figure this out </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1206 https://svn.boost.org/trac10/ticket/1206 Report #1204: Non-breaking-space? Wed, 22 Aug 2007 23:44:18 GMT Wed, 09 Apr 2014 02:19:00 GMT <p> Joel: </p> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <blockquote class="citation"> <p> I think we should take advantage of macros as much as possible before considering any syntax addition. nbsp can definitely be a macro, FWIW, e.g.: </p> <blockquote> <p> <code>[def _nbsp_ ['''&amp;nbsp;''']]</code> </p> </blockquote> </blockquote> </blockquote> </blockquote> </blockquote> <p> Rene: </p> <blockquote class="citation"> <blockquote class="citation"> <p> Won't that break in most situations? Specifically because it won't have spaces around it to differentiate it from the context: </p> <blockquote> <p> <code>[^-f_nbsp_/Jambase/]</code> </p> </blockquote> </blockquote> </blockquote> <p> Dave: </p> <p> At my urging, docutils ended up with a "breaking non-space". That is, if you escape a regular space it just separates docutils tokens with no other significance. Thus: </p> <blockquote> <p> <code>[^-f\ _nbsp_\ /Jambase/]</code> </p> </blockquote> Joel de Guzman https://svn.boost.org/trac10/ticket/1204 https://svn.boost.org/trac10/ticket/1204 Report #1203: Decouple the backend Wed, 22 Aug 2007 23:40:19 GMT Sat, 26 Aug 2017 15:51:04 GMT <p> See <a class="ext-link" href="http://tinyurl.com/2xsa2c"><span class="icon">​</span>http://tinyurl.com/2xsa2c</a> </p> <p> Basically, the first step is to reduce the c++ code and convert as many markups as possible to (quickbook) templates, leaving only a few intrinsics. Rene (Rivera) is working on this right now. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1203 https://svn.boost.org/trac10/ticket/1203 Report #1201: Regexify the syntax highlighter Wed, 22 Aug 2007 23:27:56 GMT Sun, 26 Aug 2007 09:37:26 GMT <p> What I'd really want is to Regex-ify the syntax highlighter and have them reconfigurable as user-supplied regex strings from configuration files. This would simplify our life a lot. There'll be only one syntax highlighter grammar and code that can accept various lexer files. Our job then is just to churn out various lexer files for different languages. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1201 https://svn.boost.org/trac10/ticket/1201 Report #1200: Revamp the header information Wed, 22 Aug 2007 23:24:24 GMT Wed, 09 Apr 2014 02:28:04 GMT <p> (see this thread for context: <a class="ext-link" href="http://tinyurl.com/2b9ywv"><span class="icon">​</span>http://tinyurl.com/2b9ywv</a>) </p> <p> Allow a couple of the (header) items there to be *overridden* in included files. Example: </p> <ul><li>copyright (a) or (b) </li><li>authors (a) or (b) </li><li>license (a) or (b) </li><li>last-revision (a), if it's more recent than current value </li></ul><p> where: </p> <p> a) Merge with the current value. b) Use new value only for current file/doc. </p> <p> I took out all the ones you have as (c) -- Ignore the new value. I also took out source-mode since this can already be overridden. </p> <p> So, these overrides can be placed anywhere. Example: </p> <p> main.qbk </p> <blockquote> <p> [library foo </p> <blockquote> <p> [quickbook 1.4] [version 1.4] [copyright 2006 Joe Bloke] [authors [Bloke, Joe]] [purpose Whatever...] [license </p> <blockquote> <p> Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@<a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>]) </p> </blockquote> <p> ] [last-revision $Date: 2006/09/16 09:21:08 $] </p> </blockquote> <p> ] </p> </blockquote> <p> include.qbk </p> <blockquote> <p> [license </p> <blockquote> <p> Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at [@<a href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>]) </p> </blockquote> <p> ] </p> </blockquote> <blockquote> <p> [last-revision $Date: 2006/09/16 09:21:08 $] </p> </blockquote> <p> John (M): </p> <p> I like the way this is going, but I would actually prune the list of overrides a little more: </p> <p> [last-revision...] </p> <p> Definitely needed, as per my original post :-) </p> <p> [quickbook....] </p> <p> Also needed so that individual includes can start using new features without having to go through and fix errors in the whole doc. </p> <p> [version...] </p> <p> Not sure about this one, shouldn't a library have a single version number? </p> <p> [copywrite...][authors...] </p> <p> These would be useful to have: especially for "meta-libraries" like Boost.Math which has many sub-components by different authors. </p> <p> The ideal world senario - probably not possible (!) - would be to merge all the author names onto the main front page, but for sections just to include the authors who worked on that section. Does that make sence? </p> <p> [purpose...] </p> <p> Isn't this used just once on the main page, or maybe the index of libraries? I don't see any great advantage to having more than one such block. </p> <p> [license...] </p> <p> Given that everything should be under the same license (as far as Boost is concerned anyway), having more than one such block just complicates things. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1200 https://svn.boost.org/trac10/ticket/1200 Report #1190: Markups inside simple markups Mon, 20 Aug 2007 07:36:19 GMT Sat, 10 Jul 2010 15:29:23 GMT <p> Stjepan Rajko wrote: </p> <blockquote class="citation"> <p> On 7/29/07, Joel de Guzman &lt;joel@…&gt; wrote: </p> <blockquote class="citation"> <p> Stjepan Rajko wrote: </p> <blockquote class="citation"> <p> If I have a template <a class="missing wiki">ProducerConcept</a> and I write: </p> <p> ['[<a class="missing wiki">ProducerConcept</a>]] </p> <p> the template gets expanded and written in italics, but if I write: </p> <p> /[<a class="missing wiki">ProducerConcept</a>]/ </p> <p> I get [<a class="missing wiki">ProducerConcept</a>] in italics, i.e. the template does not get expanded. Is this intended? Seems a bit weird. </p> </blockquote> <p> This is documented: </p> </blockquote> <p> Doh! Yep, right there it is... sorry for the noise. </p> <blockquote class="citation"> <p> I know a way to relax these limitations, but it will involve some complexity. I am not sure yet if the added complexity is worth it. </p> </blockquote> <p> I don't see it as necessary. I was just confused, due to having missed the relevant parts of the docs. </p> </blockquote> <p> Don't brush it off just yet. There's the principle of "least surprise". If this behavior is surprising, regardless if it is documented or not, then it must be reconsidered. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1190 https://svn.boost.org/trac10/ticket/1190 Report #1181: [boost.python] can modify enum value Tue, 14 Aug 2007 08:17:12 GMT Sun, 11 Oct 2009 00:27:51 GMT <p> I use boost 1.34.0, python 2.5.1 User can modify the enum value, But enum should be a const value(read only). </p> <div class="wiki-code"><div class="code"><pre><span class="k">enum</span> <span class="n">my_enum</span><span class="p">{</span><span class="n">my_value</span><span class="p">};</span> <span class="k">struct</span> <span class="n">my_s</span><span class="p">{</span> <span class="k">enum</span><span class="p">{</span> <span class="n">my_value2</span> <span class="p">};};</span> <span class="kt">void</span> <span class="n">my_export</span> <span class="p">{</span> <span class="n">enum_</span><span class="o">&lt;</span> <span class="n">my_enum</span> <span class="o">&gt;</span><span class="p">(</span><span class="s">&quot;my_enum&quot;</span><span class="p">)</span> <span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="s">&quot;my_value&quot;</span><span class="p">,</span> <span class="n">my_value</span><span class="p">);</span> <span class="n">scope</span><span class="o">*</span> <span class="n">my_s_scope</span> <span class="o">=</span> <span class="k">new</span> <span class="n">scope</span><span class="p">(</span><span class="n">class_</span><span class="o">&lt;</span> <span class="n">my_s</span><span class="o">&gt;</span><span class="p">(</span><span class="s">&quot;my_s&quot;</span><span class="p">,</span> <span class="n">init</span><span class="o">&lt;</span> <span class="o">&gt;</span><span class="p">()));</span> <span class="n">scope</span><span class="p">().</span><span class="n">attr</span><span class="p">(</span><span class="s">&quot;my_value2&quot;</span><span class="p">)</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">my_value2</span><span class="p">;</span> <span class="k">delete</span> <span class="n">my_s_scope</span><span class="p">;</span> <span class="p">}</span> </pre></div></div><div class="wiki-code"><div class="code"><pre><span class="c1">#in python</span> <span class="n">module</span><span class="o">.</span><span class="n">my_enum</span><span class="o">.</span><span class="n">my_value</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">print</span> <span class="n">module</span><span class="o">.</span><span class="n">my_enum</span><span class="o">.</span><span class="n">my_value</span> <span class="n">module</span><span class="o">.</span><span class="n">my_s</span><span class="o">.</span><span class="n">my_value2</span> <span class="o">=</span> <span class="mi">2</span> <span class="k">print</span> <span class="n">module</span><span class="o">.</span><span class="n">my_s</span><span class="o">.</span><span class="n">my_value2</span> <span class="c1"># we can modify the const value.</span> <span class="c1"># output </span> <span class="c1"># 1</span> <span class="c1"># 2</span> </pre></div></div> qiaozhiqiang@… https://svn.boost.org/trac10/ticket/1181 https://svn.boost.org/trac10/ticket/1181 Report #1180: [boost.python] def_readwrite need a default docstring Tue, 14 Aug 2007 07:52:16 GMT Sun, 01 Nov 2009 20:00:28 GMT <p> the default docstring defined by def_readwrite is null, can boost.python add the type name of my_s::a as the default docstring? like the function's "C++ signature" docstring. </p> <div class="wiki-code"><div class="code"><pre><span class="k">struct</span> <span class="n">my_s</span> <span class="p">{</span> <span class="kt">int</span> <span class="n">a</span><span class="p">;</span> <span class="p">};</span> <span class="kt">void</span> <span class="n">export_module</span> <span class="p">{</span> <span class="n">class_</span><span class="o">&lt;</span><span class="n">my_s</span> <span class="o">&gt;</span> <span class="n">s_class</span><span class="p">(</span><span class="s">&quot;my_s&quot;</span><span class="p">,</span> <span class="n">init</span><span class="o">&lt;</span> <span class="o">&gt;</span><span class="p">());</span> <span class="n">s_class</span><span class="p">.</span><span class="n">def_readwrite</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">my_s</span><span class="o">::</span><span class="n">a</span><span class="p">);</span><span class="c1">// __doc__ is empty, can boost.python add the type name of my_s::a as the default docstring? like the function&#39;s &quot;C++ signature&quot; docstring.</span> <span class="p">}</span> <span class="c1">// I do this like this:</span> <span class="c1">// get type name of data member of class </span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="p">,</span> <span class="k">typename</span> <span class="n">C</span><span class="o">&gt;</span> <span class="kt">char</span> <span class="k">const</span><span class="o">*</span> <span class="n">MemberTypeName</span><span class="p">(</span><span class="n">T</span> <span class="n">C</span><span class="o">::*</span><span class="p">)</span> <span class="p">{</span> <span class="kt">char</span> <span class="k">const</span><span class="o">*</span> <span class="n">name</span> <span class="o">=</span> <span class="k">typeid</span><span class="p">(</span><span class="n">T</span><span class="p">).</span><span class="n">name</span><span class="p">();</span> <span class="k">return</span> <span class="n">name</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// boost::python def_readwrite no docstring</span> <span class="c1">// read write property</span> <span class="cp">#define DEF_READWRITE(n, p) \</span> <span class="cp"> def_readwrite((n), (p), std::string(&quot;read write property, type is &quot;) + MemberTypeName(p)).c_str())</span> <span class="kt">void</span> <span class="n">export_module</span> <span class="p">{</span> <span class="n">class_</span><span class="o">&lt;</span><span class="n">my_s</span> <span class="o">&gt;</span> <span class="n">s_class</span><span class="p">(</span><span class="s">&quot;my_s&quot;</span><span class="p">,</span> <span class="n">init</span><span class="o">&lt;</span> <span class="o">&gt;</span><span class="p">());</span> <span class="n">s_class</span><span class="p">.</span><span class="n">DEF_READWRITE</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">my_s</span><span class="o">::</span><span class="n">a</span><span class="p">);</span><span class="c1">// replace all auto genarated def_readwrite to DEF_READWRITE.</span> <span class="p">}</span> </pre></div></div> qiaozhiqiang@… https://svn.boost.org/trac10/ticket/1180 https://svn.boost.org/trac10/ticket/1180 Report #1178: Regular expression min match length Tue, 14 Aug 2007 07:36:05 GMT Fri, 08 May 2009 11:07:57 GMT <p> From the mailing list: </p> <p> I need to calculate, given a regular expression, the min length for a match. For example if I have as regexp <sup>HTTP.*, 4 is the min length required for a match. </sup></p> anonymous https://svn.boost.org/trac10/ticket/1178 https://svn.boost.org/trac10/ticket/1178 Report #1175: Document quickbook's (lack of) unicode support. Mon, 13 Aug 2007 11:23:21 GMT Sat, 06 Jun 2009 13:47:40 GMT <p> See <a class="ext-link" href="http://tinyurl.com/35j57v"><span class="icon">​</span>http://tinyurl.com/35j57v</a> </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1175 https://svn.boost.org/trac10/ticket/1175 Report #1172: non-utf Mon, 13 Aug 2007 11:16:08 GMT Wed, 09 Apr 2014 02:17:50 GMT <p> Rene Rivera: i was converting some word and html docs today and noticed that i was pasting in non-ascii (and non-utf) into my qbk files. which quickbook would faithfully copy into the resulting boostbook. this would cause xsltproc to choke with an error. not sure if anything can be done. just thought you'd like to know. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1172 https://svn.boost.org/trac10/ticket/1172 Report #1159: bibliography support Fri, 10 Aug 2007 07:21:32 GMT Wed, 09 Apr 2014 01:58:13 GMT <p> All (especially documenters), </p> <p> I seem to be rewriting much of the Boost.Graph documentation as I slowly translate it into quickbook format, and augment it with concepts from my SoC project. However, I've run into a "small-ish" missing feature in quickbook that I might need to do the job correctly: bibliography support. Boost.Graph has a (growing) bibliography of about 60 different references. </p> <p> What I would like to be able to do is something like this... </p> <p> # somewhere in graph.qbk [include bibliography.qbk] </p> <p> The bibliography should contains a set of structured records that define bibliographic entries that we can cite in then documentation proper. It would probably be worthwhile to support a number of different entry types. </p> <p> # book references [bibbook </p> <blockquote> <p> [authors [Aho, A.V.] [Hopcroft J.E.] [Ullman J.D.]] [title Data Structures and Algorithms] [year 1983] [publisher Addison-Wesley] </p> </blockquote> <p> ] </p> <p> # journal articles [bibarticle </p> <blockquote> <p> # ... [journal [title Software - Practice and Experience] [volume 25] </p> </blockquote> <p> [issue 8]] </p> <blockquote> <p> [year 1995] [date Aug] [pages 863-889] </p> </blockquote> <p> ] </p> <p> # conference proceedings [bibproceedings </p> <blockquote> <p> # ... [conference 23rd International Conference on Software Maintenance] [location Paris, France] [year 2007] [date Oct 2-5] </p> </blockquote> <p> ] </p> <p> There are probably others to support (i.e., theses and dissertations). Citations should be easy since they're basically just links. A citation might look something like: </p> <p> [bibref aho_1983_data_structures_and_algorithms] </p> <p> This could generate something like: </p> <p> [&lt;a href="...#..."&gt;Aho'1983&lt;/a&gt;] </p> <p> Although there are a number of different represent references. They could simply be numbers. </p> <p> Does this sound like something that might be useful for quickbook? I was thinking about trying to write it myself, but I'm a little busy between SoC and my narrowing down a dissertation topic. I still might give it a shot, but I don't really know anything about the back-end formatting. </p> <p> Thoughts? Comments? </p> <p> Andrew Sutton asutton@… </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1159 https://svn.boost.org/trac10/ticket/1159 Report #1158: optional named parameters Fri, 10 Aug 2007 07:16:54 GMT Wed, 09 Apr 2014 01:58:37 GMT <p> Can templates notation be extended to use optional named parameters (onp). I am thinking in: </p> <p> Template definition: </p> <p> [template tname [a b c] </p> <blockquote> <p> [onp_1 default_1] [onp_2 default_2] </p> </blockquote> <p> This is the template body... use unamed forced parameters: [a] use onp parameters: [onp_1] (This prints the value or the default) [onp_1? if was used do this : if not do this ] </p> <p> ] </p> <p> IMO this is a good extension and is backward compatible with the current implementation. </p> Joel de Guzman https://svn.boost.org/trac10/ticket/1158 https://svn.boost.org/trac10/ticket/1158 Report #1136: Let BOOST_CHECK_EQUAL support std::wstring Fri, 03 Aug 2007 05:22:59 GMT Fri, 03 Jan 2014 07:58:12 GMT <p> e.g. </p> <pre class="wiki">std::wstring s1,s2; BOOST_CHECK_EQUAL(s1, s2); </pre> pop.atry@… https://svn.boost.org/trac10/ticket/1136 https://svn.boost.org/trac10/ticket/1136 Report #1125: parse_config_file should be mentioned in the How To Sat, 28 Jul 2007 08:58:45 GMT Wed, 01 Feb 2012 02:30:28 GMT <p> Hi, </p> <blockquote class="citation"> <p> po::store(po::parse_config_file(is, desc), vm); </p> </blockquote> <p> The very useful parse_config_file function should be mentioned in the How To and in the examples. </p> Olaf van der Spek <OlafvdSpek@…> https://svn.boost.org/trac10/ticket/1125 https://svn.boost.org/trac10/ticket/1125 Report #1107: Add weak_use_count to weak_ptr as a debugging aid Sat, 21 Jul 2007 23:20:18 GMT Thu, 24 Feb 2011 22:11:09 GMT <p> <a class="ext-link" href="http://lists.boost.org/Archives/boost/2006/03/102620.php"><span class="icon">​</span>http://lists.boost.org/Archives/boost/2006/03/102620.php</a> </p> <blockquote> <p> This is a feature request to add weak_use_count() to weak_ptr. </p> </blockquote> <blockquote> <p> I am not interested in this feature for anything else than a debugging aid. Recently, a weakness was highlighted in one of my projects, I had stale weak_ptr objects that would remain in core even if all copies of weak and shared pointer objects should have been eliminated by now. </p> </blockquote> <blockquote> <p> To confirm the bug fix and audit the rest of the code base, a debugger was used to set a conditional break point on internal members of weak_ptr. I would rather have the ability to write assertions when needed hence weak_use_count(). </p> </blockquote> Peter Dimov https://svn.boost.org/trac10/ticket/1107 https://svn.boost.org/trac10/ticket/1107 Report #1094: Finding the correct library to link (feature request for pkg-config support)h Mon, 16 Jul 2007 17:41:27 GMT Wed, 06 Jun 2018 12:34:57 GMT <p> This bug report is a feature request for the addition of pkg-config support to Boost, in order to provide a simple, reliable, platform-independent mechanism for discovering if the Boost libraries are installed, what they are called, where they are installed, and how to link with them. This is currently not possible to achieve. A detailed rationale and an example for how to implement this follow. </p> <p> I make use of several Boost libraries in my schroot program (<a class="ext-link" href="svn://svn.debian.org/svn/buildd-tools/trunk/schroot"><span class="icon">​</span>svn://svn.debian.org/svn/buildd-tools/trunk/schroot</a>). </p> <p> This project, like many, utilises GNU Autoconf and Automake for its build system. I need to determine how to link with the Boost libraries in order to build the programs in the project. This is an issue for many projects which want to link with a Boost library. Note that calling bjam is not a possibility here; it may not be installed, and most projects are not using bjam, especially if boost is just one of many libraries being used. </p> <p> To illustrate my problem: </p> <blockquote> <p> ls -l /usr/lib/libboost_regex-*.so /usr/lib/libboost_program_options-*.so </p> </blockquote> <p> lrwxrwxrwx 1 root root 45 2007-07-08 11:48 /usr/lib/libboost_program_options-gcc41-1_34.so -&gt; libboost_program_options-gcc41-1_34.so.1.34.0 lrwxrwxrwx 1 root root 48 2007-07-08 11:48 /usr/lib/libboost_program_options-gcc41-mt-1_34.so -&gt; libboost_program_options-gcc41-mt-1_34.so.1.34.0 lrwxrwxrwx 1 root root 41 2007-07-08 11:48 /usr/lib/libboost_program_options-mt.so -&gt; libboost_program_options-gcc41-mt-1_34.so lrwxrwxrwx 1 root root 38 2007-07-08 11:48 /usr/lib/libboost_program_options-st.so -&gt; libboost_program_options-gcc41-1_34.so lrwxrwxrwx 1 root root 35 2007-07-08 11:47 /usr/lib/libboost_regex-gcc41-1_34.so -&gt; libboost_regex-gcc41-1_34.so.1.34.0 lrwxrwxrwx 1 root root 38 2007-07-08 11:47 /usr/lib/libboost_regex-gcc41-mt-1_34.so -&gt; libboost_regex-gcc41-mt-1_34.so.1.34.0 lrwxrwxrwx 1 root root 31 2007-07-08 11:47 /usr/lib/libboost_regex-mt.so -&gt; libboost_regex-gcc41-mt-1_34.so lrwxrwxrwx 1 root root 28 2007-07-08 11:47 /usr/lib/libboost_regex-st.so -&gt; libboost_regex-gcc41-1_34.so </p> <p> Unlike every other library on my system, the Boost libraries have the compiler (gcc41) and threading model (mt|st) and so on embedded *in the library name*. This makes it impossible to discover in an automatic fashion. Since my project is free software anyone can download and build, I don't know what the compiler/toolchain will be, let alone what abbreviation Boost has chosen for it. I expect that Autoconf will set up such things appropriately; my code is relatively compiler-agnostic, but I can't predict the Boost library names without help. </p> <p> The only means I have are the libboost_program_options-mt.so, libboost_program_options-st.so (and so on for all the libraries) symbolic links which the Debian maintainer has helpfully provided. However, these are not portable, and are so not a good solution. They are, however, the only available solution at the moment. </p> <p> To further show the problem I am having, this is part of my configure.ac Autoconf template: </p> <p> ---configure.ac---- AC_CHECK_HEADERS([tr1/memory]) </p> <p> AC_CHECK_HEADERS([boost/shared_ptr.hpp]<sub> [ </sub></p> <blockquote> <p> if test $ac_cv_header_tr1_memory = yes; then </p> <blockquote> <p> : </p> </blockquote> <p> else </p> <blockquote> <p> AC_MSG_ERROR([Boost.shared_ptr (Boost C++ Libraries) is not installed, but is required by schroot]) </p> </blockquote> <p> fi]) </p> </blockquote> <p> AC_CHECK_HEADERS([tr1/tuple]) </p> <p> AC_CHECK_HEADERS([boost/tuple/tuple.hpp]<sub> [ </sub></p> <blockquote> <p> if test $ac_cv_header_tr1_memory = yes; then </p> <blockquote> <p> : </p> </blockquote> <p> else </p> <blockquote> <p> AC_MSG_ERROR([Boost.Tuple (Boost C++ Libraries) is not installed, but is required by schroot]) </p> </blockquote> <p> fi]) </p> </blockquote> <p> AC_CHECK_HEADERS([boost/format.hpp]<sub> [AC_MSG_ERROR([Boost.Format (Boost C++ Libraries) is not installed, but is required by schroot])]) AC_CHECK_HEADERS([boost/program_options.hpp]</sub> [AC_MSG_ERROR([Boost.Program_options (Boost C++ Libraries) is not installed, but is required by schroot])]) AC_CHECK_HEADERS([boost/type_traits.hpp]<sub> [AC_MSG_ERROR([Boost.<a class="missing wiki">TypeTraits</a> (Boost C++ Libraries) is not installed, but is required by schroot])]) </sub></p> <p> AC_MSG_CHECKING([for boost::program_options::variables_map in -lboost_program_options-st]) saved_ldflags="${LDFLAGS}" LDFLAGS="${LDFLAGS} -lboost_program_options-st" AC_LINK_IFELSE([AC_LANG_PROGRAM(<a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/1094#include" title="#1094: Feature Requests: Finding the correct library to link (feature request for pkg-config ... (assigned)">&lt;boost/program_options.hpp&gt;</a>, </p> <blockquote> <p> [boost::program_options::variables_map::variables_map dummy()])], </p> </blockquote> <blockquote> <p> [AC_MSG_RESULT([yes]) </p> <blockquote> <p> BOOST_LIBS="${BOOST_LIBS} -lboost_program_options-st"], </p> </blockquote> <p> [AC_MSG_RESULT([no]) </p> <blockquote> <p> AC_MSG_FAILURE([libboost_program_options (Boost C++ Libraries) is not installed, but is required by schroot])]) </p> </blockquote> </blockquote> <p> LDFLAGS="${saved_ldflags}" </p> <p> AC_MSG_CHECKING([for boost::program_options::options_description::options() in -lboost_program_options-st]) saved_ldflags="${LDFLAGS}" LDFLAGS="${LDFLAGS} -lboost_program_options-st" AC_LINK_IFELSE([AC_LANG_PROGRAM(<a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/1094#include" title="#1094: Feature Requests: Finding the correct library to link (feature request for pkg-config ... (assigned)">&lt;boost/program_options.hpp&gt;</a>, </p> <blockquote> <p> [boost::program_options::options_description testgrp("test group"); </p> <blockquote> <p> bool notused = testgrp.options().empty(); </p> </blockquote> </blockquote> <p> ])], </p> <blockquote> <p> [AC_MSG_RESULT([yes]) </p> <blockquote> <p> BOOST_PROGRAM_OPTIONS_DESCRIPTION_METHODS="current"], </p> </blockquote> <p> [AC_MSG_RESULT([no]) </p> <blockquote> <p> BOOST_PROGRAM_OPTIONS_DESCRIPTION_METHODS="old"]) </p> </blockquote> </blockquote> <p> LDFLAGS="${saved_ldflags}" AH_TEMPLATE(BOOST_PROGRAM_OPTIONS_DESCRIPTION_OLD, [Set if boost::program_options::options_description::options() is not available]) if test "$BOOST_PROGRAM_OPTIONS_DESCRIPTION_METHODS" = "old"; then </p> <blockquote> <p> AC_DEFINE(BOOST_PROGRAM_OPTIONS_DESCRIPTION_OLD, 1) </p> </blockquote> <p> fi </p> <p> AC_MSG_CHECKING([for boost::regex in -lboost_regex-st]) saved_ldflags="${LDFLAGS}" LDFLAGS="${LDFLAGS} -lboost_regex-st" AC_LINK_IFELSE([AC_LANG_PROGRAM(<a class="assigned ticket" href="https://svn.boost.org/trac10/ticket/1094#include" title="#1094: Feature Requests: Finding the correct library to link (feature request for pkg-config ... (assigned)">&lt;boost/regex.hpp&gt;</a>, </p> <blockquote> <p> [boost::regex(&#34;^foo[bar]$")])], </p> </blockquote> <blockquote> <p> [AC_MSG_RESULT([yes]) </p> <blockquote> <p> BOOST_LIBS="${BOOST_LIBS} -lboost_regex-st"], </p> </blockquote> <p> [AC_MSG_RESULT([no]) </p> <blockquote> <p> AC_MSG_FAILURE([libboost_regex (Boost C++ Libraries) is not installed, but is required by schroot])]) </p> </blockquote> </blockquote> <p> LDFLAGS="${saved_ldflags}" </p> <p> AC_SUBST([BOOST_LIBS]) </p> <p> ---configure.ac---- </p> <p> As you can see, that's quite a bit of complexity. It also includes code to work around a backwards compatibility issue in Boost.Program_options. However, it needs to know the library name in order to link the test code, and I'm still needing to use a non-standard name in order to do that. </p> <p> It would be great if Boost would provide a mechanism to allow such discovery. Such a mechanism already exists, and is called "pkg-config". By installing a small file in LIBDIR/pkgconfig for each Boost library, the pkg-config tool or PKG_CHECK_MODULES Autoconf macro may be used to query this information. As an example: </p> <hr /> <p> prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include </p> <p> Name: boost-regex-mt Description: Boost C++ Regular Expression Library (multi-threaded) Version: 1.34.0 Libs: -L${libdir} -lboost_regex-gcc41-mt-1_34 Libs.private: -licui18n -licuuc -lrt -lm Cflags: -I${includedir} -pthread </p> <hr /> <p> You can generate this from a template: </p> <hr /> <p> prefix=PREFIX exec_prefix=EPREFIX libdir=LIBDIR includedir=INCLUDEDIR </p> <p> Name: boost-regex-mt Description: Boost Regular Expression Library (multi-threaded) Version: VERSION Libs: -L${libdir} LIBRARY_NAME Libs.private: LIBRARY_DEPENDENCIES [for static linking] Cflags: -I${includedir} THREAD_OPTIONS_FOR_COMPILER </p> <hr /> <p> where the capitalised names are where you would substitute in the system- and compiler-specific options. It looks like bjam could probably make this a single rule all libraries could make use of. </p> <p> For such a setup, all that configure script above could be mostly reduced to </p> <blockquote> <p> PKG_CHECK_MODULES([boost-regex-st]) PKG_CHECK_MODULES([boost-program-options-st]) </p> </blockquote> <p> I don't know how bjam works, but I do this with Autoconf as a file generated by config.status, but it could also be generated by make with a simple sed command. I guess you could do the bjam equivalent, whatever that might be. I have had a look at the sources to try to implement this, but I am afraid I lack the bjam expertise to do it. </p> <p> You may find much more detailed discussion of these issues at </p> <blockquote> <p> <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=424038"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=424038</a> <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=424666"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=424666</a> <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=425264"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=425264</a> <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=428419"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=428419</a> <a class="ext-link" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=350539"><span class="icon">​</span>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=350539</a> </p> </blockquote> <p> Some of these are due to Debian-specific issues (a change to the symlink name), but the root cause is the inability to identify the Boost library names in an automated fashion. </p> <p> Regards, Roger </p> <p> -- </p> <blockquote> <p> .<em>`. Roger Leigh </em></p> </blockquote> <blockquote> <p> : :' : Debian GNU/Linux <a class="ext-link" href="http://people.debian.org/~rleigh/"><span class="icon">​</span>http://people.debian.org/~rleigh/</a> <code>. </code>' Printing on GNU/Linux? <a class="ext-link" href="http://gutenprint.sourceforge.net/"><span class="icon">​</span>http://gutenprint.sourceforge.net/</a> </p> <blockquote> <p> `- GPG Public Key: 0x25BFB848 Please GPG sign your mail. </p> </blockquote> </blockquote> rleigh@… https://svn.boost.org/trac10/ticket/1094 https://svn.boost.org/trac10/ticket/1094 Report #1090: scoped_file class that deletes file at end of scope Fri, 13 Jul 2007 12:35:23 GMT Mon, 30 Jun 2008 10:01:47 GMT <p> I've found myself wanting this on a couple of occasions with 1.33.1, and I've done it with boost::shared_ptr: </p> <div class="wiki-code"><div class="code"><pre><span class="n">boost</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">fs</span><span class="o">::</span><span class="n">path</span><span class="o">&gt;</span> <span class="n">removeFile</span><span class="p">(</span><span class="o">&amp;</span><span class="n">file</span><span class="p">,</span> <span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">fs</span><span class="o">::</span><span class="n">remove</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">cref</span><span class="p">(</span><span class="n">file</span><span class="p">)));</span> </pre></div></div><p> That didn't work with 1.34.1 (maybe due to compiler intricacies), so I did it properly: </p> <div class="wiki-code"><div class="code"><pre><span class="k">class</span> <span class="nc">scoped_file</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="k">explicit</span> <span class="n">scoped_file</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&amp;</span> <span class="n">file</span><span class="p">)</span> <span class="o">:</span> <span class="n">m_path</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">native</span><span class="p">)</span> <span class="p">{}</span> <span class="k">explicit</span> <span class="n">scoped_file</span><span class="p">(</span><span class="k">const</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">path</span><span class="o">&amp;</span> <span class="n">file</span><span class="p">)</span> <span class="o">:</span> <span class="n">m_path</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="p">{}</span> <span class="o">~</span><span class="n">scoped_file</span><span class="p">()</span> <span class="p">{</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">remove</span><span class="p">(</span><span class="n">m_path</span><span class="p">);</span> <span class="p">}</span> <span class="k">private</span><span class="o">:</span> <span class="n">boost</span><span class="o">::</span><span class="n">filesystem</span><span class="o">::</span><span class="n">path</span> <span class="n">m_path</span><span class="p">;</span> <span class="p">};</span> </pre></div></div><p> That might be something to add? </p> Marcus Lindblom <macke@…> https://svn.boost.org/trac10/ticket/1090 https://svn.boost.org/trac10/ticket/1090 Report #1088: Docs for template escape feature. Thu, 12 Jul 2007 01:31:21 GMT Thu, 12 Jul 2007 01:31:21 GMT <p> Write docs for the new template escape <a class="missing wiki">QuickBook</a> feature. </p> René Rivera https://svn.boost.org/trac10/ticket/1088 https://svn.boost.org/trac10/ticket/1088 Report #1049: Getting mpl/has_xxx.hpp to compile on AIX Wed, 13 Jun 2007 08:23:52 GMT Fri, 18 Nov 2016 01:36:06 GMT <p> Moving the class gcc_3_2_wknd out of the enclosing class scope into the namespace scope makes thius compile on AIX. </p> <p> The attached patch was for 1.33.1 </p> troyer@… https://svn.boost.org/trac10/ticket/1049 https://svn.boost.org/trac10/ticket/1049 Report #1045: [multi_array] Need a proper swap operation Fri, 08 Jun 2007 16:35:05 GMT Thu, 29 Mar 2018 13:33:04 GMT <p> See <a class="ext-link" href="http://lists.boost.org/Archives/boost/2007/05/121165.php"><span class="icon">​</span>this email</a> which was unanswered. </p> <p> Basically, a proper pointer swap operation would be both efficent and useful. </p> <p> (P.S. multi_array is not listed in components?) </p> Marcus Lindblom <macke@…> https://svn.boost.org/trac10/ticket/1045 https://svn.boost.org/trac10/ticket/1045 Report #1020: Boost.Iterator proposal to add is_constant_iterator Thu, 31 May 2007 18:49:35 GMT Wed, 21 Nov 2012 22:29:10 GMT <p> I propose to add a new trait to the Boost.Iterator library: <code>is_constant_iterator</code>. The trait is applied to an iterator and returns true if the iterator's reference type is a constant reference and false if the type is a non-constant reference. The trait will fail to compile when applied to iterators having non-reference reference types. </p> <p> This addition would make it easier to use library components like <code>iterator_facade</code> and <code>iterator_adaptor</code> for implementing container iterator wrappers like this: </p> <pre class="wiki"> template&lt; NodeItT &gt; struct MyIterator : public iterator_facade&lt; MyIterator&lt; NodeItT &gt;, typename mpl::if_&lt; is_constant_iterator&lt; NodeItT &gt;, const value_type, value_type &gt;::type, typename iterator_category&lt; NodeItT &gt;::type &gt; { }; </pre><p> Here <code>NodeItT</code> is a wrapped iterator and may be a <code>const_iterator</code> or <code>iterator</code> of a container. </p> <p> Another use case is when a user wants to detect whether an iterator is <code>const_iterator</code> or <code>iterator</code>. An example of this: implementing functionality of iterator translation similar to Boost.<a class="missing wiki">MultiIndex</a> <code>project</code> method. </p> <p> I've attached an archive with the implementation, tests and patches to documentation. The implementation, in addition to the abovementioned functionality, supports <code>std::vector&lt; bool &gt;</code> iterators, though their reference types are not references. </p> andysem@… https://svn.boost.org/trac10/ticket/1020 https://svn.boost.org/trac10/ticket/1020 Report #973: zip_iterator has value_type == reference Mon, 21 May 2007 04:27:20 GMT Sun, 02 Dec 2012 08:18:41 GMT <p> That looks wrong to me. See <a class="ext-link" href="http://groups.google.com/group/comp.std.c++/browse_frm/thread/9c40ffc2f6394ca0/89ef062ddcb231e7"><span class="icon">​</span>http://groups.google.com/group/comp.std.c++/browse_frm/thread/9c40ffc2f6394ca0/89ef062ddcb231e7</a> </p> anonymous https://svn.boost.org/trac10/ticket/973 https://svn.boost.org/trac10/ticket/973 Report #957: The "Getting Started" page does not mention the stdlib option Tue, 15 May 2007 06:24:41 GMT Wed, 13 May 2009 06:37:26 GMT <p> The "Getting Started" page does not mention the stdlib option, that allows to compile using STLport for example. </p> <p> Also, maybe it is also worth mentionning that using STLport when compiling Boost leads to linking error when the box is linux (and maybe other unix OS). See <a class="ext-link" href="http://lists.boost.org/boost-users/2007/04/26818.php"><span class="icon">​</span>http://lists.boost.org/boost-users/2007/04/26818.php</a> </p> Vincent Torri https://svn.boost.org/trac10/ticket/957 https://svn.boost.org/trac10/ticket/957 Report #889: Insane Dependencies Mon, 09 Apr 2007 23:07:09 GMT Sun, 22 Nov 2009 20:03:13 GMT <pre class="wiki">From: helvey@accelrys.com Simply including boost/date_time/posix_time headers causes build times to skyrocket. Building a file that includes boost/date_time/posix_time/posix_time.hpp takes almost a minute, removing the header drops the time to less than a second. Also why no conversions to time_t? It would be nice not to have include the header outside of translation units. :) </pre> nobody https://svn.boost.org/trac10/ticket/889 https://svn.boost.org/trac10/ticket/889 Report #863: [parameter] fix operator|| for lazy binding Wed, 21 Mar 2007 16:47:54 GMT Tue, 03 Jul 2007 14:56:17 GMT <p> Apply with 'patch -p0 &lt; djw_lazy_binding.patch' from the boost root directory. See discussion here <a class="ext-link" href="http://tinyurl.com/26kwnh"><span class="icon">​</span>http://tinyurl.com/26kwnh</a>. </p> daniel_walker@… https://svn.boost.org/trac10/ticket/863 https://svn.boost.org/trac10/ticket/863 Report #857: add shared_ptr< const T> support Tue, 20 Mar 2007 20:27:00 GMT Fri, 18 Sep 2009 01:02:01 GMT <p> This patch adds support to Boost.Python library to handle boost::shared_ptr&lt; const T&gt; class. </p> <p> The problem and solution were discussed in this thread: <a class="ext-link" href="http://mail.python.org/pipermail/c++-sig/2006-November/011626.html"><span class="icon">​</span>http://mail.python.org/pipermail/c++-sig/2006-November/011626.html</a> </p> roman_yakovenko@… https://svn.boost.org/trac10/ticket/857 https://svn.boost.org/trac10/ticket/857 Report #850: program_options strips off escaped quotes in some situations Fri, 09 Mar 2007 20:56:52 GMT Thu, 02 Feb 2012 22:29:39 GMT <pre class="wiki">boost::program_options strips off escaped quotes from command line strings like -a "\"quoted value\"". A command line string like -a "\"quoted value\" unquoted_value" does not have its escaped quotes striped out. I am using program_options in Windows to parse the command line of my application. One of the requirements is that I be able to pass in the command line of a different application such as the following: myapp -c "\"c:\App versions\App v1\App.exe\" -a \"A Value\" -b Another_Value" In this case, program_options will correctly parse out the value of the parameter c to be: "c:\App versions\App v1\App.exe" -a "A Value" -b Another_Value However, if I pass in the following: myapp -c "\"c:\App versions\App v1\App.exe\"" program_options parses c as: c:\App versions\App v1\App.exe Note that the escaped quotes were stripped off instead of preserved like you would expect. This is a problem because my application immediately turns around and calls ::CreateProcess using the value of the c parameter. ::CreateProcess' documented behavior is that it executes the first match it can find of c:\App.exe, c:\App versions\App.exe, and c:\App versions\App v1\App.exe. The only way you can stop this behavior is by enclosing the file path in quotes. The code I'm using to get the options is pasted below. Please email me with any questions. Thanks! -------------------- pair&lt;string, bool&gt; CCmdLineParser::GetParam(const string&amp; sParamName) { Run(); // Make sure we're parsed if (!Impl_.bOptionsDescribed &amp;&amp; !Impl_.bPositionalOptionsDescribed) return GetUnregisteredParam_(sParamName); return Impl_.RegisteredOptions.count(sParamName) ? make_pair(Impl_.RegisteredOptions[sParamName].as&lt;string&gt;(), true) : make_pair("", false); } void CCmdLineParser::Run(void) { if (Impl_.bInitialized) return; Impl_.bInitialized = true; // Create parser command_line_parser Parser(split_winmain(AfxGetApp()-&gt;m_lpCmdLine)); bool bUnregistered = !Impl_.bOptionsDescribed &amp;&amp; !Impl_.bPositionalOptionsDescribed; // Setup parser Parser.options(Impl_.OptionsDesc); // Always required (even if empty) because command_line_parser::run() asserts it if (Impl_.bPositionalOptionsDescribed) Parser.positional(Impl_.PositionalOptionsDesc); if (bUnregistered) Parser.allow_unregistered(); // Parse parsed_options ParsedOptions = Parser.run(); // Retrieve // We can't call store on something with unregistered options. It throws an exception even if you specifically // call allow_unregistered(). This is a known bug. It is fixed in the boost CVS tree, but not released yet. // What all of this basically means if that we can't mix registered and unregistered options (yet). if (bUnregistered) Impl_.UnregisteredOptions = collect_unrecognized(ParsedOptions.options, include_positional); else { store(ParsedOptions, Impl_.RegisteredOptions); // notify() is required for automatic value storage and default values notify(Impl_.RegisteredOptions); } } </pre> apoxy https://svn.boost.org/trac10/ticket/850 https://svn.boost.org/trac10/ticket/850 Report #810: support for weak_ptr binding Thu, 11 Jan 2007 19:56:30 GMT Wed, 11 Dec 2013 22:00:10 GMT <pre class="wiki">Hello, recently i faced with problem - i was not able to pass weak_ptr to bind() function. I started to study why and found there is no support for this in boost. As result, me and my friend wrote "get_pointer" version which accepts weak_ptr. At actual call moment, implementation uses weak_ptr::lock() to get shared_ptr. If retrieved shared_ptr is invalid, then exception of type "disposed_exception" thrown. This code was tested on Windows XP SP2 with following compilers: VC6, VC7, VC7.1, VC8, g++ 3.2.3 (MinGW), g++ 3.4.4 (Cygwin). If you find this code is useful for someone else me, please add to boost (it's actually not a library, this is why i'm poosting it to "patches"). You can find sources + test app in attachment. Thank you, Dmytro Gokun </pre> nobody https://svn.boost.org/trac10/ticket/810 https://svn.boost.org/trac10/ticket/810 Report #799: mpl::if_ Fri, 22 Dec 2006 12:20:30 GMT Thu, 06 Jan 2011 10:33:31 GMT <pre class="wiki">There is an alternative implementation of mpl::if. This implementation makes code clearer. We can write: typename if_ &lt; X, Y &gt; ::else_if &lt; Z, U &gt; ::else_ &lt; V &gt;::type The implementation can be found here: http://cbear.berlios.de/meta/if.hpp </pre> nobody https://svn.boost.org/trac10/ticket/799 https://svn.boost.org/trac10/ticket/799 Report #795: [ublas] vector::back() Fri, 15 Dec 2006 16:18:15 GMT Sat, 07 May 2011 17:33:49 GMT <pre class="wiki">It would be nice to have this useful, nice little member... T&amp; back() { return *rbegin(); } and const T&amp; back() const { return *rbegin(); } </pre> slyilmaz https://svn.boost.org/trac10/ticket/795 https://svn.boost.org/trac10/ticket/795 Report #746: max flow with lower bounds (capacities) Fri, 06 Oct 2006 21:51:10 GMT Wed, 08 Dec 2010 19:44:29 GMT <pre class="wiki">hello If I use the push_relabel_max_flow.hpp with only upper capacities everything works fine, but now I need to include lower capacities. How can I do this and how can I compute the new flow values afterwards? yours jens </pre> jens- https://svn.boost.org/trac10/ticket/746 https://svn.boost.org/trac10/ticket/746 Report #714: [jam] HardLink rule on NT platform Wed, 23 Aug 2006 10:16:26 GMT Thu, 06 Dec 2007 04:17:41 GMT <pre class="wiki">I've installed boost and noticed that HardLink rule on NT copies file although NT has support for hardlinks (on NTFS, of course). To use this feature while installing boost i've created file hardlink.bat with following contents: fsutil hardlink create %2 %1 and put it into %WINDIR%\system32 also i've changed line 194 of tools\build\v1\allyourbase.jam file from LN ?= $(CP) ; to LN ?= hardlink ; these changes allowed me to save about 600 M of my harddisk space. Not a big deal, yes, but otherwise these 600M would exceed my disk space :-) I think my solution is not ideal, but it could be helpful for people. So maybe it will be included in boost distibution, when adapted. Thanks. mailto: forums (dog here) green dot nsk dot ru </pre> nobody https://svn.boost.org/trac10/ticket/714 https://svn.boost.org/trac10/ticket/714 Report #605: Support different DST rules in timezone db based on years Mon, 17 Apr 2006 13:20:56 GMT Sun, 28 Nov 2010 06:27:44 GMT <pre class="wiki">The boost time library supports processing of the timezone database file as a .csv, with one entry per time zone, such as "America/New_York". However, in 2007, the daylight savings time rules will change. The contents of the csv need to change, to incorporate a range of effective years. Since DST is a spring and fall event (in both north and south hemispheres) only a year need be recorded. I suggest adding two values at the beginning of the line, (as one field in the form nnnn-nnnn) for the low effective-year and high effective-year, as 4-digit values. Let 0000 be used for "all previous years" and 9999 be used for all subsequent years. [If the '-' separator is a problem, ':' could be used instead.] Then, the change in 2007 can be recorded as two lines: "2007-9999","America/New_York", ... "0000-2006","America/New_York", ... Lines unaffected by the change would have "0000-9999" as the first field. </pre> nobody https://svn.boost.org/trac10/ticket/605 https://svn.boost.org/trac10/ticket/605 Report #403: Document copy_component Thu, 19 May 2005 02:18:30 GMT Wed, 08 Dec 2010 19:45:17 GMT <pre class="wiki">It's in boost/graph/copy.hpp, and useful, so we should document it. </pre> Douglas Gregor https://svn.boost.org/trac10/ticket/403 https://svn.boost.org/trac10/ticket/403 Report #395: BGL graph types do not support allocators Mon, 02 May 2005 15:48:55 GMT Wed, 08 Dec 2010 19:44:18 GMT <pre class="wiki">adjacency_list and adjacency_matrix should have an Allocator parameter, but they don't. </pre> Douglas Gregor https://svn.boost.org/trac10/ticket/395 https://svn.boost.org/trac10/ticket/395 Report #380: Support for bundled properties in graph adaptors Mon, 28 Mar 2005 21:21:38 GMT Fri, 07 Sep 2012 08:18:57 GMT <pre class="wiki">The graph adaptors (such as subgraph) do not support bundled properties, but they should. </pre> Douglas Gregor https://svn.boost.org/trac10/ticket/380 https://svn.boost.org/trac10/ticket/380 Report #375: LEDA graph adaptors do not handle hidden nodes properly Tue, 22 Mar 2005 15:39:07 GMT Wed, 04 Jan 2012 23:33:38 GMT <pre class="wiki">Hidden nodes are completely ignored by the LEDA graph adaptors. This may cause problems when, for instance, there are hidden nodes but the equivalent of vertex_index is used to construct a (BGL) property map. The LEDA adaptors should probably take the same approach as filtered_graph: let num_vertices() return the number of the nodes in the graph plus the number of hidden nodes, but vertices() filters out the hidden nodes. Similarly for edges. </pre> Douglas Gregor https://svn.boost.org/trac10/ticket/375 https://svn.boost.org/trac10/ticket/375 Report #373: LEDA graph adaptors for undirected graphs Tue, 22 Mar 2005 15:33:33 GMT Wed, 04 Jan 2012 23:32:03 GMT <pre class="wiki">The LEDA graph adaptors in the BGL seem to work properly for directed graphs (the LEDA type GRAPH&lt;...&gt;), but there are no corresponding adaptors for the undirected LEDA graph type (UGRAPH&lt;...&gt;). Undirected LEDA graphs follow a very different model than the undirected graphs in the BGL, which will require some special machinery. The LEDA type UGRAPH&lt;...&gt; is actually just a class derived from GRAPH&lt;...&gt; that applies the "make_undirected()" member function upon initialization. make_undirected() moves all of the in-edges of each vertex to the out-edges list. This has several unfortunate consequences: 1) The in-degree of an undirected LEDA graph is always zero, even when the out-degree is greater than zero. The in_edges list is therefore empty. 2) When traversing the list of out-edges for a vertex u, the edges returned may have u as their target but not their source. This breaks an important invariant in the BGL, which mandates that source(e, g)==u if e came from out_edges(u, g). Similarly for in-edges. Thus, an undirected LEDA graph adaptor will need to introduce special adaptors for the out_edge_iterator and in_edge_iterator types, which return a new edge_descriptor type for LEDA that can swap the source and target of a LEDA edge as needed. Additionally, graph-mutating operations (such as add_edge) may need to ensure that the graph remains undirected, as if make_undirected() had been called. </pre> Douglas Gregor https://svn.boost.org/trac10/ticket/373 https://svn.boost.org/trac10/ticket/373 Report #231: Graph Header Clashes With Format Header Thu, 05 Feb 2004 19:38:38 GMT Mon, 21 May 2012 02:50:23 GMT <pre class="wiki">The following code produces many errors in MSVC71 #include &lt;boost/format.hpp&gt; #include &lt;boost/graph/adjacency_list.hpp&gt; int _tmain(int argc, _TCHAR* argv[]) { std::string s = (boost::format("%1% %2% % 3%") % "a" % "b" % "c").str(); return 0; } </pre> schmoo2k https://svn.boost.org/trac10/ticket/231 https://svn.boost.org/trac10/ticket/231 Report