Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8982611
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T20:37:17+00:00 2026-06-15T20:37:17+00:00

The following code compiles with warning and intellisense error: ref class Test { initonly

  • 0

The following code compiles with warning and intellisense error:

ref class Test {
    initonly static TimeSpan Delay = TimeSpan(1,1,1); 

    Test() {
        long long ticks = Delay.Ticks; // << problem
    }
};

The problems are:

  • warning C4395: ‘System::TimeSpan::Ticks::get’ : member function will
    be invoked on a copy of the initonly data member ‘Test::Delay’
  • IntelliSense: taking the address of an initonly field is not allowed

How to access Ticks properly?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T20:37:18+00:00Added an answer on June 15, 2026 at 8:37 pm

    Well, that’s pretty major fail-whale. The warning is accurate, the compiler doesn’t know enough about the TimeSpan::Tick property getter. It cannot ensure that the getter doesn’t do anything that might alter the value of the struct and thereby invalidates the initonly contract. It solves it by making a copy of the struct and warns about it since this is a possible perf issue. That’s a bit heavy-handed, other managed compilers make the copy without saying anything about it. I’d just plunk a #pragma warning(disable:4395) ahead of it so the warning is suppressed.

    The IntelliSense error only appears when I try this in VS2012. That’s a bug. You can report it at connect.microsoft.com.

    Given the misery and that this appears to be a private class member, I’d just drop initonly to get ahead. If that’s not desirable then you can wrap the field with a property, intentionally creating the copy, and thus get rid of both problems, like this:

    ref class Test {
        initonly static TimeSpan _delay = TimeSpan(1,1,1); 
        static property TimeSpan Delay { 
            TimeSpan get() { return _delay; }
        }
    
        Test() {
            long long ticks = Delay.Ticks;
        }
    };
    

    The jitter optimizer will get rid of it so don’t worry about overhead.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

The following code examples compiles but with a compiler warning class Animal{} class Dog
The following code compiles without any warning or error on G++ (GCC) 4.1.2. Is
The following source code compiles correctly with Visual Studio 2010: namespace NS { class
Consider the following code: public class Outer<T> { public class Inner{ } public static
Consider the following code: int main() { int *p; ++((int){5}); //compile without err/warning &((int){5});
The following code is generating warning C6284 when compiled with /analyze on MSVC 2008
When trying to compile the following code, I am getting a warning that line
The following code compiles in Visual C++ and gcc, but fails with Code Warrior
the following code compiles with Visual Studio 2008 but not with g++ on Mac
I have the following code that compiles and works well: template<typename T> T GetGlobal(const

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.