You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2006/10/02 20:50:19 UTC

[jira] Created: (STDCXX-292) std::string::assign(0, size, value) ambiguous

std::string::assign(0, size, value) ambiguous
---------------------------------------------

                 Key: STDCXX-292
                 URL: http://issues.apache.org/jira/browse/STDCXX-292
             Project: C++ Standard Library
          Issue Type: Bug
          Components: 21. Strings
    Affects Versions: 4.1.2, 4.1.3
         Environment: all
            Reporter: Martin Sebor
            Priority: Minor


>From http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200609.mbox/%3c451C1D61.1030807@roguewave.com%3e:

This fails to compile without debugging iterators:

#include <string>
int main ()
{
     std::string s;
     unsigned n = 3;

     s.insert (0, n, 'x');
}

$ make t
gcc -c -I/build/sebor/dev/stdlib/include/ansi    -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include -I/build/sebor/gcc-4.1.0-8s/include -I/build/sebor/dev/stdlib/examples/include  -pedantic -nostdinc++ -O2  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  t.cpp
t.cpp: In function 'int main()':
t.cpp:7: error: call of overloaded 'insert(int, unsigned int&, char)' is ambiguous
/build/sebor/dev/stdlib/include/string:520: note: candidates are: void std::basic_string<_CharT, _Traits, _Allocator>::insert(typename _Allocator::pointer, typename _Allocator::size_type, typename _Traits::char_type) [with _CharT = char, _Traits = std::char_traits<char>, _Allocator = std::allocator<char>]
/build/sebor/dev/stdlib/include/string:525: note:                 std::basic_string<_CharT, _Traits, _Allocator>& std::basic_string<_CharT, _Traits, _Allocator>::insert(typename _Allocator::size_type, typename _Allocator::size_type, typename _Traits::char_type) [with _CharT = char, _Traits = std::char_traits<char>, _Allocator = std::allocator<char>]
make: *** [t.o] Error 1



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (STDCXX-292) std::string::assign(0, size, value) ambiguous

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12484655 ] 

Martin Sebor commented on STDCXX-292:
-------------------------------------

This is a "known" issue with the basic_string interface (see post c++std-lib-17449 to the C++ committee's reflector). It might (should) be possible to handle it by placing a suitable constraint (along the lines of "enable_if<is_integer<T>>") on the template, and according to the C++ committee it should be  dealt with by the introduction of C++ Concepts into the language (see post c++std-lib-17450). We might want to implement the enable_if trick until concepts is widely available.

> std::string::assign(0, size, value) ambiguous
> ---------------------------------------------
>
>                 Key: STDCXX-292
>                 URL: https://issues.apache.org/jira/browse/STDCXX-292
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 21. Strings
>    Affects Versions: 4.1.3, 4.1.2
>         Environment: all
>            Reporter: Martin Sebor
>            Priority: Minor
>
> From http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200609.mbox/%3c451C1D61.1030807@roguewave.com%3e:
> This fails to compile without debugging iterators:
> #include <string>
> int main ()
> {
>      std::string s;
>      unsigned n = 3;
>      s.insert (0, n, 'x');
> }
> $ make t
> gcc -c -I/build/sebor/dev/stdlib/include/ansi    -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include -I/build/sebor/gcc-4.1.0-8s/include -I/build/sebor/dev/stdlib/examples/include  -pedantic -nostdinc++ -O2  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  t.cpp
> t.cpp: In function 'int main()':
> t.cpp:7: error: call of overloaded 'insert(int, unsigned int&, char)' is ambiguous
> /build/sebor/dev/stdlib/include/string:520: note: candidates are: void std::basic_string<_CharT, _Traits, _Allocator>::insert(typename _Allocator::pointer, typename _Allocator::size_type, typename _Traits::char_type) [with _CharT = char, _Traits = std::char_traits<char>, _Allocator = std::allocator<char>]
> /build/sebor/dev/stdlib/include/string:525: note:                 std::basic_string<_CharT, _Traits, _Allocator>& std::basic_string<_CharT, _Traits, _Allocator>::insert(typename _Allocator::size_type, typename _Allocator::size_type, typename _Traits::char_type) [with _CharT = char, _Traits = std::char_traits<char>, _Allocator = std::allocator<char>]
> make: *** [t.o] Error 1

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.