[SERVER-28428] clonable_ptr_test.cpp fails to compile under clang Created: 22/Mar/17  Updated: 27/Oct/23  Resolved: 05/Apr/17

Status: Closed
Project: Core Server
Component/s: Internal Code
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Matthew Russotto Assignee: Unassigned
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to SERVER-26025 Smart pointer with clone on copy Closed
Backwards Compatibility: Fully Compatible
Operating System: ALL
Participants:

 Description   

FAILED: build/ninja/mongo/base/clonable_ptr_test.o 
/usr/bin/ccache clang++ -o build/ninja/mongo/base/clonable_ptr_test.o -c -Woverloaded-virtual -Wpessimizing-move -Wredundant-move -std=c++14  -Wa,--compress-debug-sections -gsplit-dwarf -fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O0 -Wno-unused-local-typedefs -Wno-unused-function -Wno-unused-private-field -Wno-deprecated-declarations -Wno-tautological-constant-out-of-range-compare -Wno-unused-const-variable -Wno-missing-braces -Wno-inconsistent-missing-override -Wno-potentially-evaluated-expression -fstack-protector-strong -Wno-null-conversion -fno-builtin-memcmp -fdiagnostics-color=always -Qunused-arguments -fPIE -DPCRE_STATIC -DBOOST_THREAD_VERSION=4 -DBOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -DBOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS -DBOOST_THREAD_HAS_NO_EINTR_BUG -Isrc/third_party/pcre-8.39 -Isrc/third_party/boost-1.60.0 -Ibuild/ninja -Isrc src/mongo/base/clonable_ptr_test.cpp -MMD -MF build/ninja/mongo/base/clonable_ptr_test.o.d
In file included from src/mongo/base/clonable_ptr_test.cpp:31:
src/mongo/base/clonable_ptr.h:351:9: error: static_assert failed "The `CloneFactory` type must be nothrow constructible to use as an r-value in an initialization expression with a raw pointer."
        static_assert(std::is_nothrow_move_constructible<CloneFactory>::value,
        ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/mongo/base/clonable_ptr_test.cpp:307:7: note: in instantiation of member function 'mongo::clonable_ptr<(anonymous namespace)::FunctorClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorClonable, std::default_delete<(anonymous namespace)::FunctorClonable> > (const (anonymous namespace)::FunctorClonable &)>, std::unique_ptr>::clonable_ptr' requested here
    { mongo::clonable_ptr<Clonable, CloneFactory>{nullptr, Clonable::getCloningFunction()}; }
      ^
src/mongo/base/clonable_ptr_test.cpp:461:18: note: in instantiation of function template specialization '(anonymous namespace)::SyntaxTests::augmentedConstruction<(anonymous namespace)::FunctorClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorClonable, std::default_delete<(anonymous namespace)::FunctorClonable> > (const (anonymous namespace)::FunctorClonable &)> >' requested here
    SyntaxTests::augmentedConstruction<FunctorClonable, FunctorClonable::CloningFunctionType>();
                 ^
In file included from src/mongo/base/clonable_ptr_test.cpp:31:
src/mongo/base/clonable_ptr.h:351:9: error: static_assert failed "The `CloneFactory` type must be nothrow constructible to use as an r-value in an initialization expression with a raw pointer."
        static_assert(std::is_nothrow_move_constructible<CloneFactory>::value,
        ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/mongo/base/clonable_ptr_test.cpp:307:7: note: in instantiation of member function 'mongo::clonable_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::default_delete<(anonymous namFAILED: build/ninja/mongo/base/clonable_ptr_test.o 
/usr/bin/ccache clang++ -o build/ninja/mongo/base/clonable_ptr_test.o -c -Woverloaded-virtual -Wpessimizing-move -Wredundant-move -std=c++14  -Wa,--compress-debug-sections -gsplit-dwarf -fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O0 -Wno-unused-local-typedefs -Wno-unused-function -Wno-unused-private-field -Wno-deprecated-declarations -Wno-tautological-constant-out-of-range-compare -Wno-unused-const-variable -Wno-missing-braces -Wno-inconsistent-missing-override -Wno-potentially-evaluated-expression -fstack-protector-strong -Wno-null-conversion -fno-builtin-memcmp -fdiagnostics-color=always -Qunused-arguments -fPIE -DPCRE_STATIC -DBOOST_THREAD_VERSION=4 -DBOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS -DBOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS -DBOOST_THREAD_HAS_NO_EINTR_BUG -Isrc/third_party/pcre-8.39 -Isrc/third_party/boost-1.60.0 -Ibuild/ninja -Isrc src/mongo/base/clonable_ptr_test.cpp -MMD -MF build/ninja/mongo/base/clonable_ptr_test.o.d
In file included from src/mongo/base/clonable_ptr_test.cpp:31:
src/mongo/base/clonable_ptr.h:351:9: error: static_assert failed "The `CloneFactory` type must be nothrow constructible to use as an r-value in an initialization expression with a raw pointer."
        static_assert(std::is_nothrow_move_constructible<CloneFactory>::value,
        ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/mongo/base/clonable_ptr_test.cpp:307:7: note: in instantiation of member function 'mongo::clonable_ptr<(anonymous namespace)::FunctorClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorClonable, std::default_delete<(anonymous namespace)::FunctorClonable> > (const (anonymous namespace)::FunctorClonable &)>, std::unique_ptr>::clonable_ptr' requested here
    { mongo::clonable_ptr<Clonable, CloneFactory>{nullptr, Clonable::getCloningFunction()}; }
      ^
src/mongo/base/clonable_ptr_test.cpp:461:18: note: in instantiation of function template specialization '(anonymous namespace)::SyntaxTests::augmentedConstruction<(anonymous namespace)::FunctorClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorClonable, std::default_delete<(anonymous namespace)::FunctorClonable> > (const (anonymous namespace)::FunctorClonable &)> >' requested here
    SyntaxTests::augmentedConstruction<FunctorClonable, FunctorClonable::CloningFunctionType>();
                 ^
In file included from src/mongo/base/clonable_ptr_test.cpp:31:
src/mongo/base/clonable_ptr.h:351:9: error: static_assert failed "The `CloneFactory` type must be nothrow constructible to use as an r-value in an initialization expression with a raw pointer."
        static_assert(std::is_nothrow_move_constructible<CloneFactory>::value,
        ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/mongo/base/clonable_ptr_test.cpp:307:7: note: in instantiation of member function 'mongo::clonable_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::default_delete<(anonymous namespace)::FunctorWithDynamicStateClonable> > (const (anonymous namespace)::FunctorWithDynamicStateClonable &)>, std::unique_ptr>::clonable_ptr' requested here
    { mongo::clonable_ptr<Clonable, CloneFactory>{nullptr, Clonable::getCloningFunction()}; }
      ^
src/mongo/base/clonable_ptr_test.cpp:462:18: note: in instantiation of function template specialization '(anonymous namespace)::SyntaxTests::augmentedConstruction<(anonymous namespace)::FunctorWithDynamicStateClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::default_delete<(anonymous namespace)::FunctorWithDynamicStateClonable> > (const (anonymous namespace)::FunctorWithDynamicStateClonable &)> >' requested here
    SyntaxTests::augmentedConstruction<FunctorWithDynamicStateClonable,
                 ^
2 errors generated.
[51/767] CXX build/ninja/mongo/db/repl/topology_coordinator_impl_test.o
ninja: build stopped: subcommand failed.
espace)::FunctorWithDynamicStateClonable> > (const (anonymous namespace)::FunctorWithDynamicStateClonable &)>, std::unique_ptr>::clonable_ptr' requested here
    { mongo::clonable_ptr<Clonable, CloneFactory>{nullptr, Clonable::getCloningFunction()}; }
      ^
src/mongo/base/clonable_ptr_test.cpp:462:18: note: in instantiation of function template specialization '(anonymous namespace)::SyntaxTests::augmentedConstruction<(anonymous namespace)::FunctorWithDynamicStateClonable, std::function<std::unique_ptr<(anonymous namespace)::FunctorWithDynamicStateClonable, std::default_delete<(anonymous namespace)::FunctorWithDynamicStateClonable> > (const (anonymous namespace)::FunctorWithDynamicStateClonable &)> >' requested here
    SyntaxTests::augmentedConstruction<FunctorWithDynamicStateClonable,
                 ^
2 errors generated.
[51/767] CXX build/ninja/mongo/db/repl/topology_coordinator_impl_test.o
ninja: build stopped: subcommand failed.



 Comments   
Comment by Matthew Russotto [ 05/Apr/17 ]

Yes, it compiles now.

Generated at Thu Feb 08 04:18:06 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.