You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Michael Park <mc...@gmail.com> on 2014/12/18 00:31:19 UTC
Review Request 29180: Fixed a compilation issue in GCC 4.6.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/
-----------------------------------------------------------
Review request for mesos.
Repository: mesos-git
Description
-------
Fixed a compilation issue in GCC 4.6.
Diffs
-----
3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
Diff: https://reviews.apache.org/r/29180/diff/
Testing
-------
make check
Thanks,
Michael Park
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Michael Park <mc...@gmail.com>.
> On Dec. 17, 2014, 11:36 p.m., Dominic Hamon wrote:
> > any idea what is missing from g++ 4.6 that causes this failure?
>
> Michael Park wrote:
> It's a bug in the `<tr1/functional>` header. The `operator()`'s implementation doesn't perfect-forward the args correctly.
>
> ```cpp
> #include <tr1/functional>
>
> void F(int&& x) {}
>
> void G(const std::tr1::function<void(int&&)>& x) {
> x(42);
> }
>
> int main() {
> G(F);
> }
> ```
>
> ```
> In file included from a.cc:1:0:
> /usr/include/c++/4.6/tr1/functional: In member function ‘_Res std::tr1::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = void, _ArgTypes = {int&&}]’:
> a.cc:7:7: instantiated from here
> /usr/include/c++/4.6/tr1/functional:2040:46: error: invalid initialization of reference of type ‘int&&’ from expression of type ‘int’
> /usr/include/c++/4.6/tr1/functional:2040:46: error: return-statement with a value, in function returning 'void' [-fpermissive]
> /usr/include/c++/4.6/tr1/functional: In static member function ‘static void std::tr1::_Function_handler<void(_ArgTypes ...), _Functor>::_M_invoke(const std::tr1::_Any_data&, _ArgTypes ...) [with _Functor = void (*)(int&&), _ArgTypes = {int&&}]’:
> /usr/include/c++/4.6/tr1/functional:2021:6: instantiated from ‘std::tr1::function<_Res(_ArgTypes ...)>::function(_Functor, typename __gnu_cxx::__enable_if<(! std::tr1::is_integral<_Functor>::value), std::tr1::function<_Res(_ArgTypes ...)>::_Useless>::__type) [with _Functor = void (*)(int&&), _Res = void, _ArgTypes = {int&&}, typename __gnu_cxx::__enable_if<(! std::tr1::is_integral<_Functor>::value), std::tr1::function<_Res(_ArgTypes ...)>::_Useless>::__type = std::tr1::function<void(int&&)>::_Useless]’
> a.cc:11:6: instantiated from here
> /usr/include/c++/4.6/tr1/functional:1684:9: error: invalid initialization of reference of type ‘int&&’ from expression of type ‘int’
> ```
>
> The `<functional>` header correctly perfect-forwards the arguments so we can make the above program by simply switching from `std::tr1::function` to `std::function`.
>
> ```cpp
> #include <functional>
>
> void F(int&& x) {}
>
> void G(const std::function<void(int&&)>& x) {
> x(42);
> }
>
> int main() {
> G(F);
> }
> ```
make the above program *work* by
- Michael
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/#review65386
-----------------------------------------------------------
On Dec. 17, 2014, 11:33 p.m., Michael Park wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29180/
> -----------------------------------------------------------
>
> (Updated Dec. 17, 2014, 11:33 p.m.)
>
>
> Review request for mesos, Benjamin Hindman and Dominic Hamon.
>
>
> Bugs: MESOS-2192
> https://issues.apache.org/jira/browse/MESOS-2192
>
>
> Repository: mesos-git
>
>
> Description
> -------
>
> Fixed a compilation issue in GCC 4.6.
>
>
> Diffs
> -----
>
> 3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
> 3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
> 3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
>
> Diff: https://reviews.apache.org/r/29180/diff/
>
>
> Testing
> -------
>
> make check
>
>
> Thanks,
>
> Michael Park
>
>
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Michael Park <mc...@gmail.com>.
> On Dec. 17, 2014, 11:36 p.m., Dominic Hamon wrote:
> > any idea what is missing from g++ 4.6 that causes this failure?
It's a bug in the `<tr1/functional>` header. The `operator()`'s implementation doesn't perfect-forward the args correctly.
```cpp
#include <tr1/functional>
void F(int&& x) {}
void G(const std::tr1::function<void(int&&)>& x) {
x(42);
}
int main() {
G(F);
}
```
```
In file included from a.cc:1:0:
/usr/include/c++/4.6/tr1/functional: In member function ‘_Res std::tr1::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = void, _ArgTypes = {int&&}]’:
a.cc:7:7: instantiated from here
/usr/include/c++/4.6/tr1/functional:2040:46: error: invalid initialization of reference of type ‘int&&’ from expression of type ‘int’
/usr/include/c++/4.6/tr1/functional:2040:46: error: return-statement with a value, in function returning 'void' [-fpermissive]
/usr/include/c++/4.6/tr1/functional: In static member function ‘static void std::tr1::_Function_handler<void(_ArgTypes ...), _Functor>::_M_invoke(const std::tr1::_Any_data&, _ArgTypes ...) [with _Functor = void (*)(int&&), _ArgTypes = {int&&}]’:
/usr/include/c++/4.6/tr1/functional:2021:6: instantiated from ‘std::tr1::function<_Res(_ArgTypes ...)>::function(_Functor, typename __gnu_cxx::__enable_if<(! std::tr1::is_integral<_Functor>::value), std::tr1::function<_Res(_ArgTypes ...)>::_Useless>::__type) [with _Functor = void (*)(int&&), _Res = void, _ArgTypes = {int&&}, typename __gnu_cxx::__enable_if<(! std::tr1::is_integral<_Functor>::value), std::tr1::function<_Res(_ArgTypes ...)>::_Useless>::__type = std::tr1::function<void(int&&)>::_Useless]’
a.cc:11:6: instantiated from here
/usr/include/c++/4.6/tr1/functional:1684:9: error: invalid initialization of reference of type ‘int&&’ from expression of type ‘int’
```
The `<functional>` header correctly perfect-forwards the arguments so we can make the above program by simply switching from `std::tr1::function` to `std::function`.
```cpp
#include <functional>
void F(int&& x) {}
void G(const std::function<void(int&&)>& x) {
x(42);
}
int main() {
G(F);
}
```
- Michael
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/#review65386
-----------------------------------------------------------
On Dec. 17, 2014, 11:33 p.m., Michael Park wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29180/
> -----------------------------------------------------------
>
> (Updated Dec. 17, 2014, 11:33 p.m.)
>
>
> Review request for mesos, Benjamin Hindman and Dominic Hamon.
>
>
> Bugs: MESOS-2192
> https://issues.apache.org/jira/browse/MESOS-2192
>
>
> Repository: mesos-git
>
>
> Description
> -------
>
> Fixed a compilation issue in GCC 4.6.
>
>
> Diffs
> -----
>
> 3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
> 3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
> 3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
>
> Diff: https://reviews.apache.org/r/29180/diff/
>
>
> Testing
> -------
>
> make check
>
>
> Thanks,
>
> Michael Park
>
>
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Dominic Hamon <dh...@twopensource.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/#review65386
-----------------------------------------------------------
Ship it!
any idea what is missing from g++ 4.6 that causes this failure?
- Dominic Hamon
On Dec. 17, 2014, 3:33 p.m., Michael Park wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29180/
> -----------------------------------------------------------
>
> (Updated Dec. 17, 2014, 3:33 p.m.)
>
>
> Review request for mesos, Benjamin Hindman and Dominic Hamon.
>
>
> Bugs: MESOS-2192
> https://issues.apache.org/jira/browse/MESOS-2192
>
>
> Repository: mesos-git
>
>
> Description
> -------
>
> Fixed a compilation issue in GCC 4.6.
>
>
> Diffs
> -----
>
> 3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
> 3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
> 3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
>
> Diff: https://reviews.apache.org/r/29180/diff/
>
>
> Testing
> -------
>
> make check
>
>
> Thanks,
>
> Michael Park
>
>
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Mesos ReviewBot <de...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/#review65419
-----------------------------------------------------------
Patch looks great!
Reviews applied: [29180]
All tests passed.
- Mesos ReviewBot
On Dec. 17, 2014, 11:33 p.m., Michael Park wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29180/
> -----------------------------------------------------------
>
> (Updated Dec. 17, 2014, 11:33 p.m.)
>
>
> Review request for mesos, Benjamin Hindman and Dominic Hamon.
>
>
> Bugs: MESOS-2192
> https://issues.apache.org/jira/browse/MESOS-2192
>
>
> Repository: mesos-git
>
>
> Description
> -------
>
> Fixed a compilation issue in GCC 4.6.
>
>
> Diffs
> -----
>
> 3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
> 3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
> 3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
>
> Diff: https://reviews.apache.org/r/29180/diff/
>
>
> Testing
> -------
>
> make check
>
>
> Thanks,
>
> Michael Park
>
>
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Michael Park <mc...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/
-----------------------------------------------------------
(Updated Dec. 17, 2014, 11:33 p.m.)
Review request for mesos, Benjamin Hindman and Dominic Hamon.
Bugs: MESOS-2192
https://issues.apache.org/jira/browse/MESOS-2192
Repository: mesos-git
Description
-------
Fixed a compilation issue in GCC 4.6.
Diffs
-----
3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
Diff: https://reviews.apache.org/r/29180/diff/
Testing
-------
make check
Thanks,
Michael Park
Re: Review Request 29180: Fixed a compilation issue in GCC 4.6.
Posted by Michael Park <mc...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29180/
-----------------------------------------------------------
(Updated Dec. 17, 2014, 11:32 p.m.)
Review request for mesos.
Bugs: MESOS-2192
https://issues.apache.org/jira/browse/MESOS-2192
Repository: mesos-git
Description
-------
Fixed a compilation issue in GCC 4.6.
Diffs
-----
3rdparty/libprocess/include/process/clock.hpp 1fd418b31133fd5a5444095ac887c77ee9375b2d
3rdparty/libprocess/src/clock.cpp dfe9ced2415b8567abb8c137ab73d90b59164d67
3rdparty/libprocess/src/process.cpp 028b33e7ecb7e0a39334ac4ab0279ee327a72a56
Diff: https://reviews.apache.org/r/29180/diff/
Testing
-------
make check
Thanks,
Michael Park